From 9cecea613e29bb152bb6ea69a3cca94aa537c621 Mon Sep 17 00:00:00 2001
From: huminmin <mac@MacBook-Pro.local>
Date: 星期三, 20 五月 2026 14:56:34 +0800
Subject: [PATCH] bom同一层级只能选一样的工序,增加提示

---
 src/views/productionManagement/productStructure/Detail/index.vue |   51 +++++++++++++++++++++++++--------------------------
 1 files changed, 25 insertions(+), 26 deletions(-)

diff --git a/src/views/productionManagement/productStructure/Detail/index.vue b/src/views/productionManagement/productStructure/Detail/index.vue
index 0c326cc..5cb08e8 100644
--- a/src/views/productionManagement/productStructure/Detail/index.vue
+++ b/src/views/productionManagement/productStructure/Detail/index.vue
@@ -333,24 +333,19 @@
   };
 
   const handleProcessChange = (row: any, value: any) => {
-    if (value) {
-      const siblings = findSiblings(dataValue.dataList, row.tempId);
-      if (siblings) {
-        const isDuplicate = siblings.some(
-          s => s.tempId !== row.tempId && s.processId === value
-        );
-        if (isDuplicate) {
-          const option = getProcessOptionById(value);
-          const processName = option?.name || "璇ュ伐搴�";
-          ElMessage.warning(`鍚屼竴灞傜骇涓嬩笉鑳介�夋嫨閲嶅鐨勬秷鑰楀伐搴忥細${processName}`);
-          row.processId = "";
-          syncProcessOperationFields(row);
-          return;
-        }
-      }
-    }
     row.processId = value || "";
     syncProcessOperationFields(row);
+    
+    // 妫�鏌ュ悓涓�灞傜骇鏄惁宸茬粡鏈夊叾浠栦笉鍚岀殑宸ュ簭琚�変腑
+    const siblings = findSiblings(dataValue.dataList, row.tempId);
+    if (siblings && value) {
+      const hasDifferentProcess = siblings.some(sibling => {
+        return sibling.tempId !== row.tempId && sibling.processId && sibling.processId !== value;
+      });
+      if (hasDifferentProcess) {
+        ElMessage.warning("鍚屼竴灞傜骇宸插瓨鍦ㄤ笉鍚岀殑宸ュ簭锛岃鍏堢粺涓�宸ュ簭鍚庡啀杩涜淇敼");
+      }
+    }
   };
 
   const handleUnitQuantityChange = () => {
@@ -463,23 +458,27 @@
   const validateAll = () => {
     let isValid = true;
 
-    // 鏍¢獙涓�缁勫厔寮熻妭鐐圭殑宸ュ簭鏄惁鍞竴
+    // 鏍¢獙涓�缁勫厔寮熻妭鐐圭殑宸ュ簭鏄惁閮界浉鍚�
     const checkProcessUniqueness = (items: any[]) => {
       if (!items || items.length === 0 || !isValid) return;
 
-      const processIds = new Set();
-      for (const item of items) {
-        if (item.processId) {
-          if (processIds.has(item.processId)) {
-            const option = getProcessOptionById(item.processId);
-            const processName = option?.name || item.processName || "鏈煡宸ュ簭";
+      // 鑾峰彇绗竴涓潪绌虹殑宸ュ簭ID浣滀负鍙傝��
+      const firstProcessId = items.find(item => item.processId)?.processId;
+      
+      // 濡傛灉鏈夊伐搴廔D锛屾鏌ユ墍鏈夐」鏄惁閮戒娇鐢ㄧ浉鍚岀殑宸ュ簭
+      if (firstProcessId) {
+        for (const item of items) {
+          if (item.processId && item.processId !== firstProcessId) {
+            const option1 = getProcessOptionById(firstProcessId);
+            const option2 = getProcessOptionById(item.processId);
+            const processName1 = option1?.name || "鏈煡宸ュ簭";
+            const processName2 = option2?.name || "鏈煡宸ュ簭";
             ElMessage.error(
-              `浜у搧銆�${item.productName}銆嶇殑娑堣�楀伐搴忋��${processName}銆嶅湪褰撳墠灞傜骇宸插瓨鍦紝璇峰嬁閲嶅璁剧疆`
+              `褰撳墠灞傜骇涓嬪伐搴忎笉涓�鑷达紝璇蜂娇鐢ㄧ浉鍚岀殑宸ュ簭銆傚瓨鍦ㄣ��${processName1}銆嶅拰銆�${processName2}銆峘
             );
             isValid = false;
             return;
           }
-          processIds.add(item.processId);
         }
       }
 
@@ -697,4 +696,4 @@
     await fetchProcessOptions();
     await fetchData();
   });
-</script>
+</script>
\ No newline at end of file

--
Gitblit v1.9.3