export function required(fieldName = '', option = {}) { const defaultOpt = { required: true, message: `${fieldName}不能为空`, trigger: ['change', 'blur'] } return { ...defaultOpt, ...option } } export function isInteger(fieldName = '', option = {}) { const IntegerRegex = /^\d+$/ const defaultOpt = { trigger: ['change', 'blur'], validator: (rule, value, cb) => { if (value) { if (IntegerRegex.test(value)) { const max = option?.max const min = option?.min if (max && value * 1 > max) { cb(new Error(`${fieldName}不能大于${max}`)) } else if((min || min === 0) && value * 1 < min) { cb(new Error(`${fieldName}不能小于${min}`)) } else { cb() } } else { cb(new Error(`${fieldName}不正确`)) } } else { option.required ? cb(new Error(`${fieldName}不能为空`)) : cb() } } } return { ...defaultOpt, ...option } } export const isNumber = (fieldName = '', option = {}) => { const numberRegex = /^(-?\d+)(\.\d+)?$/ const defaultOpt = { trigger: ['change', 'blur'], validator: (rule, value, cb) => { if (value) { if (numberRegex.test(value)) { const max = option?.max const min = option?.min if (max && value * 1 > max) { cb(new Error(`${fieldName}不能大于${max}`)) } else if((min || min === 0) && value * 1 < min) { cb(new Error(`${fieldName}不能小于${min}`)) } else { cb() } } else { cb(new Error(`${fieldName}不正确`)) } } else { option.required ? cb(new Error(`${fieldName}不能为空`)) : cb() } } } return { ...defaultOpt, ...option } } export const isScope = (fieldName = '', option = {}) => { const numberRegex = /^(-?\d+)(\.\d+)?$/ const defaultOpt = { trigger: ['change', 'blur'], validator: (rule, value, cb) => { if (value) { if(numberRegex.test(value)){ const data = option?.data?.value || option?.data || null if(!data) cb(new Error('校验异常')) const props = rule.field.split('.') const { downValue, upValue } = data[props[0]][props[1]] if(parseFloat(value) >= downValue * 1 && parseFloat(value) <= upValue * 1){ cb() } else { cb(new Error('请输入参考值范围的值')) } } else { cb(new Error('请输入参考值范围的值')) } } else { option.required ? cb(new Error(`${fieldName}不能为空`)) : cb() } } } return { ...defaultOpt, ...option } }