| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- import type { Router } from 'vue-router';
- import { tabStore } from '/@/store/modules/tab';
- import { appStore } from '/@/store/modules/app';
- import { userStore } from '/@/store/modules/user';
- export function createPageLoadingGuard(router: Router) {
- let isFirstLoad = true;
- router.beforeEach(async (to) => {
- console.log('======================');
- console.log(2);
- console.log('======================');
- const {
- openKeepAlive,
- openRouterTransition,
- openPageLoading,
- multiTabsSetting: { show } = {},
- } = appStore.getProjectConfig;
- if (!userStore.getTokenState) {
- return true;
- }
- if (!openRouterTransition && openPageLoading) {
- appStore.commitPageLoadingState(true);
- return true;
- }
- if (show && openKeepAlive && !isFirstLoad) {
- const tabList = tabStore.getTabsState;
- const isOpen = tabList.some((tab) => tab.path === to.path);
- appStore.setPageLoadingAction(!isOpen);
- } else {
- appStore.setPageLoadingAction(true);
- }
- return true;
- });
- router.afterEach(async (to) => {
- const { openRouterTransition, openPageLoading } = appStore.getProjectConfig;
- if ((!openRouterTransition && openPageLoading) || isFirstLoad || to.meta.afterCloseLoading) {
- setTimeout(() => {
- appStore.commitPageLoadingState(false);
- }, 110);
- isFirstLoad = false;
- }
- return true;
- });
- }
|