From 0a3b748bd80bc33dc5b7eb8e90a7fb394e703b07 Mon Sep 17 00:00:00 2001
From: gongchunyi <deslre0381@gmail.com>
Date: 星期二, 21 四月 2026 15:13:02 +0800
Subject: [PATCH] feat: 设备保养新增保养项目

---
 src/views/salesManagement/salesLedger/components/salesDeliveryPrint.js |   26 ++++++++++++++++++++++++--
 1 files changed, 24 insertions(+), 2 deletions(-)

diff --git a/src/views/salesManagement/salesLedger/components/salesDeliveryPrint.js b/src/views/salesManagement/salesLedger/components/salesDeliveryPrint.js
index 696e94d..f50a2b6 100644
--- a/src/views/salesManagement/salesLedger/components/salesDeliveryPrint.js
+++ b/src/views/salesManagement/salesLedger/components/salesDeliveryPrint.js
@@ -51,6 +51,8 @@
   "productInfoList",
 ];
 
+const SPECIFICATION_FIELD_KEYS = ["specificationModel", "specification", "model", "spec"];
+
 const normalizeNameList = (value) => {
   if (Array.isArray(value)) {
     return value
@@ -93,6 +95,19 @@
   return itemNames[0] || fallbackNames[index] || fallbackNames[0] || "";
 };
 
+const resolveSpecificationModel = (...sources) => {
+  for (const source of sources) {
+    if (!source || typeof source !== "object") continue;
+    for (const key of SPECIFICATION_FIELD_KEYS) {
+      const value = source?.[key];
+      if (value !== undefined && value !== null && String(value).trim()) {
+        return String(value).trim();
+      }
+    }
+  }
+  return "";
+};
+
 const splitItemsByPage = (items, pageSize) => {
   const list = Array.isArray(items) ? items : [];
   if (list.length === 0) return [[]];
@@ -126,6 +141,7 @@
           ...item,
           // 浼樺厛浣跨敤鏄庣粏鑷韩浜у搧鍚嶏紝鍏煎鈥滃悕绉版暟缁�/鍒嗛殧瀛楃涓测�濈殑鎺ュ彛鏍煎紡
           productDescription: resolveProductName(item, groupNames, index),
+          specificationModel: resolveSpecificationModel(item, group, data),
           salesContractNo: group?.salesContractNo || item?.salesContractNo || "",
           widthHeight: item?.widthHeight || "",
         }));
@@ -133,6 +149,7 @@
     : (Array.isArray(data.items) ? data.items : []).map((item, index) => ({
         ...item,
         productDescription: resolveProductName(item, dataLevelNames, index),
+        specificationModel: resolveSpecificationModel(item, data, selectedRow),
         widthHeight: item?.widthHeight || "",
       }));
 
@@ -154,10 +171,15 @@
   const list = Array.isArray(items) ? items : [];
   const map = new Map();
   list.forEach((item) => {
-    const key = `${item?.productDescription || ""}__${getOrderNo(data, row, item)}`;
+    const key = `${item?.productDescription || ""}__${item?.specificationModel || ""}__${getOrderNo(
+      data,
+      row,
+      item
+    )}`;
     if (!map.has(key)) {
       map.set(key, {
         productName: item?.productDescription || "",
+        specificationModel: item?.specificationModel || "",
         orderNo: getOrderNo(data, row, item),
         items: [],
       });
@@ -339,7 +361,7 @@
                   serial += group.items.length;
                   return `
           <tr class="group-title">
-            <td colspan="5" class="left">浜у搧鍚嶇О: ${escapeHtml(group.productName)}</td>
+            <td colspan="5" class="left">浜у搧鍚嶇О: ${escapeHtml(group.productName)}${group.specificationModel ? `銆�瑙勬牸鍨嬪彿: ${escapeHtml(group.specificationModel)}` : ""}</td>
             <td colspan="2" class="left">璁㈠崟缂栧彿: ${escapeHtml(group.orderNo)}</td>
           </tr>
           ${rows}

--
Gitblit v1.9.3