From 1c1000a93a88b5af5eabbf410aa264b0911dbee4 Mon Sep 17 00:00:00 2001 From: cuikaidong <ckd2942379034@163.com> Date: 星期二, 29 七月 2025 14:18:58 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- src/views/tms/modules/outBound/OutboundDetailSelectList.vue | 46 ++++++++++++++++++---- src/views/tms/modules/outBound/OutboundOrderSelectList.vue | 18 +++++++++ src/views/tms/modules/inbound/InboundApplyDetailList.vue | 2 src/views/flowable/workflow/FlowCompleted.vue | 22 ++++++++++ src/views/flowable/workflow/FlowTodo.vue | 1 5 files changed, 78 insertions(+), 11 deletions(-) diff --git a/src/views/flowable/workflow/FlowCompleted.vue b/src/views/flowable/workflow/FlowCompleted.vue index f6dbded..716f113 100644 --- a/src/views/flowable/workflow/FlowCompleted.vue +++ b/src/views/flowable/workflow/FlowCompleted.vue @@ -161,6 +161,11 @@ ref='equipmentScrapApprovalModelRef' @searchReset='searchReset' /> + <spare-part-apply-handle + ref='sparePartApplyModal' + @searchReset='searchReset' + :selectSparePartApplyData='selectSparePartApplyData' + ></spare-part-apply-handle> </a-card> </template> @@ -182,6 +187,7 @@ import EquipmentSealUpApprovalModal from '@views/flowable/workflow/sealUp/EquipmentSealUpApprovalModal.vue' import EquipmentTransferApprovalModal from '@views/flowable/workflow/transfer/EquipmentTransferApprovalModal.vue' import EquipmentScrapApprovalModal from '@views/flowable/workflow/scrap/EquipmentScrapApprovalModal.vue' +import SparePartApplyHandle from '@views/flowable/workflow/sparePartApply/SparePartApplyHandle.vue' export default { name: 'NcDeviceCharactersList', @@ -199,7 +205,8 @@ EquipmentLeanOutApprovalModal, EquipmentSealUpApprovalModal, EquipmentTransferApprovalModal, - EquipmentScrapApprovalModal + EquipmentScrapApprovalModal, + SparePartApplyHandle }, data() { return { @@ -273,6 +280,7 @@ selectOutBoundOrderData: {}, selectLossBoundOrderData: {}, selectStocktakingBoundOrderData: {}, + selectSparePartApplyData: {}, // selectEquipmentLeanOutData: {}, // selectEquipmentSealUpData: {}, // selectEquipmentTransferData: {}, @@ -333,6 +341,9 @@ break case 'equipment_scrap': this.handleEquipmentScrap(item) + break + case 'spare_part_apply': + this.handleSparePartApplyApproval(item) break default: alert('娌℃壘鍒拌娴佺▼') @@ -469,6 +480,15 @@ this.$refs.equipmentScrapApprovalModelRef.handleDetail(item) this.$refs.equipmentScrapApprovalModelRef.disableSubmit = true }, + handleSparePartApplyApproval(item) { + this.selectSparePartApplyData = Object.assign({}, item) + item.procInstId = item.procInsId + item.processInstanceId = item.procInsId + this.selectSparePartApplyData.assignee_dictText = item.todoUsers_dictText + this.$refs.sparePartApplyModal.auditVisible = false + this.$refs.sparePartApplyModal.clearTableSource() + this.$refs.sparePartApplyModal.getAllApproveData(item) + }, } } </script> diff --git a/src/views/flowable/workflow/FlowTodo.vue b/src/views/flowable/workflow/FlowTodo.vue index 1dd644c..ac34499 100644 --- a/src/views/flowable/workflow/FlowTodo.vue +++ b/src/views/flowable/workflow/FlowTodo.vue @@ -757,6 +757,7 @@ }, handleSparePartApplyApproval(item) { if (item && item.dataId) { + debugger this.selectSparePartApplyData = Object.assign({}, item) this.$refs.sparePartApplyModal.auditVisible = true this.$refs.sparePartApplyModal.clearTableSource() diff --git a/src/views/tms/modules/inbound/InboundApplyDetailList.vue b/src/views/tms/modules/inbound/InboundApplyDetailList.vue index 45dca8f..fd9525d 100644 --- a/src/views/tms/modules/inbound/InboundApplyDetailList.vue +++ b/src/views/tms/modules/inbound/InboundApplyDetailList.vue @@ -138,7 +138,7 @@ }, mounted() { this.$bus.$on('getToolingStorageData', (data) => { - this.queryParam.inboundOrderId = data.id; + this.queryParam.inboundOrderId = data[0].id; this.searchQuery(); }) } diff --git a/src/views/tms/modules/outBound/OutboundDetailSelectList.vue b/src/views/tms/modules/outBound/OutboundDetailSelectList.vue index 6953efe..87c4314 100644 --- a/src/views/tms/modules/outBound/OutboundDetailSelectList.vue +++ b/src/views/tms/modules/outBound/OutboundDetailSelectList.vue @@ -16,21 +16,31 @@ <template v-for="col in columns" :slot="col.dataIndex" slot-scope="text, record, index"> <div :key="col.dataIndex"> - + <a-input-number v-if="col.dataIndex === 'ratedLife'" - :disabled="record.accuracyClass != '1'" + :disabled="record.accuracyClass !== '1'" :value="text" @change="(e) => handleChange(e, record.key, col, index)" :min="1" /> + <div v-if="col.dataIndex === 'ratedLife' && record.accuracyClass === '1' && isFieldEmpty(record.ratedLife)" + style="color: #ff4d4f; font-size: 12px;"> + 蹇呭~ + </div> + <a-input-number v-if="col.dataIndex === 'useLife'" - :disabled="record.accuracyClass != '1'" + :disabled="record.accuracyClass !== '1'" :value="text" @change="(e) => handleChange(e, record.key, col, index)" :min="1" /> + <div v-if="col.dataIndex === 'useLife' && record.accuracyClass === '1' && isFieldEmpty(record.useLife)" + style="color: #ff4d4f; font-size: 12px;"> + 蹇呭~ + </div> + </div> </template> @@ -208,6 +218,9 @@ } }, methods: { + isFieldEmpty(value) { + return value === undefined || value === null || value === ''; + }, onSelectChange(selectedRowKeys, selectionRows) { this.selectedRowKeys = selectedRowKeys; this.selectionRows = selectionRows; @@ -219,15 +232,19 @@ this.ipagination.current = 1 }, handleOutbound(record) { - console.log(this.mainId) - console.log(record) + // 鍏堣繘琛屽繀濉牎楠� + const errors = this.validateRequiredFields(record); + if (errors.length > 0) { + this.$message.error(errors.join('锛�')); + return; + } const params = [ { outBoundOrderId: this.mainId, outboundDetailId: record.id, outboundQuantity: record.outboundQuantity, - ratedLife:record.ratedLife, - useLife:record.useLife + ratedLife: record.ratedLife, + useLife: record.useLife } ] postAction(this.url.outbound, params).then(res=>{ @@ -249,8 +266,19 @@ this.dataSource = temp } }, - - + validateRequiredFields(record) { + const errors = []; + // 鍙湁鍦ㄤ笉绂佺敤鐘舵�佷笅鎵嶉渶瑕佹牎楠屽繀濉� + if (record.accuracyClass === '1') { + if (this.isFieldEmpty(record.ratedLife)) { + errors.push('棰濆畾瀵垮懡涓哄繀濉」'); + } + if (this.isFieldEmpty(record.useLife)) { + errors.push('浣跨敤瀵垮懡涓哄繀濉」'); + } + } + return errors; + } } } </script> diff --git a/src/views/tms/modules/outBound/OutboundOrderSelectList.vue b/src/views/tms/modules/outBound/OutboundOrderSelectList.vue index 000dd79..4358e5e 100644 --- a/src/views/tms/modules/outBound/OutboundOrderSelectList.vue +++ b/src/views/tms/modules/outBound/OutboundOrderSelectList.vue @@ -252,6 +252,24 @@ this.$message.warning("璇烽�夋嫨鏄庣粏鍚庡啀鍑哄簱锛�") return } + // 鍏堥獙璇佹墍鏈夐�変腑椤� + const validationErrors = []; + for (let i = 0; i < this.selectionRows.length; i++) { + const item = this.selectionRows[i]; + // 妫�鏌ュ繀濉瓧娈� + if (item.accuracyClass === '1') { // 鍙湁鍦ㄤ笉绂佺敤鐘舵�佷笅鎵嶉渶瑕佹牎楠屽繀濉� + if (this.$refs.outboundDetailSelectList.isFieldEmpty(item.ratedLife)) { + validationErrors.push(`鏄庣粏绗�${i+1}琛岋細棰濆畾瀵垮懡涓哄繀濉」`); + } + if (this.$refs.outboundDetailSelectList.isFieldEmpty(item.useLife)) { + validationErrors.push(`鏄庣粏绗�${i+1}琛岋細浣跨敤瀵垮懡涓哄繀濉」`); + } + } + } + if (validationErrors.length > 0) { + this.$message.error(validationErrors.join('锛�')); + return; + } const params = this.selectionRows.map((item) => { return { outBoundOrderId: this.selectedMainId, -- Gitblit v1.9.3