注册新增手机号验证码

master
袁子龙 2024-08-21 21:45:53 +08:00
parent fe8cc645d9
commit af880f48dd
2 changed files with 79 additions and 11 deletions

View File

@ -25,6 +25,14 @@ export function register(data) {
}) })
} }
export function getPhoneCode(phonenumber) {
return request({
url: '/auth/getPhoneCode/' + phonenumber,
method: 'post'
})
}
// 刷新方法 // 刷新方法
export function refreshToken() { export function refreshToken() {
return request({ return request({

View File

@ -7,6 +7,12 @@
<svg-icon slot="prefix" class="el-input__icon input-icon" icon-class="user"/> <svg-icon slot="prefix" class="el-input__icon input-icon" icon-class="user"/>
</el-input> </el-input>
</el-form-item> </el-form-item>
<el-form-item prop="phonenumber">
<el-input v-model="registerForm.phonenumber" auto-complete="off" placeholder="手机号" type="text">
<svg-icon slot="prefix" class="el-input__icon input-icon" icon-class="user"/>
</el-input>
</el-form-item>
<el-form-item prop="password"> <el-form-item prop="password">
<el-input <el-input
v-model="registerForm.password" v-model="registerForm.password"
@ -29,6 +35,11 @@
<svg-icon slot="prefix" class="el-input__icon input-icon" icon-class="password"/> <svg-icon slot="prefix" class="el-input__icon input-icon" icon-class="password"/>
</el-input> </el-input>
</el-form-item> </el-form-item>
<el-form-item prop="phoneCode">
<el-input v-model="registerForm.phoneCode" auto-complete="off" placeholder="验证码" type="text">
<svg-icon slot="prefix" class="el-input__icon input-icon" icon-class="user"/>
</el-input>
</el-form-item>
<el-form-item v-if="captchaEnabled" prop="code"> <el-form-item v-if="captchaEnabled" prop="code">
<el-input <el-input
v-model="registerForm.code" v-model="registerForm.code"
@ -44,6 +55,21 @@
</div> </div>
</el-form-item> </el-form-item>
<el-form-item style="width:100%;"> <el-form-item style="width:100%;">
<el-row gutter="10">
<el-col :span="12">
<el-button
:loading="loadingCode"
size="medium"
style="width:100%;"
type="primary"
@click.native.prevent="handleEdit(phonenumber)"
>
<span v-if="!loadingCode"></span>
<span v-else>...</span>
</el-button>
</el-col>
<el-col :span="12">
<el-button <el-button
:loading="loading" :loading="loading"
size="medium" size="medium"
@ -54,6 +80,12 @@
<span v-if="!loading"> </span> <span v-if="!loading"> </span>
<span v-else> ...</span> <span v-else> ...</span>
</el-button> </el-button>
</el-col>
</el-row>
<div style="float: right;"> <div style="float: right;">
<router-link :to="'/login'" class="link-type">使用已有账户登录</router-link> <router-link :to="'/login'" class="link-type">使用已有账户登录</router-link>
</div> </div>
@ -67,7 +99,8 @@
</template> </template>
<script> <script>
import {getCodeImg, register} from "@/api/login"; import { getCodeImg, getPhoneCode, register } from '@/api/login'
export default { export default {
name: "Register", name: "Register",
@ -83,6 +116,7 @@ export default {
codeUrl: "", codeUrl: "",
registerForm: { registerForm: {
username: "", username: "",
phonenumber:"",
password: "", password: "",
confirmPassword: "", confirmPassword: "",
code: "", code: "",
@ -93,6 +127,14 @@ export default {
{required: true, trigger: "blur", message: "请输入您的账号"}, {required: true, trigger: "blur", message: "请输入您的账号"},
{min: 2, max: 20, message: '用户账号长度必须介于 2 和 20 之间', trigger: 'blur'} {min: 2, max: 20, message: '用户账号长度必须介于 2 和 20 之间', trigger: 'blur'}
], ],
phonenumber: [
{required: true, trigger: "blur", message: "请输入您的手机号"},
{min: 11, max: 11, message: '用户手机号长度等于11', trigger: 'blur'}
],
phoneCode: [
{required: true, trigger: "blur", message: "请输入您的验证码"},
{min: 0, max: 4, message: '验证码长度必须介于 0 和 4 之间', trigger: 'blur'}
],
password: [ password: [
{required: true, trigger: "blur", message: "请输入您的密码"}, {required: true, trigger: "blur", message: "请输入您的密码"},
{min: 5, max: 20, message: '用户密码长度必须介于 5 和 20 之间', trigger: 'blur'} {min: 5, max: 20, message: '用户密码长度必须介于 5 和 20 之间', trigger: 'blur'}
@ -104,6 +146,7 @@ export default {
code: [{required: true, trigger: "change", message: "请输入验证码"}] code: [{required: true, trigger: "change", message: "请输入验证码"}]
}, },
loading: false, loading: false,
loadingCode: false,
captchaEnabled: true captchaEnabled: true
}; };
}, },
@ -111,6 +154,23 @@ export default {
this.getCode(); this.getCode();
}, },
methods: { methods: {
handleEdit(phonenumber){
phonenumber=this.registerForm.phonenumber
if (phonenumber.trim()){
this.$modal.msgSuccess("手机号为空");
this.loading=false
}
this.loading=true
getPhoneCode(phonenumber).then(
res=>{
alert(res.data)
this.$modal.msgSuccess("验证码获取成功"+res.data);
}
).catch(error=>{
this.$message.error("获取验证码失败:"+error.message);
this.loading=false
})
},
getCode() { getCode() {
getCodeImg().then(res => { getCodeImg().then(res => {
this.captchaEnabled = res.data.captchaEnabled === undefined ? true : res.data.captchaEnabled; this.captchaEnabled = res.data.captchaEnabled === undefined ? true : res.data.captchaEnabled;