UNPKG

w-vue-middle

Version:

统一公共服务组件

116 lines (102 loc) 3.39 kB
/* * @Author: Jason Liu * @Date: 2022-03-10 10:38:11 * @Desc: */ import Vue from "vue"; import Router from "vue-router"; import NProgress from "nprogress"; import "nprogress/nprogress.css"; import { system } from "./router.config"; const BasicLayout = resolve => require(['../layouts/index.vue'], resolve); Vue.use(Router); // 解决ElementUI导航栏中的vue-router在3.0版本以上重复点菜单报错问题 const originalPush = Router.prototype.push const originalReplace = Router.prototype.replace Router.prototype.push = function push(location) { return originalPush.call(this, location).catch(err => err) } Router.prototype.replace = function push(location) { return originalReplace.call(this, location).catch(err => err) } let routes = [{ path: "/", redirect: "/index" }, { path: "/login", name: "login", hideInMenu: true, component: resolve => require(['../../components/login/index.vue'], resolve), }, { path: "/403", name: "403", hideInMenu: true, component: resolve => require(['../../components/403/index.vue'], resolve), }, { path: "*", name: "404", hideInMenu: true, component: resolve => require(['../../components/404/index.vue'], resolve), }, ...system ]; const router = new Router({ mode: "hash", routes: routes }); router.beforeEach((to, from, next) => { if (to.path !== from.path) { NProgress.start(); } switch (to.name) { case "404": let newRoute = undefined; let name = to.path.substr(1, to.path.length - 1) if (to.path == '/overallOverviewProject' || to.path == '/projectApplication' || to.path == '/specializedDiseaseHone' || to.path == '/specializedDiseaseDetail') { newRoute = { path: to.path, meta: { title: name, name: name, keepAlive: true, entry: `http://localhost:8087/winningdevelop/`, path: "/canonicalmodel" }, component: resolve => require(['../../microService/microApp/index.vue'], resolve) } } else { newRoute = { path: to.path, name: name, meta: { title: name, keepAlive: true }, component: resolve => require(['../../components/403/index.vue'], resolve), }; } if (newRoute) { router.addRoutes([{ path: to.path, meta: { title: name, keepAlive: true, hide: false }, component: BasicLayout, children: [ newRoute ] }]) ; next({ ...to, name: newRoute.name, replace: true }) } break; default: next(); break; } NProgress.done(); }); router.afterEach(() => { NProgress.done(); }); export default router;