import { createRouter, createWebHistory, RouteRecordRaw } from 'vue-router' // 登录页面 import LoginPage from '@/views/LoginPage.vue' // 后台管理系统组件 import AdminLayout from '@/layouts/AdminLayout.vue' const routes: Array = [ { path: '/', redirect: '/login' }, { path: '/login', name: 'login', component: LoginPage }, // 后台管理系统路由 { path: '/admin', component: AdminLayout, redirect: '/admin/dashboard', children: [ // 数据概览 { path: 'dashboard', name: 'admin-dashboard', component: () => import('@/views/admin/dashboard/index.vue') }, // 内容管理 { path: 'news-policy', name: 'admin-news-policy', component: () => import('@/views/admin/content/news-policy.vue') }, { path: 'news-policy/create', name: 'admin-news-policy-create', component: () => import('@/views/admin/content/news-policy-form.vue') }, { path: 'news-policy/edit/:id', name: 'admin-news-policy-edit', component: () => import('@/views/admin/content/news-policy-form.vue') }, { path: 'smart-qa', name: 'admin-smart-qa', component: () => import('@/views/admin/content/smart-qa.vue') }, { path: 'smart-qa/create', name: 'admin-smart-qa-create', component: () => import('@/views/admin/content/smart-qa-form.vue') }, { path: 'smart-qa/edit/:id', name: 'admin-smart-qa-edit', component: () => import('@/views/admin/content/smart-qa-form.vue') }, // 科技资源 { path: 'tech-resources', name: 'admin-tech-resources', component: () => import('@/views/admin/tech-resources/resources.vue') }, { path: 'tech-resources/create', name: 'admin-tech-resources-create', component: () => import('@/views/admin/tech-resources/resources-form.vue') }, { path: 'tech-resources/edit/:id', name: 'admin-tech-resources-edit', component: () => import('@/views/admin/tech-resources/resources-form.vue') }, { path: 'talent-profile', name: 'admin-talent-profile', component: () => import('@/views/admin/tech-resources/talent-profile.vue') }, { path: 'talent-profile/create', name: 'admin-talent-profile-create', component: () => import('@/views/admin/tech-resources/talent-profile-form.vue') }, { path: 'talent-profile/edit/:id', name: 'admin-talent-profile-edit', component: () => import('@/views/admin/tech-resources/talent-profile-form.vue') }, { path: 'tech-projects', name: 'admin-tech-projects', component: () => import('@/views/admin/tech-resources/projects.vue') }, { path: 'tech-projects/create', name: 'admin-tech-projects-create', component: () => import('@/views/admin/tech-resources/projects-form.vue') }, { path: 'tech-projects/edit/:id', name: 'admin-tech-projects-edit', component: () => import('@/views/admin/tech-resources/projects-form.vue') }, { path: 'tech-achievements', name: 'admin-tech-achievements', component: () => import('@/views/admin/tech-resources/achievements.vue') }, { path: 'tech-achievements/create', name: 'admin-tech-achievements-create', component: () => import('@/views/admin/tech-resources/achievements-form.vue') }, { path: 'tech-achievements/edit/:id', name: 'admin-tech-achievements-edit', component: () => import('@/views/admin/tech-resources/achievements-form.vue') }, { path: 'tech-reports', name: 'admin-tech-reports', component: () => import('@/views/admin/tech-resources/reports.vue') }, { path: 'tech-reports/create', name: 'admin-tech-reports-create', component: () => import('@/views/admin/tech-resources/reports-form.vue') }, { path: 'tech-reports/edit/:id', name: 'admin-tech-reports-edit', component: () => import('@/views/admin/tech-resources/reports-form.vue') }, { path: 'tech-awards', name: 'admin-tech-awards', component: () => import('@/views/admin/tech-resources/awards.vue') }, { path: 'tech-awards/create', name: 'admin-tech-awards-create', component: () => import('@/views/admin/tech-resources/awards-form.vue') }, { path: 'tech-awards/edit/:id', name: 'admin-tech-awards-edit', component: () => import('@/views/admin/tech-resources/awards-form.vue') }, // 系统管理 { path: 'users', name: 'admin-users', component: () => import('@/views/admin/system/users.vue') }, { path: 'roles', name: 'admin-roles', component: () => import('@/views/admin/system/roles.vue') }, { path: 'permissions', name: 'admin-permissions', component: () => import('@/views/admin/system/permissions.vue') }, { path: 'permission-config', name: 'admin-permission-config', component: () => import('@/views/admin/system/permission-config.vue') }, { path: 'dict', name: 'admin-dict', component: () => import('@/views/admin/system/dict.vue') }, { path: 'talent-unit', name: 'admin-talent-unit', component: () => import('@/views/admin/tech-resources/talent-unit.vue') }, { path: 'talent-unit/create', name: 'admin-talent-unit-create', component: () => import('@/views/admin/tech-resources/talent-unit-form.vue') }, { path: 'talent-unit/edit/:id', name: 'admin-talent-unit-edit', component: () => import('@/views/admin/tech-resources/talent-unit-form.vue') }, { path: 'talent-unit/view/:id', name: 'admin-talent-unit-view', component: () => import('@/views/admin/tech-resources/talent-unit-form.vue') }, { path: 'talent-resume', name: 'admin-talent-resume', component: () => import('@/views/admin/tech-resources/talent-resume.vue') }, { path: 'talent-resume/create', name: 'admin-talent-resume-create', component: () => import('@/views/admin/tech-resources/talent-resume-form.vue') }, { path: 'talent-resume/edit/:id', name: 'admin-talent-resume-edit', component: () => import('@/views/admin/tech-resources/talent-resume-form.vue') }, { path: 'talent-resume/view/:id', name: 'admin-talent-resume-view', component: () => import('@/views/admin/tech-resources/talent-resume-form.vue') } ] } ] const router = createRouter({ history: createWebHistory(process.env.BASE_URL), routes }) // 路由守卫 router.beforeEach((to, from, next) => { const token = localStorage.getItem('token') // 如果访问登录页面 if (to.path === '/login') { // 如果已经登录,重定向到后台首页 if (token) { next('/admin/dashboard') } else { next() } return } // 如果访问后台页面 if (to.path.startsWith('/admin')) { // 检查是否已登录 if (!token) { next('/login') } else { next() } return } next() }) export default router