@2345mfe/octopus-validate
Version:
表单校验库
252 lines (246 loc) • 7.17 kB
text/typescript
import OcStrategy from '../strategy/validateStrategy';
/**
* 集合汇总-自定义校验
*
*
*/
const OcValidator = {
// ······【特殊自定义校验】········
/**
* 判断是否相等,例如密码是否相同校验
* @param {*} data 需要被比较的值
* @param {string} message 错误提示文案
*/
checkEqual: function (data, message) {
return (rule, value, callback) => {
if (value && data) {
value === data ? callback() : callback(new Error(message))
} else {
callback()
}
}
},
/**
* 判断开始时间必须比结束时间小
* @param {*} data 需要被比较的值
* @param {string} message 错误提示文案
*/
checkStartTimeRange: function (data, message) {
return (rule, value, callback) => {
if (value && data) {
new Date(value).getTime() < new Date(data).getTime() ? callback() : callback(new Error(message))
} else {
callback()
}
}
},
/**
* 判断结束时间必须比开始时间大
* @param {*} data 需要被比较的值
* @param {string} message 错误提示文案
*/
checkEndTimeRange: function (data, message) {
return (rule, value, callback) => {
if (value && data) {
new Date(value).getTime() > new Date(data).getTime() ? callback() : callback(new Error(message))
} else {
callback()
}
}
},
/**
* limit 以内的正整数
* @param {*} limit
* @param {string} message 错误提示文案
*/
checkNumLimit: function (limit, message) {
const isNum = OcStrategy.posiInt;
return (rule, value, callback) => {
if (value) {
isNum.test(value) && value <= limit ? callback() : callback(new Error(message))
} else {
callback()
}
}
},
/**
* 校验数字范围,例如 10 - 99
* @param {number} min 最小值
* @param {number} max 最大值
* @param {string} message 错误提示文案
*/
checkNumRange: function (min, max, message) {
const isNum = OcStrategy.posiInt;
return (rule, value, callback) => {
if (value) {
isNum.test(value) && value >= min && value <= max ? callback() : callback(new Error(message))
} else {
callback()
}
}
},
/**
* 校验数字范围,如600以内
* @param {number} max 最大值
* @param {string} message 错误提示文案
*/
checkNumMax: function (max, message) {
const isNum = OcStrategy.posiInt;
return (rule, value, callback) => {
if (value) {
isNum.test(value) && value <= max ? callback() : callback(new Error(message))
} else {
callback()
}
}
},
/**
* 校验
* @param {}
*
*/
nameCheck: limit => {
return (rule, value, callback) => {
if (!value) {
callback(new Error(`请输入${limit}个以内的中英文字符`))
} else
if (OcStrategy.nameEn.test(value) && value.length <= limit) {
callback()
} else {
callback(new Error(`请输入${limit}个以内的中英文字符`))
}
}
},
/**
* 校验
* @param {}
*
*/
nameCheckNo: limit => {
return (rule, value, callback) => {
if (!value) {
callback()
} else
if ((OcStrategy.nameEn.test(value) && value.length <= limit)) {
callback()
} else {
callback(new Error(`请输入${limit}个以内的中英文字符或者不填`))
}
}
},
/**
* 校验
* @param {}
*
*/
numCheck: limit => {
return (rule, value, callback) => {
const posiInt = OcStrategy.posiInt;
if (posiInt.test(value) && value <= limit) {
callback()
} else {
callback(new Error(`请输入${limit}以内的整数`))
}
}
},
/**
* 校验
* @param {}
*
*/
num: limit => {
return (rule, value, callback) => {
if (/^\d+(\.\d+)?$/.test(value) || !value) {
callback()
} else {
callback(new Error('请输入数字'))
}
}
},
// ······【自定义校验】········
/**
* 校验
* @param {}
*
*/
isParseInt: (rule, value, callback) => {
const posiInt = OcStrategy.posiInt;
if (!value) {
callback()
} else {
posiInt.test(value) ? callback() : callback(new Error('请输入整数'))
}
},
/**
* 校验
* @param {}
*
*/
maxIsParseInt: (rule, value, callback) => {
const posiInt = OcStrategy.posiInt;
posiInt.test(value) ? callback() : callback(new Error('请输入整数'))
},
/**
* 校验
* @param {}
*
*/
number: (rule, value, callback) => {
const posiInt = OcStrategy.posiInt;
if (!value) {
callback()
} else {
posiInt.test(value) ? callback() : callback(new Error('请输入整数'))
}
},
/**
* 校验
* @param {}
*
*/
timeLine: (rule, value, callback) => {
const posiInt = OcStrategy.posiInt;
posiInt.test(value) && value <= 600 ? callback() : callback(new Error('请输入600以内的整数'))
},
/**
* 校验
* @param {}
*
*/
descLimit: (rule, value, callback) => {
if (value && value.length > 200) {
callback(new Error('请输入200个以内的字符'))
} else {
callback()
}
},
/**
* 校验
* @param {}
*
*/
detailLimit: (rule, value, callback) => {
if (!value) {
callback(new Error('请输入任务描述,最大不超过300个字符'))
} else if (value && value.length > 300) {
callback(new Error('请输入300个以内的字符'))
} else {
callback()
}
},
/**
* 校验
* @param {}
*
*/
checkStr: (rule, value, callback) => {
// 校验是否含有中文逗号,
const reg = OcStrategy.illegalCn
if (!value) {
callback()
} else {
reg.test(value) ? callback(new Error('输入的内容不能包含中文逗号')) : callback()
}
}
};
export default OcValidator;