<template> <a-modal :title="title" :width="800" :visible="visible" :maskClosable="false" :confirmLoading="confirmLoading" @ok="handleOk" @cancel="handleCancel" cancelText="关闭"> <a-spin :spinning="confirmLoading"> <a-form :form="form"> <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="物料编码"> <a-input placeholder="请输入物料编码" v-decorator="['code', { rules: [{ required: true, message: '请输入编码!' }] }]" :read-only="readOnly"/> </a-form-item> <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="物料名称"> <a-input placeholder="请输入物料名称" v-decorator="['name', { rules: [{ required: true, message: '请输入名称!' }] }]"/> </a-form-item> <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="物料" > <j-dict-select-tag placeholder="类型" :triggerChange="true" dictCode="material_type" v-decorator="['type', { rules: [{ required: true}] }]" /> </a-form-item> </a-form> </a-spin> </a-modal> </template> <script> import JDictSelectTag from '@comp/dict/JDictSelectTag' import pick from 'lodash.pick' import { addMaterial, editMaterial } from '@api/api' export default { name: 'MaterialModal', components: { JDictSelectTag }, data() { return { title: '操作', visible: false, model: {}, labelCol: { xs: { span: 24 }, sm: { span: 5 }, }, wrapperCol: { xs: { span: 24 }, sm: { span: 16 }, }, confirmLoading: false, form: this.$form.createForm(this), readOnly:false } }, created() { }, methods: { add() { this.edit({}) }, edit(record) { this.form.resetFields() this.model = Object.assign({}, record) this.visible = true if(record.id){ this.readOnly=true }else{ this.readOnly=false } this.$nextTick(() => { this.form.setFieldsValue(pick(this.model, 'code', 'name', 'type' )) }) }, close() { this.$emit('close') this.visible = false }, handleOk() { const that = this // 触发表单验证 this.form.validateFields((err, values) => { if (!err) { that.confirmLoading = true values.name = (values.name || '').trim() values.code = (values.code || '').trim() let formData = Object.assign(this.model, values) let obj console.log(formData) if (!this.model.id) { obj = addMaterial(formData) } else { obj = editMaterial(formData) } obj.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() }, } } </script> <style scoped> </style>