服装智能制造软件平台V3.0
http://182.92.169.222/hhxy/#/user/login
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
285 lines
9.7 KiB
285 lines
9.7 KiB
3 years ago
|
<template>
|
||
|
<a-modal
|
||
|
:title="title"
|
||
|
:width="1200"
|
||
|
:visible="visible"
|
||
|
:confirmLoading="confirmLoading"
|
||
|
@ok="handleOk"
|
||
|
@cancel="handleCancel"
|
||
|
cancelText="关闭">
|
||
|
|
||
|
<a-spin :spinning="confirmLoading">
|
||
|
<a-form :form="form">
|
||
|
|
||
|
<a-card class="card" :bordered="false">
|
||
|
<a-row class="form-row" :gutter="16">
|
||
|
<a-col :lg="8">
|
||
|
<a-form-item label="任务名">
|
||
|
<a-input placeholder="请输入任务名称" v-decorator="[ 'task.name', {rules: [{ required: true, message: '请输入任务名称', whitespace: true}]} ]"/>
|
||
|
</a-form-item>
|
||
|
</a-col>
|
||
|
<a-col :lg="8">
|
||
|
<a-form-item label="任务描述">
|
||
|
<a-input placeholder="请输入任务描述" v-decorator="['task.description', {rules: [{ required: true, message: '请输入任务描述', whitespace: true}]} ]"/>
|
||
|
</a-form-item>
|
||
|
</a-col>
|
||
|
<a-col :lg="8">
|
||
|
<a-form-item label="执行人">
|
||
|
<a-select placeholder="请选择执行人" v-decorator="['task.executor',{rules: [{ required: true, message: '请选择执行人'}]} ]">
|
||
|
<a-select-option value="黄丽丽">黄丽丽</a-select-option>
|
||
|
<a-select-option value="李大刀">李大刀</a-select-option>
|
||
|
</a-select>
|
||
|
</a-form-item>
|
||
|
</a-col>
|
||
|
</a-row>
|
||
|
<a-row class="form-row" :gutter="16">
|
||
|
<a-col :lg="8">
|
||
|
<a-form-item label="责任人">
|
||
|
<a-select placeholder="请选择责任人" v-decorator="['task.manager', {rules: [{ required: true, message: '请选择责任人'}]} ]">
|
||
|
<a-select-option value="王伟">王伟</a-select-option>
|
||
|
<a-select-option value="李红军">李红军</a-select-option>
|
||
|
</a-select>
|
||
|
</a-form-item>
|
||
|
</a-col>
|
||
|
<a-col :lg="8">
|
||
|
<a-form-item label="提醒时间">
|
||
|
<a-time-picker style="width: 100%" v-decorator="['task.time', {rules: [{ required: true, message: '请选择提醒时间'}]} ]"/>
|
||
|
</a-form-item>
|
||
|
</a-col>
|
||
|
<a-col :lg="8">
|
||
|
<a-form-item
|
||
|
label="任务类型">
|
||
|
<a-select placeholder="请选择任务类型" v-decorator="['task.type', {rules: [{ required: true, message: '请选择任务类型'}]} ]">
|
||
|
<a-select-option value="定时执行">定时执行</a-select-option>
|
||
|
<a-select-option value="周期执行">周期执行</a-select-option>
|
||
|
</a-select>
|
||
|
</a-form-item>
|
||
|
</a-col>
|
||
|
</a-row>
|
||
|
</a-card>
|
||
|
|
||
|
<a-tabs defaultActiveKey="1" >
|
||
|
<a-tab-pane tab="Tab 1" key="1">
|
||
|
|
||
|
<a-table :columns="columns" :dataSource="data" :pagination="false" size="middle">
|
||
|
<template v-for="(col, i) in ['name', 'workId', 'department']" :slot="col" slot-scope="text, record, index">
|
||
|
<a-tooltip title="必填项" :defaultVisible="false" :overlayStyle="{ color: 'red' }">
|
||
|
<a-input :key="col" v-if="record.editable" style="margin: -5px 0" :value="text" :placeholder="columns[i].title" @change="e => handlerRowChange(e.target.value, record.key, col)"/>
|
||
|
<template v-else>{{ text }}</template>
|
||
|
</a-tooltip>
|
||
|
</template>
|
||
|
<template slot="operation" slot-scope="text, record, index">
|
||
|
<template v-if="record.editable">
|
||
|
<span v-if="record.isNew">
|
||
|
<a @click="saveRow(record.key)">添加</a>
|
||
|
<a-divider type="vertical"/>
|
||
|
<a-popconfirm title="是否要删除此行?" @confirm="removeRow(record.key)"><a>删除</a></a-popconfirm>
|
||
|
</span>
|
||
|
<span v-else>
|
||
|
<a @click="saveRow(record.key)">保存</a>
|
||
|
<a-divider type="vertical"/>
|
||
|
<a @click="cancelEditRow(record.key)">取消</a>
|
||
|
</span>
|
||
|
</template>
|
||
|
<span v-else>
|
||
|
<a @click="editRow(record.key)">编辑</a>
|
||
|
<a-divider type="vertical"/>
|
||
|
<a-popconfirm title="是否要删除此行?" @confirm="removeRow(record.key)"><a>删除</a></a-popconfirm>
|
||
|
</span>
|
||
|
</template>
|
||
|
</a-table>
|
||
|
|
||
|
<a-button style="width: 100%; margin-top: 16px; margin-bottom: 8px" type="dashed" icon="plus" @click="newRow">新增成员</a-button>
|
||
|
</a-tab-pane>
|
||
|
<a-tab-pane tab="Tab 2" key="2" forceRender>
|
||
|
Content of Tab Pane 2
|
||
|
</a-tab-pane>
|
||
|
<a-tab-pane tab="Tab 3" key="3">Content of Tab Pane 3</a-tab-pane>
|
||
|
</a-tabs>
|
||
|
|
||
|
</a-form>
|
||
|
</a-spin>
|
||
|
</a-modal>
|
||
|
</template>
|
||
|
|
||
|
<script>
|
||
|
import {httpAction} from '@/api/manage'
|
||
|
import pick from 'lodash.pick'
|
||
|
import moment from "moment"
|
||
|
|
||
|
export default {
|
||
|
name: "JeecgDemoTabsModal",
|
||
|
data() {
|
||
|
return {
|
||
|
title: "操作",
|
||
|
visible: false,
|
||
|
model: {},
|
||
|
// table
|
||
|
columns: [
|
||
|
{
|
||
|
title: '成员姓名',
|
||
|
dataIndex: 'name',
|
||
|
key: 'name',
|
||
|
width: '20%',
|
||
|
scopedSlots: {customRender: 'name'}
|
||
|
},
|
||
|
{
|
||
|
title: '工号',
|
||
|
dataIndex: 'workId',
|
||
|
key: 'workId',
|
||
|
width: '20%',
|
||
|
scopedSlots: {customRender: 'workId'}
|
||
|
},
|
||
|
{
|
||
|
title: '所属部门',
|
||
|
dataIndex: 'department',
|
||
|
key: 'department',
|
||
|
width: '40%',
|
||
|
scopedSlots: {customRender: 'department'}
|
||
|
},
|
||
|
{
|
||
|
title: '操作',
|
||
|
key: 'action',
|
||
|
scopedSlots: {customRender: 'operation'}
|
||
|
}
|
||
|
],
|
||
|
data: [
|
||
|
{
|
||
|
key: '1',
|
||
|
name: '小明',
|
||
|
workId: '001',
|
||
|
editable: false,
|
||
|
department: '行政部'
|
||
|
},
|
||
|
{
|
||
|
key: '2',
|
||
|
name: '李莉',
|
||
|
workId: '002',
|
||
|
editable: false,
|
||
|
department: 'IT部'
|
||
|
},
|
||
|
{
|
||
|
key: '3',
|
||
|
name: '王小帅',
|
||
|
workId: '003',
|
||
|
editable: false,
|
||
|
department: '财务部'
|
||
|
}
|
||
|
],
|
||
|
|
||
|
confirmLoading: false,
|
||
|
form: this.$form.createForm(this),
|
||
|
validatorRules: {},
|
||
|
url: {
|
||
|
add: "/test/jeecgDemo/add",
|
||
|
edit: "/test/jeecgDemo/edit",
|
||
|
},
|
||
|
}
|
||
|
},
|
||
|
created() {
|
||
|
},
|
||
|
methods: {
|
||
|
add() {
|
||
|
this.edit({});
|
||
|
},
|
||
|
edit(record) {
|
||
|
this.form.resetFields();
|
||
|
this.model = Object.assign({}, record);
|
||
|
this.visible = true;
|
||
|
this.$nextTick(() => {
|
||
|
this.form.setFieldsValue(pick(this.model, 'name', 'keyWord', 'sex', 'age', 'email', 'content'))
|
||
|
//时间格式化
|
||
|
this.form.setFieldsValue({punchTime: this.model.punchTime ? moment(this.model.punchTime, 'YYYY-MM-DD HH:mm:ss') : null})
|
||
|
this.form.setFieldsValue({birthday: this.model.birthday ? moment(this.model.birthday) : null})
|
||
|
});
|
||
|
|
||
|
},
|
||
|
close() {
|
||
|
this.$emit('close');
|
||
|
this.visible = false;
|
||
|
},
|
||
|
handleOk() {
|
||
|
const that = this;
|
||
|
// 触发表单验证
|
||
|
this.form.validateFields((err, values) => {
|
||
|
if (!err) {
|
||
|
that.confirmLoading = true;
|
||
|
let httpurl = '';
|
||
|
let method = '';
|
||
|
if (!this.model.id) {
|
||
|
httpurl += this.url.add;
|
||
|
method = 'post';
|
||
|
} else {
|
||
|
httpurl += this.url.edit;
|
||
|
method = 'put';
|
||
|
}
|
||
|
let formData = Object.assign(this.model, values);
|
||
|
//时间格式化
|
||
|
formData.punchTime = formData.punchTime ? formData.punchTime.format('YYYY-MM-DD HH:mm:ss') : null;
|
||
|
formData.birthday = formData.birthday ? formData.birthday.format() : null;
|
||
|
|
||
|
console.log(formData)
|
||
|
httpAction(httpurl, formData, method).then((res) => {
|
||
|
if (res.success) {
|
||
|
that.$message.success(res.message);
|
||
|
that.$emit('ok');
|
||
|
} else {
|
||
|
that.$message.warning(res.message);
|
||
|
}
|
||
|
}).finally(() => {
|
||
|
that.confirmLoading = false;
|
||
|
that.close();
|
||
|
})
|
||
|
}
|
||
|
})
|
||
|
},
|
||
|
handleCancel() {
|
||
|
this.close()
|
||
|
},
|
||
|
newRow () {
|
||
|
// 通过时间戳生成 UUID
|
||
|
let uuid = Math.round(new Date().getTime()).toString();
|
||
|
console.log('uuid: '+ uuid)
|
||
|
this.data.push({
|
||
|
key: uuid,
|
||
|
name: '',
|
||
|
workId: '',
|
||
|
department: '',
|
||
|
editable: true,
|
||
|
isNew: true
|
||
|
})
|
||
|
},
|
||
|
removeRow (key) {
|
||
|
const newData = this.data.filter(item => item.key !== key)
|
||
|
this.data = newData
|
||
|
},
|
||
|
saveRow (key) {
|
||
|
let target = this.data.filter(item => item.key === key)[0]
|
||
|
target.editable = false
|
||
|
target.isNew = false
|
||
|
},
|
||
|
handlerRowChange (value, key, column) {
|
||
|
const newData = [...this.data]
|
||
|
const target = newData.filter(item => key === item.key)[0]
|
||
|
if (target) {
|
||
|
target[column] = value
|
||
|
this.data = newData
|
||
|
}
|
||
|
},
|
||
|
editRow (key) {
|
||
|
let target = this.data.filter(item => item.key === key)[0]
|
||
|
target.editable = !target.editable
|
||
|
},
|
||
|
cancelEditRow (key) {
|
||
|
let target = this.data.filter(item => item.key === key)[0]
|
||
|
target.editable = false
|
||
|
},
|
||
|
}
|
||
|
}
|
||
|
</script>
|
||
|
|
||
|
<style scoped>
|
||
|
.ant-modal-body {
|
||
|
padding: 8px!important;
|
||
|
}
|
||
|
</style>
|