From 57bcf0bc0dad6758df94717963187d6b6122afaa Mon Sep 17 00:00:00 2001
From: yyb <995253665@qq.com>
Date: 星期三, 22 四月 2026 17:23:08 +0800
Subject: [PATCH] 1
---
src/views/salesManagement/salesLedger/components/salesOrderPrint.js | 32 ++++++++++++++++++++++++++------
1 files changed, 26 insertions(+), 6 deletions(-)
diff --git a/src/views/salesManagement/salesLedger/components/salesOrderPrint.js b/src/views/salesManagement/salesLedger/components/salesOrderPrint.js
index 8e82a98..a5e02ed 100644
--- a/src/views/salesManagement/salesLedger/components/salesOrderPrint.js
+++ b/src/views/salesManagement/salesLedger/components/salesOrderPrint.js
@@ -58,6 +58,18 @@
const getDeliveryAddress = (data) =>
data?.companyAddress || data?.deliveryAddress || data?.shippingAddress || data?.address || data?.shipAddress || "";
+const getItemProductName = (item, fallback = "") => {
+ const name =
+ item?.productDescription ||
+ item?.productName ||
+ item?.name ||
+ item?.title ||
+ item?.goodsName ||
+ item?.materialName ||
+ item?.glassName;
+ return String(name ?? "").trim() || String(fallback ?? "").trim();
+};
+
const normalizeRequirementText = (value) => {
const text = String(value ?? "").trim();
if (!text) return "";
@@ -125,7 +137,7 @@
return pages;
};
-const renderRows = (items, startIndex) => {
+const renderRows = (items, startIndex, previousProductName, fallbackProductName) => {
const list = Array.isArray(items) ? items : [];
if (list.length === 0) {
return `
@@ -134,14 +146,23 @@
</tr>
`;
}
+ let lastProductName = String(previousProductName ?? "").trim();
return list
.map((item, idx) => {
+ const currentProductName = getItemProductName(item, fallbackProductName);
+ const shouldRenderProductRow = currentProductName !== lastProductName;
+ lastProductName = currentProductName;
const width = escapeHtml(item?.width);
const height = escapeHtml(item?.height);
const sizeText = width || height ? `${width}*${height}` : "";
const unitPrice = formatMoney(item?.taxInclusiveUnitPrice || item?.unitPrice);
const amount = formatMoney(getItemAmount(item));
return `
+ ${
+ shouldRenderProductRow
+ ? `<tr class="product-row"><td colspan="6" class="left">浜у搧鍚嶇О: ${escapeHtml(currentProductName)}</td><td colspan="2" class="left">璁㈠崟缂栧彿: ${escapeHtml(item?.salesContractNo || "")}</td></tr>`
+ : ""
+ }
<tr>
<td>${startIndex + idx + 1}</td>
<td>${escapeHtml(item?.floorCode)}</td>
@@ -160,6 +181,7 @@
export const printSalesOrder = (orderData) => {
const data = orderData ?? {};
const items = Array.isArray(data.items) ? data.items : [];
+ const fallbackProductName = String(data?.productName ?? "").trim();
const pageSize = 15;
const pages = splitItemsByPage(items, pageSize);
const totalPages = pages.length;
@@ -288,6 +310,8 @@
.map((pageItems, pageIndex) => {
const isLastPage = pageIndex === totalPages - 1;
const startIndex = pageIndex * pageSize;
+ const previousProductName =
+ startIndex > 0 ? getItemProductName(items[startIndex - 1], fallbackProductName) : "";
return `
<div class="page">
<div class="title-main">${escapeHtml(data.companyName || "楣ゅ澶╂矏閽㈠寲鐜荤拑鍘�")}</div>
@@ -344,11 +368,7 @@
<th>閲戦</th>
<th>鍔犲伐瑕佹眰</th>
</tr>
- <tr class="product-row">
- <td colspan="6" class="left">浜у搧鍚嶇О: ${escapeHtml(data.productName || items[0]?.productDescription)}</td>
- <td colspan="2" class="left">璁㈠崟缂栧彿: ${escapeHtml(data.salesContractNo)}</td>
- </tr>
- ${renderRows(pageItems, startIndex)}
+ ${renderRows(pageItems, startIndex, previousProductName, fallbackProductName)}
${
isLastPage
? `
--
Gitblit v1.9.3