From 83f051915bbe4562abfb5f1589642dd393ea8490 Mon Sep 17 00:00:00 2001 From: cuilei <ray_tsu1@163.com> Date: 星期五, 22 八月 2025 10:43:03 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- src/views/mes/modules/WorkOrderSelectModal.vue | 173 ++++++++++++ src/views/cms/modules/CuttingInboundModal.vue | 13 src/views/mes/modules/MesMaterialTransferRequestForm.vue | 297 ++++++++++++++------- src/views/cms/CuttingInventoryList.vue | 4 src/views/cms/CuttingInboundList.vue | 259 +++++++++++++++++ src/views/mes/MesMaterialTransferRequestList.vue | 37 ++ 6 files changed, 658 insertions(+), 125 deletions(-) diff --git a/src/views/cms/CuttingInboundList.vue b/src/views/cms/CuttingInboundList.vue index d66163d..6f4ce01 100644 --- a/src/views/cms/CuttingInboundList.vue +++ b/src/views/cms/CuttingInboundList.vue @@ -21,8 +21,26 @@ dict="sys_user,realname,id,del_flag!=1" /> </a-form-item> - </a-col> - <a-col + </a-col> + <a-col :md="6" :sm="8"> + <a-form-item label="纭浜�"> + <j-search-select-tag + v-model="queryParam.confirmer" + placeholder="璇烽�夋嫨纭浜�" + dict="sys_user,realname,id,del_flag!=1" + /> + </a-form-item> + </a-col> +<!-- <a-col :md="6" :sm="8">--> +<!-- <a-form-item label="鍏ュ簱鏃堕棿">--> +<!-- <j-date--> +<!-- v-model="queryParam.receiveTime"--> +<!-- type="date"--> +<!-- value-format="YYYY-MM-DD"--> +<!-- />--> +<!-- </a-form-item>--> +<!-- </a-col>--> + <a-col :md="6" :sm="8" > @@ -99,8 +117,7 @@ </template> <span slot="action" slot-scope="text, record"> - <a @click="handleEdit(record)">缂栬緫</a> - + <a @click="handleEdit(record)" :disabled="record.orderStatus == '2'">缂栬緫</a> <a-divider type="vertical" /> <a-dropdown> <a class="ant-dropdown-link">鏇村 <a-icon type="down" /></a> @@ -108,7 +125,15 @@ <a-menu-item> <a @click="handleDetail(record)">璇︽儏</a> </a-menu-item> - <a-menu-item> +<!-- <a-menu-item v-if="record.orderStatus != '2'">--> +<!-- <a-popconfirm title="纭畾鍒犻櫎鍚�?" @confirm="() => handleDelete(record.id)">--> +<!-- <a>鍒犻櫎</a>--> +<!-- </a-popconfirm>--> +<!-- </a-menu-item>--> + <a-menu-item v-if="record.orderStatus != '2'"> + <a @click="handleSubmit(record.id)" :disabled="record.orderStatus == '3'">鎻愪氦</a> + </a-menu-item> + <a-menu-item v-if="record.orderStatus != '2'"> <a-popconfirm title="纭畾鍒犻櫎鍚�?" @confirm="() => handleDelete(record.id)"> <a>鍒犻櫎</a> </a-popconfirm> @@ -138,11 +163,11 @@ import { JeecgListMixin } from '@/mixins/JeecgListMixin' import CuttingInboundModal from './modules/CuttingInboundModal' import CuttingInboundDetailList from './CuttingInboundDetailList' - import { downFile } from '@api/manage' + import { downFile, httpAction } from '@api/manage' import Vue from 'vue' import { ACCESS_TOKEN } from '@/store/mutation-types' import store from '@/store' - + import { Modal } from 'ant-design-vue'; export default { name: 'CuttingInboundList', @@ -222,6 +247,7 @@ deleteBatch: "/cms/cuttingInbound/deleteBatch", exportXlsUrl: "/cms/cuttingInbound/exportXls", importExcelUrl: "cms/cuttingInbound/importExcel", + submit: "/cms/cuttingInbound/submit", }, dictOptions:{}, superFieldList:[], @@ -238,10 +264,13 @@ }, }, methods: { + searchQuery() { + this.loadData(1); + }, searchReset() { - this.queryParam = {} - this.$refs.cuttingInbounDetailList.dataSource = [] - this.loadData(1); + this.queryParam = {} + this.$refs.cuttingInbounDetailList.dataSource = [] + this.loadData(1); }, handleEdit: function (record) { this.$refs.modalForm.edit(record) @@ -258,6 +287,7 @@ this.$refs.modalForm.title="璇︽儏"; this.$refs.modalForm.disableSubmit = true; }, + // 鑷畾涔夎鐐瑰嚮浜嬩欢 customRow(record) { return { @@ -289,9 +319,6 @@ if(this.selectedRowKeys && this.selectedRowKeys.length>0){ param['selections'] = this.selectedRowKeys.join(",") } - - - console.log("瀵煎嚭鍙傛暟",param) downFile(this.url.exportXlsUrl,param).then((data)=>{ if (!data) { @@ -382,6 +409,212 @@ } } }, + + /** + * 鍗曟嵁鎻愪氦 + */ + handleSubmit: function(id) { + if (!this.url.submit) { + this.$message.error('璇疯缃畊rl.submit灞炴��!') + return + } + + let targetId = id; // 浠庡弬鏁拌幏鍙朓D + // 濡傛灉娌℃湁閫氳繃鍙傛暟浼犻�扞D锛屽垯妫�鏌ラ�変腑鐨勮褰� + if (!targetId) { + if (this.selectedRowKeys.length != 1) { + this.$message.warning('璇烽�夋嫨涓�鏉¤褰曪紒') + return + } else { + targetId = this.selectedRowKeys[0] + } + } + + // 灏嗗弬鏁颁綔涓烘煡璇㈠弬鏁伴檮鍔犲埌URL涓� + let httpurl = this.url.submit + '?orderId=' + encodeURIComponent(targetId) + let method = 'get' + var params = {} // 娓呯┖params锛屽洜涓哄弬鏁板凡缁忓湪URL涓紶閫� + + const that = this + + this.$confirm({ + title: '纭鎻愪氦锛�', + // content: '姝e湪鎻愪氦鏁版嵁锛岃鑰愬績绛夊緟...', + okText: '纭', + cancelText: '鍙栨秷', + onOk() { + // 鏄剧ず鍔犺浇鎻愮ず + const hide = that.$message.loading('姝e湪鎻愪氦鏁版嵁锛岃鑰愬績绛夊緟...', 0); + + // 鍙戦�佽姹� + return httpAction(httpurl, params, method).then((res) => { + hide(); // 闅愯棌鍔犺浇鎻愮ず + if (res.success) { + that.$message.success(res.message) + that.loadData() + } else { + that.$message.warning(res.message) + } + }).catch(error => { + hide(); // 闅愯棌鍔犺浇鎻愮ず + that.$message.error('鎻愪氦澶辫触: ' + error.message) + }).finally(() => { + that.loading = false + }) + } + }) + }, + + // /** + // * 鍗曟嵁鎻愪氦锛堟敮鎸佸疄鏃惰繘搴︽洿鏂帮級 + // */ + // handleSubmit: function(id) { + // if (!this.url.submit) { + // this.$message.error('璇疯缃畊rl.submit灞炴��!') + // return + // } + // + // let targetId = id; // 浠庡弬鏁拌幏鍙朓D + // // 濡傛灉娌℃湁閫氳繃鍙傛暟浼犻�扞D锛屽垯妫�鏌ラ�変腑鐨勮褰� + // if (!targetId) { + // if (this.selectedRowKeys.length != 1) { + // this.$message.warning('璇烽�夋嫨涓�鏉¤褰曪紒') + // return + // } else { + // targetId = this.selectedRowKeys[0] + // } + // } + // + // const that = this + // + // this.$confirm({ + // title: '纭鎻愪氦锛�', + // content: '鎻愪氦杩囩▼涓彲鑳介渶瑕佽緝闀挎椂闂达紝璇疯�愬績绛夊緟...', + // okText: '纭', + // cancelText: '鍙栨秷', + // + // onOk() { + // // 鍒涘缓杩涘害鏉℃ā鎬佹 + // let percent = 0; + // let totalTools = 0; // 鍒�鍏锋�绘暟 + // let processedTools = 0; // 宸插鐞嗗垁鍏锋暟 + // + // // 浣跨敤 this.$info 鍒涘缓妯℃�佹 + // const modal = that.$info({ + // title: '姝e湪鎻愪氦鏁版嵁', + // content: that.$createElement('div', [ + // that.$createElement('p', '姝e湪澶勭悊鍒�鍏峰叆搴擄紝璇风◢鍊�...'), + // that.$createElement('a-progress', { + // props: { + // percent: percent, + // status: 'active' + // } + // }), + // // that.$createElement('p', { + // // style: { + // // marginTop: '10px' + // // } + // // }, `杩涘害: ${processedTools}/${totalTools} 鎶婂垁鍏穈) + // ]), + // okButtonProps: { style: { display: 'none' } }, // 闅愯棌纭鎸夐挳 + // cancelText: '鍙栨秷', + // closable: false, // 绂佹鍏抽棴妯℃�佹 + // }); + // + // // 鏇存柊杩涘害鏄剧ず鍑芥暟 + // const updateProgress = () => { + // if (totalTools > 0) { + // percent = Math.round((processedTools / totalTools) * 100); + // // 纭繚杩涘害涓嶈秴杩�90%锛屼繚鐣欐渶鍚�10%缁欐渶缁堝畬鎴� + // percent = percent > 90 ? 90 : percent; + // } + // + // modal.update({ + // content: that.$createElement('div', [ + // that.$createElement('p', '姝e湪澶勭悊鍒�鍏峰叆搴擄紝璇风◢鍊�...'), + // that.$createElement('a-progress', { + // props: { + // percent: percent, + // status: 'active' + // } + // }), + // // that.$createElement('p', { + // // style: { + // // marginTop: '10px' + // // } + // // }, `杩涘害: ${processedTools}/${totalTools} 鎶婂垁鍏穈) + // ]) + // }); + // }; + // + // // 鍙戦�佽姹� + // let httpurl = that.url.submit + '?orderId=' + encodeURIComponent(targetId) + // + // return httpAction(httpurl, {}, 'get').then((res) => { + // // 鏍规嵁鍚庣杩斿洖鐨勬�诲垁鍏锋暟璁剧疆杩涘害 + // if (res.success) { + // // 濡傛灉鍚庣杩斿洖浜嗘�诲垁鍏锋暟 + // if (res.result && res.result.quantity !== undefined) { + // totalTools = res.result.quantity; + // processedTools = res.result.totalSubmitted || 0; //宸插鐞嗗垁鍏锋暟 + // } + // // 濡傛灉鍚庣杩斿洖浜嗘槑缁嗗垪琛紝鏍规嵁receive_number璁$畻鎬绘暟閲� + // else if (res.result && res.result.detailList) { + // // 鏍规嵁姣忎釜鏄庣粏鐨剅eceive_number绱姞璁$畻鎬诲垁鍏锋暟 + // totalTools = res.result.detailList.reduce((total, detail) => { + // return total + (detail.receiveNumber || 0); + // }, 0); + // processedTools = totalTools; // 宸插鐞嗘暟閲� + // } + // + // // 鏇存柊杩涘害鏄剧ず + // percent = 100; // 鐩存帴鏄剧ず100%瀹屾垚 + // updateProgress(); + // + // // 鏄剧ず瀹屾垚鐘舵�� + // setTimeout(() => { + // modal.update({ + // content: that.$createElement('div', [ + // that.$createElement('p', '姝e湪澶勭悊鍒�鍏峰叆搴擄紝璇风◢鍊�...'), + // that.$createElement('a-progress', { + // props: { + // percent: percent, + // status: 'success' + // } + // }), + // that.$createElement('p', { + // style: { + // marginTop: '10px' + // } + // }, totalTools > 0 ? + // `杩涘害: ${processedTools}/${totalTools} 鎶婂垁鍏穈 : + // '澶勭悊瀹屾垚') + // ]) + // }); + // + // // 寤惰繜鍏抽棴妯℃�佹 + // setTimeout(() => { + // modal.destroy(); + // that.$message.success(res.message || '鎻愪氦鎴愬姛'); + // that.loadData(); + // }, 500); + // }, 300); + // } else { + // // 澶勭悊閿欒鎯呭喌 + // modal.destroy(); + // that.$message.warning(res.message || '鎻愪氦澶辫触'); + // } + // }).catch(error => { + // modal.destroy(); + // that.$message.error('鎻愪氦澶辫触: ' + error.message) + // }).finally(() => { + // that.loading = false + // }) + // } + // }) + // }, + + } } </script> diff --git a/src/views/cms/CuttingInventoryList.vue b/src/views/cms/CuttingInventoryList.vue index 65b96c9..7d31077 100644 --- a/src/views/cms/CuttingInventoryList.vue +++ b/src/views/cms/CuttingInventoryList.vue @@ -147,7 +147,7 @@ { title:'鍒�鍏风紪鐮�', align:"center", - dataIndex: 'cuttingId' + dataIndex: 'cuttingId_dictText' }, { title:'鍒�鍏锋潯鐮�', @@ -179,7 +179,7 @@ deleteBatch: "/cms/cuttingInventory/deleteBatch", exportXlsUrl: "/cms/cuttingInventory/exportXls", importExcelUrl: "cms/cuttingInventory/importExcel", - + }, dictOptions:{}, superFieldList:[], diff --git a/src/views/cms/modules/CuttingInboundModal.vue b/src/views/cms/modules/CuttingInboundModal.vue index 1c508c2..5d11427 100644 --- a/src/views/cms/modules/CuttingInboundModal.vue +++ b/src/views/cms/modules/CuttingInboundModal.vue @@ -60,9 +60,9 @@ </a-row> </a-form> </a-spin> - <a-button type="primary" :style="{ marginBottom: '8px' }" @click="selectTooling()" - >閫夋嫨鍒�鍏�</a-button - > + <a-button type="primary" :style="{ marginBottom: '8px' }" @click="selectTooling()"> + 閫夋嫨鍒�鍏� + </a-button> <a-table ref="table" bordered @@ -265,6 +265,13 @@ this.$message.error('璇峰厛閫夋嫨鍏ュ簱鍒�鍏�') return } + // 鏍¢獙鍏ュ簱鏁伴噺鏄惁濉啓 + for(let i=0; i<this.dataSource.length; i++) { + if (!this.dataSource[i].receiveNumber || this.dataSource[i].receiveNumber <= 0) { + this.$message.error(`蹇呴』濉啓鍏ュ簱鏁伴噺`) + return + } + } const that = this // 瑙﹀彂琛ㄥ崟楠岃瘉 this.form.validateFields((err, values) => { diff --git a/src/views/mes/MesMaterialTransferRequestList.vue b/src/views/mes/MesMaterialTransferRequestList.vue index c2242c4..1f757c4 100644 --- a/src/views/mes/MesMaterialTransferRequestList.vue +++ b/src/views/mes/MesMaterialTransferRequestList.vue @@ -106,9 +106,9 @@ dataIndex: 'requestCode' }, { - title: '宸ュ崟ID', + title: '浠诲姟鍙�', align: 'center', - dataIndex: 'workOrderId' + dataIndex: 'workOrderId_dictText' }, { title: 'SAP棰勭暀鍙�', @@ -116,9 +116,34 @@ dataIndex: 'reservationCode' }, { + title: '鐗╂枡缂栫爜', + align: 'center', + dataIndex: 'materialNumber' + }, + { + title: '鐗╂枡鍚嶇О', + align: 'center', + dataIndex: 'materialName' + }, + { + title: '鐞嗚鎷夊姩鏁伴噺', + align: 'center', + dataIndex: 'specifiedQuantity' + }, + { + title: '瀹為檯鎷夊姩鏁伴噺', + align: 'center', + dataIndex: 'actualQuantity' + }, + { title: '鍙戝竷鐘舵��', align: 'center', dataIndex: 'publishStatus_dictText' + }, + { + title: '鍙戝竷鏃堕棿', + align: 'center', + dataIndex: 'publishTime' }, { title: '璇锋眰鐘舵��', @@ -133,17 +158,17 @@ { title: '鍘熷簱瀛樺湴', align: 'center', - dataIndex: 'originalWarehouseId' + dataIndex: 'originalWarehouseId_dictText' }, { title: '鐩爣搴撳瓨鍦�', align: 'center', - dataIndex: 'targetWarehouseId' + dataIndex: 'targetWarehouseId_dictText' }, { - title: '浼樺厛绾э紙鎷夊姩绫诲瀷锛�', + title: '鎷夊姩绫诲瀷', align: 'center', - dataIndex: 'priority_dictText' + dataIndex: 'materialTransferCategory_dictText' }, { title: '鏈�鏅氶厤閫佹椂闂�', 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 diff --git a/src/views/mes/modules/WorkOrderSelectModal.vue b/src/views/mes/modules/WorkOrderSelectModal.vue new file mode 100644 index 0000000..1c9abf0 --- /dev/null +++ b/src/views/mes/modules/WorkOrderSelectModal.vue @@ -0,0 +1,173 @@ +<template> + <div> + <!----> + <a-input @click="openModal" placeholder="璇烽�夋嫨浠诲姟鍙�" v-model="textVals" readOnly :disabled="submitDisabled"> + <a-icon slot="prefix" type="cluster" title="鎺掍骇宸ュ崟閫夋嫨"/> + <a-icon v-if="storeVals" slot="suffix" type="close-circle" @click="handleEmpty" title="娓呯┖"/> + </a-input> + <a-modal + title="宸ュ崟閫夋嫨" + :width="1000" + :visible="visible" + :confirmLoading="confirmLoading" + @ok="handleSubmit" + @cancel="handleCancel"> + <a-table + ref="table" + bordered + size="middle" + rowKey="id" + :columns="columns" + :dataSource="dataSource" + :pagination="ipagination" + :loading="loading" + @change="handleTableChange" + :customRow="customTableRow" + :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange, type: 'radio'}"></a-table> + </a-modal> + </div> + +</template> + +<script> +import { JeecgListMixin } from '@/mixins/JeecgListMixin' + +export default { + name: "WorkOrderSelectModal", + mixins: [JeecgListMixin], + props: { + orderStatus: { + type: String, + default: 'null', //濡傛灉娌℃湁浼犲�煎垯鏌ヤ笉鍒版暟鎹� + }, + submitDisabled: { + type: Boolean, + default: false, + }, + workOrder: { + type: Object, + default: undefined, + } + }, + watch: { + workOrder: { + immediate: true, + handler(val) { + this.textVals = val.workOrderCode + this.storeVals = val + } + } + }, + data() { + return { + title: "鎿嶄綔", + visible: false, + model: {}, + confirmLoading: false, + storeVals: undefined, //[key values] + textVals: this.value, //[label values] + queryParam: { + workOrderStatus: this.orderStatus, + }, + url: { + list: "/mes/mesProductionWorkOrder/list" + }, + columns: [ + { + title: '浠诲姟鍙�', + align: "center", + dataIndex: 'workOrderCode', + fixed: 'left', + width: 200 + }, + { + title: '鐗╂枡缂栫爜', + align: "center", + dataIndex: 'materialNumber', + }, + { + title: '鐗╂枡鍚嶇О', + align: "center", + dataIndex: 'materialName' + }, + { + title: '璁″垝鐢熶骇鏁伴噺', + align: "center", + dataIndex: 'planQuantity' + }, + { + title: '宸ュ崟鐘舵��', + align: "center", + dataIndex: 'workOrderStatus_dictText' + }, + ] + } + }, + created() { + //鍔犺浇鎺掍骇宸ュ崟鏁版嵁 + this.queryParam.workOrderStatus = this.orderStatus; + }, + methods: { + openModal(){ + this.visible = true; + if(this.workOrder){ + this.textVals = this.workOrder.workOrderCode; + this.storeVals = this.workOrder; + this.selectedRowKeys = [this.workOrder.id]; + this.selectedRows = [this.workOrder] + }else { + this.selectedRowKeys = [] + this.selectedRows = [] + this.textVals = ''; + this.storeVals = undefined; + } + + }, + handleEmpty(){ + this.textVals = ''; + this.storeVals = undefined; + this.selectedRowKeys = [] + this.selectedRows = [] + this.$emit('ok', []); + }, + close() { + this.$emit('close'); + this.visible = false; + }, + /** + * 鑷畾涔夎澶囧彴璐﹁〃鏍艰 + * @param record 琛ㄦ牸琛屼俊鎭� + * @returns {{style: {cursor: string}, on: {click: *}}} 鏍峰紡瀵硅薄涓庝簨浠舵柟娉� + */ + customTableRow(record) { + return { + style: { + cursor: 'pointer' + }, + on: { + click: () => { + this.onSelectChange([record.id], [record]); + } + } + } + }, + handleCancel() { + this.close() + }, + handleSubmit() { + if(this.selectionRows && this.selectionRows.length === 1){ + this.textVals = this.selectionRows[0].workOrderCode; + this.storeVals = this.selectionRows[0]; + this.$emit('ok', this.selectionRows); + this.close() + }else { + that.$message.warning('璇烽�夋嫨涓�鏉¤褰曪紒'); + } + }, + } +} +</script> + +<style> + +</style> -- Gitblit v1.9.3