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