From 4dfd11f526b7b4fe578561a9ea4c27a24a88acb4 Mon Sep 17 00:00:00 2001 From: zhangherong <571457620@qq.com> Date: 星期四, 21 八月 2025 09:06:00 +0800 Subject: [PATCH] art: 物料拉动增加发布时间 --- src/views/mes/modules/MesMaterialTransferRequestForm.vue | 297 +++++++++++++++++++++++++++++++++++++++-------------------- 1 files changed, 196 insertions(+), 101 deletions(-) diff --git a/src/views/mes/modules/MesMaterialTransferRequestForm.vue b/src/views/mes/modules/MesMaterialTransferRequestForm.vue index e24608f..8bbbbf1 100644 --- a/src/views/mes/modules/MesMaterialTransferRequestForm.vue +++ b/src/views/mes/modules/MesMaterialTransferRequestForm.vue @@ -9,33 +9,44 @@ </a-form-model-item> </a-col> <a-col :span="12"> - <a-form-model-item label="璧峰搴撳瓨鍦扮偣" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="originalWarehouseId"> - <j-dict-select-tag type="list" v-model="model.originalWarehouseId" dictCode="original_warehouse_list" placeholder="璇烽�夋嫨璧峰搴撳瓨鍦扮偣" /> + <a-form-model-item label="璧峰搴撳瓨鍦扮偣" :labelCol="labelCol" :wrapperCol="wrapperCol" + prop="originalWarehouseId"> + <j-dict-select-tag type="list" v-model="model.originalWarehouseId" dictCode="original_warehouse_list" + placeholder="璇烽�夋嫨璧峰搴撳瓨鍦扮偣" /> </a-form-model-item> </a-col> <a-col :span="12"> - <a-form-model-item label="浠诲姟鍙�" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="workOrderId"> - <a-input v-model="model.workOrderId" placeholder="璇疯緭鍏ュ伐鍗旾D" ></a-input> + <a-form-model-item label="浠诲姟鍙�" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="workOrderCode"> + <work-order-select-modal :workOrder="workOrderObj" :submitDisabled="formDisabled" + orderStatus="PUBLISHED" @ok="selectConfirm"></work-order-select-modal> </a-form-model-item> </a-col> <a-col :span="12"> - <a-form-model-item label="鐩爣搴撳瓨鍦扮偣" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="targetWarehouseId"> - <a-input v-model="model.targetWarehouseId" placeholder="鑷姩鑾峰彇" readOnly ></a-input> + <a-form-model-item label="鐩爣搴撳瓨鍦扮偣" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="warehouseName"> + <a-input v-model="model.warehouseName" placeholder="鑷姩鑾峰彇" readOnly></a-input> </a-form-model-item> </a-col> <a-col :span="12"> - <a-form-model-item label="鎷夊姩绫诲瀷" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="materialTransferCategory"> - <j-dict-select-tag type="list" v-model="model.materialTransferCategory" dictCode="material_transfer_category" placeholder="璇烽�夋嫨鎷夊姩绫诲瀷" /> + <a-form-model-item label="鎷夊姩绫诲瀷" :labelCol="labelCol" :wrapperCol="wrapperCol" + prop="materialTransferCategory"> + <j-dict-select-tag type="list" v-model="model.materialTransferCategory" + dictCode="material_transfer_category" placeholder="璇烽�夋嫨鎷夊姩绫诲瀷" /> </a-form-model-item> </a-col> <a-col :span="12"> - <a-form-model-item label="鏈�鏅氶厤閫佹椂闂�" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="latestDeliveryTime"> - <j-date placeholder="璇烽�夋嫨鏈�鏅氶厤閫佹椂闂�" v-model="model.latestDeliveryTime" :show-time="false" date-format="YYYY-MM-DD" style="width: 100%" /> + <a-form-model-item label="鏈�鏅氶厤閫佹椂闂�" :labelCol="labelCol" :wrapperCol="wrapperCol" + prop="latestDeliveryTime"> + <a-date-picker placeholder="璇烽�夋嫨鏈�鏅氶厤閫佹椂闂�" v-model="model.latestDeliveryTime" + value-format="YYYY-MM-DD" style="width: 100%" /> </a-form-model-item> </a-col> <a-col :span="12"> <a-form-model-item label="鎷夊姩鐗╂枡" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="materialNumber"> - <j-dict-select-tag type="list" v-model="model.materialNumber" dictCode="priority" placeholder="璇烽�夋嫨鎷夊姩鐗╂枡" /> + <a-select v-model="model.materialNumber" placeholder="璇烽�夋嫨鎷夊姩鐗╂枡" @change="handleMaterialNumberChange"> + <a-select-option v-for="item in materialList" :value="item.materialNumber" :title="item.materialName" :key="item.materialNumber"> + {{ item.materialName }} + </a-select-option> + </a-select> </a-form-model-item> </a-col> <a-col :span="12"> @@ -51,104 +62,188 @@ <script> - import { httpAction, getAction } from '@/api/manage' - import { validateDuplicateValue } from '@/utils/util' +import { getAction, httpAction } from '@/api/manage' +import WorkOrderSelectModal from '@/views/mes/modules/WorkOrderSelectModal.vue' +import moment from 'moment' - export default { - name: 'MesMaterialTransferRequestForm', - components: { +export default { + name: 'MesMaterialTransferRequestForm', + components: { + WorkOrderSelectModal + }, + props: { + //琛ㄥ崟绂佺敤 + disabled: { + type: Boolean, + default: false, + required: false + } + }, + data() { + return { + model: {}, + labelCol: { + xs: { span: 24 }, + sm: { span: 6 } + }, + wrapperCol: { + xs: { span: 24 }, + sm: { span: 16 } + }, + confirmLoading: false, + validatorRules: { + originalWarehouseId: [ + { required: true, message: '璧峰搴撳瓨鍦扮偣蹇呴��', trigger: 'change' } + ], + workOrderCode: [ + { required: true, message: '浠诲姟鍙峰繀閫�', trigger: 'change' } + ], + materialNumber: [ + { required: true, message: '鎷夊姩鐗╂枡蹇呴��', trigger: 'change' } + ], + specifiedQuantity: [ + { required: true, message: '鎷夊姩鏁伴噺蹇呭~', trigger: 'change' } + ], + materialTransferCategory: [ + { required: true, message: '鎷夊姩绫诲瀷蹇呴��', trigger: 'change' } + ] + }, + url: { + add: '/mes/mesMaterialTransferRequest/add', + edit: '/mes/mesMaterialTransferRequest/edit', + queryById: '/mes/mesMaterialTransferRequest/queryById', + queryByMaterialNumber: '/pms/processBillMaterialsDetail/queryByMaterialNumber', + queryByFactoryId: '/base/lineSideWarehouse/queryByFactoryId', + workOrderQuery: '/mes/mesProductionWorkOrder/queryById' + }, + materialList: [], //鐗╂枡鍒楄〃 + workOrderObj: {}, //宸ュ崟瀵硅薄 + } + }, + computed: { + formDisabled() { + return this.disabled + } + }, + created() { + //澶囦唤model鍘熷鍊� + this.modelDefault = JSON.parse(JSON.stringify(this.model)) + }, + methods: { + add() { + this.modelDefault.latestDeliveryTime = moment() + this.edit(this.modelDefault) }, - props: { - //琛ㄥ崟绂佺敤 - disabled: { - type: Boolean, - default: false, - required: false - } - }, - data () { - return { - model:{ - }, - labelCol: { - xs: { span: 24 }, - sm: { span: 6 }, - }, - wrapperCol: { - xs: { span: 24 }, - sm: { span: 16 }, - }, - confirmLoading: false, - validatorRules: { - originalWarehouseId: [ - { required: true, message: '璧峰搴撳瓨鍦扮偣蹇呴��', trigger: 'change' } - ], - workOrderId: [ - { required: true, message: '浠诲姟鍙峰繀閫�', trigger: 'change' } - ], - materialNumber: [ - { required: true, message: '鎷夊姩鐗╂枡蹇呴��', trigger: 'change' } - ], - specifiedQuantity: [ - { required: true, message: '鎷夊姩鏁伴噺蹇呭~', trigger: 'change' } - ], - materialTransferCategory: [ - { required: true, message: '鎷夊姩绫诲瀷蹇呴��', trigger: 'change' } - ], - }, - url: { - add: "/mes/mesMaterialTransferRequest/add", - edit: "/mes/mesMaterialTransferRequest/edit", - queryById: "/mes/mesMaterialTransferRequest/queryById" + async edit(record) { + this.model = Object.assign({}, record) + this.model.workOrderCode = this.model.workOrderId_dictText + this.visible = true + if (this.model.workOrderId) { + let workOrderRes = await this.loadProductionWorkOrder(this.model.workOrderId) + if(!workOrderRes.success || !workOrderRes.result) { + return; + } + //鎺掍骇宸ュ崟璧嬪�� + this.workOrderObj = Object.assign({}, workOrderRes.result); + //鐗╂枡鍒楄〃 + let materialListRes = await this.loadMaterialList(workOrderRes.result.materialNumber) + if (materialListRes.success && materialListRes.result && materialListRes.result.length > 0) { + this.materialList = [...materialListRes.result] + } else { + this.materialList = [] + } + //鐩爣搴撳瓨鍦� + let warehouseRes = await this.loadLineWarehouse(workOrderRes.result.factoryId) + if (warehouseRes.success && warehouseRes.result) { + this.$set(this.model, 'targetWarehouseId', warehouseRes.result.id) + this.$set(this.model, 'warehouseName', warehouseRes.result.warehouseName) + } else { + this.model.targetWarehouseId = undefined + this.model.warehouseName = '' } } }, - computed: { - formDisabled(){ - return this.disabled - }, + async selectConfirm(rows) { + if (rows && rows.length > 0) { + //娓呯┖鍏宠仈鏁版嵁 + this.model.materialNumber = undefined; + this.model.materialName = ''; + this.model.specifiedQuantity = 0; + //璧嬪�兼柊鐨勬暟鎹� + this.model.workOrderId = rows[0].id + this.model.workOrderCode = rows[0].workOrderCode + //鎺掍骇宸ュ崟璧嬪�� + this.workOrderObj = Object.assign({}, rows[0]); + let materialListRes = await this.loadMaterialList(rows[0].materialNumber) + if (materialListRes.success && materialListRes.result && materialListRes.result.length > 0) { + this.materialList = [...materialListRes.result] + } else { + this.materialList = [] + } + let warehouseRes = await this.loadLineWarehouse(rows[0].factoryId) + if (warehouseRes.success && warehouseRes.result) { + this.$set(this.model, 'targetWarehouseId', warehouseRes.result.id) + this.$set(this.model, 'warehouseName', warehouseRes.result.warehouseName) + } else { + this.model.targetWarehouseId = undefined + this.model.warehouseName = '' + } + } else { + //娓呯┖鍏宠仈鏁版嵁 + this.model.materialNumber = undefined; + this.model.materialName = ''; + this.model.specifiedQuantity = 0; + this.materialList = [] + this.model.targetWarehouseId = undefined + this.model.warehouseName = '' + this.workOrderObj = {}; + } }, - 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 + }) + } - }) - }, + }) + }, + loadMaterialList(materialNumber) { + return getAction(this.url.queryByMaterialNumber, { materialNumber: materialNumber }) + }, + loadLineWarehouse(factoryId) { + return getAction(this.url.queryByFactoryId, { factoryId: factoryId }) + }, + loadProductionWorkOrder(workOrderId) { + return getAction(this.url.workOrderQuery, { id: workOrderId }) + }, + handleMaterialNumberChange(val) { + let find = this.materialList.find(item => item.materialNumber === val) + if (find) { + this.model.materialName = find.materialName + } + this.model.specifiedQuantity = 0 } } +} </script> \ No newline at end of file -- Gitblit v1.9.3