From c95e7e5af5e80d6603b8dfc922201079b27b9056 Mon Sep 17 00:00:00 2001 From: zhangherong <571457620@qq.com> Date: 星期二, 09 九月 2025 19:29:03 +0800 Subject: [PATCH] art: 上料列表、新增页面 --- src/views/mes/modules/MesMaterialLoadingForm.vue | 263 ++++++++++++++++++++++++++++++++-------------------- 1 files changed, 160 insertions(+), 103 deletions(-) diff --git a/src/views/mes/modules/MesMaterialLoadingForm.vue b/src/views/mes/modules/MesMaterialLoadingForm.vue index 45114de..2b7e5cd 100644 --- a/src/views/mes/modules/MesMaterialLoadingForm.vue +++ b/src/views/mes/modules/MesMaterialLoadingForm.vue @@ -4,43 +4,29 @@ <a-form-model ref="form" :model="model" :rules="validatorRules" slot="detail"> <a-row> <a-col :span="12"> - <a-form-model-item label="鍒犻櫎鏍囪" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="delFlag"> - <a-input-number v-model="model.delFlag" placeholder="璇疯緭鍏ュ垹闄ゆ爣璁�" style="width: 100%" /> - </a-form-model-item> - </a-col> - <a-col :span="12"> - <a-form-model-item label="宸ュ崟ID" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="workOrderId"> - <a-input v-model="model.workOrderId" placeholder="璇疯緭鍏ュ伐鍗旾D" ></a-input> - </a-form-model-item> - </a-col> - <a-col :span="12"> - <a-form-model-item label="璁惧ID" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="equipmentId"> - <a-input v-model="model.equipmentId" placeholder="璇疯緭鍏ヨ澶嘔D" ></a-input> - </a-form-model-item> - </a-col> - <a-col :span="12"> - <a-form-model-item label="宸ュ簭缂栫爜" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="processCode"> - <a-input v-model="model.processCode" placeholder="璇疯緭鍏ュ伐搴忕紪鐮�" ></a-input> - </a-form-model-item> - </a-col> - <a-col :span="12"> - <a-form-model-item label="宸ュ簭鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="processName"> - <a-input v-model="model.processName" placeholder="璇疯緭鍏ュ伐搴忓悕绉�" ></a-input> + <a-form-model-item label="浜х嚎" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="factoryId"> + <j-search-select-tag placeholder="璇烽�夋嫨浜х嚎" v-model="model.factoryId" + dict="base_factory,factory_name,id,del_flag=0 and factory_category='3'" + @change="factorySelectChange"></j-search-select-tag> </a-form-model-item> </a-col> <a-col :span="12"> <a-form-model-item label="鐗╂枡缂栫爜" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="materialNumber"> - <a-input v-model="model.materialNumber" placeholder="璇疯緭鍏ョ墿鏂欑紪鐮�" ></a-input> + <j-search-select-tag v-model="model.materialNumber" placeholder="璇烽�夋嫨鐗╂枡缂栫爜" + :dict-options="materialNumberDictOptions" + @change="materialNumberSelectChange"></j-search-select-tag> </a-form-model-item> </a-col> <a-col :span="12"> <a-form-model-item label="鐗╂枡鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="materialName"> - <a-input v-model="model.materialName" placeholder="璇疯緭鍏ョ墿鏂欏悕绉�" ></a-input> + <a-input v-model="model.materialName" placeholder="璇疯緭鍏ョ墿鏂欏悕绉�" readOnly></a-input> </a-form-model-item> </a-col> <a-col :span="12"> <a-form-model-item label="鎵规鍙�" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="batchNumber"> - <a-input v-model="model.batchNumber" placeholder="璇疯緭鍏ユ壒娆″彿" ></a-input> + <j-search-select-tag v-model="model.batchNumber" placeholder="璇烽�夋嫨鎵规鍙�" + :dict-options="batchNumberDictOptions" + @change="batchNumberSelectChange"></j-search-select-tag> </a-form-model-item> </a-col> <a-col :span="12"> @@ -48,9 +34,10 @@ <a-input-number v-model="model.quantity" placeholder="璇疯緭鍏ユ暟閲�" style="width: 100%" /> </a-form-model-item> </a-col> - <a-col :span="12"> - <a-form-model-item label="鍓╀綑鏁伴噺" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="remainingQuantity"> - <a-input-number v-model="model.remainingQuantity" placeholder="璇疯緭鍏ュ墿浣欐暟閲�" style="width: 100%" /> + <a-col :span="12" v-if="materialCategory === 'STEEL_BALL'"> + <a-form-model-item label="閽㈢悆灏哄" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="steelBallSize"> + <j-search-select-tag v-model="model.steelBallSize" placeholder="璇烽�夋嫨閽㈢悆灏哄" dict="steel_ball_size" + style="width: 100%" /> </a-form-model-item> </a-col> </a-row> @@ -61,89 +48,159 @@ <script> - import { httpAction, getAction } from '@/api/manage' - import { validateDuplicateValue } from '@/utils/util' +import { httpAction, getAction } from '@/api/manage' +import { validateDuplicateValue } from '@/utils/util' - export default { - name: 'MesMaterialLoadingForm', - components: { - }, - props: { - //琛ㄥ崟绂佺敤 - disabled: { - type: Boolean, - default: false, - required: false +export default { + name: 'MesMaterialLoadingForm', + components: {}, + props: { + //琛ㄥ崟绂佺敤 + disabled: { + type: Boolean, + default: false, + required: false + } + }, + data() { + return { + model: {}, + labelCol: { + xs: { span: 24 }, + sm: { span: 5 } + }, + wrapperCol: { + xs: { span: 24 }, + sm: { span: 16 } + }, + confirmLoading: false, + validatorRules: { + factoryId: [ + { required: true, message: '浜х嚎鏄繀閫夐」', trigger: 'change' } + ], + materialNumber: [ + { required: true, message: '鐗╂枡缂栫爜鏄繀濉」', trigger: 'change' } + ], + materialName: [ + { required: true, message: '鐗╂枡鍚嶇О鏄繀濉」', trigger: 'change' } + ], + batchNumber: [ + { required: true, message: '鎵规鍙锋槸蹇呴�夐」', trigger: 'change' } + ], + quantity: [ + { required: true, message: '鏁伴噺鏄繀濉」', trigger: 'change' } + ], + steelBallSize: [ + { required: false, message: '閽㈢悆灏哄鏄繀濉」', trigger: 'change' } + ] + }, + materialCategory: undefined, + batchNumberDictOptions: [], + inventoryList: [], + url: { + add: '/mes/mesMaterialLoading/add', + edit: '/mes/mesMaterialLoading/edit', + queryById: '/mes/mesMaterialLoading/queryById', + queryMaterialInventory: '/lsw/materialInventory/queryMaterialInventory' } + } + }, + computed: { + formDisabled() { + return this.disabled }, - data () { - return { - model:{ - }, - labelCol: { - xs: { span: 24 }, - sm: { span: 5 }, - }, - wrapperCol: { - xs: { span: 24 }, - sm: { span: 16 }, - }, - confirmLoading: false, - validatorRules: { - }, - url: { - add: "/mes/mesMaterialLoading/add", - edit: "/mes/mesMaterialLoading/edit", - queryById: "/mes/mesMaterialLoading/queryById" + materialNumberDictOptions() { + let materialNumberArr = new Set() + let materialNumberOptions = [] + for (let item of this.inventoryList) { + if (!materialNumberArr.has(item.materialNumber)) { + materialNumberOptions.push({ + value: item.materialNumber, + text: item.materialNumber + '(' + item.materialName + ')', + materialCategory: item.materialCategory, + materialName: item.materialName + }) + materialNumberArr.add(item.materialNumber) } } + return materialNumberOptions + } + }, + created() { + //澶囦唤model鍘熷鍊� + this.modelDefault = JSON.parse(JSON.stringify(this.model)) + }, + methods: { + add() { + this.edit(this.modelDefault) }, - computed: { - formDisabled(){ - return this.disabled - }, + edit(record) { + this.model = Object.assign({}, record) + this.visible = true }, - created () { - //澶囦唤model鍘熷鍊� - this.modelDefault = JSON.parse(JSON.stringify(this.model)); - }, - methods: { - add () { - this.edit(this.modelDefault); - }, - edit (record) { - this.model = Object.assign({}, record); - this.visible = true; - }, - submitForm () { - const that = this; - // 瑙﹀彂琛ㄥ崟楠岃瘉 - this.$refs.form.validate(valid => { - if (valid) { - that.confirmLoading = true; - let httpurl = ''; - let method = ''; - if(!this.model.id){ - httpurl+=this.url.add; - method = 'post'; - }else{ - httpurl+=this.url.edit; - method = 'put'; - } - httpAction(httpurl,this.model,method).then((res)=>{ - if(res.success){ - that.$message.success(res.message); - that.$emit('ok'); - }else{ - that.$message.warning(res.message); - } - }).finally(() => { - that.confirmLoading = false; - }) + submitForm() { + const that = this + // 瑙﹀彂琛ㄥ崟楠岃瘉 + this.$refs.form.validate(valid => { + if (valid) { + that.confirmLoading = true + let httpurl = '' + let method = '' + if (!this.model.id) { + httpurl += this.url.add + method = 'post' + } else { + httpurl += this.url.edit + method = 'put' } - - }) - }, + httpAction(httpurl, this.model, method).then((res) => { + if (res.success) { + that.$message.success(res.message) + that.$emit('ok') + } else { + that.$message.warning(res.message) + } + }).finally(() => { + that.confirmLoading = false + }) + } + + }) + }, + factorySelectChange(val) { + getAction(this.url.queryMaterialInventory, { factoryId: val }).then((res) => { + if (res.success) { + this.inventoryList = res.result.map(item => ({ ...item })) + } + }) + }, + materialNumberSelectChange(val) { + let option = this.materialNumberDictOptions.find(item => item.value === val) + if (option) { + this.model.materialName = option.materialName + this.materialCategory = option.materialCategory + let map = this.inventoryList.filter(item => item.materialNumber === val).map(item => ({ + value: item.batchNumber, + text: item.batchNumber, + quantity: item.quantity + })) + this.batchNumberDictOptions = [...map] + this.validatorRules.steelBallSize[0].required = true + } else { + this.model.materialName = '' + this.materialCategory = undefined + this.batchNumberDictOptions = [] + this.validatorRules.steelBallSize[0].required = false + } + }, + batchNumberSelectChange(val) { + let option = this.batchNumberDictOptions.find(item => item.value === val) + if (option) { + this.model.quantity = option.quantity + } else { + this.model.quantity = null + } } } +} </script> \ No newline at end of file -- Gitblit v1.9.3