import {ValidateRules} from './FormItem'; import {isEmpty} from 'lodash'; export function applyRule(rule: ValidateRules, data: any): { valid: boolean; message: string; } { if (rule.len && !(String(data).length === rule.len)) { return { valid: false, message: rule.message || '长度不满足要求' }; } if (rule.max && Number(data) > rule.max) { return { valid: false, message: rule.message || `不能大于${rule.max}` }; } if (rule.min && Number(data) < rule.min) { return { valid: false, message: rule.message || `不能小余${rule.min}` }; } if (rule.maxLength && String(data).length > rule.maxLength) { return { valid: false, message: rule.message || `长度不能大于${rule.maxLength}` }; } if (rule.minLength && String(data).length < rule.minLength) { return { valid: false, message: rule.message || `长度不能小余${rule.minLength}` }; } if (rule.required) { let isValid = true; if (typeof data === 'string') { if (rule.whitespace) { data = data.trim(); } if (data.length === 0) { isValid = false; } } if (data === null || data === undefined) { isValid = false; } if (typeof data === 'object' && data !== null) { isValid = !isEmpty(data); } if (!isValid) { return { valid: false, message: rule.message || '不能为空' }; } } if (rule.pattern && !new RegExp(rule.pattern).test(data)) { return { valid: false, message: rule.message || '输入不满足规则' }; } return { valid: true, message: '' }; }