import Vue from "vue"; import VueRouter from "vue-router"; import Layouts from "../layouts"; Vue.use(VueRouter); const originalPush = VueRouter.prototype.push VueRouter.prototype.push = function push(location) { return originalPush.call(this, location).catch(err => err) } /** * path: "/login", ------页面地址 component: () => import("../views/login"), ------组件地址 meta: { title: "登录", ------页面标题 icon: "el-icon-user-solid", ------菜单图标 oneself: true, ------是否在单独页面打开 hide: true, ------是否隐藏改菜单 } */ const routes = [ { path: "", redirect: "login", component: Layouts, children: [ { path: "/home", meta: { title: "首页", }, component: () => import("../view/Home.vue"), }, { path: "/login", meta: { title: "登录", }, component: () => import("../view/Login.vue"), }, { path: "/addOrder", meta: { title: "添加订单", oneself: true, hide: true, privilege: 'addOrder' }, component: () => import("../view/addOrder"), }, ] } ]; const router = new VueRouter({ mode: "hash", base: process.env.BASE_URL, routes, }); // 路由拦截 router.beforeEach((to, from, next) => { const extra = localStorage.getItem('extra'); if (!extra && to.path !== '/login') { next('/login'); } else if (extra && to.path === '/login') { next('/home'); } else { if (to.path === '/login') { localStorage.clear(); } next(); } }); export default router;