From 3922c16601266e78ee3b90936ba49305c6c8b09a Mon Sep 17 00:00:00 2001
From: ahao <liuhaoai545@gmail.com>
Date: 星期三, 27 十二月 2023 12:12:51 +0800
Subject: [PATCH] fix 修复 vue 类型识别问题

---
 src/store/modules/tagsView.ts |   86 +++++++++++++++++++++++++++---------------
 1 files changed, 55 insertions(+), 31 deletions(-)

diff --git a/src/store/modules/tagsView.ts b/src/store/modules/tagsView.ts
index 2735a05..b9502eb 100644
--- a/src/store/modules/tagsView.ts
+++ b/src/store/modules/tagsView.ts
@@ -1,38 +1,53 @@
-import { TagView, RouteRecordNormalized, RouteLocationNormalized } from 'vue-router';
+import { RouteLocationNormalized } from 'vue-router';
 
 export const useTagsViewStore = defineStore('tagsView', () => {
-  const visitedViews = ref<TagView[]>([]);
+  const visitedViews = ref<RouteLocationNormalized[]>([]);
   const cachedViews = ref<string[]>([]);
-  const iframeViews = ref<TagView[]>([]);
+  const iframeViews = ref<RouteLocationNormalized[]>([]);
 
-  const addView = (view: TagView) => {
+  const getVisitedViews = (): RouteLocationNormalized[] => {
+    return visitedViews.value;
+  };
+  const getIframeViews = (): RouteLocationNormalized[] => {
+    return iframeViews.value;
+  };
+  const getCachedViews = (): string[] => {
+    return cachedViews.value;
+  };
+
+  const addView = (view: RouteLocationNormalized) => {
     addVisitedView(view);
     addCachedView(view);
   };
 
-  const addIframeView = (view: TagView): void => {
-    if (iframeViews.value.some((v: TagView) => v.path === view.path)) return;
+  const addIframeView = (view: RouteLocationNormalized): void => {
+    if (iframeViews.value.some((v: RouteLocationNormalized) => v.path === view.path)) return;
     iframeViews.value.push(
       Object.assign({}, view, {
         title: view.meta?.title || 'no-name'
       })
     );
   };
-  const delIframeView = (view: TagView): Promise<TagView[]> => {
+  const delIframeView = (view: RouteLocationNormalized): Promise<RouteLocationNormalized[]> => {
     return new Promise((resolve) => {
-      iframeViews.value = iframeViews.value.filter((item: TagView) => item.path !== view.path);
+      iframeViews.value = iframeViews.value.filter((item: RouteLocationNormalized) => item.path !== view.path);
       resolve([...iframeViews.value]);
     });
   };
-  const addVisitedView = (view: TagView): void => {
-    if (visitedViews.value.some((v: TagView) => v.path === view.path)) return;
+  const addVisitedView = (view: RouteLocationNormalized): void => {
+    if (visitedViews.value.some((v: RouteLocationNormalized) => v.path === view.path)) return;
     visitedViews.value.push(
       Object.assign({}, view, {
         title: view.meta?.title || 'no-name'
       })
     );
   };
-  const delView = (view: TagView): Promise<{ visitedViews: TagView[]; cachedViews: string[] }> => {
+  const delView = (
+    view: RouteLocationNormalized
+  ): Promise<{
+    visitedViews: RouteLocationNormalized[];
+    cachedViews: string[];
+  }> => {
     return new Promise((resolve) => {
       delVisitedView(view);
       if (!isDynamicRoute(view)) {
@@ -45,7 +60,7 @@
     });
   };
 
-  const delVisitedView = (view: TagView): Promise<TagView[]> => {
+  const delVisitedView = (view: RouteLocationNormalized): Promise<RouteLocationNormalized[]> => {
     return new Promise((resolve) => {
       for (const [i, v] of visitedViews.value.entries()) {
         if (v.path === view.path) {
@@ -56,7 +71,7 @@
       resolve([...visitedViews.value]);
     });
   };
-  const delCachedView = (view?: TagView): Promise<string[]> => {
+  const delCachedView = (view?: RouteLocationNormalized): Promise<string[]> => {
     let viewName = '';
     if (view) {
       viewName = view.name as string;
@@ -67,7 +82,12 @@
       resolve([...cachedViews.value]);
     });
   };
-  const delOthersViews = (view: TagView): Promise<{ visitedViews: TagView[]; cachedViews: string[] }> => {
+  const delOthersViews = (
+    view: RouteLocationNormalized
+  ): Promise<{
+    visitedViews: RouteLocationNormalized[];
+    cachedViews: string[];
+  }> => {
     return new Promise((resolve) => {
       delOthersVisitedViews(view);
       delOthersCachedViews(view);
@@ -78,15 +98,15 @@
     });
   };
 
-  const delOthersVisitedViews = (view: TagView): Promise<TagView[]> => {
+  const delOthersVisitedViews = (view: RouteLocationNormalized): Promise<RouteLocationNormalized[]> => {
     return new Promise((resolve) => {
-      visitedViews.value = visitedViews.value.filter((v: TagView) => {
+      visitedViews.value = visitedViews.value.filter((v: RouteLocationNormalized) => {
         return v.meta?.affix || v.path === view.path;
       });
       resolve([...visitedViews.value]);
     });
   };
-  const delOthersCachedViews = (view: TagView): Promise<string[]> => {
+  const delOthersCachedViews = (view: RouteLocationNormalized): Promise<string[]> => {
     const viewName = view.name as string;
     return new Promise((resolve) => {
       const index = cachedViews.value.indexOf(viewName);
@@ -99,7 +119,7 @@
     });
   };
 
-  const delAllViews = (): Promise<{ visitedViews: TagView[]; cachedViews: string[] }> => {
+  const delAllViews = (): Promise<{ visitedViews: RouteLocationNormalized[]; cachedViews: string[] }> => {
     return new Promise((resolve) => {
       delAllVisitedViews();
       delAllCachedViews();
@@ -109,9 +129,9 @@
       });
     });
   };
-  const delAllVisitedViews = (): Promise<TagView[]> => {
+  const delAllVisitedViews = (): Promise<RouteLocationNormalized[]> => {
     return new Promise((resolve) => {
-      visitedViews.value = visitedViews.value.filter((tag: TagView) => tag.meta?.affix);
+      visitedViews.value = visitedViews.value.filter((tag: RouteLocationNormalized) => tag.meta?.affix);
       resolve([...visitedViews.value]);
     });
   };
@@ -123,7 +143,7 @@
     });
   };
 
-  const updateVisitedView = (view: TagView): void => {
+  const updateVisitedView = (view: RouteLocationNormalized): void => {
     for (let v of visitedViews.value) {
       if (v.path === view.path) {
         v = Object.assign(v, view);
@@ -131,13 +151,13 @@
       }
     }
   };
-  const delRightTags = (view: TagView): Promise<TagView[]> => {
+  const delRightTags = (view: RouteLocationNormalized): Promise<RouteLocationNormalized[]> => {
     return new Promise((resolve) => {
-      const index = visitedViews.value.findIndex((v: TagView) => v.path === view.path);
+      const index = visitedViews.value.findIndex((v: RouteLocationNormalized) => v.path === view.path);
       if (index === -1) {
         return;
       }
-      visitedViews.value = visitedViews.value.filter((item: TagView, idx: number) => {
+      visitedViews.value = visitedViews.value.filter((item: RouteLocationNormalized, idx: number) => {
         if (idx <= index || (item.meta && item.meta.affix)) {
           return true;
         }
@@ -150,13 +170,13 @@
       resolve([...visitedViews.value]);
     });
   };
-  const delLeftTags = (view: TagView): Promise<TagView[]> => {
+  const delLeftTags = (view: RouteLocationNormalized): Promise<RouteLocationNormalized[]> => {
     return new Promise((resolve) => {
-      const index = visitedViews.value.findIndex((v: TagView) => v.path === view.path);
+      const index = visitedViews.value.findIndex((v: RouteLocationNormalized) => v.path === view.path);
       if (index === -1) {
         return;
       }
-      visitedViews.value = visitedViews.value.filter((item: TagView, idx: number) => {
+      visitedViews.value = visitedViews.value.filter((item: RouteLocationNormalized, idx: number) => {
         if (idx >= index || (item.meta && item.meta.affix)) {
           return true;
         }
@@ -170,7 +190,7 @@
     });
   };
 
-  const addCachedView = (view: TagView): void => {
+  const addCachedView = (view: RouteLocationNormalized): void => {
     const viewName = view.name as string;
     if (!viewName) return;
     if (cachedViews.value.includes(viewName)) return;
@@ -179,15 +199,20 @@
     }
   };
 
-  const isDynamicRoute = (view: any): boolean => {
+  const isDynamicRoute = (view: RouteLocationNormalized): boolean => {
     // 妫�鏌ュ尮閰嶇殑璺敱璁板綍涓槸鍚︽湁鍔ㄦ�佹
-    return view.matched.some((m: RouteRecordNormalized) => m.path.includes(':'));
+    return view.matched.some((m) => m.path.includes(':'));
   };
 
   return {
     visitedViews,
     cachedViews,
     iframeViews,
+
+    getVisitedViews,
+    getIframeViews,
+    getCachedViews,
+
     addVisitedView,
     addCachedView,
     delVisitedView,
@@ -205,5 +230,4 @@
     delIframeView
   };
 });
-
 export default useTagsViewStore;

--
Gitblit v1.9.3