简体中文
审批意见必填
约 617 字大约 2 分钟
2026-05-08
设置业务流审批节点同意或不同意时审批意见必填。
功能描述
业务流审批节点默认不支持审批意见必填配置,通过插件可实现同意/驳回时审批意见必填。
典型场景示例
场景 1:同意时审批意见必填
例如:金额超过阈值时,同意操作必须填写审批意见场景 2:驳回时审批意见必填
例如:驳回操作必须选择或填写驳回原因场景 3:条件判断是否必填
例如:根据金额和任务类型决定是否必填
适用场景
- 需要在审批节点强制要求填写审批意见
- 特殊业务场景需要记录审批决策原因
- 需要根据金额、任务类型等条件动态设置意见是否必填
适用页面
- 业务流详情页-审批操作时
开发思路
功能增强通常可以拆成三步理解:
明确要增强的是哪一个环节
- 确定哪些操作需要必填(同意/驳回)
- 确定必填的条件
选择合适的扩展事件/钩子
- 移动端:通过
flow.bpm.task.action.before - Web 端:
bpm.process.render.before
- 移动端:通过
在插件中接入扩展点并验证行为
- 调用
api.agreeOpinionRequired()设置同意意见必填 - 调用
api.rejectOpinionRequired()设置不同意意见必填
- 调用
开发流程
明确意见必填的业务规则
- 确定哪些操作需要必填
- 确定必填的条件
编写意见必填逻辑
// Web端示例 module.exports = class Plugins { apply() { return [{ event: 'bpm.process.render.before', functional: this.bpmProcessRenderBefore.bind(this) }]; } bpmProcessRenderBefore(api) { let taskData = api.getTaskData(); if (taskData.amount > 100000 || taskData.isImportant) { api.agreeOpinionRequired(); } api.rejectOpinionRequired(); } }; //移动端示例 module.exports = function (context, pluginService, pluginParam) { return { apply() { return [ { event: "flow.bpm.task.action.before", functional: async function (context, options) { let action = options && options.action; let bpmTaskDetail = options && options.bpmTaskDetail; let pluginContext = options && options.context; //同意意见是否必填 pluginContext.agreeOpinionRequired(isRequire) //驳回意见是否必填 pluginContext.rejectOpinionRequired(isRequire) return Promise.resolve({ isIntercept: false, }); } } ]; } }; }配置插件
- 在自定义插件配置中选择对应插件
推荐入口
注意事项
- 产品现状:业务流审批节点目前不支持必填配置,此功能通过插件实现
- 用户体验:意见必填会影响审批效率,建议仅在必要时启用
- 提示信息:建议配合 UI 提示,告知用户为什么需要填写意见
