From f3f9531d797c3331ca366e0b7a5d9c6e93c10a8c Mon Sep 17 00:00:00 2001
From: buhuazhen <hua100783@gmail.com>
Date: 星期五, 27 三月 2026 11:17:06 +0800
Subject: [PATCH] fix(产品结构): 修复单位产出数量精度并优化显示逻辑

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

diff --git a/src/views/productionManagement/productStructure/Detail/index.vue b/src/views/productionManagement/productStructure/Detail/index.vue
index 1452d1e..a3e6175 100644
--- a/src/views/productionManagement/productStructure/Detail/index.vue
+++ b/src/views/productionManagement/productStructure/Detail/index.vue
@@ -101,13 +101,15 @@
                   <el-form-item :prop="`dataList.${$index}.unitQuantity`"
                                 :rules="[{ required: true, message: '璇疯緭鍏ュ崟浣嶄骇鍑烘墍闇�鏁伴噺', trigger: ['blur','change'] }]"
                                 style="margin: 0">
-                    <el-input-number v-model="row.unitQuantity"
+                    <el-input-number v-if="dataValue.isEdit"
+                                     v-model="row.unitQuantity"
                                      :min="0"
-                                     :precision="2"
+                                     :precision="3"
                                      :step="1"
                                      controls-position="right"
                                      style="width: 100%"
                                      :disabled="!dataValue.isEdit" />
+                    <span v-else>{{ formatDecimalValue(row.unitQuantity) }}</span>
                   </el-form-item>
                 </template>
               </el-table-column>
@@ -232,15 +234,31 @@
   dataValue.showProductDialog = true;
 };
 
+const formatDecimalValue = (
+  value: number | string | null | undefined
+) => {
+  const numericValue = Number(value);
+  if (Number.isNaN(numericValue)) {
+    return value;
+  }
+  return Number(numericValue.toFixed(3));
+};
+
+const normalizeProductStructureList = (list: any[] = []) =>
+  list.map((item: any) => ({
+    ...item,
+    unitQuantity: formatDecimalValue(item.unitQuantity ?? 0),
+  }));
+
 const fetchData = async () => {
   if (isOrderPage.value) {
     // 璁㈠崟鎯呭喌锛氫娇鐢ㄨ鍗曠殑浜у搧缁撴瀯鎺ュ彛
     const { data } = await listProcessBom({ orderId: routeOrderId.value });
-    dataValue.dataList = data || [];
+    dataValue.dataList = normalizeProductStructureList(data) as typeof dataValue.dataList;
   } else {
     // 闈炶鍗曟儏鍐碉細浣跨敤鍘熸潵鐨勬帴鍙�
     const { data } = await queryList(routeId.value);
-    dataValue.dataList = data || [];
+    dataValue.dataList = normalizeProductStructureList(data) as typeof dataValue.dataList;
   }
 };
 
@@ -268,8 +286,8 @@
         if (valid) {
           add({
             bomId: routeId.value,
-            productStructureList: dataValue.dataList || [],
-          }).then(res => {
+            productStructureList: normalizeProductStructureList(dataValue.dataList as any[]),
+          }).then(() => {
             router.push({
               path: '/productionManagement/productionManagement/productStructure/index',
             })
@@ -316,4 +334,4 @@
   fetchData();
   fetchProcessOptions();
 });
-</script>
\ No newline at end of file
+</script>

--
Gitblit v1.9.3