From 8024273d640673e504cd7914f010d3bfb2a95b38 Mon Sep 17 00:00:00 2001
From: liyong <18434998025@163.com>
Date: 星期三, 06 五月 2026 17:20:33 +0800
Subject: [PATCH] feat(sales): 添加发货台账管理功能
---
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