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