diff --git a/pages/audit/components/AuditSelfReportItem.vue b/pages/audit/components/AuditSelfReportItem.vue index 826e660..35e96d7 100644 --- a/pages/audit/components/AuditSelfReportItem.vue +++ b/pages/audit/components/AuditSelfReportItem.vue @@ -702,7 +702,11 @@ export default { }, normalizeMerchantChain(item = {}, index) { const text = item.chainName || item.chain || item.chainAbb || item.name || item.title || `连锁${index + 1}` - const id = item.chainId ?? item.chain_id ?? item.id ?? item.chainCode ?? item.chain_code ?? `chain_${index}` + // 兜底必须用连锁名,不能用 `chain_${index}` 这类位置型占位符: + // 该 id 会被 saveMerchantEdit 写进 yxe_self_report.chain_id,而按连锁筛选走的是 + // 等值匹配(YxeSelfReportMapper.xml: a.chain_id = #{param.chainId}), + // 占位符一旦落库,这条记录就再也筛不出来(后端已返回稳定 chainId,此处为兜底防线)。 + const id = item.chainId ?? item.chain_id ?? item.id ?? item.chainCode ?? item.chain_code ?? text const childKeys = ['children', 'merchantList', 'merchants', 'shopList', 'list', 'records'] let children = [] for (let i = 0; i < childKeys.length; i += 1) { @@ -782,16 +786,22 @@ export default { return } this.merchantEditSaving = true + // 写入前兜底:`chain_${index}` 这类位置型占位符不能落库(详见 normalizeMerchantChain 注释), + // 否则该记录会被按连锁等值筛选永久漏掉。这里退回用连锁名作为标识。 + const chainIdText = String(chain.id ?? '').trim() + const safeChainId = !chainIdText || chainIdText.startsWith('chain_') + ? String(chain.text || '').trim() + : chainIdText try { await selfReportChangeReq({ id: this.currentRecord.id, - chainId: chain.id, + chainId: safeChainId, chainName: chain.text, merchantId: merchant.id, merchantName: merchant.text }) this.detailData = Object.assign({}, this.currentRecord, { - chainId: chain.id, + chainId: safeChainId, chainName: chain.text, merchantId: merchant.id, merchantName: merchant.text