116 lines
3.0 KiB
JavaScript
116 lines
3.0 KiB
JavaScript
|
|
import { createRouter, createWebHistory } from 'vue-router';
|
|||
|
|
import Home from '../pages/home/index.vue';
|
|||
|
|
import Login from '../pages/login/index.vue';
|
|||
|
|
import UserManage from '../pages/usermanage/index.vue';
|
|||
|
|
import ComManage from '../pages/commanage/index.vue';
|
|||
|
|
import ScopeManage from '../pages/scopemanage/index.vue';
|
|||
|
|
import User from '../pages/user/index.vue';
|
|||
|
|
import SwitchSelection from '../pages/switchselection/index.vue';
|
|||
|
|
import PanelSelection from '../pages/panelselection/index.vue';
|
|||
|
|
import Log from '../pages/log/index.vue';
|
|||
|
|
import DicManage from '../pages/dicmanage/index.vue';
|
|||
|
|
|
|||
|
|
|
|||
|
|
const routes = [
|
|||
|
|
{
|
|||
|
|
path: '/',
|
|||
|
|
// 动态重定向到登录页或主页
|
|||
|
|
redirect: () => {
|
|||
|
|
const isAuthenticated = localStorage.getItem('token');
|
|||
|
|
return isAuthenticated ? '/home' : '/login';
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: '/login',
|
|||
|
|
name: '登录',
|
|||
|
|
component: Login
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: '/home',
|
|||
|
|
name: '主页',
|
|||
|
|
component: Home,
|
|||
|
|
meta: { requiresAuth: true } // 需要认证的路由
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: '/log',
|
|||
|
|
name: '日志中心',
|
|||
|
|
component: Log,
|
|||
|
|
meta: { requiresAuth: true } // 需要认证的路由
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: '/usermanage',
|
|||
|
|
name: '用户管理',
|
|||
|
|
component: UserManage,
|
|||
|
|
meta: { requiresAuth: true } // 需要认证的路由
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: '/commanage',
|
|||
|
|
name: '组织管理',
|
|||
|
|
component: ComManage,
|
|||
|
|
meta: { requiresAuth: true } // 需要认证的路由
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: '/scopemanage',
|
|||
|
|
name: '权限管理',
|
|||
|
|
component: ScopeManage,
|
|||
|
|
meta: { requiresAuth: true } // 需要认证的路由
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: '/dicmanage',
|
|||
|
|
name: '字典管理',
|
|||
|
|
component: DicManage,
|
|||
|
|
meta: { requiresAuth: true } // 需要认证的路由
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: '/user',
|
|||
|
|
name: '个人中心',
|
|||
|
|
component: User,
|
|||
|
|
meta: { requiresAuth: true } // 需要认证的路由
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: '/switchselection',
|
|||
|
|
name: '开关选型',
|
|||
|
|
component: SwitchSelection,
|
|||
|
|
meta: { requiresAuth: true } // 需要认证的路由
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: '/panelselection',
|
|||
|
|
name: '开关选型',
|
|||
|
|
component: PanelSelection,
|
|||
|
|
meta: { requiresAuth: true } // 需要认证的路由
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: '/:pathMatch(.*)*',
|
|||
|
|
name: '404错误',
|
|||
|
|
component: () => import('../pages/404/index.vue') // 404页面
|
|||
|
|
},
|
|||
|
|
|
|||
|
|
|
|||
|
|
];
|
|||
|
|
|
|||
|
|
const router = createRouter({
|
|||
|
|
history: createWebHistory(),
|
|||
|
|
routes
|
|||
|
|
});
|
|||
|
|
|
|||
|
|
|
|||
|
|
// 路由守卫
|
|||
|
|
router.beforeEach((to, from, next) => {
|
|||
|
|
const isAuthenticated = localStorage.getItem('token') // 用localStorage存储token
|
|||
|
|
const username = localStorage.getItem('username') // 获取用户名
|
|||
|
|
|
|||
|
|
if (to.meta.requiresAuth && !isAuthenticated) {
|
|||
|
|
// 如果需要认证且没有token,则跳转到登录页面
|
|||
|
|
next('/login')
|
|||
|
|
} else if ((to.path == '/usermanage' || to.path == '/scopemanage') && (username != 'Admin' && username != 'MoMoWen')) {
|
|||
|
|
// 如果访问的是用户管理页面但用户名不是Admin,则跳转到主页
|
|||
|
|
next('/home')
|
|||
|
|
} else {
|
|||
|
|
// 其他情况正常放行
|
|||
|
|
sessionStorage.setItem('currentRoute', to.fullPath)
|
|||
|
|
next()
|
|||
|
|
}
|
|||
|
|
})
|
|||
|
|
|
|||
|
|
export default router;
|