import { createRouter, createWebHistory } from 'vue-router' // 路由配置 const routes = [ { path: '/', name: 'Home', component: () => import('../views/HomeView.vue'), meta: { requiresAuth: true } }, { path: '/settings', name: 'Settings', component: () => import('../views/SettingsView.vue'), meta: { requiresAuth: true } }, { path: '/auth', name: 'Auth', component: () => import('../views/AuthView.vue'), meta: { requiresAuth: false } }, { path: '/conversations', name: 'Conversations', component: () => import('../views/ConversationView.vue'), meta: { requiresAuth: true } }, { path: '/tools', name: 'Tools', component: () => import('../views/ToolsView.vue'), meta: { requiresAuth: true } }, { path: '/agents', name: 'Agents', component: () => import('../views/AgentView.vue'), meta: { requiresAuth: true } }, { path: '/agents/:taskId', name: 'AgentTask', component: () => import('../views/AgentView.vue'), meta: { requiresAuth: true } }, // 首页重定向 { path: '/home', redirect: '/' }, // 404 重定向 { path: '/:pathMatch(.*)*', redirect: '/' } ] // 创建路由实例 const router = createRouter({ history: createWebHistory(import.meta.env.BASE_URL), routes, scrollBehavior(to, from, savedPosition) { if (savedPosition) { return savedPosition } else { return { top: 0 } } } }) // 路由守卫 router.beforeEach((to, from, next) => { const token = localStorage.getItem('access_token') const requiresAuth = to.matched.some(record => record.meta.requiresAuth) if (requiresAuth && !token) { // 需要认证但未登录,重定向到登录页 next({ name: 'Auth', query: { redirect: to.fullPath } }) } else if (to.name === 'Auth' && token) { // 已登录访问登录页,重定向到首页 next({ name: 'Home' }) } else { next() } }) export default router