Status: ready-for-agent
领域: 支付链路(自动结算与结算记录)
来源: 用户工单「【财务管理】结算记录:状态没有显示出来」(截图:2026-09-18 两条流水状态列红框为空标签)
日期: 2026-09-18
「财务管理 → 结算记录」列表里,状态列**大部分行正常显示「已结算」**,但**最新日期(2026-09-18)的两条**
(个人进件验证商户、景区服务-卡)只显示一个几乎空白的小标签——实际是标签里只有**一个裸字母 I**,
看起来像"状态没显示出来"。
状态值直接来自斗拱结算流水的 trans_stat,前端只映射了三个值,其余原样输出:
MerchantSettlementAdminService.decode(...) 第 116 行 row.put("status", record.get("trans_stat"));settleStatusLabel() 只映射了 S→已结算 / F→结算失败 / P→处理中,其它值走 || String(value || '-') 原样显示。当天还没结算完成的流水,斗拱返回的是 trans_stat = "I"(处理中/未终态),不在映射表里,于是标签里
只剩下一个裸的 I。更早的流水都是 S,所以显示正常——这也解释了为什么"只有最新的两行看起来是空的"。
I 是确实存在的交易状态:PendingPaymentConfirmationTests:105 "trans_stat", "I", "resp_code", "00000000";MerchantVerificationServiceTests:228 "trans_stat", "I", "resp_code", "00000000";PaymentReconciliationService:629 把 "I" 和失败/未找到一起归为"未终态"。talent-card-server/docs/huifu-payment-integration.md:103trans_stat:S/SUCCESS/PAID、F/FAILED、P/PROCESSING/PENDING 等)。settleStatusLabel() / settleStatusType() 补上缺失取值,至少:I → 处理中(warning),并顺手兼容长写法 SUCCESS/FAILED/PROCESSING/PENDING(与后端文档口径一致)。decode() 里把 trans_stat 归一化(I/PROCESSING/PENDING → P,SUCCESS/PAID → S,FAILED → F),前端只认三种值,避免以后每出现一个新码就再崩一次。statusOptions 对 settlements 返回 [],MerchantSettlementView.vue:36),归一化后建议一并把 S/F/P 三个选项补上,方便按状态筛流水。