From 214847db4baa5d6612e31f6b30689db84df908a0 Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期一, 12 十月 2026 13:09:04 +0800
Subject: [PATCH] feat(stock): 出库批次下拉增加客户与合同号信息展示

---
 src/views/inventoryManagement/stockManagement/OilStockInDialog.vue  |    3 -
 src/views/inventoryManagement/stockManagement/OilStockOutDialog.vue |   89 +++++++++++++++++++++++++++++++++++++++-----
 vite.config.js                                                      |    4 +-
 3 files changed, 81 insertions(+), 15 deletions(-)

diff --git a/src/views/inventoryManagement/stockManagement/OilStockInDialog.vue b/src/views/inventoryManagement/stockManagement/OilStockInDialog.vue
index 241b416..2cb4ff7 100644
--- a/src/views/inventoryManagement/stockManagement/OilStockInDialog.vue
+++ b/src/views/inventoryManagement/stockManagement/OilStockInDialog.vue
@@ -314,8 +314,7 @@
           </el-col>
           <el-col :span="12">
             <el-form-item label="杞︽寕鐗屽彿"
-                          prop="trailerPlateNo"
-                          :rules="[{ required: true, message: '璇疯緭鍏ヨ溅鎸傜墝鍙�', trigger: 'blur' }]">
+                          prop="trailerPlateNo">
               <el-input v-model="formState.trailerPlateNo"
                         placeholder="璇疯緭鍏�"
                         clearable />
diff --git a/src/views/inventoryManagement/stockManagement/OilStockOutDialog.vue b/src/views/inventoryManagement/stockManagement/OilStockOutDialog.vue
index ad3a544..e3b15a1 100644
--- a/src/views/inventoryManagement/stockManagement/OilStockOutDialog.vue
+++ b/src/views/inventoryManagement/stockManagement/OilStockOutDialog.vue
@@ -266,11 +266,23 @@
                          placeholder="璇烽�夋嫨"
                          clearable
                          filterable
+                         popper-class="batch-no-select-popper"
                          style="width: 100%">
+                <!-- 鎵规鍙锋槸閫変腑鍊硷紝瀹㈡埛/鍚堝悓鏄府蹇欒鲸璁ゆ壒娆$殑闄勫姞淇℃伅 -->
                 <el-option v-for="item in batchNoOptions"
-                           :key="item"
-                           :label="item"
-                           :value="item" />
+                           :key="item.batchNo"
+                           :label="item.batchNo"
+                           :value="item.batchNo">
+                  <div class="batch-option">
+                    <div class="batch-option-title">{{ item.batchNo }}</div>
+                    <div class="batch-option-line">
+                      瀹㈡埛鍚嶇О锛歿{ item.customerName || "--" }}
+                    </div>
+                    <div class="batch-option-line">
+                      閿�鍞悎鍚屽彿锛歿{ item.salesContractNo || "--" }}
+                    </div>
+                  </div>
+                </el-option>
               </el-select>
             </el-form-item>
           </el-col>
@@ -482,10 +494,7 @@
           </el-col>
           <el-col :span="12">
             <el-form-item label="杞︽寕鐗屽彿"
-                          prop="trailerPlateNo"
-                          :rules="isSalesOut
-                ? [{ required: true, message: '璇疯緭鍏ヨ溅鎸傜墝鍙�', trigger: 'blur' }]
-                : []">
+                          prop="trailerPlateNo">
               <el-input v-model="formState.trailerPlateNo"
                         placeholder="璇疯緭鍏�"
                         clearable />
@@ -668,7 +677,7 @@
     autoOilProduct.value = "";
   };
 
-  // 鍑哄簱鎵规鍊欓�夊彇璇ヨ鏍肩殑鍏ュ簱鎵规
+  // 鍑哄簱鎵规鍊欓�夊彇璇ヨ鏍肩殑鍏ュ簱鎵规锛涢櫎鎵规鍙峰杩樺甫鍑烘壒娆$殑瀹㈡埛涓庡悎鍚岋紝渚夸簬杈ㄨ
   const batchNoOptions = ref([]);
   // 閿�鍞被鍑哄簱鐨勫彲鐢ㄩ噺鎻愮ず锛堜笂娆″墿浣� + 褰撳墠搴撳瓨锛�
   const availableQty = ref(null);
@@ -744,9 +753,29 @@
       productModelId,
     }).then(res => {
       const records = res?.data?.records || [];
-      batchNoOptions.value = [
-        ...new Set(records.map(item => item.batchNo).filter(Boolean)),
-      ];
+      // 鍚屼竴鎵规鍙兘鏈夊鏉″簱瀛樿锛屾寜鎵规鍙峰幓閲嶏紝缂哄鎴�/鍚堝悓鐨勭敤鍚屾壒娆″叾瀹冭琛ラ綈
+      const batchMap = new Map();
+      records.forEach(item => {
+        if (!item.batchNo) {
+          return;
+        }
+        const exist = batchMap.get(item.batchNo);
+        if (!exist) {
+          batchMap.set(item.batchNo, {
+            batchNo: item.batchNo,
+            customerName: item.customerName || "",
+            salesContractNo: item.salesContractNo || "",
+          });
+          return;
+        }
+        if (!exist.customerName && item.customerName) {
+          exist.customerName = item.customerName;
+        }
+        if (!exist.salesContractNo && item.salesContractNo) {
+          exist.salesContractNo = item.salesContractNo;
+        }
+      });
+      batchNoOptions.value = [...batchMap.values()];
     });
   };
 
@@ -1457,6 +1486,24 @@
     }
   }
 
+  // 鍑哄簱鎵规涓嬫媺閫夐」锛氬皬鍗$墖鏍峰紡
+  .batch-option {
+    padding: 8px 10px;
+
+    .batch-option-title {
+      font-size: 14px;
+      font-weight: 600;
+      color: #303133;
+      margin-bottom: 4px;
+    }
+
+    .batch-option-line {
+      font-size: 12px;
+      color: #909399;
+      line-height: 1.8;
+    }
+  }
+
   // 閿�鍞彴璐︿笅鎷夐�夐」锛氬皬鍗$墖鏍峰紡
   .ledger-option {
     padding: 8px 10px;
@@ -1576,4 +1623,24 @@
       }
     }
   }
+
+  // 鍑哄簱鎵规涓嬫媺闈㈡澘锛坆ody 涓嬶紝闇�鍏ㄥ眬鏍峰紡锛�
+  .batch-no-select-popper {
+    .el-select-dropdown__item {
+      height: auto;
+      line-height: normal;
+      padding: 4px 0;
+    }
+
+    .batch-option {
+      border: 1px solid #e4e7ed;
+      border-radius: 6px;
+      background-color: #fafbfc;
+
+      &:hover {
+        border-color: #409eff;
+        background-color: #f0f7ff;
+      }
+    }
+  }
 </style>
diff --git a/vite.config.js b/vite.config.js
index fe70c21..a98f3ca 100644
--- a/vite.config.js
+++ b/vite.config.js
@@ -8,11 +8,11 @@
   const { VITE_APP_ENV } = env;
   const baseUrl =
       env.VITE_APP_ENV === "development"
-          ? "http://36.213.90.123:9017"
+          ? "http://localhost:7005"
           : env.VITE_BASE_API;
   const javaUrl =
       env.VITE_APP_ENV === "development"
-          ? "http://1.15.17.182:9049"
+          ? "http://localhost:7005"
           : env.VITE_JAVA_API;
   return {
     define:{

--
Gitblit v1.9.3