router.js 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. import Vue from "vue";
  2. import Router from "vue-router";
  3. import Home from "./views/Home.vue";
  4. import HomePage from "./views/HomePage.vue";
  5. import NotFound from "./views/404.vue";
  6. import login from "./modules/login/router";
  7. // module-example
  8. import base from "./modules/base/router";
  9. import exam from "./modules/exam/router";
  10. import print from "./modules/print/router";
  11. import customer from "./modules/customer/router";
  12. import stmms from "./modules/stmms/router";
  13. import analysis from "./modules/analysis/router";
  14. // card part
  15. import card from "./modules/card/router";
  16. // admin
  17. import admin from "./modules/admin/router";
  18. // ignore NavigationDuplicated. https://github.com/vuejs/vue-router/issues/2881
  19. // const originalPush = Router.prototype.push;
  20. // Router.prototype.push = function push(location, onResolve, onReject) {
  21. // if (onResolve || onReject)
  22. // return originalPush.call(this, location, onResolve, onReject);
  23. // try {
  24. // return originalPush.call(this, location).catch((err) => err);
  25. // } catch (error) {
  26. // console.log(error);
  27. // }
  28. // };
  29. // end ignore
  30. Vue.use(Router);
  31. /*
  32. history模式 nginx配置
  33. location / {
  34. try_files $uri $uri/ /index.html;
  35. }
  36. */
  37. let router = new Router({
  38. mode: "history",
  39. routes: [
  40. {
  41. path: "/",
  42. name: "Index",
  43. redirect: { name: "Login" },
  44. },
  45. {
  46. path: "/home/:nextRouter?",
  47. name: "Home",
  48. component: Home,
  49. children: [
  50. {
  51. path: "/home-page",
  52. name: "HomePage",
  53. component: HomePage,
  54. },
  55. ...base,
  56. ...exam,
  57. ...print,
  58. ...customer,
  59. ...stmms,
  60. ...analysis,
  61. ],
  62. },
  63. { ...login },
  64. { ...admin },
  65. ...card,
  66. {
  67. path: "*",
  68. name: "404",
  69. component: NotFound,
  70. },
  71. // [lazy-loaded] route level code-splitting
  72. // {
  73. // path: "/about",
  74. // name: "about",
  75. // // this generates a separate chunk (about.[hash].js) for this route
  76. // // which is lazy-loaded when the route is visited.
  77. // component: () =>
  78. // import(/* webpackChunkName: "about" */ "./views/About.vue")
  79. // }
  80. ],
  81. });
  82. // route interceptor
  83. router.beforeEach((to, from, next) => {
  84. const privilegeMap = Vue.ls.get("privilegeMap", {});
  85. Vue.ls.set(
  86. "privilegeId",
  87. privilegeMap[to.name] ? privilegeMap[to.name][0] : ""
  88. );
  89. const token = Vue.ls.get("token");
  90. if (to.meta.noRequire) {
  91. next();
  92. return;
  93. }
  94. if (!token) {
  95. // 登录失效的处理
  96. const returnUrl = Vue.ls.get("returnUrl");
  97. if (returnUrl) {
  98. window.location.href = returnUrl;
  99. return;
  100. }
  101. Vue.ls.clear();
  102. const paramDomainCode = window.sessionStorage.getItem("paramDomainCode");
  103. if (paramDomainCode) {
  104. next({ name: "Login", query: { code: paramDomainCode } });
  105. } else {
  106. next({ name: "Login" });
  107. }
  108. return;
  109. }
  110. next();
  111. });
  112. export default router;