一、相关资源:
泛微Ecology9.0流程二开演示:使用Ecode对流程浏览框进行赋值
泛微Ecology9.0流程二开亲测:隐藏新建流程页面中的Tab页签
泛微Ecology9.0流程Ecode实践:新建流程页面增加自定义页签简单实例
泛微Ecology9.0流程Ecode实践:新建流程页面隐藏操作按钮及右键菜单实例
泛微Ecology9.0流程Ecode实践:流程明细表重复检验,列内容重复禁止提交
泛微Ecology9.0流程Ecode实践:流程加载时调用后端接口返回数据实例
二、效果展示:
通过Ecode复写流程表单接口,拦截返回数据达到载入流程表单时隐藏明细列的功能,效果如图:
三、实现方式:
新建项目(详细步骤可参考相关资源中之前发布的文章链接)
1.新建项目文件夹;
2.在项目文件夹下新建js代码文件register.js,并设置前置加载;
const config = {//配置区
enable: true, // 总开关
hash: '#/main/workflow/req',
workflowid: 4,
fields:[5843,5844],//要隐藏的明细字段列数组,字段ID数据,不带行号
nodeid:0,
};
const detail_hide_col={display: "none"}; //隐藏样式
const isTargetLocation = () => { //定位到要修改的位置
//如果不是pc流程表单或移动端流程表单中,则不执行下面逻辑
//if (!(ecodeSDK.hash('#/main/workflow/req') || ecodeSDK.checkLPath('/spa/workflow/static4mobileform/index.html#/req')))
if (!config.enable) return;
const {hash} = window.location;
if (hash.indexOf(config.hash) < 0) return; //判断页面地址
if(!ecCom.WeaTools.Base64) return ; //完整组件库加载完成
return true;
}
ecodeSDK.rewriteApiDataQueueSet({
fn: (url, params, data) => {
if (!isTargetLocation()) return data; //定位流程
if (!url.startsWith('/api/workflow/reqform/loadForm')) return data;
if (!data) return data;
const {workflowid,nodeid}=data.params;
if (workflowid!=config.workflowid) return data;
if (config.nodeid>0 && nodeid!=config.nodeid) return data;
//修改API返回数据达到隐藏目的
config.fields.map(fieldid=>{
let detailsymbol=data.cellInfo.fieldCellInfo[fieldid].symbol
if (!data.tableInfo[detailsymbol].fieldinfomap[fieldid]) return data;
let {fieldinfomap} = data.tableInfo[detailsymbol];
fieldinfomap=Object.fromEntries(Object.entries(fieldinfomap).filter(([key]) => key !== fieldid));
data.tableInfo[detailsymbol].fieldinfomap =fieldinfomap;
let {colid}=data.cellInfo.fieldCellInfo[fieldid];
data.datajson.eformdesign.etables[detailsymbol].colattrs['col_'+colid]={class:'detail_hide_col'};
});
//console.log(data);
return data;
},
order:1, //排序字段,如果存在同一个页面复写了同一个组件,控制顺序时使用
desc:'通过复写接口彻底隐藏流程明细表列数据实例'
});
发布项目
1.选中新建的项目文件夹,右键点击【发布】,发布成功后文件夹显示为黄色。
2.<完>。