feat:修改存在的问题

This commit is contained in:
leilei
2025-11-03 09:03:32 +08:00
parent 528170fe2f
commit df359d01cc
37 changed files with 7182 additions and 913 deletions

View File

@@ -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>