in src/types/MExperienceType.ts [10:58]
export function validateExperience(assembly:Assembly, schema:MFieldSchemaAnonymity, value:any, path:string): MValidationResult {
// 空的不管,有validateRequired呢
if(_.isNil(value)){
return undefined
}
if(!_.isArray(value)){
return {message: "数据损坏了", path};
}
const format = schema.dataFormat ?? "x";
let dim = [];
for(let item of value) {
let from = moment(item["from"], format).valueOf();
let to = moment(item["to"], format).valueOf();
let tillNow = !! item["tillNow"];
if(tillNow){
to = Number.MAX_VALUE;
}
if(!_.isFinite(from) || !_.isFinite(to)){
return {message: "没有填写完整", path};
}
dim.push({from, to, item});
}
dim.sort((a,b)=>{
if(a.from>b.from){
return 1
} else if(a.from < b.from) {
return -1;
} else {
return 0;
}
});
// 看时间区间是不是有重叠
if(!schema.experience?.overlap) {
let prevTo = Number.MIN_VALUE;
for(let item of dim) {
if(item.from < prevTo){
return {message: "时间重叠了", path};
}
if(item.from > item.to) {
return {message: "结束时间不能早于开始时间", path};
}
prevTo = item.to;
}
}
return undefined;
}