Ben Lin
2024-11-12 a42c6f16bbb177dfcc754d53d925afddead38eba
src/store/modules/multipleTab.ts
@@ -2,18 +2,20 @@
import { toRaw, unref } from 'vue';
import { defineStore } from 'pinia';
import { store } from '/@/store';
import { store } from '@/store';
import { useGo, useRedo } from '/@/hooks/web/usePage';
import { Persistent } from '/@/utils/cache/persistent';
import { useGo, useRedo } from '@/hooks/web/usePage';
import { Persistent } from '@/utils/cache/persistent';
import { PageEnum } from '/@/enums/pageEnum';
import { PAGE_NOT_FOUND_ROUTE, REDIRECT_ROUTE } from '/@/router/routes/basic';
import { getRawRoute } from '/@/utils';
import { MULTIPLE_TABS_KEY } from '/@/enums/cacheEnum';
import { PageEnum } from '@/enums/pageEnum';
import { PAGE_NOT_FOUND_ROUTE, REDIRECT_ROUTE } from '@/router/routes/basic';
import { getRawRoute } from '@/utils';
import { MULTIPLE_TABS_KEY } from '@/enums/cacheEnum';
import projectSetting from '/@/settings/projectSetting';
import { useUserStore } from '/@/store/modules/user';
import projectSetting from '@/settings/projectSetting';
import { useUserStore } from '@/store/modules/user';
import { useProdRouteStore } from './prodRoute';
import { isNullOrUnDef } from '/@/utils/is';
export interface MultipleTabState {
  cacheTabList: Set<string>;
@@ -85,6 +87,17 @@
      const { currentRoute } = router;
      const route = unref(currentRoute);
      const name = route.name;
      const useProdRoute = useProdRouteStore();
      useProdRoute.setChangeToCPPage(false);
      if (!isNullOrUnDef(route.params.id)) {
        // 从sessionStorage中读取参数并转换回对象
        const savedParams = sessionStorage.getItem(
          `${JSON.parse(decodeURI(route.params.id[0]))['sName']}_params`,
        );
        const objParams = savedParams ? JSON.parse(decodeURI(savedParams)) : {};
        useProdRoute.setCurProdRotTree({ name: objParams['CODE'], treeInfo: [] });
        useProdRoute.setCurSelectedNodes({ name: objParams['CODE'], SelectedNodes: [] });
      }
      const findTab = this.getCachedTabList.find((item) => item === name);
      if (findTab) {
@@ -134,7 +147,9 @@
      // Existing pages, do not add tabs repeatedly
      const tabHasExits = this.tabList.some((tab, index) => {
        updateIndex = index;
        return (tab.fullPath || tab.path) === (fullPath || path);
        return (
          decodeURIComponent(tab.fullPath || tab.path) === decodeURIComponent(fullPath || path)
        );
      });
      // If the tab already exists, perform the update operation
@@ -308,7 +323,7 @@
      for (const path of closePathList) {
        if (path !== route.fullPath) {
          const closeItem = this.tabList.find((item) => item.path === path);
          const closeItem = this.tabList.find((item) => item.fullPath === path);
          if (!closeItem) {
            continue;
          }
@@ -320,6 +335,7 @@
      }
      this.bulkCloseTabs(pathList);
      this.updateCacheTab();
      Persistent.setLocal(MULTIPLE_TABS_KEY, this.tabList, true);
      handleGotoPage(router);
    },