From dacc95761cf7090c628fc37a5d4f8bb825ccbbb0 Mon Sep 17 00:00:00 2001
From: yyb <995253665@qq.com>
Date: 星期六, 16 五月 2026 15:41:45 +0800
Subject: [PATCH] 企业新闻和通知公告

---
 src/components/AIChatSidebar/index.vue |   40 +++++++++++++++++++++++++++-------------
 1 files changed, 27 insertions(+), 13 deletions(-)

diff --git a/src/components/AIChatSidebar/index.vue b/src/components/AIChatSidebar/index.vue
index d40d863..a2a365a 100644
--- a/src/components/AIChatSidebar/index.vue
+++ b/src/components/AIChatSidebar/index.vue
@@ -1529,12 +1529,7 @@
   if (visibleValue === undefined || visibleValue === null) return clonePurchasePayloadValue(hiddenValue)
 
   if (Array.isArray(visibleValue) && Array.isArray(hiddenValue)) {
-    const maxLength = Math.max(visibleValue.length, hiddenValue.length)
-    const merged = []
-    for (let i = 0; i < maxLength; i++) {
-      merged[i] = mergePurchasePayloadWithHidden(visibleValue[i], hiddenValue[i])
-    }
-    return merged
+    return visibleValue.map((item, index) => mergePurchasePayloadWithHidden(item, hiddenValue[index]))
   }
 
   if (
@@ -1937,6 +1932,23 @@
     ''
 }
 
+const prunePurchaseProductRecord = (record) => {
+  if (!record || typeof record !== 'object' || Array.isArray(record)) return null
+  const normalizedRecord = normalizePurchaseProductRecord(record)
+  const hasVisibleFieldValue = Object.entries(normalizedRecord).some(([key, value]) => {
+    if (shouldHidePurchaseField(key)) return false
+    return hasMeaningfulPayloadValue(value)
+  })
+  return hasVisibleFieldValue ? normalizedRecord : null
+}
+
+const normalizeAndFilterPurchaseProductData = (value) => {
+  if (!Array.isArray(value)) return value
+  return value
+    .map(item => prunePurchaseProductRecord(item))
+    .filter(Boolean)
+}
+
 const mergeLegacyProductDataIntoLedgers = (payload) => {
   if (!payload || typeof payload !== 'object' || Array.isArray(payload)) return payload
   if (!Array.isArray(payload.purchaseLedgers) || !Array.isArray(payload.productData) || !payload.productData.length) {
@@ -1945,13 +1957,11 @@
 
   const ledgers = payload.purchaseLedgers.map(ledger => ({
     ...ledger,
-    productData: Array.isArray(ledger.productData)
-      ? ledger.productData.map(normalizePurchaseProductRecord)
-      : []
+    productData: normalizeAndFilterPurchaseProductData(ledger.productData) || []
   }))
   const unmatchedProducts = []
 
-  payload.productData.map(normalizePurchaseProductRecord).forEach(product => {
+  normalizeAndFilterPurchaseProductData(payload.productData).forEach(product => {
     const productMatchKey = getPurchaseProductMatchKey(product)
     const matchedLedger = ledgers.find(ledger => {
       const ledgerKeys = [
@@ -1990,9 +2000,7 @@
   if (!record || typeof record !== 'object' || Array.isArray(record)) return record
   const normalizedRecord = {
     ...record,
-    productData: Array.isArray(record.productData)
-      ? record.productData.map(normalizePurchaseProductRecord)
-      : record.productData
+    productData: normalizeAndFilterPurchaseProductData(record.productData)
   }
   return Object.entries(normalizedRecord).reduce((result, [key, value]) => {
     if (purchaseLedgerAllowedFieldKeys.has(key)) {
@@ -2190,6 +2198,12 @@
   if (Array.isArray(sanitized.purchaseLedgers)) {
     sanitized.purchaseLedgers = sanitized.purchaseLedgers.map(filterPurchaseLedgerRecord)
   }
+  if (Array.isArray(sanitized.productData)) {
+    sanitized.productData = normalizeAndFilterPurchaseProductData(sanitized.productData)
+  }
+  if (Array.isArray(sanitized.productData) && !sanitized.productData.length) {
+    delete sanitized.productData
+  }
 
   purchaseApprovalFieldKeys.forEach(key => {
     if (!Array.isArray(sanitized)) {

--
Gitblit v1.9.3