1.表单校验-唯一校验
唯一性校验效果:
配置方法:
1.在数据库对不允许重复的字段添加索引或联合索引
2.对索引进行命名
系统会自动抓取索引注释信息进行提示
2. 表单检验-后端校验
功能描述
通过后端写好的校验逻辑进行表单校验
操作指引
案例1:校验当前输入的账号是否在uc_user表中已存在。
实现逻辑
①在代码中写好需要校验的逻辑
②在表单中配置校验规则-后端校验
后端校验接口地址:${portal}/sys/test/v1/user/validIsAccountExist?param=
注:该接口是系统上已经写好的案例,可直接使用查看效果(校验的数据来自uc_user表中的account)
3. 字段校验-js校验
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;