|
|
import { createRouter, createWebHistory } from 'vue-router'import Layout from '../layout/Layout.vue'
const routes = [ { path: '/', redirect: '/userPermissions/market' }, { path: '/login', name: 'login', component: () => import('../views/Login.vue'), meta: { title: '登录', hiddenSidebar: true, requireAuth: false // 登录页不需要登录
} }, { path: '', component: Layout, meta: { requireAuth: true // Layout下所有子路由都需要登录
}, children: [ { path: 'userPermissions', name: 'userPermissions', meta: { title: '用户权限管理', icon: "UserFilled", showSidebar: true, isParentNav: true }, children: [ { path: 'market', name: 'market', component: () => import('../views/UserPermissions/Market.vue'), meta: { title: '行情期限', showSidebar: true } }, { path: 'module', name: 'module', component: () => import('../views/UserPermissions/Module.vue'), meta: { title: '模块期限', showSidebar: true } }, // 深度探索--操作日志
{ path: 'logDeepexplore', name: 'logDeepexplore', component: () => import('../views/UserPermissions/LogDeepExplore.vue'), meta: { hidden: true } }, // DeepMate--操作日志
{ path: 'logDeepMate', name: 'logDeepMate', component: () => import('../views/UserPermissions/LogDeepMate.vue'), meta: { hidden: true } }, // 行情期限--操作日志
{ path: 'logMarket', name: 'logMarket', component: () => import('../views/UserPermissions/LogMarket.vue'), meta: { hidden: true } }, // 导出列表页面
{ path: 'export', name: 'export', component: () => import('../views/UserPermissions/Export.vue'), meta: { hidden: true } } ] } ] }]
const router = createRouter({ history: createWebHistory(import.meta.env.BASE_URL), routes})
// 全局前置守卫
router.beforeEach((to, from, next) => { // 登录状态判断
const token = localStorage.getItem('token')
// 权限拦截逻辑
if (to.meta.requireAuth) { // 目标页面需要登录:已登录→放行,未登录→跳登录页
if (token) { next() // 已登录,放行
} else { next({ path: '/login' }) // 跳登录页
} } else { // 目标页面不需要登录:已登录→跳首页,未登录→放行
if (token && to.path === '/login') { next('/') // 自动跳首页
} else { next() // 未登录,放行到登录页
} }})
export default router
|