服装智能制造软件平台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
<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> |