• zhangsan's avatar
    1 · 918bef3d
    zhangsan authored
    918bef3d
index.ts 1.48 KB
import { createRouter, createWebHistory } from "vue-router";
import NProgress from "nprogress";
import "nprogress/nprogress.css";
import { useUserInfo } from "@/composables/useUserInfo";
import { generateRoutes } from "@/utils/generateRoutes";
import request from "@/utils/request";
// 生成路由配置
const routes = generateRoutes();

// 创建路由实例
const router = createRouter({
  history: createWebHistory(),
  routes,
});

NProgress.configure({ showSpinner: false });

// 路由守卫
router.beforeEach(async (to, from, next) => {
  NProgress.start();
  document.title = (to.meta.title as string) || "";
  // 检查版本更新
  // 获取用户信息
  const token = sessionStorage.getItem("token");

  // 登录页面判断
  if (to.path === "/login") {
    if (token) {
      next("/ ");
      return;
    }
  } else {
    if (!token && to.path !== "/register") {
      next("/login");
      return;
    }
  }

  next();
  if (token) {
    const { getUserInfo } = useUserInfo();
    await getUserInfo();
  }
  if (process.env.NODE_ENV === "production") {
    request.get('/system/config/configKeys?code=appVersion').then(res => {
      if (res.code == 200) {
        if (res?.data?.appVersion !== sessionStorage.getItem('appVersion')) {
          sessionStorage.setItem('appVersion', res?.data?.appVersion)
          if(to.path !== '/login') {
            window.location.reload()
          }
        }
      }
    })
  }
});

router.afterEach(() => {
  NProgress.done();
});

export default router;