From da57fbd8e7fa021614fb32502fb1520ea4e34e1e Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期一, 18 五月 2026 11:35:16 +0800
Subject: [PATCH] 浪潮 1.样式修改

---
 src/views/inventoryManagement/dispatchLog/Record.vue |  181 +++++++++++++++++++++++++++++++++++++--------
 1 files changed, 149 insertions(+), 32 deletions(-)

diff --git a/src/views/inventoryManagement/dispatchLog/Record.vue b/src/views/inventoryManagement/dispatchLog/Record.vue
index 7ba8dfd..7475352 100644
--- a/src/views/inventoryManagement/dispatchLog/Record.vue
+++ b/src/views/inventoryManagement/dispatchLog/Record.vue
@@ -150,7 +150,7 @@
           <el-input v-model="formState.unit" disabled />
         </el-form-item>
         <el-form-item label="浠撳簱"
-                      prop="warehouseId"
+                      prop="warehouseInfoId"
                       :rules="[
                         {
                           required: true,
@@ -158,15 +158,14 @@
                           trigger: 'change',
                         }
                       ]">
-          <el-select v-model="formState.warehouseId"
+          <el-select v-model="formState.warehouseInfoId"
                      placeholder="璇烽�夋嫨浠撳簱"
                      clearable
-                     :disabled="isEdit || !formState.productId"
                      @change="handleWarehouseChange"
                      style="width: 100%">
             <el-option v-for="warehouse in warehouseList"
                        :key="warehouse.id"
-                       :label="warehouse.name"
+                       :label="warehouse.warehouseName"
                        :value="warehouse.id" />
           </el-select>
         </el-form-item>
@@ -182,7 +181,6 @@
           <el-select v-model="formState.batchNo"
                      placeholder="璇烽�夋嫨鎵瑰彿"
                      clearable
-                     :disabled="isEdit"
                      @change="handleBatchNoChange"
                      style="width: 100%">
             <el-option v-for="batch in batchNoList"
@@ -191,10 +189,10 @@
                        :value="batch" />
           </el-select>
         </el-form-item>
-        <el-form-item v-if="formState.batchNo && batchNoStockMap[formState.batchNo]"
+        <el-form-item v-if="formState.batchNo && batchNoStockMap[formState.batchNo] !== undefined"
                       label="褰撳墠鎵瑰彿搴撳瓨"
                       prop="currentStock">
-          <el-input v-model="batchNoStockMap[formState.batchNo]" disabled />
+          <el-input :model-value="batchNoStockMap[formState.batchNo]" disabled />
         </el-form-item>
         <el-form-item label="鍑哄簱鏁伴噺"
                       prop="qualitity"
@@ -244,7 +242,7 @@
                       ]">
           <el-select v-model="formState.type"
                      placeholder="璇烽�夋嫨搴撳瓨绫诲瀷"
-                     :disabled="isEdit">
+                     >
             <el-option label="鍚堟牸搴撳瓨"
                        value="qualified" />
             <el-option label="涓嶅悎鏍煎簱瀛�"
@@ -290,9 +288,10 @@
   findAllQualifiedStockOutRecordTypeOptions,
   findAllUnQualifiedStockOutRecordTypeOptions,
 } from "@/api/basicData/enum.js";
-import { addStockOutRecordOnly } from "@/api/inventoryManagement/stockInventory.js";
+import { addStockOutRecordOnly, getStockInventoryByModelId } from "@/api/inventoryManagement/stockInventory.js";
 import { addUnqualifiedStockOutRecordOnly } from "@/api/inventoryManagement/stockUninventory.js";
 import { getWarehouseList } from "@/api/inventoryManagement/warehouse.js";
+import { productModelListByUrl } from "@/api/basicData/productModel.js";
 
 const userStore = useUserStore();
 const { proxy } = getCurrentInstance();
@@ -357,7 +356,7 @@
   productName: "",
   productModelName: "",
   unit: "",
-  warehouseId: null, // 浠撳簱ID
+  warehouseInfoId: null, // 浠撳簱ID
   type: undefined,
   qualitity: 0,
   batchNo: null,
@@ -463,10 +462,136 @@
 };
 
 // 缂栬緫
-const handleEdit = (row) => {
+const handleEdit = async (row) => {
   dialogType.value = 'edit';
   resetForm();
-  // 濉厖琛ㄥ崟鏁版嵁
+
+  // 鍏堝姞杞芥墍鏈夋暟鎹紝鏈�鍚庡啀璧嬪�� 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) {
+      loadedWarehouseList = [{
+        id: currentWarehouse.id,
+        warehouseName: currentWarehouse.warehouseName || currentWarehouse.name || currentWarehouse.warehouseCode || `浠撳簱${currentWarehouse.id}`
+      }];
+    }
+  }
+
+  // 缂栬緫鏃舵煡璇骇鍝佸簱瀛�
+  if (row.productModelId) {
+    try {
+      console.log('缂栬緫鏃舵煡璇㈠簱瀛橈紝productModelId:', row.productModelId);
+      console.log('褰撳墠row鏁版嵁:', row);
+      const res = await productModelListByUrl('/basic/product/pageModelAndQua', {
+        id: row.productModelId,
+        page: 1,
+        size: 1
+      });
+      console.log('鏌ヨ搴撳瓨鎺ュ彛杩斿洖:', res);
+      // 鎺ュ彛鐩存帴杩斿洖 {records: [], total: ...}锛屾病鏈� data 灞傚拰 code
+      const records = res.records || (res.data && res.data.records) || [];
+      if (records.length > 0) {
+        const product = records[0];
+        console.log('浜у搧鏁版嵁:', product);
+        console.log('batchNoMaps:', product.batchNoMaps);
+        if (product.batchNoMaps && Object.keys(product.batchNoMaps).length > 0) {
+          loadedRawBatchNoMaps = product.batchNoMaps;
+          // 鑾峰彇鎵�鏈変粨搴撲俊鎭敤浜庡弽鏄惧悕绉�
+          const allWarehouses = await loadWarehouseList();
+          const warehouseMap = {};
+          allWarehouses.forEach(w => {
+            warehouseMap[w.id] = w.warehouseName || w.name || w.warehouseCode || `浠撳簱${w.id}`;
+          });
+          // 鏋勫缓浠撳簱鍒楄〃锛岀‘淇濆寘鍚綋鍓嶈褰曠殑浠撳簱
+          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锛岃В鏋愯浠撳簱鐨勬壒鍙峰簱瀛橈紙澶勭悊绫诲瀷涓嶅尮閰嶉棶棰橈級
+          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 = [];
+            batchArray.forEach(item => {
+              const batchNo = Object.keys(item)[0];
+              const stock = item[batchNo];
+              console.log('鎵瑰彿:', batchNo, '搴撳瓨:', stock);
+              batches.push(batchNo);
+              batchMap[batchNo] = stock;
+            });
+            loadedBatchNoList = batches;
+            loadedBatchNoStockMap = batchMap;
+            console.log('batchMap:', batchMap);
+            console.log('褰撳墠鎵瑰彿:', row.batchNo);
+            // 璁剧疆褰撳墠鎵瑰彿鐨勫簱瀛�
+            if (row.batchNo && batchMap[row.batchNo] !== undefined) {
+              loadedMaxStock = batchMap[row.batchNo];
+              console.log('璁剧疆maxStock涓�:', loadedMaxStock);
+            } else {
+              console.log('鏈壘鍒板綋鍓嶆壒鍙风殑搴撳瓨');
+              loadedMaxStock = 0;
+            }
+          } else {
+            console.log('鏈壘鍒板綋鍓嶄粨搴撶殑batchNoMaps');
+            loadedBatchNoList = row.batchNo ? [row.batchNo] : [];
+            loadedBatchNoStockMap = {};
+            loadedMaxStock = 0;
+          }
+        } else {
+          console.log('浜у搧娌℃湁batchNoMaps');
+          loadedBatchNoList = row.batchNo ? [row.batchNo] : [];
+          loadedBatchNoStockMap = {};
+          loadedMaxStock = 0;
+        }
+      } else {
+        console.log('鎺ュ彛杩斿洖鏁版嵁寮傚父:', res);
+        loadedBatchNoList = row.batchNo ? [row.batchNo] : [];
+        loadedBatchNoStockMap = {};
+        loadedMaxStock = 0;
+      }
+    } catch (error) {
+      console.error('鏌ヨ浜у搧搴撳瓨澶辫触', error);
+      loadedBatchNoList = row.batchNo ? [row.batchNo] : [];
+      loadedBatchNoStockMap = {};
+      loadedMaxStock = 0;
+    }
+  } else {
+    console.log('娌℃湁productModelId');
+    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,
@@ -477,21 +602,13 @@
     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: row.stockOutNum || 0, // 缂栬緫鏃朵娇鐢ㄥ綋鍓嶅嚭搴撴暟閲忎綔涓烘渶澶у簱瀛橈紙鍥犱负鏄慨鏀瑰凡鏈夎褰曪級
+    maxStock: loadedMaxStock,
   };
-  // 缂栬緫鏃朵粠batchNoMaps鑾峰彇鎵瑰彿鍒楄〃
-  if (row.batchNoMaps && Object.keys(row.batchNoMaps).length > 0) {
-    batchNoList.value = Object.keys(row.batchNoMaps);
-    batchNoStockMap.value = row.batchNoMaps;
-  } else if (row.batchNo) {
-    batchNoList.value = [row.batchNo];
-    batchNoStockMap.value = { [row.batchNo]: row.stockOutNum || 0 };
-  } else {
-    batchNoList.value = [];
-    batchNoStockMap.value = {};
-  }
+
+  // 鎵�鏈夋暟鎹姞杞藉畬鎴愬悗鍐嶆樉绀哄脊绐�
   dialogVisible.value = true;
 };
 
@@ -504,7 +621,7 @@
     productName: "",
     productModelName: "",
     unit: "",
-    warehouseId: null,
+    warehouseInfoId: null,
     type: undefined,
     qualitity: 0,
     batchNo: null,
@@ -551,7 +668,7 @@
     batchNoList.value = [];
     batchNoStockMap.value = {};
     rawBatchNoMaps.value = {};
-    formState.value.warehouseId = null;
+    formState.value.warehouseInfoId = null;
     formState.value.batchNo = null;
     formState.value.maxStock = 0;
 
@@ -564,9 +681,9 @@
         warehouseMap[w.id] = w.warehouseName || w.name || w.warehouseCode || `浠撳簱${w.id}`;
       });
       // 鏋勫缓浠撳簱鍒楄〃
-      warehouseList.value = Object.keys(product.batchNoMaps).map(warehouseId => ({
-        id: warehouseId,
-        name: warehouseMap[warehouseId] || `浠撳簱${warehouseId}`
+      warehouseList.value = Object.keys(product.batchNoMaps).map(warehouseInfoId => ({
+        id: warehouseInfoId,
+        warehouseName: warehouseMap[warehouseInfoId] || `浠撳簱${warehouseInfoId}`
       }));
     }
     showProductSelect.value = false;
@@ -576,15 +693,15 @@
 };
 
 // 浠撳簱閫夋嫨鍙樺寲澶勭悊
-const handleWarehouseChange = (warehouseId) => {
+const handleWarehouseChange = (warehouseInfoId) => {
   batchNoList.value = [];
   batchNoStockMap.value = {};
   formState.value.batchNo = null;
   formState.value.maxStock = 0;
 
-  if (warehouseId && rawBatchNoMaps.value[warehouseId]) {
+  if (warehouseInfoId && rawBatchNoMaps.value[warehouseInfoId]) {
     // 瑙f瀽璇ヤ粨搴撲笅鐨勬壒鍙锋暟鎹紝鏍煎紡涓猴細[{鎵瑰彿: 搴撳瓨}, {鎵瑰彿: 搴撳瓨}]
-    const batchArray = rawBatchNoMaps.value[warehouseId];
+    const batchArray = rawBatchNoMaps.value[warehouseInfoId];
     const batchMap = {};
     const batches = [];
 

--
Gitblit v1.9.3