102 lines
2.6 KiB
JavaScript
102 lines
2.6 KiB
JavaScript
/**
|
||
* 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
|
||
|