export type FinanceStatusTone = 'success' | 'warning' | 'info' | 'danger' | 'primary' interface FinanceStatusDefinition { label: string tone: FinanceStatusTone } const financeStatuses: Record = { ACTIVE: { label: '正常', tone: 'success' }, DISABLED: { label: '停用', tone: 'info' }, INACTIVE: { label: '停用', tone: 'info' }, DRAFT: { label: '草稿', tone: 'info' }, PENDING: { label: '待审核', tone: 'warning' }, PENDING_REVIEW: { label: '待审核', tone: 'warning' }, APPROVED: { label: '已审核', tone: 'success' }, ISSUED: { label: '已出账', tone: 'primary' }, REJECTED: { label: '已驳回', tone: 'danger' }, UNPAID: { label: '未支付', tone: 'warning' }, PARTIALLY_PAID: { label: '部分结清', tone: 'warning' }, PAID: { label: '已结清', tone: 'success' }, VOIDED: { label: '已作废', tone: 'info' }, AVAILABLE: { label: '待结算', tone: 'warning' }, LOCKED: { label: '结算锁定', tone: 'warning' }, BILLED: { label: '已入账', tone: 'success' }, RECORDED: { label: '已登记', tone: 'primary' }, CONFIRMED: { label: '已确认', tone: 'success' }, } export const financeBillStatusOptions = [ { label: '草稿', value: 'DRAFT' }, { label: '待审核', value: 'PENDING_REVIEW' }, { label: '已出账', value: 'ISSUED' }, { label: '已驳回', value: 'REJECTED' }, { label: '部分结清', value: 'PARTIALLY_PAID' }, { label: '已结清', value: 'PAID' }, { label: '已作废', value: 'VOIDED' }, ] export const financeArapStatusOptions = [ ...financeBillStatusOptions, { label: '待结算', value: 'AVAILABLE' }, { label: '结算锁定', value: 'LOCKED' }, { label: '已入账', value: 'BILLED' }, { label: '已登记', value: 'RECORDED' }, { label: '已确认', value: 'CONFIRMED' }, ] function normalizeStatus(status: unknown) { return typeof status === 'string' ? status.trim().toUpperCase() : '' } export function financeStatusLabel(status: unknown) { return financeStatuses[normalizeStatus(status)]?.label || '未知状态' } export function financeStatusTone(status: unknown): FinanceStatusTone { return financeStatuses[normalizeStatus(status)]?.tone || 'info' } const financeSourceTypeLabels: Record = { INBOUND_FEE: '入库费用', ORDER_FEE: '订单费用', CONTAINER_COST: '整柜成本', MANUAL_COST: '人工成本', STORAGE_FEE: '仓储费用', } const financeBusinessTypeLabels: Record = { BILL: '对账单', RECEIPT: '收款', COST: '成本', ADJUSTMENT: '账务调整', SETTLEMENT: '结算', } const financeDocumentTypeLabels: Record = { BILL: '对账单', RECEIPT: '收款单', COST: '成本单', SETTLEMENT: '结算单', REVISION: '调整记录', } const financeOperationActionLabels: Record = { CREATE: '创建', APPROVE: '审核通过', REJECT: '审核驳回', INCLUDE: '参与结算', EXCLUDE: '排除结算', UPDATE: '更新', } const financeOperationResultLabels: Record = { SUCCESS: '操作成功', FAILED: '操作失败', PENDING: '待处理', PROCESSING: '处理中', } function codeLabel(value: unknown, labels: Record, unknownLabel: string) { const code = normalizeStatus(value) if (!code) return '—' return labels[code] || unknownLabel } export const financeSourceTypeLabel = (value: unknown) => codeLabel(value, financeSourceTypeLabels, '其他来源') export const financeBusinessTypeLabel = (value: unknown) => codeLabel(value, financeBusinessTypeLabels, '其他业务') export const financeDocumentTypeLabel = (value: unknown) => codeLabel(value, financeDocumentTypeLabels, '其他单据') export const financeOperationActionLabel = (value: unknown) => codeLabel(value, financeOperationActionLabels, '其他操作') export const financeOperationResultLabel = (value: unknown) => codeLabel(value, financeOperationResultLabels, '结果未知')