import request from './request' import type { PageData } from './types' /** 月结状态:1草稿 2待审批 3已审定(=已锁定)4已驳回 */ export const SETTLEMENT_STATUS = { DRAFT: 1, PENDING: 2, APPROVED: 3, REJECTED: 4, } as const export function settlementStatusLabel(status: number): string { return ( { 1: '草稿', 2: '待审批', 3: '已审定(锁定)', 4: '已驳回' }[status] ?? String(status) ) } export function settlementStatusTagType( status: number, ): 'primary' | 'success' | 'danger' | 'warning' | 'info' { return ( ({ 1: 'info', 2: 'primary', 3: 'success', 4: 'danger', 5: 'info' } as const)[status] ?? 'info' ) } export interface SettlementItem { id: number personnel_id: number personnel_name: string role_code: string calc_type: number performance_sum: string payable_sum: string basic_amount: string | null salary_mode: string | null net_amount: string | null is_probation: number probation_note: string | null } export interface Settlement { id: number settlement_month: string status: number total_performance: string | null total_payable: string | null person_count: number approval_order_no: string | null submitter_name: string locked_at: string | null locked_by: string | null create_time: string } export interface SettlementDetail extends Settlement { items: SettlementItem[] } export interface SettlementQueryParams { pageNum?: number pageSize?: number status?: number } export function listSettlements(params: SettlementQueryParams): Promise> { return request({ url: '/v1/settlements', method: 'get', params }) } export function getSettlement(id: number): Promise { return request({ url: `/v1/settlements/${id}`, method: 'get' }) } export function generateSettlement(month: string): Promise { return request({ url: '/v1/settlements/generate', method: 'post', data: { month } }) } export function submitSettlement(id: number): Promise { return request({ url: `/v1/settlements/${id}/submit`, method: 'post' }) } /** 调整单(已锁定月份的补发/扣减) */ export interface AdjustmentRow { id: number order_no: string settlement_month: string personnel_name: string direction: number amount: string reason: string status: number } export function createAdjustment(data: { settlement_month: string personnel_id: number direction: number amount: string reason: string }): Promise> { return request({ url: '/v1/settlements/adjustments', method: 'post', data }) } export function listAdjustments(): Promise { return request({ url: '/v1/settlements/adjustments', method: 'get' }) }