fix: 修复员工门户规章制度页面报错,新增更新说明文档
This commit is contained in:
@@ -0,0 +1,261 @@
|
||||
# TurboHR 更新说明(2026-07-27)
|
||||
|
||||
访问地址:**https://on.hr8ai.top/**
|
||||
|
||||
---
|
||||
|
||||
## 一、社保管理
|
||||
|
||||
### 1. 社保城市选择改下拉框
|
||||
- 社保配置页面的城市选择从手动输入改为下拉框,可选择已有城市或添加新城市。
|
||||
|
||||
### 2. AI 社保政策建议
|
||||
- 新增「AI 建议」功能,点击后系统自动获取指定城市和年份的最新社保/公积金政策参数(基数范围、各项比例),一键填充到配置表单中。
|
||||
|
||||
### 3. 社保上下限拆分(三险/医保独立基数)
|
||||
- 养老/失业/工伤保险使用 `baseMin/baseMax` 基数上下限。
|
||||
- 医疗/生育保险使用独立的 `medicalBaseMin/medicalBaseMax` 基数上下限(为 0 时自动 fallback 到三险基数)。
|
||||
- 适配河北省等地区三险与医保基数不同的政策。
|
||||
|
||||
### 4. 附加险种模块(大病险/长护险等)
|
||||
- 社保配置新增附加险种动态配置区,支持添加/删除险种行。
|
||||
- 每个附加险种支持三种计算方式:按养老基数比例、按医保基数比例、固定金额。
|
||||
- 试算结果中显示附加险种明细。
|
||||
- 预置河北省大病医疗(固定 5 元)和长期护理险(0.1%)。
|
||||
|
||||
### 5. 公积金试算结果展示修复
|
||||
- 修复公积金试算结果复用社保 `items.map()` 导致报错的问题。
|
||||
- 公积金试算结果改为单独渲染(企业/个人缴纳金额、合计)。
|
||||
|
||||
### 6. 预置河北省社保政策
|
||||
- 系统预置河北省石家庄市社保配置(养老 16%/8%、医疗 8%/2%、失业 0.7%/0.3%、工伤 0.3%、生育 0.5%,基数 3920~19602)。
|
||||
- 预置公积金配置(12%/12%)。
|
||||
|
||||
### 7. 附加险种显示优化
|
||||
- 社保配置展示中新增附加险种显示,统一附加险种格式。
|
||||
|
||||
---
|
||||
|
||||
## 二、专项附加扣除
|
||||
|
||||
### 1. 按月分项录入
|
||||
- 新增专项附加扣除按月录入功能,支持五项分项:子女教育、赡养老人、住房贷款、继续教育、婴幼儿照护。
|
||||
- 每月可独立编辑各项扣除金额,系统自动计算合计并同步到员工档案。
|
||||
- 个税计算时使用按月实际扣除额,替代之前固定金额 × 月份的方式。
|
||||
|
||||
### 2. 「复制上月」功能
|
||||
- 专项附加扣除编辑页新增「复制上月」按钮,可一键批量复制上月所有人的专项附加扣除数据,无需逐人填写。
|
||||
|
||||
### 3. 仅显示在保人员
|
||||
- 专项附加扣除列表只显示当月社保在保人员,避免展示无关人员。
|
||||
|
||||
### 4. 界面优化
|
||||
- 专项附加扣除 Tab 页隐藏社保配置和试算区域,界面更简洁。
|
||||
|
||||
---
|
||||
|
||||
## 三、合同附件
|
||||
|
||||
### 1. 多文件上传
|
||||
- 合同附件支持一次上传多个文件,可多次追加上传。
|
||||
- 上传后显示文件名列表,每个文件可单独删除。
|
||||
|
||||
### 2. 支持格式扩展
|
||||
- 支持的格式:PDF、JPG、PNG、HEIC、GIF、BMP、WebP、TIFF、Word(.doc/.docx)、Excel(.xls/.xlsx)。
|
||||
- 每个文件最大 10MB。
|
||||
|
||||
### 3. 附件在线预览
|
||||
- 点击文件名弹出预览窗口:
|
||||
- **图片**:直接在弹窗中显示。
|
||||
- **PDF**:在弹窗中内嵌预览。
|
||||
- **Word/Excel 等其他格式**:提示不支持在线预览,可点击下载查看。
|
||||
- 弹窗顶部提供下载按钮。
|
||||
|
||||
### 4. 标签更名
|
||||
- 「合同扫描件」统一改为「合同附件」。
|
||||
- 附件管理中「合同扫描件」类型也改为「合同附件」。
|
||||
|
||||
### 5. 修复附件保存问题
|
||||
- 修复了之前上传附件后保存合同时附件数据丢失的问题(后端 Schema 字段缺失导致)。
|
||||
|
||||
### 6. 修复合同保存失败
|
||||
- 修复了花名册中添加劳动合同信息无法正常保存的问题。
|
||||
- 根因:前端提交日期为 `YYYY-MM-DD` 格式,后端 Zod 校验要求 ISO datetime 格式。
|
||||
- 修复:前端提交前将日期转为 ISO 格式。
|
||||
|
||||
### 7. 删除合同
|
||||
- 每个合同卡片右侧新增删除按钮,点击后确认即可删除该合同记录。
|
||||
|
||||
---
|
||||
|
||||
## 四、薪资批次管理
|
||||
|
||||
### 1. 多批次发薪
|
||||
- 一个月份支持创建多个发薪批次(如常规发薪、离职结算、年终奖、补偿金),每个批次独立计算,归档后汇总生成一张工资条。
|
||||
- 当月存在未归档(草稿)批次时,不允许创建新批次,确保个税按批次累计计算正确。
|
||||
|
||||
### 2. 四种批次类型
|
||||
|
||||
| 类型 | 说明 | 社保公积金 | 个税方式 |
|
||||
|------|------|-----------|---------|
|
||||
| 常规发薪 | 日常工资发放 | 正常扣缴 | 累计预扣法 |
|
||||
| 离职结算 | 离职员工末月结算 | 正常扣缴 | 累计预扣法 |
|
||||
| 年终奖/奖金 | 奖金发放 | 不扣 | 单独计税 |
|
||||
| 补偿金 | 经济补偿金 | 不扣 | 累计预扣法 |
|
||||
|
||||
### 3. 四种初始化模式
|
||||
- **复制上月数据**:拉入在职员工,从上月工资条复制基本工资/津贴/扣款。
|
||||
- **本月空白(拉入员工)**:拉入在职员工,金额为0,仅取员工档案基本工资。
|
||||
- **空批次**:不拉入员工,后续手动添加。
|
||||
- **复制已有批次**:从指定已归档批次复制员工和薪资数据。
|
||||
|
||||
### 4. 社保公积金按员工个人扣缴
|
||||
- 按员工个人维度计算,同月多批次时自动扣减已归档批次已扣金额。
|
||||
- 第1批扣全额,第2批补扣差额或扣0(已足额)。
|
||||
- 奖金/补偿金批次不扣社保。
|
||||
|
||||
### 5. 个税计算
|
||||
- **常规/离职/补偿金**:累计预扣法,查询当年所有已归档批次累计计算。
|
||||
- **年终奖**:单独计税,按月均奖金查税率表。
|
||||
|
||||
### 6. 批次操作
|
||||
- **创建**:选择类型和初始化模式,自动拉入员工并计算。
|
||||
- **编辑**:可修改各金额项,保存后自动重算社保/个税/实发。
|
||||
- **添加/删除员工**:支持手动添加或移除批次中的员工。
|
||||
- **归档**:锁定批次不可编辑,归档后可生成工资条。
|
||||
- **取消归档**:只能取消最后一个归档批次,自动更新工资条。
|
||||
- **生成工资条**:汇总当月所有归档批次,按员工合并生成一张工资条。
|
||||
|
||||
### 7. 薪税管理入口
|
||||
- 左侧菜单「薪税管理」→「发薪批次」Tab,可管理所有批次。
|
||||
- 支持按月份、状态、类型筛选批次列表。
|
||||
|
||||
### 8. 工资表批量导入
|
||||
- 在批次详情中支持上传 Excel 工资表,批量更新批次条目的薪酬输入项(基本工资、加班费、津贴、扣款、奖金)。
|
||||
- 导入后自动重算社保/个税/实发工资。
|
||||
|
||||
### 9. 修复批次创建失败
|
||||
- 修复创建发薪批次总提示创建失败的问题。
|
||||
- 根因:`calcBatchEntry` 查询社保/公积金配置时缺少 `city` 过滤,可能取到错误城市配置。
|
||||
- 修复:查询配置时加入员工城市过滤;单员工计算失败时 try-catch 跳过并记录,不阻塞整批;返回 `failedEmployees` 详情。
|
||||
|
||||
### 10. 修复个税计算为零
|
||||
- 修复使用「本月空白」模式创建批次后个税为零的问题。
|
||||
- 根因:空白模式下 `baseSalary = 0`,导致 `totalPay = 0` → 个税 = 0。
|
||||
- 修复:空白模式下从员工档案获取基本工资,避免薪资为零。
|
||||
|
||||
### 11. 单人发薪入口
|
||||
- 花名册员工操作列新增「发薪」按钮(钱包图标),点击后跳转薪税管理页面。
|
||||
- 无需全员生成再删除,可直接在批次中添加单个员工发薪。
|
||||
|
||||
### 12. 加班费倍率自定义
|
||||
- 加班费计算从硬编码 1.5/2.0/3.0 改为读取 `OvertimeConfig` 配置。
|
||||
- 支持自定义工作日/周末/法定节假日加班倍率、月计薪天数、日工时。
|
||||
- 未配置时 fallback 到法定标准 1.5/2.0/3.0。
|
||||
|
||||
---
|
||||
|
||||
## 五、批量导入
|
||||
|
||||
### 1. 员工批量导入
|
||||
- 花名册页面点击「批量导入」按钮,上传 Excel 文件。
|
||||
- **预览功能**:上传后先预览数据,确认无误再正式导入。
|
||||
- **支持导入字段**:姓名、身份证号、手机号、部门、岗位、入职日期、基本工资、合同信息等。
|
||||
- **错误处理**:导入失败行会生成错误日志 Excel 供下载,身份证号重复自动跳过。
|
||||
- **模板下载**:支持下载标准导入模板。
|
||||
|
||||
### 2. 月度数据导入
|
||||
- 支持按月份批量导入:考勤记录、加班记录、薪资调整、社保变更、公积金变更。
|
||||
- 一个月度 Excel 文件可包含多个 Sheet,一次导入多类数据。
|
||||
- 支持下载月度导入模板。
|
||||
|
||||
### 3. 工资表导入
|
||||
- 在发薪批次详情页,上传 Excel 工资表批量更新条目金额。
|
||||
- 导入后自动调用计算引擎重算社保、个税、实发。
|
||||
|
||||
### 4. 批量续签/批量解聘
|
||||
- 花名册支持勾选多名员工后批量续签合同或批量解聘。
|
||||
- 批量续签支持预检合规性(如应签无固定期限提示)。
|
||||
|
||||
---
|
||||
|
||||
## 六、证据链
|
||||
|
||||
### 1. 证据链查看修复
|
||||
- 修复员工档案中证据链 Tab 无法查看的问题。
|
||||
- 根因:`TAB_GROUPS` 中缺少证据链 Tab 定义。
|
||||
- 修复:添加证据链 Tab,渲染 `EvidenceChain` 组件。
|
||||
|
||||
### 2. 空数据友好提示
|
||||
- 新员工无合同/工资条/考勤等关联数据时,显示「暂无证据记录,员工产生合同/工资/考勤等数据后自动生成」。
|
||||
- 证据链包含:劳动关系、薪酬发放、考勤记录、违纪处理、培训签收、绩效考核、解聘记录。
|
||||
- 自动风险检测:未签合同、合同到期、工资异常、无考勤记录等。
|
||||
|
||||
---
|
||||
|
||||
## 七、文档模板
|
||||
|
||||
### 1. 新增「员工主动离职」解除协议模板
|
||||
- 新增 `tpl_termination_agreement_employee` 模板(员工主动提出离职版)。
|
||||
- 包含条款:员工主动辞职、无经济补偿金、工作交接、社保公积金截止月份、竞业限制延续等。
|
||||
- 变量:公司名称、员工姓名、身份证号、离职日期、最后工作日、社保截止月、公积金截止月、离职原因。
|
||||
- 原有「协商解除协议」模板描述更新为「用人单位提出」。
|
||||
|
||||
---
|
||||
|
||||
## 八、员工门户
|
||||
|
||||
### 1. UI 全面优化
|
||||
- 新增 PortalLayout 布局组件和 Logo 组件,门户页面风格统一。
|
||||
|
||||
### 2. QR 扫码登录
|
||||
- 新增二维码扫码登录功能,员工可通过手机扫码快速登录门户。
|
||||
|
||||
### 3. 合同与政策页面重构
|
||||
- 员工门户中的「我的合同」和「公司政策」页面重新设计,信息展示更清晰。
|
||||
|
||||
### 4. 工资条页面优化
|
||||
- 工资条页面重构,展示更直观。
|
||||
|
||||
---
|
||||
|
||||
## 九、帮助系统
|
||||
|
||||
### 1. RAG 智能帮助
|
||||
- 集成 RAG(检索增强生成)帮助系统,点击帮助按钮可智能问答,获取系统使用指导。
|
||||
|
||||
### 2. 网页图标
|
||||
- 添加网站 favicon,浏览器标签页显示品牌图标。
|
||||
|
||||
---
|
||||
|
||||
## 测试建议
|
||||
|
||||
| 功能 | 测试路径 | 预期结果 |
|
||||
|------|---------|---------|
|
||||
| 社保 AI 建议 | 社保管理 → 选择城市 → 点击 AI 建议 | 自动填充社保参数 |
|
||||
| 专项附加扣除复制 | 社保管理 → 专项附加扣除 → 复制上月 | 批量填充上月数据 |
|
||||
| 合同多附件上传 | 员工档案 → 劳动合同 → 新增合同 → 上传附件 | 可选多个文件,显示文件列表 |
|
||||
| 附件预览 | 点击合同附件文件名 | 弹窗预览图片/PDF,其他格式提示下载 |
|
||||
| 删除合同 | 点击合同卡片右侧删除按钮 | 确认后删除合同 |
|
||||
| 社保上下限拆分 | 社保管理 → 新建版本 → 填写医保独立基数 | 三险和医保使用不同基数计算 |
|
||||
| 附加险种配置 | 社保管理 → 新建版本 → 添加附加险种 | 支持按比例/固定金额方式 |
|
||||
| 公积金试算 | 社保管理 → 公积金试算 | 显示企业/个人缴纳金额,不报错 |
|
||||
| 专项附加扣除按月录入 | 社保管理 → 专项附加扣除 → 按月编辑 | 五项分项录入,自动合计 |
|
||||
| 合同保存 | 员工档案 → 劳动合同 → 新增合同 → 保存 | 保存成功,不再报日期格式错误 |
|
||||
| 证据链查看 | 员工档案 → 证据链 Tab | 显示证据列表和风险提醒 |
|
||||
| 单人发薪 | 花名册 → 员工操作列 → 发薪按钮 | 跳转薪税管理页面 |
|
||||
| 加班费倍率 | 薪税管理 → 加班费计算 → 配置倍率 | 使用自定义倍率计算 |
|
||||
| 解除协议模板 | 离职管理 → 生成文档 → 选择模板 | 包含员工主动离职版解除协议 |
|
||||
| 薪资批次创建 | 薪税管理 → 发薪批次 → 创建发薪批次 | 选择类型和模式后自动拉入员工并计算 |
|
||||
| 批次编辑重算 | 进入批次详情 → 修改金额 → 保存 | 自动重算社保/个税/实发 |
|
||||
| 批次归档 | 批次详情 → 归档 | 批次锁定不可编辑 |
|
||||
| 生成工资条 | 归档后 → 工资条管理 → 生成 | 汇总当月所有归档批次生成工资条 |
|
||||
| 员工批量导入 | 花名册 → 批量导入 → 上传Excel → 预览 → 确认导入 | 导入成功,重复身份证自动跳过 |
|
||||
| 月度数据导入 | 设置 → 月度导入 → 上传Excel | 考勤/加班/调薪/社保/公积金批量导入 |
|
||||
| 工资表导入 | 发薪批次详情 → 导入工资表 → 上传Excel | 批量更新条目金额并自动重算 |
|
||||
| 批量续签 | 花名册 → 勾选员工 → 批量续签 | 预检合规后批量续签合同 |
|
||||
| 批量解聘 | 花名册 → 勾选员工 → 批量解聘 | 批量创建解聘记录 |
|
||||
| 员工门户 QR 登录 | 员工门户登录页 | 显示二维码可扫码登录 |
|
||||
| 规章制度 | 员工门户 → 规章制度 | 显示已公示制度列表,可签收确认 |
|
||||
| 帮助系统 | 点击右上角帮助按钮 | 弹出智能问答窗口 |
|
||||
@@ -27,7 +27,7 @@ export default function MyPolicies() {
|
||||
queryKey: ['portal-policies'],
|
||||
queryFn: async () => {
|
||||
const res = await portalApi.get('/policies') as any
|
||||
return res.data ?? []
|
||||
return res.data?.data ?? res.data ?? []
|
||||
},
|
||||
})
|
||||
|
||||
@@ -37,7 +37,7 @@ export default function MyPolicies() {
|
||||
queryFn: async () => {
|
||||
if (!selectedId) return null
|
||||
const res = await portalApi.get(`/policies/${selectedId}`) as any
|
||||
return res.data ?? null
|
||||
return res.data?.data ?? res.data ?? null
|
||||
},
|
||||
enabled: !!selectedId,
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user