代码片段

发布时间 2023-09-05 18:30:47作者: 小赵同学爱编码

去掉多文档超链接(ecode)

  • 没有 href 属性是如何完成跳转的

  • 使用 window.location.hash.indexOf() 判断是哪个页面

  • 通过 WfForm.getBaseInfo 可以获取当前流程中的信息

  • 通过节点信息的html鼠标聚集,可以看到对应节点id

ecodeSDK.overwritePropsFnQueueMapSet('WeaBrowser', {
    fn: function(newProps, name){
        if (window.location.hash.indexOf('#/main/workflow/req')==0) {
            console.log(3,newProps.linkUrl)
            var workflowid =  WfForm.getBaseInfo().workflowid;
            if(workflowid != 66){
              return newProps;
            }
            var nodeid = WfForm.getBaseInfo().nodeid;
            if(nodeid != 1238){
              newProps.linkUrl='';
            }           
        }
        return newProps;
    }
});

隐藏流程的保存按钮(ecode)

  • 在这里面用 querySelectorAll 拿不到按钮数据
  • 不能通过 display = 'none' 或者 opcity = 1.0 隐藏按钮
  • 成功实现代码案例如下:register.js 需要前置加载
// 通过组件复写的方式隐藏指定流程的保存按钮
//利用组件复写作为代码块执行钩子,这种方案可以支持覆盖到所有流程,也可以判断到指定流程指定节点
ecodeSDK.overwritePropsFnQueueMapSet('Button',{
  fn:(newProps)=>{
    if(!window.location.hash.startsWith('#/main/workflow/req')) return ; //判断页面地址
    if(!ecCom.WeaTools.Base64) return ; //完整组件库加载完成
    if(!WfForm) return ; //表单sdk加载完成
    if(WfForm.getBaseInfo().workflowid!==46) return ; //判断流程id
    // 页面加载完成
    jQuery().ready(function(){
      $("button[title='保存']").hide(); // 调用 show 方法显示
    });
  }
});
// 通过拦截组件,删除所有流程的保存按钮
let interceptEnable = true;

ecodeSDK.rewriteApiDataQueueSet({
  fn: (url, params, data) => {
    if(!interceptEnable) return data; // 限制条件
    if (window.location.hash.indexOf('#/main/workflow/req') < 0 || url.indexOf('/api/workflow/reqform/rightMenu') < 0) return data;
    data.rightMenus.splice(1, 1);
    return data;
  },
  desc: '拦截接口参数,同一个接口会在多个页面请求,需注意路径的判断'
});
// 上面的案例适用于已知按钮的索引,如果索引未知,可以根据按钮名称过滤
let interceptEnable = true;
ecodeSDK.rewriteApiDataQueueSet({
  fn: (url, params, data) => {
    if(!interceptEnable) return data; // 限制条件
    if (window.location.hash.indexOf('#/main/workflow/req') < 0 || url.indexOf('/api/workflow/reqform/rightMenu') < 0) return data;
    // data.rightMenus.splice(1, 1); 
    let res = data.rightMenus.filter(item => {
      return item.menuName !== '保存';
    });
    data.rightMenus = res;
    return data;
  },
  desc: '拦截接口参数,同一个接口会在多个页面请求,需注意路径的判断'
});  

修改出生人员信息的出生日期字段

// 拦截组件响应体,然后修改对应dom对象的内容
let interceptEnable = true;

ecodeSDK.rewriteApiDataQueueSet({
  fn: (url, params, data) => {
    if(!interceptEnable) return data; // 限制条件
    if (window.location.hash.indexOf('#/main/hrm/card/cardPersonal') < 0 || url.indexOf('api/hrm/usericon/getHasRight') < 0) return data;
    document.querySelector('.wea-form-item-label').innerHTML = '日期出生';
    return data;
  },
  desc: '拦截接口参数,同一个接口会在多个页面请求,需注意路径的判断'
});

将流程中的直角文本框替换成圆角的

  • 对于我发使用 style 属性的问题,在添加根据 url 过滤之后就能使用了
// 前置加载 register.js
let interceptEnable = true;

ecodeSDK.rewriteApiDataQueueSet({
  fn: (url, params, data) => {
    if(!interceptEnable) return data; // 限制条件
    if (window.location.hash.indexOf('#/main/workflow/req') < 0  || url.indexOf('/api/workflow/reqform/rightMenu') < 0) return data;
    const inputs = document.querySelectorAll("[type='text']");
    inputs.forEach(function(item,index,input){
      // input[index].style.borderRadius = '10px';
      item.style.borderRadius = '10px';
    })
    return data;
  },
  desc: '拦截接口参数,同一个接口会在多个页面请求,需注意路径的判断'
});