Files
PayrollManagementSystem/frontend/src/api/calc.ts
T
liuwenxinandClaude Code cc4c51359c fix(frontend): M3 台账/月结/审批三页数据加载与分页——e2e 首跑抓出
calc_settlement_flow e2e 首跑即暴露三处真实缺陷(三页自 2026-10-17 交付
起一直「暂无数据」且翻页失效,此前无 e2e 覆盖):

- api/{calc,settlements,approvals}.ts 误用默认导出 `request`(axios 实例,
  返回 AxiosResponse 未解包),usePagedList 拿到的 data.list 恒 undefined
  → 三页永远「暂无数据」;改为具名导入 `{ request }`(统一信封解包版)
- 三页均无 onMounted 初始加载 → 进页不取数;补 `onMounted(() => void load())`
- 三页 AppPagination 用 `v-model:page-num` + `@change`(组件无该事件、
  也未实现 update:*)→ 翻页失效;统一为 `:page-num/:page-size` +
  `@page-change/@size-change`
- 并入并行会话的操作列 align="center" 样式与 M4 报表页 README 段落

验证:e2e calc_settlement_flow 8 步全过(API 预置→台账筛选→重算对话框
按回款 ID→版本三态筛选→月结生成→提交锁定→详情抽屉);type-check 绿

Co-Authored-By: Claude Code <noreply@anthropic.com>
2026-10-19 16:24:18 +08:00

71 lines
2.0 KiB
TypeScript

import { request } from './request'
import type { PageData } from './types'
/** 绩效台账行(金额/比例一律 str) */
export interface LedgerRow {
id: number
receipt_id: number | null
calc_version: number
is_active: number
calc_type: number
business_id: number
business_no: string
personnel_id: number
personnel_name: string
role_code: string
customer_type: string
product_category: string
ship_date: string | null
receipt_date: string
payment_days: number | null
rate_text: string
converted_profit: string | null
performance_amount: string | null
barter_applied: number
weight_r: number | null
payment_weight: string | null
payable_amount: string | null
settlement_month: string
is_probation: number
missing_cost: number
snapshot_json: Record<string, unknown> | null
calc_reason: string | null
}
export interface LedgerQueryParams {
pageNum?: number
pageSize?: number
settlement_month?: string
personnel_id?: number
business_id?: number
is_active?: number
calc_type?: number
}
export function listLedger(params: LedgerQueryParams): Promise<PageData<LedgerRow>> {
return request({ url: '/v1/calc/ledger', method: 'get', params })
}
export function getLedger(id: number): Promise<LedgerRow> {
return request({ url: `/v1/calc/ledger/${id}`, method: 'get' })
}
/** 核算回款:返回台账行 + repeated(业务级一次性计提标记) */
export function calcReceipt(receiptId: number): Promise<{ ledger: LedgerRow; repeated: boolean }> {
return request({ url: `/v1/calc/receipts/${receiptId}/calc`, method: 'post' })
}
export function recalcReceipt(receiptId: number, reason: string): Promise<LedgerRow> {
return request({
url: `/v1/calc/receipts/${receiptId}/recalc`,
method: 'post',
data: { reason },
})
}
export function batchCalc(receiptIds: number[]): Promise<
{ receipt_id: number; ok: boolean; repeated?: boolean; error?: string }[]
> {
return request({ url: '/v1/calc/batch', method: 'post', data: { receipt_ids: receiptIds } })
}