import type { RuleObject } from "ant-design-vue/es/form"; //正则 const mobileReg = /^(((13[0-9]{1})|(15[0-9]{1})|(16[0-9]{1})|(17[3-8]{1})|(18[0-9]{1})|(19[0-9]{1})|(14[5-7]{1}))+\d{8})$/; const emailReg = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/; // 表单验证 export const formRulesFn = (fD) => { return { userName: [ { required: true, message: "请输入账户名称!", trigger: ["blur"] }, ], password: [ { validator: async (_rule: RuleObject, value: string) => { return validatePass(_rule, value); }, trigger: ["blur"], }, ], confirmPassword: [ { validator: async (_rule: RuleObject, value: string) => { return validatePass2(_rule, value, fD.password); }, trigger: ["blur"], }, ], verifyCode: [ { required: true, message: "请输入验证码!", trigger: ["blur"] }, ], mobile: [ { validator: async (_rule: RuleObject, value: string) => { return validateMobile(_rule, value, fD); }, trigger: ["blur"], }, ], }; }; const validatePass = async (_rule: RuleObject, value: string) => { if (value === undefined || value === "") { return Promise.reject("请输入密码!"); } else if (value.length > 16) { return Promise.reject("密码长度最大不能超过16位!"); } else { return Promise.resolve(); } }; const validatePass2 = async (_rule: RuleObject, value: string, password) => { if (value === undefined || value === "") { return Promise.reject("请输入密码!"); } else if (password !== value) { return Promise.reject("两次密码输入不一致!"); } else { return Promise.resolve(); } }; const validateMobile = async (_rule: RuleObject, value: string, fD) => { let msg = fD.verifyType === "SMS" ? "手机号" : fD.verifyType === "EMAIL" ? "邮箱" : "内容"; if (value === "" || value === undefined) { return Promise.reject(`请输入${msg}`); } else if (fD.verifyType === "SMS" && !mobileReg.test(value)) { return Promise.reject(`${msg}格式不正确`); } else if (fD.verifyType === "EMAIL" && !emailReg.test(value)) { return Promise.reject(`${msg}格式不正确`); } else { return Promise.resolve(); } };