1.校验输入日期是否在当前时间的一年内
场景:请假流程-请假类型为“婚假”时,需要校验“结婚登记时间”是否超过一年,超过一年则不允许申请婚假
实现逻辑:表单中字段“结婚登记日期”设置字段校验-js校验
var date = new Date(); //获取到一年前的时间 let startyear = (date.getFullYear()-1); let month = (date.getMonth()+1); let startdate = (date.getDate()-1); if(month<10){month = '0'+month;} if(date<10){date = '0'+date;} if(startdate<10){startdate = '0'+startdate;} var starttime =(startyear + "-" + month + "-" + startdate); //判断请假类型是否为婚假 if(data.qjsq.twid == '婚假') { //判断结婚登记时间是否小于一年前的时间 if(starttime > data.qjsq.marrydate){ return {valid:false,data:{message: "结婚登记日期超过—年,不可申请婚假!" }}; }else if(value >= starttime){ return true; } }return true;
//扩展 //获取当前小时 let hour = date.getHours(); //获取当前分钟 let min = date.getMinutes(); //获取当前秒 let second = date.getSeconds();
2.数字校验
场景:请假申请流程,请假类型为年假时,需要校验请假时长是否大于剩余年假时间
实现逻辑:字段“时间长度”添加字段校验-js校验
if (value > 0) { if(data.qjsq.twid == '年假' && data.qjsq.bal < value){ return { valid: false, data: { message: "年假额度不足"}} }else if(data.qjsq.twid == '婚假' && value >3 || data.qjsq.twid == '丧假' && value >3){ return { valid: false, data: { message: "请假时长不能大于3天"}} }else if(data.qjsq.twid == '产假' && value > 143){ return { valid: false, data: { message: "请假时长不能大于143天"}} }else if(data.qjsq.twid == '护理假' && value > 15){ return { valid: false, data: { message: "请假时长不能大于15天"}} }else if(data.qjsq.twid == '病假' && value > 90){ return { valid: false, data: { message: "病假一年不允许超过90天!"}} }else if(data.qjsq.twid == '事假' && value > 15){ return { valid: false, data: { message: "事假—年不超过15天!"}} }return true; }else{ return { valid: false, data: { message: "时间长度必须大于0"}} }
3.校验子表某列之和是否等于主表某个字段
场景:合同表单:发起合同流程时,需校验子表[收付款计划]中的计划金额总和是否等于主表的合同金额
实现逻辑:子表[收付款计划]中的“计划金额”添加字段校验-js校验
let jhje = 0; if(data.htsplc.sub_sfkjh && data.htsplc.sub_sfkjh.length>0){ data.htsplc.sub_sfkjh.forEach(item =>{ jhje += item.jhje; }) } if (jhje != data.htsplc.htje) { return { valid: false, data: { message: "计划金额总和必须等于合同金额!" } }; } return true;