import { createRouter, createWebHistory } from 'vue-router' import type { RouteRecordRaw } from 'vue-router' import { TOKEN_KEY } from '@/utils/constants' const routes: RouteRecordRaw[] = [ { path: '/login', name: 'Login', component: () => import('@/views/login/index.vue'), meta: { requiresAuth: false } }, { path: '/', name: 'Layout', component: () => import('@/views/layout/index.vue'), redirect: '/log', children: [ { path: 'user', name: 'User', component: () => import('@/views/user/index.vue'), meta: { title: '人员管理', icon: 'User' } }, { path: 'template', name: 'Template', component: () => import('@/views/template/index.vue'), meta: { title: '模板管理', icon: 'Document' } }, { path: 'log', name: 'Log', component: () => import('@/views/log/index.vue'), meta: { title: '工作日志', icon: 'Notebook' } } ] } ] const router = createRouter({ history: createWebHistory(), routes }) // 路由守卫 router.beforeEach((to, _from, next) => { const token = localStorage.getItem(TOKEN_KEY) if (to.meta.requiresAuth === false) { next() } else if (!token && to.path !== '/login') { next('/login') } else if (token && to.path === '/login') { next('/') } else { next() } }) export default router