LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

请问工作流表单模板中的两个不同日期之间可以自动进行相减运算获取需要的间隔时间吗?如何操作?

admin
2016年5月3日 22:32 本文热度 11970
请问工作流表单模板中的两个不同日期控件之间可以进行相减运算获取需要的间隔时间吗?如何操作?

由于点晴OA工作流表单模板支持完整的Javascript脚本,所以表单模板中的两个不同日期控件之间在理论上的确可以利用控件的onchange事件触发Javascript脚本自动计算出相隔的时间,可以精确到天、小时、分钟等。
但由于在实际的使用中,两个日期控件之间存在着很多无法由OA系统自动确定的无效时间段,例如:
按小时计算的话,会将中午休息、晚上休息、周末休息等所有无效时间计算进去;
按天计算的话,会将周末、节假日、部分单位单双周上班、部分单位周六上半天班等各类有效时间漏计算或无效时间计算进去。
所以为了精确获得两个不同日期控件之间的有效时间,由申请人人工计算得到的时间是最准确的,审核人审核时、归档人归档时都还可以进行正确性确认。

如果实在要用,设置方法如下:
在工作流模板设计页面,勾选启用JavaScript:

然后在表体JS脚本中输入日期相隔时间函数:
function DateDiff(interval,date1,date2){
var d1=new Date(date1.replace(/-/g, "/"));
var d2=new Date(date2.replace(/-/g, "/"));
var long = d2.getTime() - d1.getTime(); //相差毫秒
switch(interval.toLowerCase()){
case "y": return parseInt(date2.getFullYear() - date1.getFullYear());
case "m": return parseInt((date2.getFullYear() - date1.getFullYear())*12 + (date2.getMonth()-date1.getMonth()));
case "d": return parseInt(long/1000/60/60/24);
case "w": return parseInt(long/1000/60/60/24/7);
case "h": return parseInt(long/1000/60/60);
case "n": return parseInt(long/1000/60);
case "s": return parseInt(long/1000);
case "l": return parseInt(long);
}
}

在提交前脚本中输入赋值和判断JS脚本:
document.getElementById('CS09').value=DateDiff('d',document.getElementById('CS02').value,document.getElementById('CS07').value);
if (document.getElementById('CS09').value-2>0){
alert('开始日期和结束日期间隔不允许超过2天!');
return false;
}
上面CS09、CS02、CS07分别是相应控件的ID。

效果图:

以上设置就可以实现自动计算两个日期之间的间隔,并判断超出指定天数就拦截不允许提交的效果。

该文章在 2020/2/4 10:22:03 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2024 ClickSun All Rights Reserved