Files
xyzw_web_helper/src/router/index.js
steve 74dfb4ec32 feat(TokenImport): 增加 URL 获取 Token 功能并优化手动输入流程
- 新增 URL表单,支持从 API 接口获取 Token
- 优化手动输入表单,增加自定义连接地址选项
- 移除等级、职业等可选信息
- 添加主题切换功能
-调整页面样式,适配暗黑主题
2025-09-02 21:22:54 +08:00

138 lines
2.9 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import { createRouter, createWebHistory } from 'vue-router'
import { useTokenStore } from '@/stores/tokenStore'
const routes = [
{
path: '/',
name: 'Home',
component: () => import('@/views/Home.vue'),
meta: {
title: '首页',
requiresToken: false
}
},
{
path: '/tokens',
name: 'TokenImport',
component: () => import('@/views/TokenImport.vue'),
meta: {
title: 'Token管理',
requiresToken: false
}
},
{
path: '/dashboard',
name: 'Dashboard',
component: () => import('@/views/Dashboard.vue'),
meta: {
title: '控制台',
requiresToken: true
}
},
{
path: '/profile',
name: 'Profile',
component: () => import('@/views/Profile.vue'),
meta: {
title: '个人设置',
requiresToken: true
}
},
{
path: '/daily-tasks',
name: 'DailyTasks',
component: () => import('@/views/DailyTasks.vue'),
meta: {
title: '日常任务',
requiresToken: true
}
},
{
path: '/game-features',
name: 'GameFeatures',
component: () => import('@/views/GameFeatures.vue'),
meta: {
title: '游戏功能',
requiresToken: true
}
},
{
path: '/message-test',
name: 'MessageTest',
component: () => import('@/components/MessageTester.vue'),
meta: {
title: '消息测试',
requiresToken: true
}
},
{
path: '/websocket-test',
name: 'WebSocketTest',
component: () => import('@/components/WebSocketTester.vue'),
meta: {
title: 'WebSocket测试',
requiresToken: true
}
},
// 兼容旧路由重定向到新的token管理页面
{
path: '/login',
redirect: '/tokens'
},
{
path: '/register',
redirect: '/tokens'
},
{
path: '/game-roles',
redirect: '/tokens'
},
{
path: '/:pathMatch(.*)*',
name: 'NotFound',
component: () => import('@/views/NotFound.vue'),
meta: {
title: '页面不存在'
}
}
]
const router = createRouter({
history: createWebHistory(),
routes,
scrollBehavior(to, from, savedPosition) {
if (savedPosition) {
return savedPosition
} else {
return { top: 0 }
}
}
})
// 导航守卫
router.beforeEach((to, from, next) => {
const tokenStore = useTokenStore()
// 设置页面标题
document.title = to.meta.title ? `${to.meta.title} - XYZW 游戏管理系统` : 'XYZW 游戏管理系统'
// 检查是否需要Token
if (to.meta.requiresToken && !tokenStore.hasTokens) {
next('/tokens')
} else if (to.name === 'TokenImport' && tokenStore.hasTokens && tokenStore.selectedToken) {
// 如果已有token且已选择重定向到控制台
next('/dashboard')
} else if (to.path === '/' && tokenStore.hasTokens) {
// 首页重定向逻辑
if (tokenStore.selectedToken) {
next('/dashboard')
} else {
next('/tokens')
}
} else {
next()
}
})
export default router