index.ts 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. import Vue from "vue";
  2. import VueRouter from "vue-router";
  3. import layout from "@/layout/index.vue";
  4. import { checkLoginStatus, initGuidInfo, doWecomLogin, getQyCode } from '@/utils/wecomLogin.ts';
  5. Vue.use(VueRouter);
  6. const router = new VueRouter({
  7. mode: process.env.NODE_ENV !== "development" ? "history" : "history",
  8. base: process.env.BASE_URL,
  9. scrollBehavior(to, from, savedPosition) {
  10. if (savedPosition) {
  11. return savedPosition;
  12. } else {
  13. return { x: 0, y: 0 };
  14. }
  15. },
  16. routes: [
  17. {
  18. path: "/",
  19. component: layout,
  20. redirect: "/AIDesign",
  21. children: [
  22. {
  23. path: "/AIDesign",
  24. component: () => import("../views/AIDesign/index.vue"),
  25. meta: { requiresAuth: true } // 标记需要登录的页面
  26. },
  27. {
  28. path: "/login",
  29. component: () => import("../views/login/index.vue"),
  30. meta: { title: "登录" }
  31. },
  32. {
  33. path: "/error/:code",
  34. component: () => import("../views/errorPage/index.vue")
  35. },
  36. {
  37. path: "/error",
  38. component: () => import("../views/errorPage/weixinerr.vue")
  39. },
  40. //设计页
  41. {
  42. path: "/AIDesign/design",
  43. component: () => import("../views/AIDesign/design.vue"),
  44. meta: { requiresAuth: true } // 标记需要登录的页面
  45. },
  46. //结果页
  47. {
  48. path: "/AIDesign/result",
  49. component: () => import("../views/AIDesign/result.vue"),
  50. meta: { requiresAuth: true } // 标记需要登录的页面
  51. },
  52. //历史页
  53. {
  54. path: "/AIDesign/history",
  55. component: () => import("../views/AIDesign/history.vue"),
  56. meta: { requiresAuth: true } // 标记需要登录的页面
  57. },
  58. //内墙-设计页
  59. {
  60. path: "/AIDesign/insideDesign",
  61. component: () => import("../views/AIDesign/insideDesign.vue"),
  62. meta: { requiresAuth: true } // 标记需要登录的页面
  63. },
  64. //一键诊断-生成页
  65. {
  66. path: "/AIDesign/diagnose",
  67. component: () => import("../views/AIDesign/diagnose.vue"),
  68. meta: { requiresAuth: true } // 标记需要登录的页面
  69. },
  70. //一键诊断-历史页
  71. {
  72. path: "/AIDesign/diagnoseHistory",
  73. component: () => import("../views/AIDesign/diagnoseHistory.vue"),
  74. meta: { requiresAuth: true } // 标记需要登录的页面
  75. },
  76. //一键诊断-结果页
  77. {
  78. path: "/AIDesign/diagnoseResult",
  79. component: () => import("../views/AIDesign/diagnoseResult.vue"),
  80. meta: { requiresAuth: true } // 标记需要登录的页面
  81. }
  82. ]
  83. },
  84. ]
  85. });
  86. // 全局前置守卫:只对需要登录的页面进行登录校验
  87. router.beforeEach((to, from, next) => {
  88. // console.log("-------页面链接=", window.location.href)
  89. if (!to.meta || (to.meta && !to.meta.requiresAuth)) {
  90. next();
  91. return;
  92. }
  93. try {
  94. initGuidInfo();
  95. const isLoggedIn = checkLoginStatus();
  96. if (isLoggedIn) {
  97. next();
  98. return;
  99. }
  100. const code = to.query.code as string;
  101. if (code) {
  102. doWecomLogin(code)
  103. .then(() => {
  104. next();
  105. console.log(`登录成功,即将进入 ${to.path}`);
  106. })
  107. .catch(() => {
  108. next({ path: "/error" });
  109. });
  110. } else {
  111. console.log(`访问 ${to.path} 需登录,正在跳转到授权页面`);
  112. getQyCode();
  113. // 本地登录-需注释
  114. // doWecomLogin('')
  115. // .then(() => {
  116. // console.log(`模拟登录成功,即将进入 ${to.path}`);
  117. // })
  118. }
  119. } catch (error) {
  120. console.error("登录校验过程异常:", error);
  121. next({ path: "/error" });
  122. }
  123. });
  124. export default router;