saveWorkflow方法中如何校验formKey为空时修改状态并弹窗提示
实现方案
你只需要在用户任务formKey赋值后新增校验逻辑,同时增加全局校验标记拦截后续保存流程即可,修改后的完整代码如下:
function saveWorkflow () { $('#dbs-debug').html('Saving...'); // 新增校验标记和错误信息存储变量 let validatePass = true let errorTask = '' process.id = 'process_' + _flowId; process.name = _flowName; $('#dbs-form-content > .dbs-form-task').each(function () { var userTask = {}; userTask.name = $(this).attr('data-name'); userTask.id = $(this).attr('data-id'); userTask.condition = $(this).attr('data-condition'); if ($(this).attr('data-type') === "user-task") { userTask.formKey = $(this).attr('data-formkey'); // 新增formKey有效性校验 if (!userTask.formKey || userTask.formKey.trim() === '') { validatePass = false errorTask = userTask.name || userTask.id // 终止each遍历,不再检查后续任务 return false } userTask.cUsers = $(this).attr('data-cusers'); userTask.cGroups = $(this).attr('data-cgroups'); userTask.rejstep = $(this).attr('data-rejstep'); userTask.due = $(this).attr('data-due'); userTask.reassignment = $(this).attr('data-reassignment'); } else if ($(this).attr('data-type') === "email-task") { userTask.email = $(this).attr('data-email'); } userTask.type = $(this).attr('data-type'); process.userTasks.push(userTask); }); // 校验不通过直接终止后续流程 if (!validatePass) { // 修改状态为failing $('#dbs-debug').html('Failing...'); // 弹出提示 alert(`用户任务【${errorTask}】未配置form key,请完善后再保存`); return } // 原有后续保存逻辑可以继续放在此处 }
改动说明
- 函数开头新增了校验标记
validatePass和错误任务存储变量errorTask,用来记录校验结果 - 给用户任务赋值
formKey后立刻做校验,只要值为空、undefined或者全是空格都判定为无效 - 校验失败后立刻终止遍历,避免做无效检查,遍历结束后如果校验不通过,先修改状态文本,再弹出提示,最后终止函数执行,不会继续跑后续的保存逻辑
- 如果不需要展示具体的任务名称,可以直接把提示文案修改为「存在用户任务没有配置form key」即可
内容的提问来源于stack exchange,提问作者Doyel Mishra
相关产品推荐
相关产品推荐

