26年寒假生活指导1.26
项目:JSLH Cloud 日结单模块
重点:审批工作流重构、角色权限精细化控制、前后端逻辑一致性
- 审批流程与状态流转重构 (Workflow Refactoring)
为了满足多层级管理需求,我们对日结单的生命周期进行了重新定义,确立了 "系统自动审核 > 主管审批 > CEO审批" 的三级流程:
状态定义优化:
移除了状态显示中的冗余括号说明,界面更加简洁。
明确了状态码含义:0=待审核, 1=系统通过, 2=主管通过, 3=已审核, 4=已驳回。
差异化初始状态:
普通管理人员提交 > 状态默认为 1 (系统通过),等待主管审批。
主管人员提交 > 系统自动跳过主管审批,状态直接设为 2 (主管通过),等待CEO审批。
CEO提交 > 状态直接设为 3 (已审核) 且日结单状态设为 4 (已通过),实现自动归档。
- 数据可见性与权限隔离 (Visibility & Permissions)
在后端与前端双重层面实现了基于角色的数据隔离和操作限制:
后端视图隔离:
在 Service 层拦截查询请求,若当前用户为 CEO 且查看非本人数据时,强制过滤 auditStatus >= 2 的记录。这确保了CEO只专注于处理经过主管筛选后的高价值信息。
前端操作限制:
利用 Vue computed 属性识别用户角色(主管 vs CEO)。
实现了动态按钮控制:主管只能审批状态 < 2 的记录;一旦记录变为 主管通过,主管即失去审批和打回权限,防止越权操作。
- 用户体验优化 (UX Improvements)
针对“打回重填”这一高频场景进行了体验升级:
打回原因显性化:
在日结单编辑/修改弹窗顶部增加了 elalert 警告组件。
当记录状态为“已驳回”时,醒目展示具体的打回原因,帮助用户快速定位问题并修正。
- 关键Bug修复 (Critical Fixes)
修复了审批流程中的逻辑漏洞:
主管打回时的重复校验错误:
问题现象:主管打回用户日结单时,系统报错“该用户当天已创建日结单”。
原因分析:后端更新接口在校验“是否重复填报”时,错误地使用了当前操作人(主管)的ID,而非日结单实际填报人的ID。
解决方案:修正校验逻辑,强制使用表单中的 fillerId 进行唯一性检查。
- 技术沉淀 (Technical Takeaways)
Spring Boot 业务逻辑:在 Service 层通过SysRoleService和SysUserPostService组合判断用户身份(角色/岗位字符串匹配)来决定业务分支。
Vue 3 组合式 API:熟练使用computed处理复杂的权限判断逻辑,避免模板中出现过多的vif逻辑运算。
数据完整性:在涉及多角色协作(A填报,B审批)的场景下,必须严格区分“当前登录用户”与“数据所有者”,避免逻辑混淆。

浙公网安备 33010602011771号