修复退款审核详情关联与空值展示

This commit is contained in:
czl231
2026-08-17 00:44:49 +08:00
parent 64248973ee
commit 74efb323f0
10 changed files with 543 additions and 11 deletions

View File

@@ -101,6 +101,40 @@ assertIncludes(
"wallet_apply_cash: {",
'提现详情必须声明专属字段顺序与审核姓名快照隐藏规则',
);
// 退款审核的原订单和用户必须使用接口返回的可读名称,不依赖列表临时加载关系。
const refundDefinition = resources.match(
/define\('payment_refund',[\s\S]*?\n\s*\], 'list',/,
)?.[0];
if (!refundDefinition) throw new Error('无法读取退款审核资源定义');
for (const contract of [
"listDisplayKey: 'business_display_name'",
"detailDisplayKey: 'business_display_name'",
"listDisplayKey: 'user_display_name'",
"detailDisplayKey: 'user_display_name'",
"f('refund_product_summary', { emptyText: '退款商品信息缺失' })",
"f('description', { emptyText: '无说明' })",
"f('review_remark', { emptyText: '无审核说明' })",
"detailDisplayKey: 'reviewer_display_name'",
"relation('payment_order_identity', '/payment_order'",
"relation('wallet_basic_identity', '/wallet_basic'",
"relationOptionDisplay: 'wallet-owner'",
'listDisplayIdentityCopy: true',
]) {
if (!refundDefinition.includes(contract)) {
throw new Error(`退款审核缺少可读关系展示契约:${contract}`);
}
}
assertIncludes(
detailContract,
"payment_refund: {",
'退款详情必须声明专属字段顺序和审核人展示名称隐藏规则',
);
assertIncludes(
detailContract,
"hiddenKeys: ['reviewer_display_name']",
'退款详情不得重复展示审核人名称辅助字段',
);
assertIncludes(
detailContract,
"hiddenKeys: ['reviewer_name']",

View File

@@ -146,6 +146,16 @@ const contracts: Record<string, ResourceDetailContract> = {
// 审核姓名作为审核人关系的可读快照使用,不再重复渲染独立字段。
hiddenKeys: ['reviewer_name'],
},
payment_refund: {
leadingKeys: [
'refund_no', 'refund_status', 'business_type', 'business_identity',
'user_identity', 'refund_product_summary', 'amount', 'reason',
'description', 'reviewer_identity', 'review_remark', 'reviewed_at',
'completed_at', 'payment_order_identity', 'wallet_basic_identity', 'identity',
],
// 审核人可读名称仅作为标识字段主文案,不重复显示为独立详情项。
hiddenKeys: ['reviewer_display_name'],
},
ec_order: {
leadingKeys: [
'order_no', 'order_status', 'request_no', 'user_account_identity',

View File

@@ -178,6 +178,7 @@ const fieldLabels: Record<string, string> = {
previous_order_status: '异常前订单状态',
payment_status: '支付状态',
refund_status: '退款状态',
refund_product_summary: '退款商品',
apply_status: '提现状态',
ticket_status: '工单状态',
reconciliation_status: '对账状态',
@@ -774,11 +775,15 @@ export const resources: ResourceUiDefinition[] = [
f('operator_identity'), f('ymd'), f('ym'), f('remark'),
]),
define('payment_refund', '退款审核', 'readonly', [
f('refund_no'), f('business_type'), f('business_identity', { type: 'identity', label: '业务对象', listRelationNameOnly: true, displayRelationLabel: true, showIdentityCopy: true, dynamicRelation: {
f('refund_no'), f('business_type'), f('business_identity', { type: 'identity', label: '业务对象', listDisplayKey: 'business_display_name', detailDisplayKey: 'business_display_name', listDisplayIdentityCopy: true, displayRelationLabel: true, showIdentityCopy: true, dynamicRelation: {
parentKey: 'business_type', parentLabel: '业务类型', resources: { gasorder: '/gasorder_basic', ec_order: '/ec_order' },
} }), relation('user_identity', '/user_account'),
f('amount'), f('reason'), f('description'), f('refund_status'),
relation('reviewer_identity', '/platform_account'), f('review_remark'), f('reviewed_at'), f('completed_at'),
} }), relation('user_identity', '/user_account', false, { label: '用户', listDisplayKey: 'user_display_name', detailDisplayKey: 'user_display_name', listDisplayIdentityCopy: true, displayRelationLabel: true, showIdentityCopy: true }),
f('refund_product_summary', { emptyText: '退款商品信息缺失' }),
f('amount'), f('reason'), f('description', { emptyText: '无说明' }), f('refund_status'),
relation('reviewer_identity', '/platform_account', false, { label: '审核人', listDisplayKey: 'reviewer_display_name', detailDisplayKey: 'reviewer_display_name', listDisplayIdentityCopy: true, displayRelationLabel: true, showIdentityCopy: true }),
f('review_remark', { emptyText: '无审核说明' }), f('reviewed_at'), f('completed_at'),
relation('payment_order_identity', '/payment_order', false, { label: '支付记录', displayRelationLabel: true, showIdentityCopy: true }),
relation('wallet_basic_identity', '/wallet_basic', false, { label: '钱包', relationOptionDisplay: 'wallet-owner', displayRelationLabel: true, showIdentityCopy: true }),
], 'list', [
{ name: '审核通过并退入钱包', resource: '/payment_refund/:identity/approve', fields: [f('remark')], visibleFor: { field: 'refund_status', values: [10] } },
{ name: '驳回退款', resource: '/payment_refund/:identity/reject', danger: true, fields: [f('remark', { required: true })], visibleFor: { field: 'refund_status', values: [10] } },