代码拉取完成,页面将自动刷新
698
工作流实例详情页面审批通过的BUG问题
已合并
前提条件
- 当前任务
Task A
和下一个任务Task B
均绑定了流程表单。 - 当前登录用户同时作为审核人存在于
Task A
和Task B
中。
问题描述
在工作流实例详情页面中,当对 Task A
进行审核通过操作(包括填写绑定的流程表单和审批意见)后,页面会自动重新加载到 Task B
的审核页面。由于当前登录用户也是 Task B
的审核人,因此可以继续进行审批操作。
然而,在对 Task B
进行审核通过操作时,如果未填写流程表单而仅填写审批意见并点击提交,则系统不会校验流程表单的必填项,导致任务直接提交成功。此外,即使用户填写了流程表单内容,这些数据也不会被正确合并到 formVariables
中提交。
复现步骤
- 进入工作流实例详情页面。
- 对
Task A
进行审核通过操作:- 填写绑定的流程表单。
- 填写审批意见。
- 提交审核。
- 页面自动跳转到
Task B
的审核页面。 - 在
Task B
的审核页面中:- 不填写流程表单,仅填写审批意见。
- 点击提交审核。
- 观察到系统未校验流程表单的必填项,并直接提交任务。
- 如果填写了流程表单内容,发现这些数据未被正确合并到
formVariables
中提交。
问题原因分析
经排查发现,问题的根本原因是在处理加载审批页面时,其子组件 ProcessInstanceOperationButton
中的 loadTodoTask
方法会将 approveFormFApi.value
重置为 {}
。这一操作会导致以下情况:
- 当从
Task A
切换到Task B
时,approveFormFApi.value
被清空。 - 在执行
handleAudit
方法时,代码会检查approveFormFApi
是否存在。由于approveFormFApi.value
已被清空,系统误认为当前任务节点未绑定流程表单,从而跳过了表单校验逻辑。
注释掉 approveFormFApi.value = {}
这一行代码后,问题得以解决。
解决方案
本 PR 的修改方案是移除 loadTodoTask
方法中对 approveFormFApi.value
的清空操作。具体改动如下:
// 修改前
approveFormFApi.value = {}; // 清空表单状态
// 修改后
// 注释掉清空表单状态的代码
// approveFormFApi.value = {};
通过此修改,确保 approveFormFApi
的状态能够正确保留,从而避免因表单状态丢失而导致的校验逻辑失效问题。
测试结果
经过测试验证,修改后的代码能够有效解决以下问题:
- 审核操作时,系统能够正常校验流程表单的必填项。
- 流程表单的数据能够正确合并到
formVariables
中提交。
备注
- 该修改方案仅针对上述问题进行了修复,可能存在其他潜在影响(例如是否会影响其他场景下的表单初始化逻辑,本人前端经验有限
)。
挺好的,不错!
后面发现注释掉approveFormFApi.value这段代码会导致点击审核之后的流程表单的提交按钮会出现,还是先回退下这个变更吧。我的前端经验有限,这个BUG还是交给其他人解决吧