From 5e18ecc3723502b0071ae2c96d7fadee93405356 Mon Sep 17 00:00:00 2001
From: yuan <123@>
Date: 星期三, 10 六月 2026 20:55:32 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/dev_pro_河南鹤壁' into dev_pro_河南鹤壁

---
 src/views/productionManagement/productionOrder/components/MaterialLedgerDialog.vue |   75 ++++++++++++++++++++++++-------------
 1 files changed, 48 insertions(+), 27 deletions(-)

diff --git a/src/views/productionManagement/productionOrder/components/MaterialLedgerDialog.vue b/src/views/productionManagement/productionOrder/components/MaterialLedgerDialog.vue
index 09e7421..6c175f9 100644
--- a/src/views/productionManagement/productionOrder/components/MaterialLedgerDialog.vue
+++ b/src/views/productionManagement/productionOrder/components/MaterialLedgerDialog.vue
@@ -2,7 +2,7 @@
   <div>
     <el-dialog v-model="dialogVisible"
                title="棰嗘枡鍙拌处"
-               width="1200px"
+               width="1350px"
                @close="handleClose">
       <div class="material-toolbar">
         <el-button type="primary"
@@ -13,7 +13,7 @@
                 border
                 row-key="tempId">
         <el-table-column label="宸ュ簭鍚嶇О"
-                         min-width="140">
+                         min-width="80">
           <template #default="{ row }">
             <span v-if="row.bom === true">{{ row.operationName || "-" }}</span>
             <el-select v-else
@@ -31,7 +31,7 @@
           </template>
         </el-table-column>
         <el-table-column label="鍘熸枡鍚嶇О"
-                         min-width="140">
+                         min-width="120">
           <template #default="{ row }">
             <span v-if="row.bom === true">{{ row.materialName || "-" }}</span>
             <el-button v-else
@@ -43,7 +43,7 @@
           </template>
         </el-table-column>
         <el-table-column label="鍘熸枡鍨嬪彿"
-                         min-width="140">
+                         min-width="120">
           <template #default="{ row }">
             {{ row.materialModel || "-" }}
           </template>
@@ -66,21 +66,22 @@
           </template>
         </el-table-column>
         <el-table-column label="闇�姹傛暟閲�"
-                         min-width="120">
+                         min-width="100">
           <template #default="{ row }">
-            <span v-if="row.bom === true">{{ row.demandedQuantity ?? "-" }}</span>
+            <span v-if="row.bom === true">{{ stripTrailingZeros(row.demandedQuantity) ?? "-" }}</span>
             <el-input-number v-else
                              v-model="row.demandedQuantity"
                              :min="0"
-                             :precision="3"
                              :step="1"
                              controls-position="right"
+                             :formatter="value => stripTrailingZeros(value)"
+                             :parser="value => parseFloat(value) || 0"
                              style="width: 100%;"
                              @change="val => handleRequiredQtyChange(row, val)" />
           </template>
         </el-table-column>
         <el-table-column label="璁¢噺鍗曚綅"
-                         width="100">
+                         width="80">
           <template #default="{ row }">
             {{ row.unit || "-" }}
           </template>
@@ -90,9 +91,10 @@
           <template #default="{ row }">
             <el-input-number v-model="row.pickQty"
                              :min="0"
-                             :precision="3"
                              :step="1"
                              controls-position="right"
+                             :formatter="value => stripTrailingZeros(value)"
+                             :parser="value => parseFloat(value) || 0"
                              style="width: 100%;" />
           </template>
         </el-table-column>
@@ -187,26 +189,36 @@
   const currentMaterialSelectRowIndex = ref(-1);
   let materialTempId = 0;
 
-  const createMaterialRow = (row = {}) => ({
-    tempId: row.id || `temp_${++materialTempId}`,
-    id: row.id,
-    processId: row.processId || row.technologyOperationId,
-    technologyOperationId: row.technologyOperationId || row.processId,
-    operationName: row.operationName || "",
-    bom: row.bom === true,
-    materialModelId: row.materialModelId || row.productModelId,
-    materialName: row.materialName || row.productName || "",
-    materialModel: row.materialModel || row.model || "",
-    demandedQuantity: Number(row.requiredQty ?? row.demandedQuantity ?? 0),
-    unit: row.unit || "",
-    pickQty: Number(row.pickQty ?? row.pickQuantity ?? 0),
-    batchNo: row.batchNo
+  const getDefaultBatchNo = batchNoList => {
+    if (!Array.isArray(batchNoList) || batchNoList.length === 0) return [];
+    return [batchNoList[0]];
+  };
+
+  const createMaterialRow = (row = {}) => {
+    const batchNoList = Array.isArray(row.batchNoList) ? row.batchNoList : [];
+    const batchNo = row.batchNo
       ? typeof row.batchNo === "string"
         ? row.batchNo.split(",")
         : row.batchNo
-      : [],
-    batchNoList: row.batchNoList || [],
-  });
+      : getDefaultBatchNo(batchNoList);
+
+    return {
+      tempId: row.id || `temp_${++materialTempId}`,
+      id: row.id,
+      processId: row.processId || row.technologyOperationId,
+      technologyOperationId: row.technologyOperationId || row.processId,
+      operationName: row.operationName || "",
+      bom: row.bom === true,
+      materialModelId: row.materialModelId || row.productModelId,
+      materialName: row.materialName || row.productName || "",
+      materialModel: row.materialModel || row.model || "",
+      demandedQuantity: Number(row.requiredQty ?? row.demandedQuantity ?? 0),
+      unit: row.unit || "",
+      pickQty: Number(row.pickQty ?? row.pickQuantity ?? row.requiredQty ?? row.demandedQuantity ?? 0),
+      batchNo,
+      batchNoList,
+    };
+  };
 
   const getProcessOptions = async () => {
     if (!props.orderRow?.id) return;
@@ -270,6 +282,14 @@
     }
   );
 
+  const stripTrailingZeros = val => {
+    const str = String(val);
+    if (str.includes(".")) {
+      return parseFloat(str).toString();
+    }
+    return str;
+  };
+
   const handleClose = () => {
     materialTableData.value = [];
     currentMaterialSelectRowIndex.value = -1;
@@ -319,7 +339,8 @@
       product.materialName || product.productName || product.name || "";
     row.materialModel = product.materialModel || product.model || "";
     row.unit = product.unit || product.measureUnit || "";
-    row.batchNoList = product.batchNoList;
+    row.batchNoList = Array.isArray(product.batchNoList) ? product.batchNoList : [];
+    row.batchNo = getDefaultBatchNo(row.batchNoList);
     currentMaterialSelectRowIndex.value = -1;
     materialProductDialogVisible.value = false;
   };

--
Gitblit v1.9.3