hoc-element
Version:
基于 element-ui 库的二次封装,主要包含配置化的 table 表格及 form 表单中的 rules 校验等场景,旨在减少重复的操作,让开发变得更简单。
52 lines (49 loc) • 1.57 kB
JavaScript
import { regexExtraSpace } from '@/utils/regularExpression'
function validatorRules (validator, trigger = '') {
const rule = {
required: true, trigger, validator: ''
}
validator ? rule.validator = validator : delete rule.validator
return rule
}
function requiredRules (trigger = 'blur', message = '不能为空') {
return validatorRules((rule, value, callback) => {
if (!value) {
callback(new Error(message))
} else if (Array.isArray(value)) {
value.length === 0 ? callback(new Error(message)) : callback()
} else if (!String(value).replace(new RegExp(regexExtraSpace), '')) {
callback(new Error(message))
} else {
callback()
}
}, trigger)
}
function requiredRadioRules (trigger = 'change', message = '不能为空') {
return validatorRules((rule, value, callback) => {
if (['boolean', 'number'].includes(typeof value)) {
callback()
} else if (value === '' || !value.replace(new RegExp(regexExtraSpace), '')) {
callback(new Error(message))
}
}, trigger)
}
function imageListRules (errMsg = '请上传全部图片') {
const errSingle = '请选择一张图片'
const validator = (rule, value, callback) => {
if (!value) {
callback(new Error(errSingle))
} else if (Array.isArray(value) && value.some((img) => !img.url)) {
value.length > 1 ? callback(new Error(errMsg)) : callback(new Error(errSingle))
} else {
callback()
}
}
return validatorRules(validator)
}
export {
requiredRules,
validatorRules,
imageListRules,
requiredRadioRules
}