import Vue from 'vue' import VueRouter from 'vue-router' import { getToken } from "../utils/auth"; Vue.use(VueRouter); const routes = [ { path: '/', redirect: '/login' }, { path: '/login', component: () => import('../views/login') }, { path: '/register', component: () => import('../views/register') }, { path: '/layout', component: () => import('../layout'), children: [ { path: '/user', component: () => import('../views/user') }, { path: '', redirect: '/home' }, { path: '/home', component: () => import('../views/home') }, { path: '/power', component: () => import('../views/power') }, { path: '/role', component: () => import('../views/role') }, { path: '/device/parameter', component: () => import('../views/device/parameter'), }, { path: '/device/alarm', component: () => import('../views/device/alarm') }, { path: '/device/iostate', component: () => import('../views/device/iostate') }, { path: '/device/control', component: () => import('../views/device/control') }, { path: '/Electrical/Parameter', component: () => import('../views/Electrical/Parameter') }, { path: '/Electrical/Action', component: () => import('../views/Electrical/Action') }, { path: '/Electrical/Sign', component: () => import('../views/Electrical/Sign') }, { path: '/Electrical/State', component: () => import('../views/Electrical/State') }, { path: '/Electrical/alarm', component: () => import('../views/Electrical/alarm') }, { path: '/Electrical/Servomanual', component: () => import('../views/Electrical/Servomanual') }, { path: '/Electrical/ServoManualone', component: () => import('../views/Electrical/ServoManualone') }, { path: '/Electrical/Parameter1', component: () => import('../views/Electrical/Parameter1') }, { path: '/Electrical/Parameter2', component: () => import('../views/Electrical/Parameter2') }, { path: '/Electrical/Positioning1', component: () => import('../views/Electrical/Positioning1') }, { path: '/Electrical/Positioning2', component: () => import('../views/Electrical/Positioning2') }, { path: '/Electrical/ManualonePosition', component: () => import('../views/Electrical/ManualonePosition') }, { path: '/Electrical/ManualonePosition2', component: () => import('../views/Electrical/ManualonePosition2') }, { path: '/Electrical/AutomaticParameterSetting', component: () => import('../views/Electrical/AutomaticParameterSetting') }, { path: '/Electrical/ManualJog', component: () => import('../views/Electrical/ManualJog') }, { path: '/Electrical/InteractionState', component: () => import('../views/Electrical/InteractionState') } , { path: '/Electrical/AlbaniaServo', component: () => import('../views/Electrical/AlbaniaServo') } ] } ]; const router = new VueRouter({ // base: '/canadames/', routes, meta:{ keepAlive:false } }); // 路由控制守卫,解决需要登录才可以访问的页面 router.beforeEach((to, from, next) => { // 如果访问的是登录或注册页面直接放行 if (to.path === '/login' || to.path === '/register') return next(); // 获取token const hasToken = getToken(); const isExist = Vue.prototype.$tagList.some(tag => tag.path === to.fullPath); if (!isExist) { Vue.prototype.$tagList.push({ path: to.fullPath, data: null }); } // 没有token则跳转到登录页面 if (!hasToken) return next('/login'); // 有token则根据需要进行跳转 if (to.path === '/') { // 如果目标路由是根路径,则跳转到首页 return next('/home'); } // 其他情况放行 return next(); }); export default router