From df15f94ac6ec48154f802475794fbe0c15052794 Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期五, 15 五月 2026 16:30:32 +0800
Subject: [PATCH] 浪潮 1.出库管理编辑反显问题

---
 src/views/inventoryManagement/dispatchLog/Record.vue |  115 ++++++++++++++++++++++++++++++++++++---------------------
 1 files changed, 72 insertions(+), 43 deletions(-)

diff --git a/src/views/inventoryManagement/dispatchLog/Record.vue b/src/views/inventoryManagement/dispatchLog/Record.vue
index 39b6408..7475352 100644
--- a/src/views/inventoryManagement/dispatchLog/Record.vue
+++ b/src/views/inventoryManagement/dispatchLog/Record.vue
@@ -465,33 +465,26 @@
 const handleEdit = async (row) => {
   dialogType.value = 'edit';
   resetForm();
-  // 濉厖琛ㄥ崟鏁版嵁
-  formState.value = {
-    id: row.id,
-    productId: row.productId,
-    productModelId: row.productModelId,
-    productName: row.productName,
-    productModelName: row.model,
-    unit: row.unit,
-    type: props.type === '0' ? 'qualified' : 'unqualified',
-    qualitity: row.stockOutNum,
-    batchNo: row.batchNo,
-    warehouseInfoId: row.warehouseInfoId,
-    recordType: row.recordType,
-    remark: row.remark || "",
-    maxStock: 0,
-  };
+
+  // 鍏堝姞杞芥墍鏈夋暟鎹紝鏈�鍚庡啀璧嬪�� formState
+  let loadedWarehouseList = [];
+  let loadedBatchNoList = [];
+  let loadedBatchNoStockMap = {};
+  let loadedMaxStock = 0;
+  let loadedRawBatchNoMaps = {};
+
   // 缂栬緫鏃跺姞杞戒粨搴撳垪琛�
   if (row.warehouseInfoId) {
     const allWarehouses = await loadWarehouseList();
     const currentWarehouse = allWarehouses.find(w => String(w.id) === String(row.warehouseInfoId));
     if (currentWarehouse) {
-      warehouseList.value = [{
+      loadedWarehouseList = [{
         id: currentWarehouse.id,
         warehouseName: currentWarehouse.warehouseName || currentWarehouse.name || currentWarehouse.warehouseCode || `浠撳簱${currentWarehouse.id}`
       }];
     }
   }
+
   // 缂栬緫鏃舵煡璇骇鍝佸簱瀛�
   if (row.productModelId) {
     try {
@@ -510,23 +503,34 @@
         console.log('浜у搧鏁版嵁:', product);
         console.log('batchNoMaps:', product.batchNoMaps);
         if (product.batchNoMaps && Object.keys(product.batchNoMaps).length > 0) {
-          rawBatchNoMaps.value = product.batchNoMaps;
+          loadedRawBatchNoMaps = product.batchNoMaps;
           // 鑾峰彇鎵�鏈変粨搴撲俊鎭敤浜庡弽鏄惧悕绉�
           const allWarehouses = await loadWarehouseList();
           const warehouseMap = {};
           allWarehouses.forEach(w => {
             warehouseMap[w.id] = w.warehouseName || w.name || w.warehouseCode || `浠撳簱${w.id}`;
           });
-          // 鏋勫缓浠撳簱鍒楄〃
-          warehouseList.value = Object.keys(product.batchNoMaps).map(warehouseInfoId => ({
+          // 鏋勫缓浠撳簱鍒楄〃锛岀‘淇濆寘鍚綋鍓嶈褰曠殑浠撳簱
+          const warehouseIds = Object.keys(product.batchNoMaps);
+          // 濡傛灉褰撳墠璁板綍鐨勪粨搴撲笉鍦� product.batchNoMaps 涓紝娣诲姞杩涘幓
+          if (row.warehouseInfoId && !warehouseIds.some(id => String(id) === String(row.warehouseInfoId))) {
+            warehouseIds.push(String(row.warehouseInfoId));
+          }
+          loadedWarehouseList = warehouseIds.map(warehouseInfoId => ({
             id: warehouseInfoId,
             warehouseName: warehouseMap[warehouseInfoId] || `浠撳簱${warehouseInfoId}`
           }));
           console.log('褰撳墠浠撳簱ID:', row.warehouseInfoId);
           console.log('璇ヤ粨搴撶殑batchNoMaps:', product.batchNoMaps[row.warehouseInfoId]);
-          // 濡傛灉褰撳墠鏈変粨搴揑D锛岃В鏋愯浠撳簱鐨勬壒鍙峰簱瀛�
-          if (row.warehouseInfoId && product.batchNoMaps[row.warehouseInfoId]) {
-            const batchArray = product.batchNoMaps[row.warehouseInfoId];
+          // 濡傛灉褰撳墠鏈変粨搴揑D锛岃В鏋愯浠撳簱鐨勬壒鍙峰簱瀛橈紙澶勭悊绫诲瀷涓嶅尮閰嶉棶棰橈級
+          let batchArray = null;
+          if (row.warehouseInfoId) {
+            // 灏濊瘯澶氱鏂瑰紡鑾峰彇鎵瑰彿鏁版嵁
+            batchArray = product.batchNoMaps[row.warehouseInfoId] ||
+                        product.batchNoMaps[String(row.warehouseInfoId)] ||
+                        product.batchNoMaps[Number(row.warehouseInfoId)];
+          }
+          if (batchArray) {
             console.log('batchArray:', batchArray);
             const batchMap = {};
             const batches = [];
@@ -537,48 +541,73 @@
               batches.push(batchNo);
               batchMap[batchNo] = stock;
             });
-            batchNoList.value = batches;
-            batchNoStockMap.value = batchMap;
+            loadedBatchNoList = batches;
+            loadedBatchNoStockMap = batchMap;
             console.log('batchMap:', batchMap);
             console.log('褰撳墠鎵瑰彿:', row.batchNo);
             // 璁剧疆褰撳墠鎵瑰彿鐨勫簱瀛�
             if (row.batchNo && batchMap[row.batchNo] !== undefined) {
-              formState.value.maxStock = batchMap[row.batchNo];
-              console.log('璁剧疆maxStock涓�:', formState.value.maxStock);
+              loadedMaxStock = batchMap[row.batchNo];
+              console.log('璁剧疆maxStock涓�:', loadedMaxStock);
             } else {
               console.log('鏈壘鍒板綋鍓嶆壒鍙风殑搴撳瓨');
-              formState.value.maxStock = 0;
+              loadedMaxStock = 0;
             }
           } else {
             console.log('鏈壘鍒板綋鍓嶄粨搴撶殑batchNoMaps');
-            batchNoList.value = row.batchNo ? [row.batchNo] : [];
-            batchNoStockMap.value = {};
-            formState.value.maxStock = 0;
+            loadedBatchNoList = row.batchNo ? [row.batchNo] : [];
+            loadedBatchNoStockMap = {};
+            loadedMaxStock = 0;
           }
         } else {
           console.log('浜у搧娌℃湁batchNoMaps');
-          batchNoList.value = row.batchNo ? [row.batchNo] : [];
-          batchNoStockMap.value = {};
-          formState.value.maxStock = 0;
+          loadedBatchNoList = row.batchNo ? [row.batchNo] : [];
+          loadedBatchNoStockMap = {};
+          loadedMaxStock = 0;
         }
       } else {
         console.log('鎺ュ彛杩斿洖鏁版嵁寮傚父:', res);
-        batchNoList.value = row.batchNo ? [row.batchNo] : [];
-        batchNoStockMap.value = {};
-        formState.value.maxStock = 0;
+        loadedBatchNoList = row.batchNo ? [row.batchNo] : [];
+        loadedBatchNoStockMap = {};
+        loadedMaxStock = 0;
       }
     } catch (error) {
       console.error('鏌ヨ浜у搧搴撳瓨澶辫触', error);
-      batchNoList.value = row.batchNo ? [row.batchNo] : [];
-      batchNoStockMap.value = {};
-      formState.value.maxStock = 0;
+      loadedBatchNoList = row.batchNo ? [row.batchNo] : [];
+      loadedBatchNoStockMap = {};
+      loadedMaxStock = 0;
     }
   } else {
     console.log('娌℃湁productModelId');
-    batchNoList.value = row.batchNo ? [row.batchNo] : [];
-    batchNoStockMap.value = {};
-    formState.value.maxStock = 0;
+    loadedBatchNoList = row.batchNo ? [row.batchNo] : [];
+    loadedBatchNoStockMap = {};
+    loadedMaxStock = 0;
   }
+
+  // 鎵�鏈夋暟鎹姞杞藉畬鎴愬悗锛屼竴娆℃�ц祴鍊�
+  warehouseList.value = loadedWarehouseList;
+  batchNoList.value = loadedBatchNoList;
+  batchNoStockMap.value = loadedBatchNoStockMap;
+  rawBatchNoMaps.value = loadedRawBatchNoMaps;
+
+  // 鏈�鍚庤祴鍊� formState锛岀‘淇濅粨搴撳垪琛ㄥ凡缁忓噯澶囧ソ
+  // 娉ㄦ剰锛氬皢 warehouseInfoId 杞崲涓哄瓧绗︿覆锛岀‘淇濅笌 warehouseList 涓殑 id 绫诲瀷鍖归厤
+  formState.value = {
+    id: row.id,
+    productId: row.productId,
+    productModelId: row.productModelId,
+    productName: row.productName,
+    productModelName: row.model,
+    unit: row.unit,
+    type: props.type === '0' ? 'qualified' : 'unqualified',
+    qualitity: row.stockOutNum,
+    batchNo: row.batchNo,
+    warehouseInfoId: row.warehouseInfoId != null ? String(row.warehouseInfoId) : null,
+    recordType: row.recordType,
+    remark: row.remark || "",
+    maxStock: loadedMaxStock,
+  };
+
   // 鎵�鏈夋暟鎹姞杞藉畬鎴愬悗鍐嶆樉绀哄脊绐�
   dialogVisible.value = true;
 };

--
Gitblit v1.9.3