feat:修改存在的问题
This commit is contained in:
@@ -1,12 +1,6 @@
|
||||
<template>
|
||||
<div class="loginView" v-loading="loginView">
|
||||
<div class="wrapper-content" v-if="showLogin">
|
||||
<!-- <div class="content-nav">
|
||||
<div class="nav-left">
|
||||
<img src="../assets/logo/logo.png" />
|
||||
<div>多人互动白板</div>
|
||||
</div>
|
||||
</div> -->
|
||||
<div class="loginView">
|
||||
<div class="wrapper-content" >
|
||||
<div class="login-form">
|
||||
<div class="selected-rectangle"></div>
|
||||
<el-form ref="loginRef" class="form-info" :model="loginForm" :rules="loginRules">
|
||||
@@ -40,26 +34,26 @@
|
||||
import { useUserStore } from '@/stores/modules/user.js'
|
||||
import { watch, ref, getCurrentInstance, onMounted } from 'vue'
|
||||
import { useRoute, useRouter } from 'vue-router'
|
||||
import { ElNotification,ElMessage } from 'element-plus'
|
||||
import { getInfo } from "@/api/login";
|
||||
import { ElNotification,ElMessage } from 'element-plus'
|
||||
import CryptoJS from 'crypto-js';
|
||||
import { useMeterStore } from '@/stores/modules/meter'
|
||||
|
||||
const userStore = useUserStore()
|
||||
const router = useRouter()
|
||||
const route = useRoute()
|
||||
const { proxy } = getCurrentInstance()
|
||||
const showLogin = ref(false)
|
||||
const { proxy } = getCurrentInstance()
|
||||
|
||||
const meterStore = useMeterStore()
|
||||
|
||||
|
||||
const redirect = ref(undefined);
|
||||
const loginView = ref(false)
|
||||
const loginView = ref(true)
|
||||
|
||||
watch(() => router.currentRoute.value, (newRoute) => {
|
||||
redirect.value = newRoute.query && newRoute.query.redirect;
|
||||
}, { immediate: true });
|
||||
// 监听路由变化,获取重定向参数
|
||||
// watch(() => route, (newRoute) => {
|
||||
// redirect.value = newRoute.query && newRoute.query.redirect;
|
||||
// console.log('重定向路径:', redirect.value);
|
||||
// }, { immediate: true });
|
||||
|
||||
const loginForm = ref({
|
||||
username: '',
|
||||
@@ -74,7 +68,7 @@ const loginRules = {
|
||||
const loading = ref(false)
|
||||
|
||||
|
||||
function handleLogin() {
|
||||
function handleLogin() {
|
||||
proxy.$refs.loginRef.validate((valid) => {
|
||||
if (valid) {
|
||||
loading.value = true
|
||||
@@ -86,11 +80,8 @@ function handleLogin() {
|
||||
return
|
||||
}
|
||||
const secretKey = ((loginForm.value.username + localStorage?.getItem('UDID')).toLowerCase()).replaceAll('-', ''); // 用户名+UDID(32位16进制,全小写)
|
||||
|
||||
const randomChars = generateRandomChars(6);
|
||||
|
||||
const message = `Gx${randomChars}${loginForm.value.password}`;
|
||||
|
||||
const ciphertext = CryptoJS.Blowfish.encrypt(message, secretKey).toString();
|
||||
// 调用action的登录方法
|
||||
userStore
|
||||
@@ -101,14 +92,7 @@ function handleLogin() {
|
||||
})
|
||||
.then(async (res) => {
|
||||
const userInfo = JSON.parse(sessionStorage.getItem('userData'))
|
||||
router.push({
|
||||
path: '/coordinate',
|
||||
})
|
||||
// router.push({
|
||||
// path: '/whiteboard',
|
||||
// query: { room_uid: 'nxst-ok4j' }
|
||||
// })
|
||||
|
||||
await handleLoginSuccess();
|
||||
})
|
||||
.catch((e) => {
|
||||
console.log('登录失败', e)
|
||||
@@ -119,6 +103,42 @@ function handleLogin() {
|
||||
requestNotificationPermission()
|
||||
}
|
||||
|
||||
/**
|
||||
* 处理登录成功后的跳转逻辑
|
||||
*/
|
||||
async function handleLoginSuccess() {
|
||||
try {
|
||||
// 如果有重定向路径且不是登录页,则跳转到重定向页面
|
||||
if (redirect.value && redirect.value !== '/login') {
|
||||
console.log('跳转到重定向页面:', redirect.value);
|
||||
|
||||
// 确保路由存在,如果不存在则跳转到默认页面
|
||||
try {
|
||||
// 解析路径,检查是否是有效路由
|
||||
const resolved = router.resolve(redirect.value);
|
||||
if (resolved.matched.length > 0) {
|
||||
await router.push(redirect.value);
|
||||
} else {
|
||||
console.warn('重定向路径无效,跳转到默认页面');
|
||||
await router.push('/coordinate');
|
||||
}
|
||||
} catch (error) {
|
||||
console.warn('重定向跳转失败,跳转到默认页面:', error);
|
||||
await router.push('/coordinate');
|
||||
}
|
||||
} else {
|
||||
// 没有重定向或重定向到登录页,跳转到默认页面
|
||||
await router.push('/coordinate');
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('登录跳转异常:', error);
|
||||
// 降级处理:跳转到默认页面
|
||||
await router.push('/coordinate');
|
||||
} finally {
|
||||
loading.value = false;
|
||||
}
|
||||
}
|
||||
|
||||
// 生成随机字符串
|
||||
function generateRandomChars(length) {
|
||||
const chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
|
||||
@@ -144,27 +164,6 @@ function requestNotificationPermission() {
|
||||
|
||||
onMounted(async () => {
|
||||
meterStore.initUdid()
|
||||
try {
|
||||
loginView.value = true
|
||||
const res = await getInfo("self");
|
||||
showLogin.value = false;
|
||||
if (res.meta.code === 401) {
|
||||
showLogin.value = true;
|
||||
} else {
|
||||
// router.push({
|
||||
// path: '/whiteboard',
|
||||
// query: { room_uid: 'nxst-ok4j' }
|
||||
// })
|
||||
router.push({
|
||||
path: '/coordinate',
|
||||
})
|
||||
}
|
||||
loginView.value = false
|
||||
} catch (err) {
|
||||
console.warn("⚠️ 用户信息校验失败:", err);
|
||||
} finally {
|
||||
loginView.value = false
|
||||
}
|
||||
});
|
||||
|
||||
</script>
|
||||
|
||||
Reference in New Issue
Block a user