简体中文
bpm.detailCard.render.before
约 1069 字大约 4 分钟
2025-12-16
该事件用于业务流数据详情页渲染之前执行额外的动作,包括但不限于以下功能: 1. 获取当前任务数据 2. 自定义按钮 3. 自定义查看详情按钮
参数
| 参数 | 说明 | 类型 |
|---|---|---|
| getTaskDetail | 获取当前阶段下所有任务的数据以及按钮数据(示例) | Function |
| customButtons | 自定义按钮展示(示例) | Function |
| customViewDetailButton | 自定义查看详情按钮展示(示例) | Function |
基础示例
一、getTaskDetail
功能描述
用于获取当前阶段下所有任务的部分数据以及按钮数据
参数
无
返回结果
| 参数 | 说明 | 类型 |
|---|---|---|
| taskId | 任务ID | String |
| name | 当前任务的name | String |
| state | 当前任务的状态 | String |
| buttons | 当前任务外露按钮 | Object |
| moreButtons | 当前任务更多按钮 | Array |
| errorButtons | 异常任务展示的外露按钮(只有任务状态异常时存在) | Array |
参数代码示例
无
代码示例
// getTaskDetail()
export default class Plugins{
apply() {
return [
{
event: 'bpm.detailCard.render.before',
functional: this.detailCardRenderBefore.bind(this)
}
]
}
detailCardRenderBefore(api) {
let taskDetail = api.getTaskDetail();
console.log(taskDetail);
// 索引 2 的元素移到 第一项
let val = taskDetail.splice(2, 1)[0];
taskDetail.unshift(val)
// 修改任务名称
taskDetail[0].taskName = "测试能不能修改任务名称";
console.log(taskDetail, 'new_taskDetail')
}
}二、customButtons
功能描述
支持自定义按钮名称,顺序,显示或隐藏。
注意:
- 自定义按钮时,不要新增按钮,只可以在原有按钮的数据上进行删改换,数据结构不允许改变
- 自定义外露按钮,可通过修改order值来改变顺序;自定义更多按钮和自定义异常状态下的按钮可通过使用数组的方法来改变顺序
参数
| 参数 | 说明 | 类型 |
|---|---|---|
| taskId | 任务ID | String |
| buttons | 当前任务外露按钮 | Object |
| moreButtons | 当前任务更多按钮 | Array |
| errorButtons | 异常任务展示的外露按钮(只有任务状态异常时存在) | Array |
返回结果
无
参数代码示例
// 1. 获取当前阶段下的所有任务数据
let taskDetail = api.getTaskDetail();
// 2. 获取当前阶段下的第一个任务的taskId - targetTaskId
let targetTaskId = taskDetail[0].taskId;
// 3. 根据隐藏当前阶段下的第一个任务的taskId,获取当前任务下的按钮数据
let taskButtons = taskDetail[0].buttons;
let moreButtons = taskDetail[0].moreButtons;
let errorButtons = taskDetail[0].errorButtons;
// 4. 根据隐藏当前阶段下的第一个任务的taskId,自定义按钮数据
for(let key in taskButtons){
if (taskButtons[key].action === "suspend") {
taskButtons[key].label = "暂不处理第一个展示";
taskButtons[key].order = 0;
} else if(taskButtons[key].action === "Complete"){
taskButtons[key].label = "这是完成按钮";
taskButtons[key].order = 1;
}else if (taskButtons[key].action === "agree") {
taskButtons[key].order = 2;
taskButtons[key].label = "同意按钮放在暂不处理后";
}else if(taskButtons[key].action === "reject") {
taskButtons[key].order = 3;
taskButtons[key].label = "不同意按钮在同意后面";
}
}
moreButtons && moreButtons.forEach((i)=>{
if(i.code==="Discuss"){
i.label = "转发1111";
}else if(i.code==="ChangeBPMApprover"){
i.label = "更换处理人4444";
}
})
// 5. 自定义按钮
[{taskId: targetTaskId, buttons: taskButtons, moreButtons: moreButtons,errorButtons:errorButtons}]代码示例
// customButtons()
export default class Plugins{
apply() {
return [
{
event: 'bpm.detailCard.render.before',
functional: this.detailCardRenderBefore.bind(this)
}
]
}
detailCardRenderBefore(api) {
let taskDetail = api.getTaskDetail();
console.log(taskDetail, 'taskDetail');
//更换 外露按钮
taskDetail.forEach((task,index)=>{
if(task.state === 'in_progress'){
//定义外露按钮
let taskButtons = task.buttons;
for(let key in taskButtons){
if (taskButtons[key].action === "suspend") {
taskButtons[key].label = "暂不处理第一个展示";
taskButtons[key].order = 0;
} else if(taskButtons[key].action === "Complete"){
taskButtons[key].label = "这是完成按钮";
taskButtons[key].order = 1;
}else if (taskButtons[key].action === "agree") {
taskButtons[key].order = 2;
taskButtons[key].label = "同意按钮放在暂不处理后";
}else if(taskButtons[key].action === "reject") {
taskButtons[key].order = 3;
taskButtons[key].label = "不同意按钮在同意后面";
}
}
//定义更多按钮
let moreButtons = task.moreButtons;
moreButtons && moreButtons.forEach((i)=>{
if(i.code==="Discuss"){
i.label = "转发1111";
}else if(i.code==="ChangeBPMApprover"){
i.label = "更换处理人4444";
}
})
}
})
api.customButtons(taskDetail)
}
}三、customViewDetailButton
功能描述
支持自定义查看详情按钮名称,显示或隐藏
参数
| 参数 | 说明 | 类型 |
|---|---|---|
| taskId | 任务ID | String |
| text | 自定义查看详情按钮名称 | String |
| isShow | 展示或隐藏 | Boolean |
返回结果
无
参数代码示例
[{taskId: '65e5879aa10a002e989c8106', text: '查看详情按钮文案', isShow: true},
{taskId: '65e5879aa10a002e989c8107', text: '查看详情按钮文案2', isShow: true}]代码示例
// customViewDetailButton()
export default class Plugins{
apply() {
return [
{
event: 'bpm.detailCard.render.before',
functional: this.detailCardRenderBefore.bind(this)
}
]
}
detailCardRenderBefore(api) {
api.customViewDetailButton([{taskId:'65e5879aa10a002e989c8106',text:'这是加签节点查看详情1',isShow:true},{taskId:'65e5879aa10a002e989c8107',text:'这是加签节点查看详情2',isShow:true}])
}
}