export function getRule(rule) {
|
if ('required' in rule) {
|
return { type: 'required', value: rule.required }
|
}
|
if ('max' in rule || 'min' in rule) {
|
return { type: 'between', value: [rule.min, rule.max] }
|
}
|
if ('validator' in rule) {
|
return { type: 'validator', value: rule.validator }
|
}
|
if ('pattern' in rule) {
|
return { type: 'pattern', value: rule.pattern }
|
}
|
}
|
|
export function filterRules(rules) {
|
return rules.filter(rule => {
|
const { type, value } = getRule(rule)
|
return value
|
})
|
}
|
|
export function combineRule(rules) {
|
return filterRules(rules).map(rule => {
|
const { message = '' } = rule
|
const { type, value } = getRule(rule)
|
return { message, type, value }
|
})
|
}
|
|
function isVariableEmpty(variable) {
|
// 判断变量是否为null或undefined
|
if (variable == null) {
|
return true
|
}
|
|
// 判断字符串是否为空
|
if (typeof variable === 'string' && variable.trim().length === 0) {
|
return true
|
}
|
|
// 判断数组是否为空
|
if (Array.isArray(variable) && variable.length === 0) {
|
return true
|
}
|
|
// 判断对象是否为空
|
if (typeof variable === 'object' && Object.keys(variable).length === 0) {
|
return true
|
}
|
|
return false
|
}
|
|
const validationRules = {
|
required(rule, value, model) {
|
return !isVariableEmpty(value)
|
},
|
pattern(rule, value, model) {
|
return rule.test(value, model)
|
},
|
between(rule, value, model) {
|
const [min = null, max = null] = rule
|
if (min !== null && max !== null) return (Number(value) >= min && Number(value) <= max)
|
if (min !== null && max === null) return Number(value) >= min
|
if (max !== null && min === null) return Number(value) <= max
|
},
|
validator(rule, value, model) { // 自定义验证
|
return rule(value, model)
|
}
|
}
|
export { validationRules }
|