/** * form 验证 工具类 * * @author terrfly * @site https://www.jeepay.vip * @date 2022/11/25 10:58 */ import infoBox from '@/commons/utils/infoBox.js' const model = { // 正则表达式 regexp: { // 手机号验证规则 mobile: /^1\d{10}$/, // 登录用户名: 字母开头 6 -18位。 loginUsername: /^[a-zA-Z][a-zA-Z0-9]{5,17}$/, }, // 验证规则: rules: { // showText 为空, 说明是 input的placeHoloder 直接飘红, // showText 有值: 在文本框下方提示。 // 只有input 才有这种特殊判断。 requiredInput: (showText, type = 'string') => { return {format: type, required: true, errorMessage: showText ? ('请输入' + showText) : ' ' } }, requiredSelect: (showText, type = 'string') => { return {format: type, required: true, errorMessage: '请选择' + showText } }, requiredUpload: (showText, type = 'string') => { return {format: type, required: true, errorMessage: '请上传' + showText } }, // 正则验证 , 请注意: 该规则需要在required后面, 此处不可包含required patternRule: (showText, p) => { return {pattern: p, errorMessage: '请输入正确的' + showText } }, requiredInputShowToast: (showText, type = 'string') => { return {format: type, required: true, errorMessage:' ', toastErrorMessage: '请输入' + showText } }, requiredSelectShowToast: (showText, type = 'string') => { return {format: type, required: true, errorMessage:' ', toastErrorMessage: '请选择' + showText } }, requiredUploadShowToast: (showText, type = 'string') => { return {format: type, required: true, errorMessage:' ', toastErrorMessage: '请上传' + showText } }, patternRuleShowToast: (showText, p) => { return {pattern: p, errorMessage:' ', toastErrorMessage: '请输入正确的' + showText } }, }, // 支持 提示信息 // 类型如下: // { // required: true, // toastErrorMessage: "请输入去去去去群", // errorMessage: ' ', // 不会显示在下部, 需要空格占位 // } validate: (form) => { return form.validate().catch(e => { if(!e || e.length <= 0){ return Promise.reject() } for(let i = 0; i < e.length; i++){ let k = e[i].key let rules = form.rules[k].rules for(let j = 0; j < rules.length; j++){ if(rules[j].toastErrorMessage && rules[j].required){ infoBox.showToast(rules[j].toastErrorMessage) // 仅提示一次即可 return Promise.reject(e) } } } return Promise.reject(e) }) }, } export default model