refactor reset password functions

This commit is contained in:
RockYang
2024-08-19 12:05:00 +08:00
parent 2499bd9ad3
commit 08379c21ac
6 changed files with 82 additions and 41 deletions

View File

@@ -6,27 +6,44 @@
width="540px"
:before-close="close"
:title="title"
class="reset-pass-dialog"
>
<div class="form">
<el-form :model="form" label-width="80px" label-position="left">
<el-form-item label="手机号">
<el-input v-model="form.username" placeholder="手机号"/>
</el-form-item>
<el-form-item label="验证码">
<div class="code-box">
<el-input v-model="form.code" maxlength="6"/>
<send-msg size="" :receiver="form.username" type="mobile"/>
</div>
<el-row :gutter="20">
<el-col :span="12">
<el-tabs v-model="form.type" class="demo-tabs">
<el-tab-pane label="手机号验证" name="mobile">
<el-form-item label="手机号">
<el-input v-model="form.mobile" placeholder="请输入手机号"/>
</el-form-item>
<el-form-item label="验证码">
<el-row class="code-row">
<el-col :span="16">
<el-input v-model="form.code" maxlength="6"/>
</el-col>
<el-col :span="8" class="send-button">
<send-msg size="" :receiver="form.mobile" type="mobile"/>
</el-col>
</el-row>
</el-form-item>
</el-col>
<el-col :span="12" style="justify-content: right">
</el-tab-pane>
<el-tab-pane label="邮箱验证" name="email">
<el-form-item label="邮箱地址">
<el-input v-model="form.email" placeholder="请输入邮箱地址"/>
</el-form-item>
<el-form-item label="验证码">
<el-row class="code-row">
<el-col :span="16">
<el-input v-model="form.code" maxlength="6"/>
</el-col>
<el-col :span="8" class="send-button">
<send-msg size="" :receiver="form.email" type="email"/>
</el-col>
</el-row>
</el-form-item>
</el-tab-pane>
</el-tabs>
</el-col>
</el-row>
</el-form-item>
<el-form-item label="新密码">
<el-input v-model="form.password" type="password"/>
</el-form-item>
@@ -65,7 +82,9 @@ const showDialog = computed(() => {
const title = ref('重置密码')
const form = ref({
username: '',
mobile: '',
email: '',
type: 'mobile',
code: '',
password: '',
repass: ''
@@ -74,12 +93,12 @@ const form = ref({
const emits = defineEmits(['hide']);
const save = () => {
if (!validateMobile(form.value.username) && !validateEmail(form.value.username)) {
return ElMessage.error("请输入正确的手机号码/邮箱地址");
}
if (form.value.code === '') {
return ElMessage.error("请输入验证码");
}
if (form.value.password.length < 8) {
return ElMessage.error("密码长度必须大于8位");
}
if (form.value.repass !== form.value.password) {
return ElMessage.error("两次输入密码不一致");
}
@@ -101,15 +120,24 @@ const close = function () {
<style lang="stylus">
.reset-pass {
.form {
padding 10px 20px
padding 0 20px
}
.code-box {
display: flex;
justify-content: space-between;
width: 100%
.code-row {
width 100%
.send-button {
padding-left 10px
}
}
.el-dialog__footer {
text-align center
.reset-pass-dialog {
.el-dialog__footer {
text-align center
padding-top 0
}
.el-dialog__body {
padding 0
}
}
}

View File

@@ -48,7 +48,7 @@
<el-divider class="divider">其他登录方式</el-divider>
<div class="clogin">
<a :href="wechatLoginURL"><i class="iconfont icon-wechat"></i></a>
<a :href="wechatLoginURL" @click="setRoute(router.currentRoute.value.path)"><i class="iconfont icon-wechat"></i></a>
</div>
</div>
</div>
@@ -77,6 +77,7 @@ import ResetPass from "@/components/ResetPass.vue";
import {showMessageError} from "@/utils/dialog";
import Captcha from "@/components/Captcha.vue";
import QRCode from "qrcode";
import {setRoute} from "@/store/system";
const router = useRouter();
const title = ref('Geek-AI');

View File

@@ -160,7 +160,7 @@ import {httpGet, httpPost} from "@/utils/http";
import Compressor from 'compressorjs';
import {dateFormat, isWeChatBrowser, showLoginDialog} from "@/utils/libs";
import {ElMessage} from "element-plus";
import {checkSession} from "@/store/cache";
import {checkSession, getSystemInfo} from "@/store/cache";
import {useRouter} from "vue-router";
import {removeUserToken} from "@/store/session";
import bus from '@/store/eventbus'

View File

@@ -165,7 +165,7 @@ import {onMounted, onUnmounted, ref} from "vue"
import {Delete} from "@element-plus/icons-vue";
import {httpGet, httpPost} from "@/utils/http";
import Clipboard from "clipboard";
import {checkSession} from "@/store/cache";
import {checkSession, getSystemInfo} from "@/store/cache";
import {useRouter} from "vue-router";
import {getSessionId} from "@/store/session";
import {
@@ -183,7 +183,6 @@ const listBoxHeight = ref(window.innerHeight - 40)
const mjBoxHeight = ref(window.innerHeight - 150)
const item = ref({})
const isLogin = ref(false)
const activeColspan = ref([""])
window.onresize = () => {
listBoxHeight.value = window.innerHeight - 40