fix: 线下签署登记标题英文转中文+完成时间时区+签署记录角标

1. documentTitle 中 contractType 枚举值转中文
   (LABOR→劳务协议、FIXED→固定期限劳动合同等)
2. 签署日期解析改为本地时区构造(new Date(y,m-1,d,12)),
   避免 new Date('2026-08-16') 被解析为 UTC 00:00 导致
   本地 +8 显示为 08:00:00
3. 签署记录 Tab 增加数字角标显示总记录数

Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
This commit is contained in:
selfrelease
2026-08-16 12:26:13 +08:00
parent 72a6eab3bd
commit 5a9d440339
9 changed files with 485 additions and 3 deletions
+51
View File
@@ -346,3 +346,54 @@
- **修复**Dashboard 待办列表渲染时,`actionUrl` 为空或 '/' 时不渲染 Link 和"立刻办理"按钮,改为纯展示 div;有有效 URL 时才渲染可跳转链接。问题 10A 已修正三期/医疗期/工伤的反向引导 URL,其余 actionUrl`/roster?employee=xxx`、`/special-status`、`/money`)均指向有效路由,Roster 已处理 `?employee` 参数自动定位。
- **涉及文件**`frontend/src/pages/Dashboard.tsx`(待办列表渲染 1136-1233 行)
### ✅ 已完成 13:风险提醒规则优化(问题 10B)
- **问题**:合同到期提醒仅 30 天预警,HR 反应时间不足;去重后的待办列表未按优先级排序。
- **修复**
1. 合同到期预警从 30 天提前到 60 天,分级:≤30 天 HIGH(需立即处理),31-60 天 MEDIUM(提前预警)。
2. `dedupedTodos` 按优先级排序(URGENT > HIGH > MEDIUM > LOW),确保最紧急的待办排在最前。
- **涉及文件**`backend/src/services/risk.service.ts``detectContractRisks` 216-248 行、`getDashboardData` dedupedTodos 排序 941-952 行)
### ✅ 已完成 14:提成奖金新模块(问题 12)
- **问题**:无独立提成奖金管理模块,`BONUS` 批次是年终奖发放,非按月提成奖金管理。
- **实现**
1. **数据模型**:新增 `CommissionBonus` 表(`orgId`、`employeeId`、`month` YYYY-MM、`amount` 支持正负值、`remark`、`createdBy`),唯一索引 `(orgId, employeeId, month)`。
2. **后端**:新增 `commission-bonus.service.ts` + `commission-bonus.routes.ts`
- `GET /commission-bonus?month=YYYY-MM` 按月列表 + 汇总(总奖金/总扣款/净额)
- `POST /commission-bonus` 新增单条(upsert,同员工同月自动覆盖)
- `PUT /commission-bonus/:id` 编辑单条
- `DELETE /commission-bonus/:id` 删除单条
- `POST /commission-bonus/import` 批量导入 Excel(字段:员工姓名/证件号码/金额/备注)
- `GET /commission-bonus/template` 下载导入模板
3. **前端**:新增 `CommissionBonus.tsx` 页面:
- 月份选择器(默认当月)
- 汇总卡片(记录数/总奖金/总扣款/净额)
- 列表展示(员工/部门/金额/备注),支持搜索、分页
- 单条新增/编辑/删除
- 批量导入 Excel + 模板下载
- 金额支持正负值(正=奖金,负=扣款)
4. **菜单**`SidebarNav.tsx` "团队"分组新增"提成奖金"入口,路由 `/commission-bonus`。
5. **DB 同步**`prisma db push` 已执行,Prisma Client 已重新生成。
- **涉及文件**
- `backend/prisma/schema.prisma`(新增 `CommissionBonus` 模型 + Employee/Organization 反向关联)
- `backend/src/services/commission-bonus.service.ts`(新增)
- `backend/src/routes/commission-bonus.routes.ts`(新增)
- `backend/src/app.ts`(路由注册)
- `frontend/src/pages/CommissionBonus.tsx`(新增)
- `frontend/src/components/layout/SidebarNav.tsx`(菜单项)
- `frontend/src/App.tsx`(路由注册)
- `frontend/src/lib/api-services.ts``commissionBonusApi`
### ✅ 已完成 15:获取提成奖金(问题 13)
- **问题**:薪资批次编辑薪资时无"获取提成奖金"按钮,无法从提成奖金模块按月拉取填充 `bonus` 字段。
- **实现**
1. 后端新增 `POST /payroll2/batches/:batchId/fetch-bonus`:按批次月份从 `CommissionBonus` 表拉取,填充到对应 `entries.bonus`,重算批次汇总。
2. 前端 `BatchTab.tsx` 编辑薪资步骤新增"获取提成奖金"按钮(在"导入加班费"旁),调用后展示结果摘要(X 人提成奖金已填充,合计 ¥Y)。
3. 已归档批次禁用按钮。
- **涉及文件**
- `backend/src/routes/payroll2.routes.ts``fetch-bonus` 接口 552-628 行)
- `frontend/src/lib/api-services.ts``fetchBonusToBatch`
- `frontend/src/pages/money/BatchTab.tsx``fetchBonusMutation` + 按钮 784-798 行)