w-vue-middle
Version:
统一公共服务组件
116 lines (102 loc) • 3.39 kB
JavaScript
/*
* @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;