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>
71 lines
2.0 KiB
TypeScript
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 } })
|
|
}
|