【泛微E9】流程被退回时在创建节点增加“作废”按钮,隐藏“删除”按钮

实现效果

1、当且仅当流程在审批过程中被退回至创建节点时,原右上角的“保存”按钮替换为“作废”按钮,且隐藏“删除”按钮。
2、点击“作废”按钮,流程自动流转至“作废归档”节点
3、申请人“强制收回”流程至创建节点,隐藏“删除”按钮

实现过程

工作流程表单

1、表单字段增加:isBack(选择框-下拉)sfzfgd(选择框-下拉)isRevoked(选择框-下拉)

2、创建节点的节点前附加操作:isBack=退回(勾选退回时触发), isBack=空值(不勾选退回时触发)

注意节点前附加操作的顺序一定要严格按照这个顺序,isBack=退回(顺序在上),isBack=空值(顺序在下)

3、创建节点的节点后附加操作:设置退回标识的DML语句:UPDATE 表单名 SET isBack = 0 WHERE requestid = {?requestid} AND isBack IS NULL

4、创建节点的isRevoked表单字段sql:SELECT CASE WHEN EXISTS (SELECT 1 FROM workflow_requestoperatelog WHERE requestid = '$requestid$' AND isinvalid = 1) THEN 1 ELSE 0 END

5、创建节点表单页面js

<script type="text/javascript">
$(document).ready(function(){  // 等待元素加载完成
  // 初始检查一次
  checkAndHide();
 
  // 监听字段38359的值变化
  WfForm.bindFieldChangeEvent("field38359", function(obj, id, value) {
    // 当字段值变化时重新执行检查
    checkAndHide();
  });
});

function checkAndHide() {
  var isback = WfForm.getFieldValue(WfForm.convertFieldNameToId("isBack"));
  var htly = WfForm.getFieldValue(WfForm.convertFieldNameToId("htly"));
  var isRevoked = WfForm.getFieldValue(WfForm.convertFieldNameToId("isRevoked"));

  if((isback === '1' && htly === '1') || isRevoked === '1') {
    // 隐藏删除按钮
    $('.ant-menu-item:has(.wea-right-menu-item span[title="删除"]), button[title="删除"]')
      .addClass('hide-delete-button');
  } else {
    // 如果条件不满足,确保按钮可见
    $('.ant-menu-item:has(.wea-right-menu-item span[title="删除"]), button[title="删除"]')
      .removeClass('hide-delete-button');
  }
}
</script>

<style type="text/css">
.hide-delete-button {
  display: none !important;
}

</style>

Ecode

register.js

const configs = ecodeSDK.getCom('${appId}', 'configs')

ecodeSDK.overwritePropsFnQueueMapSet('WeaReqTop', { 
    fn: (newProps) => { 
        const { hash } = window.location;

        if (!~hash.indexOf('/main/workflow/req')) return newProps;
        if (!window.wfform) return newProps; 

        const baseInfo = wfform.getBaseInfo(); // 获取流程的基础信息
        const currentWorkflowId = baseInfo.workflowid; // 当前流程ID
        const currentNodeId = baseInfo.nodeid; // 当前节点ID

        if (configs && configs.flow) {
          const flowConfig = configs.flow[currentWorkflowId];

          if (flowConfig && flowConfig.enable && flowConfig.nodeid == currentNodeId) {
              console.log('当前节点在配置范围内,功能已启用');
              if (newProps.buttons.length >= 1) {
                  const isReturnedFlag = WfForm.getFieldValue(WfForm.convertFieldNameToId("isback")); // 获取标识退回的隐藏字段

                  if (isReturnedFlag === '1') { // 仅当流程是被退回时才显示
                      const originalButton = newProps.buttons[0];
                      const originalOnClick = originalButton.props.onClick;

                      // 提取公共逻辑到一个函数中
                      const handleButtonClick = (fieldName1, fieldValue1) => {
                          try {
                              // 修改指定字段值
                              WfForm.changeFieldValue(WfForm.convertFieldNameToId(fieldName1), { value: fieldValue1 });
                              originalOnClick();
                          } catch (error) {
                              console.error(`点击按钮时出错: ${error.message}`);
                          }
                      };

                      const newButton = React.cloneElement(originalButton, {
                          children: '作废',
                          type: 'primary',
                          onClick: () => handleButtonClick("sfzfgd", "0")
                      });
                      // 替换原按钮为"作废"按钮
                      newProps.buttons[0] = newButton;
                  }
              }
              
          } else {
              console.log('当前流程未启用或节点不匹配');
          }
        } else {
          console.log('配置信息不存在或未定义流程配置');
        }

        return newProps;
    },
    desc: '作废按钮仅在流程被退回至创建节点时显示'
});

config.js

const configs={
  flow: {
    // 为workflowid为310的流程的某个节点启用特定功能
    310: { enable: true, nodeid: '2686' }, 
    311: { enable: true, nodeid: '2712' }
  }
};
ecodeSDK.setCom("${appId}","configs",configs);
posted @ 2025-09-05 10:17  K89  阅读(128)  评论(0)    收藏  举报