搭建公司请假流程,人资要求请假时间最少为30分钟,也就是不足30分钟按30分钟计算。正常情况下需要请假人员选择时间后,由系统根据30分钟为一个单位做四舍五入的计算,得出请假时长。
本着能简单绝不复杂的原则,直接将时间组件的分钟限制为只能选择 00 或者 30, 这样就不会出现 请假几分钟之类的问题,也就解决了 30分种为最小单位的需求。
实现思路
分析表单中所使用到的组件:PC端使用的是 WeaTimePicker 组件,移动端使用的是DatePicker 组件。
改造时间选择组件,将时间组件的参数步长默认为1 改为 30。
ecode编写代码,并改为前置加载。
代码如下:
ecodeSDK.overwritePropsFnQueueMapSet('WeaTimePicker',{ //PC端组件
fn:(newProps)=>{
//如果不是pc流程表单或移动端流程表单中,则不执行下面逻辑
if (!(ecodeSDK.checkLPath('/spa/workflow/static4form/index.html#/main/workflow/req') || ecodeSDK.checkLPath('/spa/workflow/static4mobileform/index.html#/req'))) return;
let workflowid = "-1";
if (WfForm.getBaseInfo()) {
workflowid = WfForm.getBaseInfo().workflowid;
}
if (workflowid != 254) return; //限制到指定流程
newProps.minuteStep = 30; //组件参数中增加 时间步长为 30分钟
return newProps;
}
});
ecodeSDK.overwriteMobilePropsFnQueueMapSet('DatePicker',{ //移动端组件
fn:(newProps)=>{
//如果不是pc流程表单或移动端流程表单中,则不执行下面逻辑
if (!(ecodeSDK.checkLPath('/spa/workflow/static4form/index.html#/main/workflow/req') || ecodeSDK.checkLPath('/spa/workflow/static4mobileform/index.html#/req'))) return;
let workflowid = "-1";
if (WfForm.getBaseInfo()) {
workflowid = WfForm.getBaseInfo().workflowid;
}
if (workflowid != 254) return;
newProps.minuteStep = 30; //时间步长改为 30分钟
return newProps;
}
});