一、效果展示
创建请假流程时,明细字段部门通过代码进行赋值,部门字段属性支持只读属性。
二、Ecode代码实现方式
1.进入Ecode开发平台
http://IP:PORT/Ecode
2.在左侧的目录树中新建目录,在目录中新建文件夹,并取名为 【请假申请-只读浏览框赋值演示代码(官方推荐写法)】;
3.选中上一步新建的文件夹右键新建js文件,取名为register.js;
4.选中新建的文件夹右键再次新建js文件,取名为index.js;
5.展开目录后,点击register.js,在窗口中输入如下代码并保存;
/**
* 调试编号:2c6fbb1878fb46a9947f38d1cfb66e69
* 功能说明:复写流程浏览框字段,初始化默认值
* 前置加载:是
*/
let enable = true;
const NewWeaBrowser = (props)=>{ //此函数不允许写在复写方法内,会导致实例重复创建,也就是dimout不断执行
const acParams = {
appId:'${appId}', //appId会自动识别
name:'NewWeaBrowserCom', //模块名称
isPage:false, //是否是路由页面
noCss:true, //是否禁止单独加载css,通常为了减少css数量,css默认前置加载
props:props,
}
const NewCom = props.Com;
return window.comsMobx?ecodeSDK.getAsyncCom(acParams):(<NewCom {...props} />);
}
ecodeSDK.overwriteClassFnQueueMapSet('WeaBrowser',{
fn:(Com,newProps)=>{
if(!enable) return ;
const {hash} = window.location;
if (!ecodeSDK.checkLPath('/spa/workflow/static4form/index.html#/main/workflow/req')) return;
//if(hash.indexOf('#/main/workflow/req') === -1) return;
if(!WfForm) return ; //表单sdk加载完成
const baseInfo = WfForm.getBaseInfo();
//判断流程id
if(baseInfo.workflowid!==4) return ;
//判断字段id,并且判断组件是否允许复写,如果不能复写,直接返回空
if(newProps.fieldid!=="5841"||newProps._noOverwrite) return ;
newProps._noOverWrite = true;
newProps.Com = Com; //如果需要原组件,可带上
return {
com:NewWeaBrowser,
props:newProps
};
}
});
6.并设置前置加载,设置后图标上显示带p;
7.点击index.js文件,加入如下代码后保存;
/**
* 调试编号:2c6fbb1878fb46a9947f38d1cfb66e69
* 功能说明:复写流程浏览框字段,初始化默认值
* 前置加载:否
*/
const {WeaBrowser} = ecCom;
class NewWeaBrowserCom extends React.Component {
constructor(props) { //初始化,固定语法
super(props);
this.state = {
}
}
render() {
let newProps = {...this.props};
//分部赋值
newProps.replaceDatas=[{ id: "1", name: "在水一方(Ecode代码)" }];
//复写组件的时候,必须带上_noOverwrite参数,避免被复写的组件又被复写导致死循环
return (
<WeaBrowser {...newProps} _noOverwrite />
)
}
}
//发布模块
ecodeSDK.setCom('${appId}','NewWeaBrowserCom',NewWeaBrowserCom);