From 46a91fbca05ea7a64ac57dd31ac4539355c64be7 Mon Sep 17 00:00:00 2001 From: ouyangxq <775153912@qq.com> Date: Sat, 5 Sep 2026 11:54:55 +0800 Subject: [PATCH] feat(finance): show customer credit balances --- src/modules/finance/api/account.ts | 11 +++++++++-- src/modules/finance/views/FinanceAccountView.test.mjs | 5 ++++- src/modules/finance/views/FinanceAccountView.vue | 11 ++++++++--- 3 files changed, 21 insertions(+), 6 deletions(-) diff --git a/src/modules/finance/api/account.ts b/src/modules/finance/api/account.ts index 239a465..1928d09 100644 --- a/src/modules/finance/api/account.ts +++ b/src/modules/finance/api/account.ts @@ -13,11 +13,15 @@ export interface FinanceAccount { actualBalance: string frozenBalance: string availableBalance: string + creditLimit: string + creditUsed: string + creditFrozen: string + availableCredit: string version: number updatedAt: string } -export type AccountChangeType = 'RECHARGE' | 'DEDUCTION' | 'FREEZE' | 'UNFREEZE' | 'CONSUMPTION' +export type AccountChangeType = 'RECHARGE' | 'DEDUCTION' | 'FREEZE' | 'UNFREEZE' | 'CONSUMPTION' | 'CREDIT_LIMIT' export interface AccountLedgerEntry { ledgerId: string @@ -27,7 +31,10 @@ export interface AccountLedgerEntry { actualBalanceAfter: string frozenBalanceAfter: string availableBalanceAfter: string - sourceType: 'CLIENT_RECHARGE' | 'MANUAL_RECHARGE' | 'MANUAL_DEDUCTION' + creditLimitAfter: string + creditUsedAfter: string + availableCreditAfter: string + sourceType: 'CLIENT_RECHARGE' | 'MANUAL_RECHARGE' | 'MANUAL_DEDUCTION' | 'CREDIT_LIMIT_ADJUSTMENT' | string sourceNo: string operatorName: string | null remark: string | null diff --git a/src/modules/finance/views/FinanceAccountView.test.mjs b/src/modules/finance/views/FinanceAccountView.test.mjs index 38c91d5..dcaa9c7 100644 --- a/src/modules/finance/views/FinanceAccountView.test.mjs +++ b/src/modules/finance/views/FinanceAccountView.test.mjs @@ -27,7 +27,10 @@ test('activates the account route and maps read and recharge permissions indepen }) test('renders server balances, ledger and recharge states without internal identifiers', () => { - for (const field of ['actualBalance', 'frozenBalance', 'availableBalance']) assert.match(viewSource, new RegExp(`account\\?\\.${field}`)) + for (const field of ['actualBalance', 'frozenBalance', 'availableBalance', 'creditLimit', 'creditUsed', 'availableCredit']) assert.match(viewSource, new RegExp(`account\\?\\.${field}`)) + for (const field of ['creditUsedAfter', 'availableCreditAfter']) assert.match(viewSource, new RegExp(`row\\.${field}`)) + assert.match(viewSource, /实际可用资金与可用授信合计/) + assert.match(viewSource, /CREDIT_LIMIT: '授信调整'/) assert.match(viewSource, /row-key="businessNo"/) assert.match(viewSource, /row-key="requestNo"/) assert.match(viewSource, /empty-text="暂无资金流水"/) diff --git a/src/modules/finance/views/FinanceAccountView.vue b/src/modules/finance/views/FinanceAccountView.vue index 14a0585..43f94be 100644 --- a/src/modules/finance/views/FinanceAccountView.vue +++ b/src/modules/finance/views/FinanceAccountView.vue @@ -51,7 +51,7 @@ const amountValid = computed(() => { const canSubmit = computed(() => amountValid.value && channelReady.value && Boolean(voucherFile.value) && !submitting.value) const changeLabels: Record = { - RECHARGE: '充值', DEDUCTION: '扣款', FREEZE: '冻结', UNFREEZE: '解冻', CONSUMPTION: '消费', + RECHARGE: '充值', DEDUCTION: '扣款', FREEZE: '冻结', UNFREEZE: '解冻', CONSUMPTION: '消费', CREDIT_LIMIT: '授信调整', } const statusLabels: Record = { PENDING: '待审核', APPROVED: '已通过', REJECTED: '已驳回' } const methodLabels: Record = { WECHAT: '微信支付', ALIPAY: '支付宝' } @@ -208,7 +208,7 @@ onMounted(() => { void loadAccountData() })