1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98
| import type {FormInstance, FormRules} from 'element-plus'
import {isMobileDevice} from "@/utils/commonMethod";
interface RuleForm { name: string password: string confirmPassword: string email: string code: string }
const ruleFormRef = ref<FormInstance>()
const validatePass = (rule: object, value: string, callback: (error?: Error) => void) => { if (value !== form.password) { callback(new Error("两次密码不一致")) } else { callback() } }
const validateEmail = (rule: object, value: string, callback: (error?: Error) => void) => { const reg = /^[A-Za-z0-9_\-]+(\.[A-Za-z0-9_\-]+)*@[A-Za-z0-9\-]+\.[A-Za-z]{2,}$/ if (!reg.test(value)) { callback(new Error("邮箱不合法")) } else { callback() } }
const form = reactive<RuleForm>({ name: '', password: '', confirmPassword: '', email: '', code: '' })
const rules = reactive<FormRules<RuleForm>>({ name: [ {required: true, message: '请输入昵称', trigger: 'blur'}, {min: 1, max: 20, message: '长度应是1-20', trigger: 'blur'}, ], email: [ {required: true, message: '请输入邮箱', trigger: 'blur'}, {validator: validateEmail, trigger: 'blur'}, ], code: [ {required: true, message: '请输入邮箱验证码', trigger: 'blur'}, {min: 6, max: 6, message: '长度应是6', trigger: 'blur'}, ], password: [ {required: true, message: '请输入密码', trigger: 'blur'}, {min: 8, max: 16, message: '长度应是8-16', trigger: 'blur'}, ], confirmPassword: [ {required: true, message: '请确认密码', trigger: 'blur'}, {validator: validatePass, trigger: 'blur'} ] })
const submitForm = (formEl: FormInstance | undefined) => { if (!formEl) return
formEl.validate((valid) => { console.log(valid) }) }
const resetForm = (formEl: FormInstance | undefined) => { if (!formEl) return formEl.resetFields() } const timer = ref(0) const show = ref(true) const count = ref(0) const time = 120 const getCode = () => { console.log(form.email); if (timer.value === 0) { count.value = time; show.value = false; timer.value = setInterval(() => { if (count.value > 0 && count.value <= time) { count.value--; } else { show.value = true; clearInterval(timer.value); timer.value = 0; } }, 1000); } }
|