123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124 |
- import Vue from "vue";
- import Router from "vue-router";
- import Home from "./views/Home.vue";
- import HomePage from "./views/HomePage.vue";
- import NotFound from "./views/404.vue";
- import login from "./modules/login/router";
- // module-example
- import base from "./modules/base/router";
- import exam from "./modules/exam/router";
- import print from "./modules/print/router";
- import customer from "./modules/customer/router";
- import stmms from "./modules/stmms/router";
- import analysis from "./modules/analysis/router";
- // card part
- import card from "./modules/card/router";
- // admin
- import admin from "./modules/admin/router";
- // ignore NavigationDuplicated. https://github.com/vuejs/vue-router/issues/2881
- // const originalPush = Router.prototype.push;
- // Router.prototype.push = function push(location, onResolve, onReject) {
- // if (onResolve || onReject)
- // return originalPush.call(this, location, onResolve, onReject);
- // try {
- // return originalPush.call(this, location).catch((err) => err);
- // } catch (error) {
- // console.log(error);
- // }
- // };
- // end ignore
- Vue.use(Router);
- /*
- history模式 nginx配置
- location / {
- try_files $uri $uri/ /index.html;
- }
- */
- let router = new Router({
- mode: "history",
- routes: [
- {
- path: "/",
- name: "Index",
- redirect: { name: "Login" },
- },
- {
- path: "/home/:nextRouter?",
- name: "Home",
- component: Home,
- children: [
- {
- path: "/home-page",
- name: "HomePage",
- component: HomePage,
- },
- ...base,
- ...exam,
- ...print,
- ...customer,
- ...stmms,
- ...analysis,
- ],
- },
- { ...login },
- { ...admin },
- ...card,
- {
- path: "*",
- name: "404",
- component: NotFound,
- },
- // [lazy-loaded] route level code-splitting
- // {
- // path: "/about",
- // name: "about",
- // // this generates a separate chunk (about.[hash].js) for this route
- // // which is lazy-loaded when the route is visited.
- // component: () =>
- // import(/* webpackChunkName: "about" */ "./views/About.vue")
- // }
- ],
- });
- // route interceptor
- router.beforeEach((to, from, next) => {
- const privilegeMap = Vue.ls.get("privilegeMap", {});
- Vue.ls.set(
- "privilegeId",
- privilegeMap[to.name] ? privilegeMap[to.name][0] : ""
- );
- const token = Vue.ls.get("token");
- if (to.meta.noRequire) {
- next();
- return;
- }
- if (!token) {
- // 登录失效的处理
- const returnUrl = Vue.ls.get("returnUrl");
- if (returnUrl) {
- window.location.href = returnUrl;
- return;
- }
- Vue.ls.clear();
- const paramDomainCode = window.sessionStorage.getItem("paramDomainCode");
- if (paramDomainCode) {
- next({ name: "Login", query: { code: paramDomainCode } });
- } else {
- next({ name: "Login" });
- }
- return;
- }
- next();
- });
- export default router;
|