<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: [{}] }]" /> </a-form-item> <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="水位上限"> <a-input placeholder="请输入水位上限" v-decorator="['upperLimit']"/> </a-form-item> <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="水位下限"> <a-input placeholder="请输入水位下限" v-decorator="['downLimit']"/> </a-form-item> <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="关联编码"> <a-input placeholder="关联编码" v-decorator="['linkCode', { rules: [{validator: this.validateCode}] }]"/> </a-form-item> </a-form> </a-spin> </a-modal> </template> <script> import JDictSelectTag from '@comp/dict/JDictSelectTag' import JMultiSelectTag from '@/components/dict/JMultiSelectTag' import pick from 'lodash.pick' import {addMaterial, editMaterial} from '@api/api' import {getCodeList} from "../../../api/api"; export default { name: 'MaterialModal', components: {JDictSelectTag,JMultiSelectTag}, data() { return { title: '操作', codeValue:'', visible: false, model: {}, codeArr:[], linkCode:"", labelCol: { xs: {span: 24}, sm: {span: 5}, }, wrapperCol: { xs: {span: 24}, sm: {span: 16}, }, confirmLoading: false, form: this.$form.createForm(this), readOnly: false } } , created() { this.loadFrom(); }, methods: { loadFrom() { getCodeList().then((res) => { if (res.success) { this.codeArr=res.result } }) }, changCodeArr(){ this.codeArr=[]; }, validateDigits(rule, value, callback) { if (!(/(^[1-9]\d*$)/.test(value))) { callback("输入正整数!") } else { callback() } }, validateCode(rule, value, callback) { const reg=/[^\d+(,\d\d\d)*.\d+$]/g; if(reg.test(value)) { callback("仅允许输入数字,多个物料编码以,隔开") } else { callback() } }, 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', 'upperLimit', 'downLimit', 'id', 'linkCode' )) }) }, 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>