增加注册功能

This commit is contained in:
YeMingfei666 2024-12-19 11:45:27 +08:00
parent b3332a3044
commit 0b66bd6441
2 changed files with 180 additions and 21 deletions

View File

@ -6,25 +6,62 @@
<h3 class="login-title">{{ entryName }}</h3> <h3 class="login-title">{{ entryName }}</h3>
<el-form <el-form
:model="dataForm" :model="dataForm"
:rules="dataRule" :rules="dataRule1"
ref="dataForm" ref="dataForm"
@keyup.enter.native="dataFormSubmit()" @keyup.enter.native="dataFormSubmit()"
status-icon status-icon
> >
<el-form-item prop="userName"> <div v-if="!isLogin">
<el-form-item prop="mobile" >
<div class="flex" style="display: flex">
<el-input v-model="dataForm.mobile" placeholder="手机号">
</el-input>
<el-button
style="margin-left: 20px"
type="primary"
size="medium"
@click="sendMsg()"
>
{{ msgTime >= 60 ? "发送验证码" : msgTime }}</el-button
>
</div>
</el-form-item>
<el-form-item prop="code" >
<el-input
v-model="dataForm.code"
placeholder="验证码"
></el-input>
</el-form-item>
<el-form-item prop="email" >
<el-input
v-model="dataForm.email"
placeholder="邮箱"
></el-input>
</el-form-item>
</div>
<el-form-item prop="userName" >
<el-input <el-input
v-model="dataForm.userName" v-model="dataForm.userName"
placeholder="帐号" placeholder="帐号"
></el-input> ></el-input>
</el-form-item> </el-form-item>
<el-form-item prop="password">
<el-form-item prop="password" >
<el-input <el-input
type="password"
v-model="dataForm.password" v-model="dataForm.password"
placeholder="密码"
></el-input>
</el-form-item>
<el-form-item prop="password1" v-if="!isLogin" >
<el-input
v-model="dataForm.password1"
type="password" type="password"
placeholder="密码" placeholder="密码"
></el-input> ></el-input>
</el-form-item> </el-form-item>
<el-form-item prop="captcha"> <el-form-item prop="captcha" v-if="isLogin" >
<el-row :gutter="20"> <el-row :gutter="20">
<el-col :span="14"> <el-col :span="14">
<el-input v-model="dataForm.captcha" placeholder="验证码"> <el-input v-model="dataForm.captcha" placeholder="验证码">
@ -35,7 +72,8 @@
</el-col> </el-col>
</el-row> </el-row>
</el-form-item> </el-form-item>
<el-form-item>
<el-form-item v-if="isLogin">
<div class="btn-box"> <div class="btn-box">
<div class="" style="margin-top: 38px"> <div class="" style="margin-top: 38px">
<el-button <el-button
@ -45,15 +83,36 @@
>登录</el-button >登录</el-button
> >
</div> </div>
<!-- <div> <div>
<el-button <el-button
class="login-btn-submit" class="login-btn-submit"
plain plain
type="primary" type="text"
@click="dataFormSubmit()" @click="isLogin = false"
>注册</el-button >注册</el-button
> >
</div> --> </div>
</div>
</el-form-item>
<el-form-item v-if="!isLogin">
<div class="btn-box">
<div class="" style="margin-top: 38px">
<el-button
class="login-btn-submit"
type="primary"
@click="register()"
>立即注册</el-button
>
</div>
<div>
<el-button
class="login-btn-submit"
plain
type="text"
@click="isLogin = true"
>返回登录</el-button
>
</div>
</div> </div>
</el-form-item> </el-form-item>
</el-form> </el-form>
@ -69,20 +128,35 @@ import { entryName } from "@/utils/httpRequest";
export default { export default {
data() { data() {
return { return {
isLogin: true,
timer: null,
msgTime: 60,
dataForm: { dataForm: {
mobile: "",
email: "",
userName: "", userName: "",
password: "", password: "",
password1: "",
uuid: "", uuid: "",
captcha: "", captcha: "",
entryName: "", entryName: "",
code: "",
}, },
dataRule: { dataRule1: {
mobile: [
{ required: true, message: "手机号不能为空", trigger: "blur" },
],
email: [{ required: true, message: "邮箱不能为空", trigger: "blur" }],
code: [{ required: true, message: "验证码不能为空", trigger: "blur" }],
userName: [ userName: [
{ required: true, message: "帐号不能为空", trigger: "blur" }, { required: true, message: "帐号不能为空", trigger: "blur" },
], ],
password: [ password: [
{ required: true, message: "密码不能为空", trigger: "blur" }, { required: true, message: "密码不能为空", trigger: "blur" },
], ],
password1: [
{ required: true, message: "密码不能为空", trigger: "blur" },
],
captcha: [ captcha: [
{ required: true, message: "验证码不能为空", trigger: "blur" }, { required: true, message: "验证码不能为空", trigger: "blur" },
], ],
@ -90,11 +164,94 @@ export default {
captchaPath: "", captchaPath: "",
}; };
}, },
watch: {
isLogin(newval) {
this.$refs.dataForm.resetFields();
if (newval) {
this.getCaptcha();
}
},
},
created() { created() {
this.entryName = entryName; this.entryName = entryName;
this.getCaptcha(); this.getCaptcha();
}, },
methods: { methods: {
sendMsg() {
if (this.msgTime < 60) {
return;
}
this.$http({
// url: this.$http.adornUrl('app/Login/sendMsg/'+this.tableData.mobile+'/regis'),
url: this.$http.adornUrl(
"app/Login/sendMsg/" + this.dataForm.mobile + "/regis"
),
method: "get",
}).then((res) => {
console.log(res);
if (res.data.code == 0) {
this.$message({
message: "发送成功",
type: "success",
});
this.msgTime--;
this.timer = setInterval(() => {
this.msgTime--;
if (this.msgTime == 0) {
clearInterval(this.timer);
this.msgTime = 60;
}
}, 1000);
} else {
this.$message({
message: "发送失败",
type: "error",
});
}
});
},
reset() {
this.dataForm.code = "";
this.timer = null;
cleartimeout(this.timer);
this.msgTime = 60;
},
register() {
if (this.dataForm.password != this.dataForm.password1) {
this.$notify({
title: "提示",
duration: 1800,
message: "两次密码不一致",
type: "warning",
});
this.$message.error("两次密码不一致");
return;
}
this.$refs["dataForm"].validate((valid) => {
if (valid) {
this.$http({
url: this.$http.adornUrl("sys/registered?msg=" + this.dataForm.code),
method: "post",
data: this.$http.adornData({
mobile: this.dataForm.mobile,
username: this.dataForm.userName,
password: this.dataForm.password,
email: this.dataForm.email,
}),
}).then(({ data }) => {
if (data && data.code === 0) {
this.$message.success("注册成功,请登录");
this.isLogin=true
// this.$cookie.set("token", data.token);
// this.$router.replace({ name: "home" });
} else {
// this.getCaptcha();
this.$message.error(data.msg);
}
});
}
});
},
// //
dataFormSubmit() { dataFormSubmit() {
this.$refs["dataForm"].validate((valid) => { this.$refs["dataForm"].validate((valid) => {
@ -103,7 +260,7 @@ export default {
url: this.$http.adornUrl("sys/login"), url: this.$http.adornUrl("sys/login"),
method: "post", method: "post",
data: this.$http.adornData({ data: this.$http.adornData({
username: this.dataForm.userName, userName: this.dataForm.userName,
password: this.dataForm.password, password: this.dataForm.password,
uuid: this.dataForm.uuid, uuid: this.dataForm.uuid,
captcha: this.dataForm.captcha, captcha: this.dataForm.captcha,
@ -193,8 +350,9 @@ export default {
position: absolute; position: absolute;
top: 50%; top: 50%;
left: 50%; left: 50%;
margin-left: -200px; transform: translateX(-50%) translateY(-50%);
margin-top: -150px; // margin-left: -200px;
// margin-top: -150px;
padding: 20px 30px; padding: 20px 30px;
width: 400px; width: 400px;
border-radius: 8px; border-radius: 8px;

View File

@ -218,7 +218,8 @@
type="primary" type="primary"
size="medium" size="medium"
@click="sendMsg()" @click="sendMsg()"
> {{ msgTime >= 60 ? "发送验证码" : msgTime }}</el-button >
{{ msgTime >= 60 ? "发送验证码" : msgTime }}</el-button
> >
</el-form-item> </el-form-item>
<el-form-item label="验证码" :label-width="formLabelWidth" required> <el-form-item label="验证码" :label-width="formLabelWidth" required>
@ -939,14 +940,14 @@ export default {
methods: { methods: {
reset() { reset() {
this.msg = ""; this.msg = "";
this.timer = null; this.timer = null;
cleartimeout(this.timer); cleartimeout(this.timer);
this.msgTime = 60; this.msgTime = 60;
}, },
sendMsg() { sendMsg() {
if(this.msgTime<60){ if (this.msgTime < 60) {
return return;
} }
this.$http({ this.$http({
// url: this.$http.adornUrl('app/Login/sendMsg/'+this.tableData.mobile+'/regis'), // url: this.$http.adornUrl('app/Login/sendMsg/'+this.tableData.mobile+'/regis'),
url: this.$http.adornUrl( url: this.$http.adornUrl(
@ -960,7 +961,7 @@ export default {
message: "发送成功", message: "发送成功",
type: "success", type: "success",
}); });
this.msgTime--; this.msgTime--;
this.timer = setInterval(() => { this.timer = setInterval(() => {
this.msgTime--; this.msgTime--;
if (this.msgTime == 0) { if (this.msgTime == 0) {