Ecode重写流程退回按钮的点击方法
需求:重写流程的顶部按钮,修改原有退回按钮为【退回给业务业务】,新增一个按钮为【退回给采购】,实现用户点击不同按钮的时候退回到不同的节点功能
实现方法
实现步骤:
- 在流程中新增两条出口线路
- 新增两个字段标识是退回业务还是退回采购
- 在调用退回按钮方法之前,先改变上面新增的两个字段,实现退回到对应节点操作
if (newProps.buttons.length >= 1) {
// 获取原按钮
const originalButton = newProps.buttons[1];
const originalOnClick = originalButton.props.onClick;
// 提取公共逻辑到一个函数中
const handleButtonClick = (fieldName1, fieldValue1,fieldName2,fieldValue2) => {
try {
// 修改指定字段值
WfForm.changeFieldValue(WfForm.convertFieldNameToId(fieldName1), { value: fieldValue1 });
WfForm.changeFieldValue(WfForm.convertFieldNameToId(fieldName2), { value: fieldValue2 });
// 调用原退回方法
originalOnClick();
} catch (error) {
console.error(`点击按钮时出错: ${error.message}`);
// 可以在这里添加更详细的错误提示,例如显示给用户
}
};
// 克隆原按钮并创建“退回给业务改单”按钮
const newButton = React.cloneElement(originalButton, {
children: '退回给业务',
onClick: () => handleButtonClick("thdyw", "0","thdcg", "1")
});
// 替换原按钮
newProps.buttons[1] = newButton;
// 克隆原按钮并创建“退回给采购节点”按钮
const newReturnButton = React.cloneElement(originalButton, {
children: '退回给采购',
onClick: () => handleButtonClick("thdcg", "0","thdyw", "1")
});
// 将新按钮添加到按钮数组中
newProps.buttons.splice(1, 0, newReturnButton);
}
其他方法
上面介绍的是调用原有的退回方法,是通过获取原有按钮的方法来实现的,泛微也提供了直接调用退回的方法,如下图所示
可以将实现方法里面调用的原有方法改成【WfForm.doRightBtnEvent("BTN_REJECTNAME");】这样的话也能实现一样的功能,具体如何选择看个人,我比较推荐的是使用:WfForm.doRightBtnEvent("BTN_REJECTNAME");