1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- import router from "@/router";
- import NProgress from "@/utils/nprogress";
- import { useDictionaryStore } from "@/store/modules/dictionary";
- import { getUserDicts } from "@/api/auth";
- import { isNewVersion } from "@/utils/version.js";
- export function setupPermission() {
- // 白名单路由
- const whiteList: string[] = ["client-traceability"]; //由于包含动态路由,这里面存储的是路由的name而不是path
- router.beforeEach(async (to, from, next) => {
- isNewVersion();
- NProgress.start();
- //在路由跳转前判断是否为不需要全屏加载的二级路由界面(目前项目中只有pro-step界面涉及)
- const isShow = inject("isShow");
- const route = useRoute();
- if (
- !(
- route.fullPath.substr(0, 11) == "/pro-steps/" &&
- to.fullPath.substr(0, 11) == "/pro-steps/"
- )
- ) {
- //@ts-ignore
- isShow.value = true;
- }
- const hasToken = localStorage.getItem("token");
- if (hasToken) {
- if (to.path === "/login") {
- // 如果已登录,跳转首页,并且清空token
- localStorage.setItem("token", "");
- next();
- // next({ path: "/" });
- NProgress.done();
- } else {
- const dictStore = useDictionaryStore();
- dictStore.checkAllData();
- if (
- !dictStore.dicts.value ||
- JSON.stringify(dictStore.dicts.value) === "{}"
- ) {
- const res = await getUserDicts(dictStore.types);
- if (res.data) {
- dictStore.dicts = res?.data ?? [];
- }
- }
- next();
- NProgress.done();
- }
- } else {
- // 未登录可以访问白名单页面
- if (whiteList.indexOf(to.name as string) !== -1) {
- const dictStore = useDictionaryStore();
- dictStore.checkAllData();
- next();
- } else {
- if (to.path === "/login") {
- next();
- } else {
- next(`/login`);
- }
- NProgress.done();
- }
- }
- });
- router.afterEach(() => {
- const isShow = inject("isShow");
- const route = useRoute();
- //@ts-ignore
- if (isShow.value == true) {
- //@ts-ignore
- isShow.value = false;
- }
- NProgress.done();
- });
- }
|