注册优化使用邮箱验证

pull/1/head
lvxiu_ext 3 years ago
parent 587bffdbbc
commit 4a27fa76bb

@ -56,4 +56,16 @@ export function getCodeImg() {
method: 'get', method: 'get',
timeout: 20000 timeout: 20000
}) })
}
// 获取邮件验证码
export function getCodeMail(email) {
return request({
url: '/captchaMail?email='+email,
headers: {
isToken: false
},
method: 'get',
timeout: 20000
})
} }

@ -52,7 +52,7 @@
<span v-if="!loading"> </span> <span v-if="!loading"> </span>
<span v-else> ...</span> <span v-else> ...</span>
</el-button> </el-button>
<div style="float: right;" v-if="register"> <div style="float: right;font-size: 14px;padding-top:10px;" v-if="register">
<router-link class="link-type" :to="'/register'">立即注册</router-link> <router-link class="link-type" :to="'/register'">立即注册</router-link>
</div> </div>
</el-form-item> </el-form-item>
@ -93,7 +93,7 @@ const loading = ref(false);
// //
const captchaEnabled = ref(true); const captchaEnabled = ref(true);
// //
const register = ref(false); const register = ref(true);
const redirect = ref(undefined); const redirect = ref(undefined);
function handleLogin() { function handleLogin() {

@ -37,6 +37,17 @@
<template #prefix><svg-icon icon-class="password" class="el-input__icon input-icon" /></template> <template #prefix><svg-icon icon-class="password" class="el-input__icon input-icon" /></template>
</el-input> </el-input>
</el-form-item> </el-form-item>
<el-form-item prop="email">
<el-input
v-model="registerForm.email"
type="email"
size="large"
auto-complete="off"
placeholder="邮箱"
>
<template #prefix><svg-icon icon-class="email" class="el-input__icon input-icon" /></template>
</el-input>
</el-form-item>
<el-form-item prop="code" v-if="captchaEnabled"> <el-form-item prop="code" v-if="captchaEnabled">
<el-input <el-input
size="large" size="large"
@ -49,7 +60,12 @@
<template #prefix><svg-icon icon-class="validCode" class="el-input__icon input-icon" /></template> <template #prefix><svg-icon icon-class="validCode" class="el-input__icon input-icon" /></template>
</el-input> </el-input>
<div class="register-code"> <div class="register-code">
<img :src="codeUrl" @click="getCode" class="register-code-img"/> <el-button
size="large"
@click.prevent="getCode"
>
获取邮箱验证码
</el-button>
</div> </div>
</el-form-item> </el-form-item>
<el-form-item style="width:100%;"> <el-form-item style="width:100%;">
@ -63,7 +79,7 @@
<span v-if="!loading"> </span> <span v-if="!loading"> </span>
<span v-else> ...</span> <span v-else> ...</span>
</el-button> </el-button>
<div style="float: right;"> <div style="float: right;font-size: 14px;padding-top:10px;">
<router-link class="link-type" :to="'/login'">使用已有账户登录</router-link> <router-link class="link-type" :to="'/login'">使用已有账户登录</router-link>
</div> </div>
</el-form-item> </el-form-item>
@ -76,8 +92,8 @@
</template> </template>
<script setup> <script setup>
import { ElMessageBox } from "element-plus"; import { ElAlert, ElMessageBox } from "element-plus";
import { getCodeImg, register } from "@/api/login"; import { getCodeMail, register } from "@/api/login";
const router = useRouter(); const router = useRouter();
const { proxy } = getCurrentInstance(); const { proxy } = getCurrentInstance();
@ -87,6 +103,7 @@ const registerForm = ref({
password: "", password: "",
confirmPassword: "", confirmPassword: "",
code: "", code: "",
email: "",
uuid: "" uuid: ""
}); });
@ -98,6 +115,7 @@ const equalToPassword = (rule, value, callback) => {
} }
}; };
const registerRules = { const registerRules = {
username: [ username: [
{ required: true, trigger: "blur", message: "请输入您的账号" }, { required: true, trigger: "blur", message: "请输入您的账号" },
@ -111,6 +129,9 @@ const registerRules = {
{ required: true, trigger: "blur", message: "请再次输入您的密码" }, { required: true, trigger: "blur", message: "请再次输入您的密码" },
{ required: true, validator: equalToPassword, trigger: "blur" } { required: true, validator: equalToPassword, trigger: "blur" }
], ],
email: [
{ required: true, trigger: "blur", message: "请输入正确的邮箱地址" }
],
code: [{ required: true, trigger: "change", message: "请输入验证码" }] code: [{ required: true, trigger: "change", message: "请输入验证码" }]
}; };
@ -132,25 +153,19 @@ function handleRegister() {
}).catch(() => {}); }).catch(() => {});
}).catch(() => { }).catch(() => {
loading.value = false; loading.value = false;
if (captchaEnabled) {
getCode();
}
}); });
} }
}); });
} }
function getCode() { function getCode() {
getCodeImg().then(res => { getCodeMail(registerForm.value.email).then(res => {
captchaEnabled.value = res.captchaEnabled === undefined ? true : res.captchaEnabled; proxy.$modal.msgSuccess("邮件发送成功");
if (captchaEnabled.value) { registerForm.value.uuid = res.uuid;
codeUrl.value = "data:image/gif;base64," + res.img; })
registerForm.value.uuid = res.uuid; }
}
});
}
getCode();
</script> </script>
<style lang='scss' scoped> <style lang='scss' scoped>

@ -6,9 +6,9 @@
<el-form-item label="手机号码" prop="phonenumber"> <el-form-item label="手机号码" prop="phonenumber">
<el-input v-model="user.phonenumber" maxlength="11" /> <el-input v-model="user.phonenumber" maxlength="11" />
</el-form-item> </el-form-item>
<el-form-item label="邮箱" prop="email"> <!--<el-form-item label="邮箱" prop="email">
<el-input v-model="user.email" maxlength="50" /> <el-input v-model="user.email" maxlength="50" />
</el-form-item> </el-form-item>-->
<el-form-item label="性别"> <el-form-item label="性别">
<el-radio-group v-model="user.sex"> <el-radio-group v-model="user.sex">
<el-radio label="0"></el-radio> <el-radio label="0"></el-radio>
@ -35,7 +35,7 @@ const { proxy } = getCurrentInstance();
const rules = ref({ const rules = ref({
nickName: [{ required: true, message: "用户昵称不能为空", trigger: "blur" }], nickName: [{ required: true, message: "用户昵称不能为空", trigger: "blur" }],
email: [{ required: true, message: "邮箱地址不能为空", trigger: "blur" }, { type: "email", message: "请输入正确的邮箱地址", trigger: ["blur", "change"] }], //email: [{ required: true, message: "", trigger: "blur" }, { type: "email", message: "", trigger: ["blur", "change"] }],
phonenumber: [{ required: true, message: "手机号码不能为空", trigger: "blur" }, { pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/, message: "请输入正确的手机号码", trigger: "blur" }], phonenumber: [{ required: true, message: "手机号码不能为空", trigger: "blur" }, { pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/, message: "请输入正确的手机号码", trigger: "blur" }],
}); });

Loading…
Cancel
Save