From bb99f0e984da3ce086a2b3ffce2f17ea3097652b Mon Sep 17 00:00:00 2001
From: gongchunyi <deslre0381@gmail.com>
Date: 星期五, 21 八月 2026 16:07:32 +0800
Subject: [PATCH] fix: 需求总量计算错误

---
 src/views/productionManagement/processRoute/processRouteItem/index.vue |   76 ++++++++++----------------------------
 1 files changed, 20 insertions(+), 56 deletions(-)

diff --git a/src/views/productionManagement/processRoute/processRouteItem/index.vue b/src/views/productionManagement/processRoute/processRouteItem/index.vue
index 41e2109..befab45 100644
--- a/src/views/productionManagement/processRoute/processRouteItem/index.vue
+++ b/src/views/productionManagement/processRoute/processRouteItem/index.vue
@@ -343,7 +343,7 @@
                                      :step="1"
                                      controls-position="right"
                                      style="width: 100%"
-                                     @change="handleUnitQuantityChange"
+                                     @change="handleUnitQuantityChange(row)"
                                      :disabled="!bomDataValue.isEdit || bomDataValue.dataList.some(item => (item).tempId === row.tempId)" />
                   </el-form-item>
                 </template>
@@ -1196,52 +1196,6 @@
     });
   };
 
-  const toQuantityNumber = value => {
-    const numberValue = Number(value);
-    if (!Number.isFinite(numberValue)) {
-      return 0;
-    }
-    return Number(numberValue.toFixed(4));
-  };
-
-  const syncDemandedQuantityTree = (items, parentDemandedQuantity = null) => {
-    items.forEach(item => {
-      if (parentDemandedQuantity !== null) {
-        item.demandedQuantity = toQuantityNumber(
-          parentDemandedQuantity * toQuantityNumber(item.unitQuantity)
-        );
-      }
-
-      if (Array.isArray(item.children) && item.children.length > 0) {
-        syncDemandedQuantityTree(
-          item.children,
-          toQuantityNumber(item.demandedQuantity)
-        );
-      }
-    });
-  };
-
-  const recalculateDemandedQuantities = () => {
-    if (pageType.value !== "order") {
-      return;
-    }
-
-    const rootDemandedQuantity = routeInfo.value.quantity;
-    if (
-      rootDemandedQuantity === undefined ||
-      rootDemandedQuantity === null ||
-      rootDemandedQuantity === ""
-    ) {
-      syncDemandedQuantityTree(bomDataValue.value.dataList);
-      return;
-    }
-
-    syncDemandedQuantityTree(
-      bomDataValue.value.dataList,
-      toQuantityNumber(rootDemandedQuantity)
-    );
-  };
-
   const processChange = value => {
     processOptions.value.forEach(item => {
       if (item.id == value) {
@@ -1266,6 +1220,24 @@
       }
     }
     return null;
+  };
+
+  const toQuantityNumber = value => {
+    const numberValue = Number(value);
+    if (!Number.isFinite(numberValue)) {
+      return 0;
+    }
+    return Number(numberValue.toFixed(4));
+  };
+
+  const handleUnitQuantityChange = row => {
+    if (pageType.value !== "order") {
+      return;
+    }
+
+    row.demandedQuantity = toQuantityNumber(
+      toQuantityNumber(row.unitQuantity) * toQuantityNumber(routeInfo.value.quantity)
+    );
   };
 
   const handleBomProcessChange = (row, value) => {
@@ -1301,7 +1273,6 @@
       );
       bomDataValue.value.dataList = data || [];
       normalizeTreeData(bomDataValue.value.dataList);
-      recalculateDemandedQuantities();
     } catch (err) {
       console.error("鑾峰彇BOM鏁版嵁澶辫触锛�", err);
     }
@@ -1397,10 +1368,6 @@
     });
   };
 
-  const handleUnitQuantityChange = () => {
-    recalculateDemandedQuantities();
-  };
-
   const addchildItem = (item, tempId) => {
     if (item.tempId === tempId) {
       if (!item.children) {
@@ -1424,7 +1391,6 @@
         unit: "",
         tempId: new Date().getTime(),
       });
-      recalculateDemandedQuantities();
       return true;
     }
     if (item.children && item.children.length > 0) {
@@ -1461,7 +1427,6 @@
           children: [],
           tempId: new Date().getTime(),
         });
-        recalculateDemandedQuantities();
         return;
       }
       addchildItem(item, tempId);
@@ -1556,7 +1521,6 @@
     console.log(bomDataValue.value.dataList, "bomDataValue.value.dataList");
 
     normalizeTreeData(bomDataValue.value.dataList);
-    recalculateDemandedQuantities();
 
     const valid = validateAllBom();
     if (valid) {
@@ -1859,4 +1823,4 @@
     line-height: 1.5;
     word-break: break-all;
   }
-</style>
\ No newline at end of file
+</style>

--
Gitblit v1.9.3