fix: normalize finance page metadata

This commit is contained in:
2026-09-10 11:32:38 +08:00
parent 354f65afe8
commit 911623d5a3
2 changed files with 25 additions and 4 deletions
+23 -4
View File
@@ -8,6 +8,23 @@ export interface PageResult<T> {
pages: number
}
interface PageResultWire<T> extends Omit<PageResult<T>, 'total' | 'page' | 'size' | 'pages'> {
total: number | string
page: number | string
size: number | string
pages: number | string
}
function normalizePageResult<T>(result: PageResultWire<T>): PageResult<T> {
return {
...result,
total: Number(result.total),
page: Number(result.page),
size: Number(result.size),
pages: Number(result.pages),
}
}
export interface FinanceAccount {
currencyCode: 'CNY'
actualBalance: string
@@ -71,20 +88,22 @@ export function getFinanceAccount() {
return apiRequest<FinanceAccount>({ method: 'GET', url: '/client/finance/v1/account' })
}
export function getAccountLedger(page: number, size: number) {
return apiRequest<PageResult<AccountLedgerEntry>>({
export async function getAccountLedger(page: number, size: number) {
const result = await apiRequest<PageResultWire<AccountLedgerEntry>>({
method: 'GET',
url: '/client/finance/v1/account/ledger',
params: { page, size },
})
return normalizePageResult(result)
}
export function getRechargeRequests(page: number, size: number) {
return apiRequest<PageResult<RechargeRequest>>({
export async function getRechargeRequests(page: number, size: number) {
const result = await apiRequest<PageResultWire<RechargeRequest>>({
method: 'GET',
url: '/client/finance/v1/recharge-requests',
params: { page, size },
})
return normalizePageResult(result)
}
export function getRechargeChannels() {
@@ -42,6 +42,8 @@ test('renders server balances, ledger and recharge states without internal ident
assert.match(viewSource, /:default-current-page="ledgerPage"/)
assert.match(viewSource, /:default-current-page="rechargePage"/)
assert.doesNotMatch(viewSource, /<el-pagination (?:v-model:current-page|:current-page)=/)
assert.match(apiSource, /function normalizePageResult<[\s\S]*total: Number\(result\.total\)/)
assert.match(apiSource, /page: Number\(result\.page\)/)
assert.doesNotMatch(viewSource, /requestId|ledgerId|customerId|tenantId/)
})