From cccfb0766765a6c51a75c28dbc963a30bee0d74c Mon Sep 17 00:00:00 2001
From: zhangwencui <1064582902@qq.com>
Date: 星期四, 07 五月 2026 09:09:49 +0800
Subject: [PATCH] Merge branch 'dev_NEW_pro' of http://114.132.189.42:9002/r/product-inventory-management into dev_NEW_pro

---
 src/views/salesManagement/deliveryLedger/index.vue |  103 ++++++++++++++++++++++++++++++++++++++++++++++++++-
 src/api/salesManagement/deliveryLedger.js          |    7 +++
 2 files changed, 107 insertions(+), 3 deletions(-)

diff --git a/src/api/salesManagement/deliveryLedger.js b/src/api/salesManagement/deliveryLedger.js
index 4be5829..b85582c 100644
--- a/src/api/salesManagement/deliveryLedger.js
+++ b/src/api/salesManagement/deliveryLedger.js
@@ -11,6 +11,13 @@
 }
 
 // 淇敼鍙戣揣鍙拌处
+export function getDeliveryDetail(id) {
+  return request({
+    url: `/shippingInfo/getDateil/${id}`,
+    method: "get",
+  });
+}
+
 export function addOrUpdateDeliveryLedger(query) {
   return request({
     url: "/shippingInfo/update",
diff --git a/src/views/salesManagement/deliveryLedger/index.vue b/src/views/salesManagement/deliveryLedger/index.vue
index 8305e8b..d7f47dd 100644
--- a/src/views/salesManagement/deliveryLedger/index.vue
+++ b/src/views/salesManagement/deliveryLedger/index.vue
@@ -174,6 +174,28 @@
           <el-descriptions-item label="蹇�掑叕鍙�">{{ detailRow.expressCompany || '--' }}</el-descriptions-item>
           <el-descriptions-item label="蹇�掑崟鍙�" :span="2">{{ detailRow.expressNumber || '--' }}</el-descriptions-item>
         </el-descriptions>
+        <el-table :data="getDeliveryProductInfoList()"
+                  border
+                  size="small"
+                  class="delivery-product-table"
+                  style="width: 100%; margin-top: 16px;">
+          <el-table-column label="鎵瑰彿"
+                           prop="batchNo"
+                           min-width="160"
+                           show-overflow-tooltip/>
+          <el-table-column label="浜у搧鍚嶇О"
+                           prop="productName"
+                           min-width="160"
+                           show-overflow-tooltip/>
+          <el-table-column label="瑙勬牸鍨嬪彿"
+                           prop="specificationModel"
+                           min-width="160"
+                           show-overflow-tooltip/>
+          <el-table-column label="鍙戣揣鏁伴噺"
+                           prop="deliveryQuantity"
+                           min-width="120"
+                           align="center"/>
+        </el-table>
         <ImagePreview :file-list="detailRow.storageBlobVOs || []" />
       </div>
       <template #footer>
@@ -192,7 +214,9 @@
 import {getCurrentDate} from "@/utils/index.js";
 import {
   deliveryLedgerListPage,
-  delDeliveryLedger, deductStock,
+  delDeliveryLedger,
+  deductStock,
+  getDeliveryDetail,
 } from "@/api/salesManagement/deliveryLedger.js";
 import {delLedgerFile} from "@/api/salesManagement/salesLedger.js";
 import ImageUpload from "@/components/AttachmentUpload/image/index.vue";
@@ -213,6 +237,7 @@
 // 璇︽儏寮规
 const detailDialogVisible = ref(false);
 const detailRow = ref(null);
+const detailProductList = ref([]);
 
 // 鐢ㄦ埛淇℃伅琛ㄥ崟寮规鏁版嵁
 const operationType = ref("");
@@ -320,14 +345,86 @@
 };
 
 // 鎵撳紑璇︽儏寮规
-const openDetail = (row) => {
+const openDetail = async (row) => {
   detailRow.value = row || null;
-  const list = Array.isArray(row?.commonFileList) ? row.commonFileList : [];
+  detailProductList.value = [];
   detailDialogVisible.value = true;
+  if (!row?.id) return;
+  try {
+    const res = await getDeliveryDetail(row.id);
+    const detailData = res?.data;
+    detailRow.value = {
+      ...row,
+      ...(Array.isArray(detailData) ? {} : detailData || {}),
+    };
+    detailProductList.value = resolveDeliveryDetailList(detailData);
+  } catch (error) {
+    proxy.$modal.msgError("鍔犺浇鍙戣揣鍙拌处璇︽儏澶辫触");
+  }
+};
+const resolveDeliveryDetailList = data => {
+  if (Array.isArray(data)) return data;
+  if (!data || typeof data !== "object") return [];
+  return [
+    data.batchNoDetailList,
+    data.batchNoList,
+    data.shippingBatchList,
+    data.shippingInfoDetailList,
+    data.detailList,
+    data.batchDetailList,
+    data.rows,
+    data.records,
+    data.list,
+    data.data,
+  ].find(value => Array.isArray(value) && value.length) || [];
+};
+const getDeliveryProductInfoList = () => {
+  const row = detailRow.value;
+  if (!row) return [];
+  const normalizeBatchNoList = value => {
+    if (Array.isArray(value)) return value;
+    if (typeof value === "string" && value.includes(",")) {
+      return value.split(",").map(item => item.trim()).filter(Boolean);
+    }
+    return value ? [value] : [];
+  };
+  const detailList = detailProductList.value.length ? detailProductList.value : [
+    row.batchNoDetailList,
+    row.batchNoList,
+    row.shippingBatchList,
+    row.shippingInfoDetailList,
+    row.detailList,
+    row.batchDetailList,
+  ].find(value => Array.isArray(value) && value.length);
+  const batchNoList = normalizeBatchNoList(row.batchNo);
+  const toTableRow = (item = {}) => ({
+    batchNo:
+        typeof item === "string" || typeof item === "number"
+            ? item
+            : item.batchNo ?? item.batchNumber ?? row.batchNo ?? "--",
+    productName: item.productName ?? row.productName ?? "--",
+    specificationModel:
+        item.specificationModel ?? item.model ?? row.specificationModel ?? "--",
+    deliveryQuantity:
+        item.deliveryQuantity ??
+        item.quantity ??
+        item.shippingQuantity ??
+        row.deliveryQuantity ??
+        row.quantity ??
+        "--",
+  });
+  if (detailList?.length) {
+    return detailList.map(toTableRow);
+  }
+  if (batchNoList.length) {
+    return batchNoList.map(batchNo => toTableRow({batchNo}));
+  }
+  return [toTableRow()];
 };
 const closeDetail = () => {
   detailDialogVisible.value = false;
   detailRow.value = null;
+  detailProductList.value = [];
 };
 
 // 鎻愪氦琛ㄥ崟

--
Gitblit v1.9.3