fix(审核): 阻断位置型 chainId 占位符写入 yxe_self_report
normalizeMerchantChain 的兜底链以 `chain_${index}` 结尾,该值是数组下标而非
连锁标识。审核员改门店时 saveMerchantEdit 会把 chain.id 直接写入 chainId,
落库后按连锁筛选(YxeSelfReportMapper.xml: a.chain_id = #{param.chainId}
等值匹配)就再也筛不出这条记录。
存量数据已出现 chain_3/chain_6 等脏值,导致 5 条已通过记录按连锁筛选时
永久漏查。本次修复:
- 兜底链结尾改用连锁名(与提交端 create.vue 的 `?? chainName` 对齐)
- saveMerchantEdit 写入前拦截 `chain_` 前缀,退回连锁名
后端 MerchantServiceImpl.groupByChain 已返回稳定 chainId,正常路径不再回退。
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user