//表单校验规则
|
|
export const ruleGenerator = {
|
// 必填字段
|
required(message = '此字段为必填项') {
|
return { required: true, message, trigger: 'blur' }
|
},
|
|
// 长度限制
|
length(min, max, fieldName = '') {
|
const message = fieldName
|
? `${fieldName}长度应在${min}到${max}个字符之间`
|
: `长度应在${min}到${max}个字符之间`
|
|
return {
|
validator: (rule, value, callback) => {
|
if (!value || (value.length >= min && value.length <= max)) {
|
callback()
|
} else {
|
callback(new Error(message))
|
}
|
},
|
trigger: 'blur'
|
}
|
},
|
|
// 手机号验证
|
phone() {
|
return {
|
validator: (rule, value, callback) => {
|
const reg = /^1[3-9]\d{9}$/
|
if (!value || reg.test(value)) {
|
callback()
|
} else {
|
callback(new Error('请输入正确的手机号码'))
|
}
|
},
|
trigger: ['blur', 'change']
|
}
|
},
|
//验证码验证
|
code() {
|
return {
|
validator: (rule, value, callback) => {
|
const reg = /^\d{4}$/
|
if (!value || reg.test(value)) {
|
callback()
|
} else {
|
callback(new Error('请输入正确的验证码'))
|
}
|
},
|
trigger: ['blur', 'change']
|
}
|
},
|
password() {
|
return {
|
validator: (rule, value, callback) => {
|
const reg = /^\d{6}$/
|
if (!value || reg.test(value)) {
|
callback()
|
} else {
|
callback(new Error('密码格式为6个字符'))
|
}
|
},
|
trigger: ['blur', 'change']
|
}
|
},
|
|
// 多选框验证
|
checkbox(message) {
|
return {
|
validator: (rule, value, callback) => {
|
if (!value) {
|
callback(new Error(message));
|
} else {
|
callback();
|
}
|
},
|
trigger: 'change'
|
}
|
},
|
|
// 邮箱验证
|
email() {
|
return {
|
validator: (rule, value, callback) => {
|
const reg = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/
|
if (!value || reg.test(value)) {
|
callback()
|
} else {
|
callback(new Error('请输入正确的邮箱地址'))
|
}
|
},
|
trigger: 'blur'
|
}
|
}
|
}
|