1
2 天以前 e988b512e6d1d693639176c0885a38b24b002b11
1
已修改1个文件
40 ■■■■■ 文件已修改
src/components/AIChatSidebar/index.vue 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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)) {