router.js 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  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. let router = new Router({
  32. routes: [
  33. {
  34. path: "/",
  35. name: "Index",
  36. redirect: { name: "Login" }
  37. },
  38. {
  39. path: "/home/:nextRouter?",
  40. name: "Home",
  41. component: Home,
  42. children: [
  43. {
  44. path: "/home-page",
  45. name: "HomePage",
  46. component: HomePage
  47. },
  48. ...base,
  49. ...exam,
  50. ...print,
  51. ...customer,
  52. ...stmms,
  53. ...analysis
  54. ]
  55. },
  56. { ...login },
  57. { ...admin },
  58. ...card,
  59. {
  60. path: "*",
  61. name: "404",
  62. component: NotFound
  63. }
  64. // [lazy-loaded] route level code-splitting
  65. // {
  66. // path: "/about",
  67. // name: "about",
  68. // // this generates a separate chunk (about.[hash].js) for this route
  69. // // which is lazy-loaded when the route is visited.
  70. // component: () =>
  71. // import(/* webpackChunkName: "about" */ "./views/About.vue")
  72. // }
  73. ]
  74. });
  75. // route interceptor
  76. router.beforeEach((to, from, next) => {
  77. const privilegeMap = Vue.ls.get("privilegeMap", {});
  78. Vue.ls.set(
  79. "privilegeId",
  80. privilegeMap[to.name] ? privilegeMap[to.name][0] : ""
  81. );
  82. const token = Vue.ls.get("token");
  83. if (to.meta.noRequire) {
  84. next();
  85. return;
  86. }
  87. if (!token) {
  88. // 登录失效的处理
  89. const returnUrl = Vue.ls.get("returnUrl");
  90. if (returnUrl) {
  91. window.location.href = returnUrl;
  92. return;
  93. }
  94. Vue.ls.clear();
  95. const ipDomainCode = window.sessionStorage.getItem("ipDomainCode");
  96. if (ipDomainCode) {
  97. next({ name: "Login", query: { code: ipDomainCode } });
  98. } else {
  99. next({ name: "Login" });
  100. }
  101. return;
  102. }
  103. next();
  104. });
  105. export default router;