简体中文
对象详情页阶段节点点击
约 528 字大约 2 分钟
2026-05-08
在顶部阶段节点点击之前进行拦截,用于跳转判断或数据校验。
适用场景
适用于 移动端。
功能描述
当用户点击顶部的阶段节点时,在跳转之前触发此事件,可用于执行校验逻辑或阻止非法的阶段切换。
典型场景示例
- 场景 1:未完成当前任务时拦截跳转
例如:用户未填写必填字段时,阻止切换到下一阶段 - 场景 2:权限校验拦截
例如:非授权用户不能跳转到特定阶段 - 场景 3:阶段切换日志记录
例如:埋点记录用户点击阶段节点的行为
适用场景
- 需要在切换阶段前进行业务校验
- 需要拦截不符合条件的阶段切换操作
- 需要记录阶段切换行为日志
适用页面
- 业务流详情页-顶部阶段导航
开发思路
功能增强通常可以拆成三步理解:
明确要增强的是哪一个环节
- 确定需要拦截的场景(如未填写字段、无权限等)
选择合适的扩展事件/钩子
- 移动端:
flow.bpm.detail.stage.item.click.before
- 移动端:
在插件中接入扩展点并验证行为
- 获取点击的节点信息
itemInfo和任务详情bpmTaskDetail - 执行业务校验逻辑,返回拦截或放行
- 获取点击的节点信息
开发流程
- 分析拦截条件
- 确定需要拦截的场景(如未填写字段、无权限等)
- 编写拦截逻辑
module.exports = function (context, pluginService, pluginParam) { return { apply() { return [{ event: "flow.bpm.detail.stage.item.click.before", functional: async function (context, options) { let itemInfo = options && options.itemInfo; let bpmTaskDetail = options && options.bpmTaskDetail; let shouldIntercept = checkShouldIntercept(itemInfo, bpmTaskDetail); return Promise.resolve({ isIntercept: shouldIntercept }); } }]; } }; }; - 配置插件
- 在流程高级配置中关联插件
推荐入口
注意事项
- 用户体验:拦截时应给用户明确的提示
- 时序影响:拦截会阻止页面跳转,需确保校验逻辑正确
- 边界情况:考虑任务状态、权限状态等边界情况
