123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286 |
- <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';
- method = 'post';
- }
- 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>
|