自记录--计算请假申请日期相差天数(最小单位半天)

 

1.部分组件属性

 

2.申请天数脚本触发属性

M99kq0os6825564bd1b95.png

 

3.申请天数脚本内容

(function () {
    var doc = $.context.getCurrentDocument();
    /*
        严谨一些先判断变量是否有值再用.getValue(),我这边设置默认了所以直接获取变量值
    */
    var startDay = doc.getElementByName("开始日期").getValue();
    var endDay = doc.getElementByName("结束日期").getValue();
    var startTime = doc.getElementByName("开始时间").getValue();//1:上午,2:下午
    var endTime = doc.getElementByName("结束时间").getValue();//1:上午,2:下午
    if(startDay!=null && startDay!="" && endDay!=null && endDay!=""){
        //日期转换并计算差额
        var startDateObject = $.date.timestampToDate(startDay);
        var endDateObject = $.date.timestampToDate(endDay);
        var format = "yyyy-MM-dd";
        var startDateStr = $.date.dateToString(startDateObject,format);
        var endDateStr = $.date.dateToString(endDateObject,format);
        var datedifference = (new Date(endDateStr) - new Date(startDateStr)) / (1000 * 3600 * 24);
        
        //相差天数,+1是默认申请请假天数为1天
        var num = parseFloat(datedifference)+1;
        //日期相差天数小于0,默认为0
        if(num<0){
            return 0;
        }
        //当天开始时间是下午,结束时间是上午,错误数据,返回0
        if(endTime<startTime&&num==1){
            return 0;
        }
        //当开始时间是下午,结束时间是上午,必须是大于默认的1天的申请数,才能算是有效数据
        if(endTime<startTime&&num>1){
            num = num-1;
        }
        //当天开始时间是上午,结束时间是下午,默认数据,返回1天的申请数
        if(num==1&&startTime<endTime){
            num=1;
        }
        //当开始和结束时间都一样,则是0.5天的申请数
        if(startTime==endTime&&num>=1){
            num = num-0.5;
        }
        //注意表单效验0不能提交
        return num;
    }
})()

 

4.表单效验

7v2lTO1r682557718678b.png

  • 发表于 2天前
  • 阅读 ( 26 )

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
张扬
张扬

客服

4 篇文章

作家榜 »

  1. 七小妹 12 文章
  2. 你是猴子派来的吧 3 文章
  3. 七巧低代码 2 文章
  4. 低代码小刘 2 文章
  5. 张女士 0 文章
  6. vv 0 文章
  7. HD 0 文章
  8. 林继满 0 文章