优化: 大文件拆分+代码分割+按需加载+console清理+any类型替换

- Money.tsx (2260行→54行): 拆分为 money/ 子目录4个组件, React.lazy二级分割
- AIAssistant.tsx (2038行→63行): 拆分为 ai-assistant/ 子目录6个组件, React.lazy二级分割
- xlsx改为动态导入, OvertimeTab从345KB降至12.7KB
- api-services.ts: 请求参数 any→Record<string,unknown>
- 移除前端3处console.log残留
- 后端console替换为pino logger
- 前后端未使用import/变量清理
- Zod schema验证: termination/platform/special-status/work-process
- 新增 leave.routes.ts, acceptance-test.routes.ts
- UI组件: PageGuide, QueryError, Stepper
This commit is contained in:
freedakgmail
2026-08-04 07:53:37 +08:00
parent 1da385cd5d
commit 2968484d2d
109 changed files with 8950 additions and 5926 deletions
+97 -68
View File
@@ -25,10 +25,10 @@ export const authApi = {
login: (data: { phone: string; password: string }) =>
post('/auth/login', data).then(unwrap<any>()),
/** 注册 */
register: (data: any) =>
register: (data: Record<string, unknown>) =>
post('/auth/register', data).then(unwrap<any>()),
/** 平台登录 */
platformLogin: (data: any) =>
platformLogin: (data: Record<string, unknown>) =>
post('/auth/platform-login', data).then(unwrap<any>()),
/** 发送忘记密码验证码 */
forgotPasswordSendCode: (phone: string) =>
@@ -64,19 +64,19 @@ export const employeeApi = {
detail: (id: string) =>
get(`/employees/${id}`).then(unwrap<any>()),
/** 创建员工 */
create: (data: any) =>
create: (data: Record<string, unknown>) =>
post('/employees', data),
/** 更新员工 */
update: (id: string, data: any) =>
update: (id: string, data: Record<string, unknown>) =>
put(`/employees/${id}`, data),
/** 删除员工 */
remove: (id: string) =>
del(`/employees/${id}`),
/** 重新入职 */
rehire: (id: string, data: any) =>
rehire: (id: string, data: Record<string, unknown>) =>
post(`/employees/${id}/rehire`, data),
/** 添加合同 */
addContract: (data: any) =>
addContract: (data: Record<string, unknown>) =>
post('/employees/contracts', data),
/** 删除合同 */
removeContract: (contractId: string) =>
@@ -101,7 +101,7 @@ export interface RosterParams {
}
export interface RosterResponse {
data: any[]
data: Record<string, unknown>[]
pagination: { page: number; pageSize: number; total: number; totalPages: number }
globalRiskStats?: { expiring: number; expired: number; unsigned: number }
}
@@ -129,31 +129,31 @@ export const rosterApi = {
profile: (employeeId: string) =>
get(`/roster/${employeeId}/profile`).then(unwrap<any>()),
/** 调薪 */
salaryChange: (employeeId: string, data: any) =>
salaryChange: (employeeId: string, data: Record<string, unknown>) =>
post(`/roster/${employeeId}/salary-change`, data),
/** 调岗 */
departmentChange: (employeeId: string, data: any) =>
departmentChange: (employeeId: string, data: Record<string, unknown>) =>
post(`/roster/${employeeId}/department-change`, data),
/** 考勤记录 */
attendance: (employeeId: string, data: any) =>
attendance: (employeeId: string, data: Record<string, unknown>) =>
post(`/roster/${employeeId}/attendance`, data),
/** 删除考勤记录 */
removeAttendance: (employeeId: string, id: string) =>
del(`/roster/${employeeId}/attendance/${id}`),
/** 培训记录 */
training: (employeeId: string, data: any) =>
training: (employeeId: string, data: Record<string, unknown>) =>
post(`/roster/${employeeId}/training`, data),
/** 删除培训记录 */
removeTraining: (employeeId: string, id: string) =>
del(`/roster/${employeeId}/training/${id}`),
/** 绩效记录 */
performance: (employeeId: string, data: any) =>
performance: (employeeId: string, data: Record<string, unknown>) =>
post(`/roster/${employeeId}/performance`, data),
/** 删除绩效记录 */
removePerformance: (employeeId: string, id: string) =>
del(`/roster/${employeeId}/performance/${id}`),
/** 违纪记录-创建 */
createDisciplinary: (employeeId: string, data: any) =>
createDisciplinary: (employeeId: string, data: Record<string, unknown>) =>
post(`/roster/${employeeId}/disciplinary`, data),
/** 删除违纪记录 */
removeDisciplinary: (employeeId: string, id: string) =>
@@ -164,7 +164,7 @@ export const rosterApi = {
export const attachmentApi = {
/** 添加附件 */
add: (data: any) =>
add: (data: Record<string, unknown>) =>
post('/attachments', data),
/** 获取附件列表 */
list: (employeeId: string) =>
@@ -265,25 +265,42 @@ export const attendanceApi = {
confirm: (data: { employeeId: string; month: string }) =>
post('/attendance/confirm', data).then(unwrap<any>()),
/** 创建/更新班次 */
saveShift: (data: any, editId?: string) =>
saveShift: (data: Record<string, unknown>, editId?: string) =>
editId ? put(`/attendance/shifts/${editId}`, data) : post('/attendance/shifts', data),
/** 删除班次 */
removeShift: (id: string) =>
del(`/attendance/shifts/${id}`),
/** 批量排班 */
batchAssign: (items: any[]) =>
batchAssign: (items: Record<string, unknown>[]) =>
post('/attendance/shift-assignments/batch', { items }),
/** 删除排班 */
removeAssignment: (id: string) =>
del(`/attendance/shift-assignments/${id}`),
/** 创建请假记录 */
createLeave: (data: any) =>
createLeave: (data: Record<string, unknown>) =>
post('/attendance/leaves', data),
/** 删除请假记录 */
removeLeave: (id: string) =>
del(`/attendance/leaves/${id}`),
}
// ========== 休假审批流 ==========
export const leaveApi = {
list: (params?: Record<string, unknown>) =>
get('/leaves', { params }).then(unwrap<any>()),
stats: (month?: string) =>
get('/leaves/stats', { params: { month } }).then(unwrap<any>()),
create: (data: Record<string, unknown>) =>
post('/leaves', data).then(unwrap<any>()),
approve: (id: string, action: string, remark?: string) =>
post(`/leaves/${id}/approve`, { action, remark }).then(unwrap<any>()),
cancel: (id: string) =>
post(`/leaves/${id}/cancel`).then(unwrap<any>()),
remove: (id: string) =>
del(`/leaves/${id}`),
}
// ========== AI 相关 ==========
export const aiApi = {
@@ -294,19 +311,19 @@ export const aiApi = {
conversation: (id: string) =>
get(`/ai/conversations/${id}`).then(unwrap<any>()),
/** 创建对话 */
createConversation: (data: any) =>
createConversation: (data: Record<string, unknown>) =>
post('/ai/conversations', data).then(unwrap<any>()),
/** 更新对话 */
updateConversation: (id: string, data: any) =>
updateConversation: (id: string, data: Record<string, unknown>) =>
put(`/ai/conversations/${id}`, data),
/** 删除对话 */
removeConversation: (id: string) =>
del(`/ai/conversations/${id}`),
/** AI 咨询 */
consult: (data: any) =>
consult: (data: Record<string, unknown>) =>
post('/ai/consultation', data).then(unwrap<any>()),
/** AI 上下文问答 */
contextAsk: (data: any) =>
contextAsk: (data: Record<string, unknown>) =>
post('/ai/context-ask', data).then(unwrap<any>()),
/** 合同审查上传 */
reviewUpload: (formData: FormData) =>
@@ -315,19 +332,19 @@ export const aiApi = {
review: (contractText: string) =>
post('/ai/review', { contractText }).then(unwrap<any>()),
/** 保存审查结果 */
reviewSave: (data: any) =>
reviewSave: (data: Record<string, unknown>) =>
post('/ai/review/save', data),
/** 案例匹配 */
matchCase: (scenario: string) =>
post('/ai/match-case', { scenario }).then(unwrap<any>()),
/** 案例转待办 */
caseToTodo: (data: any) =>
caseToTodo: (data: Record<string, unknown>) =>
post('/ai/case-to-todo', data),
/** RAG 知识库列表 */
ragList: () =>
get('/ai/rag/list').then(unwrap<any[]>()),
/** RAG 添加知识 */
ragAdd: (data: any) =>
ragAdd: (data: Record<string, unknown>) =>
post('/ai/rag/add', data),
/** RAG 删除知识 */
ragRemove: (id: string) =>
@@ -347,10 +364,10 @@ export const payrollApi = {
template: () =>
get('/payroll2/template').then(unwrap<any[]>()),
/** 创建模版项 */
createTemplateItem: (data: any) =>
createTemplateItem: (data: Record<string, unknown>) =>
post('/payroll2/template', data),
/** 更新模版项 */
updateTemplateItem: (id: string, data: any) =>
updateTemplateItem: (id: string, data: Record<string, unknown>) =>
put(`/payroll2/template/${id}`, data),
/** 删除模版项 */
removeTemplateItem: (id: string) =>
@@ -359,7 +376,7 @@ export const payrollApi = {
batchCheck: (month: string) =>
get('/payroll2/batches/check', { params: { month } }).then(unwrap<any>()),
/** 批次列表 */
batches: (params?: any) =>
batches: (params?: Record<string, unknown>) =>
get('/payroll2/batches', { params }).then(unwrap<any[]>()),
/** 归档批次列表 */
archivedBatches: () =>
@@ -368,7 +385,7 @@ export const payrollApi = {
batchDetail: (id: string) =>
get(`/payroll2/batches/${id}`).then(unwrap<any>()),
/** 创建批次 */
createBatch: (data: any) =>
createBatch: (data: Record<string, unknown>) =>
post('/payroll2/batches', data),
/** 重命名批次 */
renameBatch: (batchId: string, name: string) =>
@@ -395,8 +412,11 @@ export const payrollApi = {
removeBatchEmployee: (batchId: string, employeeId: string) =>
del(`/payroll2/batches/${batchId}/employees/${employeeId}`),
/** 更新批次条目 */
updateBatchEntry: (batchId: string, employeeId: string, data: any) =>
updateBatchEntry: (batchId: string, employeeId: string, data: Record<string, unknown>) =>
put(`/payroll2/batches/${batchId}/entries/${employeeId}`, data),
/** 获取条目个税计算明细 */
taxDetail: (batchId: string, employeeId: string) =>
get(`/payroll2/batches/${batchId}/entries/${employeeId}/tax-detail`).then(unwrap<any>()),
/** 算薪前 AI 校验 */
preCheck: (batchId: string) =>
get(`/payroll2/batches/${batchId}/pre-check`).then(unwrap<any>()),
@@ -407,13 +427,13 @@ export const payrollApi = {
overtimeRecords: (params: { month?: string; employeeId?: string }) =>
get('/payroll/overtime', { params }).then(unwrap<any[]>()),
/** 保存加班费记录 */
saveOvertime: (data: any) =>
saveOvertime: (data: Record<string, unknown>) =>
post('/payroll/overtime', data).then(unwrap<any>()),
/** 更新加班费记录 */
updateOvertime: (id: string, data: any) =>
updateOvertime: (id: string, data: Record<string, unknown>) =>
put(`/payroll/overtime/${id}`, data).then(unwrap<any>()),
/** 批量导入加班工时 */
batchImportOvertime: (data: any[]) =>
batchImportOvertime: (data: Record<string, unknown>[]) =>
post('/payroll/overtime/batch', data),
/** 导入加班费到批次 */
importOvertimeToBatch: (batchId: string) =>
@@ -422,19 +442,19 @@ export const payrollApi = {
overtimeConfig: () =>
get('/payroll/overtime/config').then(unwrap<any>()),
/** 保存加班费配置 */
saveOvertimeConfig: (data: any) =>
saveOvertimeConfig: (data: Record<string, unknown>) =>
post('/payroll/overtime/config', data),
/** 工资条列表 */
payslips: (params: { month?: string; employeeId?: string }) =>
get('/payroll/payslip', { params }).then(unwrap<any[]>()),
/** 创建/更新工资条 */
savePayslip: (data: any) =>
savePayslip: (data: Record<string, unknown>) =>
post('/payroll/payslip', data).then(unwrap<any>()),
/** 删除工资条 */
removePayslip: (id: string) =>
del(`/payroll/payslip/${id}`),
/** 个税试算 */
taxPreview: (data: any) =>
taxPreview: (data: Record<string, unknown>) =>
post('/payroll/tax-preview', data).then(unwrap<any>()),
/** 薪资汇总表 */
batchSummary: (id: string) =>
@@ -470,10 +490,10 @@ export const socialInsuranceApi = {
housingConfigVersions: (city?: string) =>
get('/social/housing-config/versions', { params: city ? { city } : {} }).then(unwrap<any[]>()),
/** 创建社保配置版本 */
createConfigVersion: (data: any) =>
createConfigVersion: (data: Record<string, unknown>) =>
post('/social/config/versions', data),
/** 创建公积金配置版本 */
createHousingConfigVersion: (data: any) =>
createHousingConfigVersion: (data: Record<string, unknown>) =>
post('/social/housing-config/versions', data),
/** 社保计算 */
calculate: (base: number, city: string) =>
@@ -491,10 +511,10 @@ export const socialInsuranceApi = {
housingAdjustPreview: (configId: string) =>
get(`/social/housing-config/${configId}/adjust-preview`).then(unwrap<any>()),
/** 应用调整 */
applyAdjust: (configId: string, data: any) =>
applyAdjust: (configId: string, data: Record<string, unknown>) =>
post(`/social/config/${configId}/adjust-apply`, data),
/** 应用公积金调整 */
applyHousingAdjust: (configId: string, data: any) =>
applyHousingAdjust: (configId: string, data: Record<string, unknown>) =>
post(`/social/housing-config/${configId}/adjust-apply`, data),
/** 重置调整 */
resetAdjust: (configId: string, city: string) =>
@@ -509,19 +529,19 @@ export const socialInsuranceApi = {
monthlyProcessStatus: (month: string) =>
get('/social/monthly-process/status', { params: { month } }).then(unwrap<any>()),
/** 完成月度办理 */
completeMonthlyProcess: (data: any) =>
completeMonthlyProcess: (data: Record<string, unknown>) =>
post('/social/monthly-process/complete', data),
/** 专项附加扣除批量 */
specialDeductionBatch: (month: string) =>
get('/social/special-deduction/batch', { params: { month } }).then(unwrap<any[]>()),
/** 保存专项附加扣除 */
saveSpecialDeduction: (data: any) =>
saveSpecialDeduction: (data: Record<string, unknown>) =>
post('/social/special-deduction', data),
/** 活跃申报员工 */
activeDeclaration: (month: string) =>
get('/social/active-declaration', { params: { month } }).then(unwrap<any>()),
/** 社保/公积金记录更正 */
correctRecord: (type: 'social' | 'housing', id: string, data: any) =>
correctRecord: (type: 'social' | 'housing', id: string, data: Record<string, unknown>) =>
put(`/social/records/${type}/${id}/correct`, data).then(unwrap<any>()),
/** 社保月度变动 */
monthlyChanges: (month: string) =>
@@ -544,7 +564,7 @@ export const commercialInsuranceApi = {
enrollments: (planId: string) =>
get(`/commercial-insurance/plans/${planId}/enrollments`).then(unwrap<any[]>()),
/** 创建/更新方案 */
savePlan: (data: any, editId?: string) =>
savePlan: (data: Record<string, unknown>, editId?: string) =>
editId ? put(`/commercial-insurance/plans/${editId}`, data) : post('/commercial-insurance/plans', data),
/** 删除方案 */
removePlan: (id: string) =>
@@ -555,16 +575,16 @@ export const commercialInsuranceApi = {
export const terminationApi = {
/** 创建离职 */
create: (data: any) =>
create: (data: Record<string, unknown>) =>
post('/termination', data),
/** 创建草稿 */
createDraft: (data: any) =>
createDraft: (data: Record<string, unknown>) =>
post('/termination/draft', data),
/** 更新草稿 */
updateDraft: (draftId: string, data: any) =>
updateDraft: (draftId: string, data: Record<string, unknown>) =>
put(`/termination/draft/${draftId}`, data),
/** 草稿列表 */
drafts: (params: any) =>
drafts: (params: Record<string, unknown>) =>
get('/termination/drafts', { params }).then(unwrap<any>()),
/** 草稿详情 */
detail: (draftId: string) =>
@@ -594,7 +614,7 @@ export const terminationApi = {
assess: (employeeId: string, reason: string) =>
get(`/termination/assess/${employeeId}`, { params: { reason } }).then(unwrap<any>()),
/** 批量预览 */
batchPreview: (items: any[]) =>
batchPreview: (items: Record<string, unknown>[]) =>
post('/termination/batch/preview', { items }),
}
@@ -608,10 +628,10 @@ export const policiesApi = {
detail: (id: string) =>
get(`/policies/${id}`).then(unwrap<any>()),
/** 创建制度 */
create: (data: any) =>
create: (data: Record<string, unknown>) =>
post('/policies', data),
/** 更新制度 */
update: (id: string, data: any) =>
update: (id: string, data: Record<string, unknown>) =>
put(`/policies/${id}`, data),
/** 推进民主程序 */
advanceStep: (id: string, step: number, note?: string) =>
@@ -653,7 +673,7 @@ export const calendarApi = {
events: (month: string) =>
get(`/calendar?month=${month}`).then(unwrap<any[]>()),
/** 创建事件 */
createEvent: (data: any) =>
createEvent: (data: Record<string, unknown>) =>
post('/calendar', data),
/** 删除事件 */
removeEvent: (id: string) =>
@@ -667,7 +687,7 @@ export const companyFilesApi = {
list: (params?: { fileType?: string }) =>
get('/company-files', { params }).then(unwrap<any[]>()),
/** 添加文件 */
add: (data: any) =>
add: (data: Record<string, unknown>) =>
post('/company-files', data),
/** 删除文件 */
remove: (id: string) =>
@@ -684,7 +704,7 @@ export const notificationsApi = {
settings: () =>
get('/notifications/settings').then(unwrap<any>()),
/** 更新通知设置 */
updateSettings: (data: any) =>
updateSettings: (data: Record<string, unknown>) =>
put('/notifications/settings', data),
/** 检查合同到期 */
checkContracts: () =>
@@ -701,16 +721,16 @@ export const settingsApi = {
org: () =>
get('/settings/org').then(unwrap<any>()),
/** 更新组织设置 */
updateOrg: (data: any) =>
updateOrg: (data: Record<string, unknown>) =>
put('/settings/org', data),
/** 用户列表 */
users: () =>
get('/settings/users').then(unwrap<any>()),
/** 添加用户 */
addUser: (data: any) =>
addUser: (data: Record<string, unknown>) =>
post('/settings/users', data),
/** 更新用户 */
updateUser: (id: string, data: any) =>
updateUser: (id: string, data: Record<string, unknown>) =>
put(`/settings/users/${id}`, data),
/** 切换用户禁用状态 */
toggleDisable: (id: string) =>
@@ -739,7 +759,7 @@ export const templatesApi = {
detail: (id: string) =>
get(`/templates/${id}`).then(unwrap<any>()),
/** 渲染模板 */
render: (id: string, variables: any) =>
render: (id: string, variables: Record<string, unknown>) =>
post(`/templates/${id}/render`, { variables }).then(unwrap<any>()),
/** 企业模板列表 */
enterpriseList: (params: { page?: number; pageSize?: number; category?: string }) =>
@@ -748,13 +768,13 @@ export const templatesApi = {
enterpriseDetail: (id: string) =>
get(`/enterprise-templates/${id}`).then(unwrap<any>()),
/** 创建/更新企业模板 */
saveEnterprise: (data: any, editId?: string) =>
saveEnterprise: (data: Record<string, unknown>, editId?: string) =>
editId ? put(`/enterprise-templates/${editId}`, data) : post('/enterprise-templates', data),
/** 删除企业模板 */
removeEnterprise: (id: string) =>
del(`/enterprise-templates/${id}`),
/** 渲染企业模板 */
renderEnterprise: (id: string, variables: any) =>
renderEnterprise: (id: string, variables: Record<string, unknown>) =>
post(`/enterprise-templates/${id}/render`, { variables }).then(unwrap<any>()),
}
@@ -768,7 +788,7 @@ export const workProcessApi = {
detail: (id: string) =>
get(`/work-processes/${id}`).then(unwrap<any>()),
/** 创建 */
create: (data: any) =>
create: (data: Record<string, unknown>) =>
post('/work-processes', data).then(unwrap<any>()),
/** 提交 */
submit: (id: string) =>
@@ -794,10 +814,10 @@ export const specialStatusApi = {
stats: () =>
get('/special-statuses/stats/overview').then(unwrap<any>()),
/** 创建 */
create: (data: any) =>
create: (data: Record<string, unknown>) =>
post('/special-statuses', data),
/** 更新 */
update: (id: string, data: any) =>
update: (id: string, data: Record<string, unknown>) =>
put(`/special-statuses/${id}`, data),
/** 删除 */
remove: (id: string) =>
@@ -816,7 +836,7 @@ export const searchApi = {
export const surveyApi = {
/** 提交问卷 */
submit: (items: any[]) =>
submit: (items: Record<string, unknown>[]) =>
post('/survey/submit', { items }),
}
@@ -833,13 +853,13 @@ export const platformApi = {
orgDetail: (id: string) =>
get(`/platform/orgs/${id}`).then(unwrap<any>()),
/** 创建组织 */
createOrg: (data: any) =>
createOrg: (data: Record<string, unknown>) =>
post('/platform/orgs', data),
/** 更新组织 */
updateOrg: (id: string, data: any) =>
updateOrg: (id: string, data: Record<string, unknown>) =>
put(`/platform/orgs/${id}`, data),
/** 更新组织管理员 */
updateOrgAdmin: (id: string, data: any) =>
updateOrgAdmin: (id: string, data: Record<string, unknown>) =>
put(`/platform/orgs/${id}/admin`, data),
/** 删除组织 */
removeOrg: (id: string) =>
@@ -914,7 +934,7 @@ export const portalApi = {
onboardingInfo: (token: string) =>
portalGet(`/onboarding/${token}`).then(unwrap<any>()),
/** 入职提交 */
onboardingSubmit: (data: any) =>
onboardingSubmit: (data: Record<string, unknown>) =>
portalPost('/onboarding', data),
/** 入职上传文件 */
onboardingUpload: (token: string, formData: FormData) =>
@@ -935,9 +955,18 @@ export const portalApi = {
resignationStatus: () =>
portalGet('/resignation/status').then(unwrap<any[]>()),
/** 提交离职申请 */
resignationSubmit: (data: any) =>
resignationSubmit: (data: Record<string, unknown>) =>
portalPost('/resignation/submit', data).then(unwrap<any>()),
/** 撤回离职申请 */
resignationWithdraw: (id: string) =>
portalPost(`/resignation/${id}/withdraw`).then(unwrap<any>()),
/** 我的休假申请列表 */
myLeaves: () =>
portalGet('/leaves').then(unwrap<any[]>()),
/** 提交休假申请 */
submitLeave: (data: Record<string, unknown>) =>
portalPost('/leaves', data).then(unwrap<any>()),
/** 撤回休假申请 */
cancelLeave: (id: string) =>
portalPost(`/leaves/${id}/cancel`).then(unwrap<any>()),
}