From 7a77afaedc239551008b8fba42f02f85065fbe4b Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期二, 14 四月 2026 17:47:51 +0800
Subject: [PATCH] 中兴实强 1.新增工艺路线的时候产品可以多选

---
 src/views/productionManagement/processRoute/New.vue |   38 +++++++++++++++++++++++++++++++++++---
 1 files changed, 35 insertions(+), 3 deletions(-)

diff --git a/src/views/productionManagement/processRoute/New.vue b/src/views/productionManagement/processRoute/New.vue
index 69a8eed..11d954a 100644
--- a/src/views/productionManagement/processRoute/New.vue
+++ b/src/views/productionManagement/processRoute/New.vue
@@ -41,7 +41,7 @@
             v-model="formState.bomId"
             placeholder="璇烽�夋嫨BOM"
             clearable
-            :disabled="formState.selectedProducts.length !== 1 || bomOptions.length === 0"
+            :disabled="bomOptions.length === 0"
             style="width: 100%"
           >
             <el-option
@@ -153,6 +153,38 @@
   }
 };
 
+const loadBomOptionsByProducts = async (products) => {
+  if (!products?.length) {
+    bomOptions.value = [];
+    return;
+  }
+
+  const bomGroups = await Promise.all(
+    products.map(async (product) => {
+      try {
+        const res = await getByModel(product.id);
+        if (Array.isArray(res)) {
+          return res;
+        }
+        if (res && res.data) {
+          return Array.isArray(res.data) ? res.data : [res.data];
+        }
+        return res && typeof res === "object" ? [res] : [];
+      } catch (error) {
+        return [];
+      }
+    })
+  );
+
+  const bomMap = new Map();
+  bomGroups.flat().forEach((item) => {
+    if (item?.id && !bomMap.has(item.id)) {
+      bomMap.set(item.id, item);
+    }
+  });
+  bomOptions.value = Array.from(bomMap.values());
+};
+
 const handleProductSelect = async (products) => {
   if (!products?.length) {
     return;
@@ -174,7 +206,7 @@
     formState.value.productModelId = undefined;
     formState.value.productName = "";
     formState.value.productModelName = "";
-    bomOptions.value = [];
+    await loadBomOptionsByProducts(products);
   }
 
   showProductSelectDialog.value = false;
@@ -205,7 +237,7 @@
       productModelName: formState.value.selectedProducts.length === 1
         ? formState.value.selectedProducts[0].model
         : undefined,
-      bomId: formState.value.selectedProducts.length === 1 ? formState.value.bomId : undefined,
+      bomId: formState.value.bomId,
       description: formState.value.description,
     })
       .then(() => {

--
Gitblit v1.9.3