diff --git a/src/modules/finance/api/finance.ts b/src/modules/finance/api/finance.ts index 15ece978..6bdada3e 100644 --- a/src/modules/finance/api/finance.ts +++ b/src/modules/finance/api/finance.ts @@ -126,7 +126,7 @@ export async function listFinanceAccounts(params: { page?: number; size?: number const query = { page: params.page ?? 1, pageSize: params.size ?? 20, customerId: params.customerId || undefined, status: params.status || undefined } const response = await http.get & { page?: RawResource }, ApiEnvelope & { page?: RawResource }>(`${basePath}/accounts`, { params: query }) const data = unwrapApiResponse(response) - const records = data.map((item) => ({ customerId: stringValue(item.customerId), customerCode: stringValue(item.customerCode), customerName: stringValue(item.customerName), contactName: stringValue(item.contactName), contactPhone: stringValue(item.contactPhone), outstandingReceivable: numberValue(item.outstandingReceivable), pendingBilling: numberValue(item.pendingBilling), receivedInPeriod: numberValue(item.receivedInPeriod), totalCost: numberValue(item.totalCost), paidCost: numberValue(item.paidCost), outstandingPayable: numberValue(item.outstandingPayable), status: stringValue(item.status), lastChangedAt: stringValue(item.lastChangedAt) })) + const records: FinanceAccountSummary[] = data.map((item) => ({ customerId: stringValue(item.customerId), customerCode: stringValue(item.customerCode), customerName: stringValue(item.customerName), contactName: stringValue(item.contactName), contactPhone: stringValue(item.contactPhone), outstandingReceivable: numberValue(item.outstandingReceivable), pendingBilling: numberValue(item.pendingBilling), receivedInPeriod: numberValue(item.receivedInPeriod), totalCost: numberValue(item.totalCost), paidCost: numberValue(item.paidCost), outstandingPayable: numberValue(item.outstandingPayable), status: stringValue(item.status), lastChangedAt: stringValue(item.lastChangedAt) })) const total = numberValue(response.page?.total ?? records.length) const pageSize = numberValue(response.page?.pageSize ?? query.pageSize) || query.pageSize return { records, total, pages: Math.max(1, Math.ceil(total / pageSize)) } diff --git a/src/modules/finance/financeDelivery.test.ts b/src/modules/finance/financeDelivery.test.ts index 0cbe8bac..0effe20b 100644 --- a/src/modules/finance/financeDelivery.test.ts +++ b/src/modules/finance/financeDelivery.test.ts @@ -52,6 +52,7 @@ describe('finance six-page delivery contract', () => { it('connects G1 customer accounts to the formal list and ledger operations', () => { const page = source('src/modules/finance/pages/FinanceCustomerAccountsView.vue') + const types = source('src/modules/finance/types.ts') expect(api).toContain('`${basePath}/accounts`') expect(api).toContain('`${basePath}/accounts/${customerId}/ledger`') expect(page).toContain('listFinanceAccounts') @@ -62,6 +63,11 @@ describe('finance six-page delivery contract', () => { expect(page).toContain('options: customers.value.filter') expect(page).toContain('label: item.tenantName') expect(page).not.toContain('tenantCode') + expect(types).toContain('export interface FinanceOperatingFundsSummary') + expect(types).toContain('export interface FinanceAccountSummary extends FinanceOperatingFundsSummary') + expect(api).toContain('const records: FinanceAccountSummary[]') + for (const metric of ['待收客户款', '待付供应商款', '已线下支付供应商款']) expect(page).toContain(metric) + for (const forbidden of ['客户线下支付', '已收客户款', '已付成本']) expect(page).not.toContain(forbidden) const columns = page.slice(page.indexOf('const columns: DataTableColumn[]')) expect(columns.indexOf("key: 'actions'")).toBeLessThan(columns.indexOf("key: 'customerName'")) for (const state of ['客户账户加载失败', '暂无客户账户', '无权访问客户账户', '账户流水加载失败']) expect(page).toContain(state) diff --git a/src/modules/finance/pages/FinanceCustomerAccountsView.test.ts b/src/modules/finance/pages/FinanceCustomerAccountsView.test.ts index a0350dd8..19054451 100644 --- a/src/modules/finance/pages/FinanceCustomerAccountsView.test.ts +++ b/src/modules/finance/pages/FinanceCustomerAccountsView.test.ts @@ -54,8 +54,8 @@ describe('FinanceCustomerAccountsView delivery', () => { expect(page).toContain('返回客户账户') expect(page).toContain('