diff --git a/src/api/account.js b/src/api/account.js index 09813e5..cf3c517 100644 --- a/src/api/account.js +++ b/src/api/account.js @@ -149,4 +149,12 @@ export function queryPkDetail(data) { //退出登录 export function logout(data) { return postAxios({ url: 'user/logout',data}) +} +//忘记密码 +export function forgetPassword(data) { + return postAxios({ url: 'user/forgetMail', data }) +} +//重设密码 +export function resetPassword(data) { + return postAxios({ url: 'user/resetPassword', data }) } \ No newline at end of file diff --git a/src/router/index.js b/src/router/index.js index e6b04ac..307cd54 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -2,6 +2,9 @@ import { createRouter, createWebHashHistory, createWebHistory } from 'vue-router import HomeView from '../views/HomeView.vue' import emailRegistration from '../views/emailRegistration.vue' import ActivateEmail from '../views/ActivateEmail.vue' +import activationSuccessful from '../views/activationSuccessful.vue' +import forgetPassword from '../views/forgetPassword.vue' +import resetPassword from '../views/resetPassword.vue' import { setStorage , getStorage } from '@/utils/storage.js'; const routes = [ { @@ -19,6 +22,22 @@ const routes = [ name: 'ActivateEmail', component: ActivateEmail }, + { + path: '/activationSuccessful', + name: 'activationSuccessful', + component: activationSuccessful + }, + { + path: '/forgetPassword', + name: 'forgetPassword', + component: forgetPassword + }, + { + path: '/resetPassword', + name: 'resetPassword', + component: resetPassword + }, + { path: '/nav', name: 'nav', diff --git a/src/views/HomeView.vue b/src/views/HomeView.vue index ea6813a..ec1a0ed 100644 --- a/src/views/HomeView.vue +++ b/src/views/HomeView.vue @@ -53,9 +53,15 @@
+
还没有账号?
注册
+
+
已有账号?
+
忘记密码?
+
+
@@ -144,7 +150,9 @@ function fuSWitch() { function register() { router.push("/emailRegistration"); } - +function forgetPassword() { + router.push("/forgetPassword"); +} // 获取二维码 function fetchQrcode() { getVxQrcode().then((res) => { @@ -226,7 +234,7 @@ onUnmounted(() => { width: 627px; height: 40px; display: flex; - justify-content: flex-end; + justify-content:space-between; } .register-text { font-size: 18px; @@ -234,6 +242,9 @@ onUnmounted(() => { font-weight: bold; margin-right: 10px; } +.register-content{ + display: flex; +} .register-btn { font-size: 18px; color: #5fdbde; diff --git a/src/views/activationSuccessful.vue b/src/views/activationSuccessful.vue new file mode 100644 index 0000000..315b3b6 --- /dev/null +++ b/src/views/activationSuccessful.vue @@ -0,0 +1,49 @@ + + + + diff --git a/src/views/emailRegistration.vue b/src/views/emailRegistration.vue index 462d8b6..5afdd7d 100644 --- a/src/views/emailRegistration.vue +++ b/src/views/emailRegistration.vue @@ -38,9 +38,13 @@
已向您的{{Email}}邮箱发送了一封验证邮件,请点击邮件中的链接完成注册。
-
- 重发邮件 -
+
+ {{ isCounting ? `${countdown}秒后重发` : '重发邮件' }} +
@@ -67,6 +71,23 @@ const ConfirmPassword = ref("");// 确认密码 const token = tokenStore() const user = UserStore() const userNamebtn = ref(false) +const countdown = ref(0); // 倒计时秒数 +const isCounting = ref(false); // 是否正在倒计时 +let timer = null; // 定时器 + +function startCountdown() { + countdown.value = 60; + isCounting.value = true; + timer = setInterval(() => { + countdown.value--; + if (countdown.value <= 0) { + clearInterval(timer); + isCounting.value = false; + } + }, 1000); +} + + // 用户名失去焦点 function userNameBlur() { if (userName.value.length < 6 || userName.value.length > 16 || userName.value == '' || userName.value == null) { @@ -121,6 +142,7 @@ function nextStep() { check(res.id); token.setToken(res.token); setStorage('token', res.token) + startCountdown(); }).catch(err => {}); } @@ -146,6 +168,7 @@ function pollstop() { function ResendEmail() { resendEmail({mailAddress: Email.value,type:1}).then(res => { ElMessage.success('邮件已重新发送'); + startCountdown(); }).catch(err => {}); } //返回登录页 diff --git a/src/views/forgetPassword.vue b/src/views/forgetPassword.vue new file mode 100644 index 0000000..7b20bfb --- /dev/null +++ b/src/views/forgetPassword.vue @@ -0,0 +1,334 @@ + + + + + diff --git a/src/views/resetPassword.vue b/src/views/resetPassword.vue new file mode 100644 index 0000000..d157847 --- /dev/null +++ b/src/views/resetPassword.vue @@ -0,0 +1,300 @@ + + + + + + +