我在开发仓库管理功能时,编辑仓库出入库信息,同时打开了2个相同内容的标签页,在第一个标签编辑完成提交审批后,进入第二个标签页,仍然可以提交审批,并且在审批页面存在2个审批记录。当2个审批记录被审批通过后,系统更新了库存台账2次,而我预期的应该是一次,也只能提交一次审批。针对这种情况,我在提交审批时,增加了提交前检验,当然第一次提交一定要在工作流中更新流程状态,在提交前校验要先查询当前记录状态,校验是否符合预期,进行拦截。我觉得这不是一个最优的解决方案,想咨询大家,有没有更好的解决方案,我学习学习,感谢!
1 Like
这个场景更适合作为业务规则控制,并非单纯依靠页面按钮状态即可避免的问题。两个标签页会各自保留旧的页面数据,所以前端隐藏或禁用“提交审批”只能改善体验,不能作为最终防线。
您现在的思路是对的:用业务记录上的流程状态来拦截重复提交。建议将其明确为“草稿 → 审批中 → 已通过/已拒绝”等状态;提交审批前先在服务端校验记录仍为“草稿”,第一次提交成功后立即改为“审批中”,后续提交直接提示该单据已在审批中。