Blame view

src/router/guard/pageLoadingGuard.ts 829 Bytes
陈文彬 authored
1
2
3
import type { Router } from 'vue-router';
import { appStore } from '/@/store/modules/app';
import { userStore } from '/@/store/modules/user';
vben authored
4
5
import { useTransitionSetting } from '/@/hooks/setting/useTransitionSetting';
import { unref } from 'vue';
陈文彬 authored
6
vben authored
7
const { getOpenPageLoading } = useTransitionSetting();
陈文彬 authored
8
9
10
11
12
export function createPageLoadingGuard(router: Router) {
  router.beforeEach(async (to) => {
    if (!userStore.getTokenState) {
      return true;
    }
vben authored
13
    if (to.meta.loaded) {
陈文彬 authored
14
15
      return true;
    }
vben authored
16
vben authored
17
    if (unref(getOpenPageLoading)) {
陈文彬 authored
18
      appStore.setPageLoadingAction(true);
vben authored
19
      return true;
陈文彬 authored
20
    }
vben authored
21
陈文彬 authored
22
23
    return true;
  });
vben authored
24
25
  router.afterEach(async () => {
    if (unref(getOpenPageLoading)) {
26
27
      setTimeout(() => {
        appStore.commitPageLoadingState(false);
28
      }, 220);
陈文彬 authored
29
30
31
32
    }
    return true;
  });
}