import {createRouter, createWebHistory, RouteRecordRaw} from 'vue-router'; import { HOME_NAME, HOME_PATH, LOGIN_NAME, LOGIN_PATH, MAIN_NAME, MAIN_PATH, MENU_NAME, MENU_PATH, REGISTER_NAME, REGISTER_PATH, ROLE_NAME, ROLE_PATH, USER_NAME, USER_PATH, } from './name'; import Home from '@pages/home/index.vue'; import Login from '@pages/login/index.vue'; import {storeToRefs, useUserStore} from '@stores'; const childrenRoures: RouteRecordRaw[] = [ { path: MAIN_PATH, name: MAIN_NAME, component: () => import('@pages/main/index.vue'), }, { path: MENU_PATH, name: MENU_NAME, component: () => import('@pages/menu'), }, { path: ROLE_PATH, name: ROLE_NAME, component: () => import('@pages/role'), }, { path: USER_PATH, name: USER_NAME, component: () => import('@pages/user'), }, ]; const routes: RouteRecordRaw[] = [ { path: HOME_PATH, component: Home, name: HOME_NAME, redirect: MAIN_PATH, children: childrenRoures, }, {path: LOGIN_PATH, component: Login, name: LOGIN_NAME}, { path: REGISTER_PATH, name: REGISTER_NAME, component: () => import('@pages/register/index.vue'), }, {path: '/:pathMatch(.*)*', name: 'NOT_FOUND_PATH', component: () => import('@pages/not-found/index.vue')}, ]; export const router = createRouter({ history: createWebHistory(), routes, }); router.beforeEach(function(to) { const {name} = to; if (name) { const userStore = useUserStore(); const {user} = storeToRefs(userStore); if (!user.value.token) { // 判断是否登录 const matchList = [LOGIN_NAME, REGISTER_NAME]; if (!matchList.includes(name as symbol)) return LOGIN_PATH; } } }); export * from './name';