Browse Source

feat: add `updatePath` for `useTabs`

添加更新标签path的方法

close: #1068
无木 3 years ago
parent
commit
bcfa338227
2 changed files with 22 additions and 3 deletions
  1. 11 3
      src/hooks/web/useTabs.ts
  2. 11 0
      src/store/modules/multipleTab.ts

+ 11 - 3
src/hooks/web/useTabs.ts

@@ -46,6 +46,15 @@ export function useTabs(_router?: Router) {
     await tabStore.setTabTitle(title, targetTab);
   }
 
+  async function updateTabPath(path: string, tab?: RouteLocationNormalized) {
+    const canIUse = canIUseTabs;
+    if (!canIUse) {
+      return;
+    }
+    const targetTab = tab || getCurrentTab();
+    await tabStore.updateTabPath(path, targetTab);
+  }
+
   async function handleTabAction(action: TableActionEnum, tab?: RouteLocationNormalized) {
     const canIUse = canIUseTabs;
     if (!canIUse) {
@@ -87,9 +96,8 @@ export function useTabs(_router?: Router) {
     closeRight: () => handleTabAction(TableActionEnum.CLOSE_RIGHT),
     closeOther: () => handleTabAction(TableActionEnum.CLOSE_OTHER),
     closeCurrent: () => handleTabAction(TableActionEnum.CLOSE_CURRENT),
-    close: (tab?: RouteLocationNormalized) => {
-      handleTabAction(TableActionEnum.CLOSE, tab);
-    },
+    close: (tab?: RouteLocationNormalized) => handleTabAction(TableActionEnum.CLOSE, tab),
     setTitle: (title: string, tab?: RouteLocationNormalized) => updateTabTitle(title, tab),
+    updatePath: (fullPath: string, tab?: RouteLocationNormalized) => updateTabPath(fullPath, tab),
   };
 }

+ 11 - 0
src/store/modules/multipleTab.ts

@@ -300,6 +300,17 @@ export const useMultipleTabStore = defineStore({
         await this.updateCacheTab();
       }
     },
+    /**
+     * replace tab's path
+     * **/
+    async updateTabPath(fullPath: string, route: RouteLocationNormalized) {
+      const findTab = this.getTabList.find((item) => item === route);
+      if (findTab) {
+        findTab.fullPath = fullPath;
+        findTab.path = fullPath;
+        await this.updateCacheTab();
+      }
+    },
   },
 });