简体中文
approval.agree.render.before
约 1243 字大约 4 分钟
2025-12-16
说明:该事件用于审批同意渲染之前调用
该事件用于审批同意渲染之前执行额外的动作,包括但不限于以下功能: 1. 获取流程数据 2. 判断是否可以直接完成任务 3. 直接完成任务 4. 强制弹出编辑内容弹窗/页面 5. 自定义流程布局/表单_二级操作按钮
参数
| 参数 | 说明 | 类型 |
|---|---|---|
| getData | 获取流程数据(示例) | Function |
| canDirectCompleteTask | 判断是否可以直接完成任务(示例) | Function |
| directCompleteTask | 直接完成任务(示例) | Function |
| forceShowEditForm | 强制弹出编辑内容弹窗/页面(示例) | Function |
| customFormButtons | 自定义流程布局/表单_二级操作按钮(示例) | Function |
示例
一、getData
功能描述
获取流程的一些数据,用户可以以此作为判断依据,运行不同的业务逻辑(例如:根据sourceWorkflowId区分不同的审批流,从而进行不同的代码逻辑)。
参数
无
返回结果
| 参数 | 说明 | 类型 |
|---|---|---|
| instanceId | 实例ID | String |
| entityId | 对象的ApiName | String |
| objectId | 对象ID | String |
| taskId | 任务ID | String |
| taskName | 任务名称 | String |
| sourceWorkflowId | 原始流程ID | String |
| activityId | 节点ID | String |
参数代码示例
无
代码示例
// getData()
export default class Plugin {
apply() {
return [
{
event: 'approval.agree.render.before',
functional: this.approvalAgreeRenderBefore.bind(this)
}
]
}
approvalAgreeRenderBefore(api) {
let data = api.getData();
console.log(data, '流程数据');
}
}二、canDirectCompleteTask
功能描述
用户可调用该方法用于判断是否可以直接完成任务信息。
参数
无
返回结果
| 参数 | 说明 | 类型 | 可选值 |
|---|---|---|---|
| canDirectCompleteTaskResult | 是否可以直接完成任务 | Boolean | true/false |
参数代码示例
无
代码示例
// canDirectCompleteTask()
export default class Plugin {
apply() {
return [
{
event: 'approval.agree.render.before',
functional: this.approvalAgreeRenderBefore.bind(this)
}
]
}
approvalAgreeRenderBefore(api) {
let result = api.canDirectCompleteTask();
alert('是否可以直接完成任务:' + result);
}
}注意
- 此API用于判断是否可以直接完成任务
- 如果有审批内容或审批意见必填,则不可以直接完成任务。
- 如果没有审批内容或审批意见非必填,否则可以直接完成任务。
三、directCompleteTask
功能描述
不需要弹出同意弹窗,就可以直接完成任务。
参数
无
返回结果
无
参数代码示例
无
代码示例
// directCompleteTask()
export default class Plugin {
apply() {
return [
{
event: 'approval.agree.render.before',
functional: this.approvalAgreeRenderBefore.bind(this)
}
]
}
approvalAgreeRenderBefore(api) {
// 判断是否可以直接完成任务
let result = api.canDirectCompleteTask()
if (result) {
alert('可以跳过')
api.directCompleteTask() // 可以跳过,则跳过填写审批意见
} else {
alert('不可跳过')
}
}
}注意
- 在没有审批内容或者审批意见非必填的情况下,调用该方法才会生效。
- 如果有审批内容或者审批意见必填,则此配置不生效。
- 可以搭配 cnaDirectCompleteTask() - 是否可以直接完成任务 使用
四、forceShowEditForm
功能描述
当前产品现状:
- 如果审批内容配置的普通布局,在没有必填或者必填已有数据的情况下,并不弹出审批内容弹窗,而是弹出审批意见弹窗,从而填写审批意见,完成审批。
- 如果审批内容配置的流程布局,在没有必填且没有从对象的情况下,并不跳转审批内容页面,而是弹出审批意见弹窗,从而填写审批意见,完成审批。
若配置此PWC插件,则在上述情况下也会打开编辑审批内容弹窗/页面。
参数
无
返回结果
无
参数代码示例
无
代码示例
// forceShowEditForm()
export default class Plugin {
apply() {
return [
{
event: 'approval.agree.render.before',
functional: this.approvalAgreeRenderBefore.bind(this)
}
]
}
approvalAgreeRenderBefore(api) {
let workflowData = api.getData();
// 根据指定流程判断是否强制弹出编辑内容表单/页面
if (workflowData.sourceWorkflowId === 'apprC6MHSClJV6__crmappr') {
api.forceShowEditForm();
}
}
}五、customFormButtons
功能描述
自定义流程布局/表单_二级操作按钮命名、显隐及顺序
参数
| 参数 | 说明 | 类型 |
|---|---|---|
| customFn | 是一个方法。需要有入参和返回 | Function |
返回结果
无
参数代码示例
// 入参示例
function(btns){
return btns.map(e => {
return {
action:e.action,
label:'哈哈哈哈'+'滴滴答答'
}
})
}代码示例
export default class Plugin {
apply() {
return [
{
event: 'approval.agree.render.before',
functional: this.approvalAgreeRenderBefore.bind(this)
}
]
}
approvalAgreeRenderBefore(api){
api.customFormButtons((btns)=>{
return btns.map(e => {
return {
action:e.action,
label:'哈哈哈哈'+'滴滴答答'
}
})
})
}
}使用说明
- 按钮显示控制:只有返回数组中包含的按钮才会显示,未包含的按钮将被隐藏
- 按钮顺序:返回数组中按钮的顺序决定了按钮在界面上的显示顺序
- 自定义标签:通过
label属性可以自定义按钮的显示文本,不提供则使用系统默认标签
注意事项
- 入参中的按钮数组不包含"取消"操作按钮
- 返回的按钮配置必须基于入参中的按钮进行定制
- 如果某个按钮在返回数组中不存在,该按钮将被隐藏
- 按钮的显示顺序完全由返回数组的顺序决定
