| | |
| | | |
| | | 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 { isArray, isNullOrUnDef } from '/@/utils/is'; |
| | | |
| | | export interface MultipleTabState { |
| | | cacheTabList: Set<string>; |
| | |
| | | const { currentRoute } = router; |
| | | const route = unref(currentRoute); |
| | | const name = route.name; |
| | | const useProdRoute = useProdRouteStore(); |
| | | useProdRoute.setChangeToCPPage(false); |
| | | if (!isNullOrUnDef(route.params.id) && isArray(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) { |
| | |
| | | // 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 |
| | |
| | | |
| | | 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; |
| | | } |
| | |
| | | } |
| | | this.bulkCloseTabs(pathList); |
| | | this.updateCacheTab(); |
| | | Persistent.setLocal(MULTIPLE_TABS_KEY, this.tabList, true); |
| | | handleGotoPage(router); |
| | | }, |
| | | |