From 5e440a7dc434c43eb828fa62cf9c12b0078b8565 Mon Sep 17 00:00:00 2001 From: 疯狂的狮子Li <15040126243@163.com> Date: 星期一, 20 一月 2025 11:36:18 +0800 Subject: [PATCH] !173 发布 5.3.0-BETA 公测版本 Merge pull request !173 from 疯狂的狮子Li/dev --- src/plugins/tab.ts | 153 ++++++++++++++++++++++++++++++-------------------- 1 files changed, 92 insertions(+), 61 deletions(-) diff --git a/src/plugins/tab.ts b/src/plugins/tab.ts index ad6f1c3..4b44dc6 100644 --- a/src/plugins/tab.ts +++ b/src/plugins/tab.ts @@ -1,65 +1,96 @@ -import { useTagsViewStore } from '@/store/modules/tagsView'; import router from '@/router'; -import { TagView, RouteLocationRaw } from 'vue-router'; +import { RouteLocationMatched, RouteLocationNormalized, RouteLocationRaw } from 'vue-router'; +import useTagsViewStore from '@/store/modules/tagsView'; export default { - // 鍒锋柊褰撳墠tab椤电 - async refreshPage(obj: TagView): Promise<void> { - const { path, query, matched } = router.currentRoute.value; - if (obj === undefined) { - matched.forEach((m) => { - if (m.components && m.components.default && m.components.default.name) { - if (!['Layout', 'ParentView'].includes(m.components.default.name)) { - obj = { name: m.components.default.name, path: path, query: query }; - } - } - }); - } - // prettier-ignore - await useTagsViewStore().delCachedView(obj) - router.replace({ - path: '/redirect' + obj.path, - query: obj.query - }); - }, - // 鍏抽棴褰撳墠tab椤电锛屾墦寮�鏂伴〉绛� - closeOpenPage(obj: RouteLocationRaw): void { - useTagsViewStore().delView(router.currentRoute.value); - if (obj !== undefined) { - router.push(obj); - } - }, - // 鍏抽棴鎸囧畾tab椤电 - async closePage(obj?: TagView): Promise<{ visitedViews: TagView[]; cachedViews: string[] } | any> { - if (obj === undefined) { - // prettier-ignore - const { lastPath } = await useTagsViewStore().delView(router.currentRoute.value) as any - return router.push(lastPath || '/index'); - } - return useTagsViewStore().delView(obj); - }, - // 鍏抽棴鎵�鏈塼ab椤电 - closeAllPage() { - return useTagsViewStore().delAllViews(); - }, - // 鍏抽棴宸︿晶tab椤电 - closeLeftPage(obj: TagView) { - return useTagsViewStore().delLeftTags(obj || router.currentRoute.value); - }, - // 鍏抽棴鍙充晶tab椤电 - closeRightPage(obj: TagView) { - return useTagsViewStore().delRightTags(obj || router.currentRoute.value); - }, - // 鍏抽棴鍏朵粬tab椤电 - closeOtherPage(obj: TagView) { - return useTagsViewStore().delOthersViews(obj || router.currentRoute.value); - }, - // 鎵撳紑tab椤电 - openPage(url: RouteLocationRaw) { - return router.push(url); - }, - // 淇敼tab椤电 - updatePage(obj: TagView) { - return useTagsViewStore().updateVisitedView(obj); - } + /** + * 鍒锋柊褰撳墠tab椤电 + * @param obj 鏍囩瀵硅薄 + */ + async refreshPage(obj?: RouteLocationNormalized): Promise<void> { + const { path, query, matched } = router.currentRoute.value; + if (obj === undefined) { + matched.forEach((m: RouteLocationMatched) => { + if (m.components && m.components.default && m.components.default.name) { + if (!['Layout', 'ParentView'].includes(m.components.default.name)) { + obj = { + name: m.components.default.name, + path: path, + query: query, + matched: undefined, + fullPath: undefined, + hash: undefined, + params: undefined, + redirectedFrom: undefined, + meta: undefined + }; + } + } + }); + } + let query1: undefined | {} = {}; + let path1: undefined | string = ''; + if (obj) { + query1 = obj.query; + path1 = obj.path; + } + await useTagsViewStore().delCachedView(obj); + await router.replace({ + path: '/redirect' + path1, + query: query1 + }); + }, + // 鍏抽棴褰撳墠tab椤电锛屾墦寮�鏂伴〉绛� + closeOpenPage(obj: RouteLocationRaw): void { + useTagsViewStore().delView(router.currentRoute.value); + if (obj !== undefined) { + router.push(obj); + } + }, + // 鍏抽棴鎸囧畾tab椤电 + async closePage(obj?: RouteLocationNormalized): Promise<{ visitedViews: RouteLocationNormalized[]; cachedViews: string[] } | any> { + if (obj === undefined) { + // prettier-ignore + const { visitedViews } = await useTagsViewStore().delView(router.currentRoute.value) + const latestView = visitedViews.slice(-1)[0]; + if (latestView) { + return router.push(latestView.fullPath); + } + return router.push('/'); + } + return useTagsViewStore().delView(obj); + }, + // 鍏抽棴鎵�鏈塼ab椤电 + closeAllPage() { + return useTagsViewStore().delAllViews(); + }, + // 鍏抽棴宸︿晶tab椤电 + closeLeftPage(obj?: RouteLocationNormalized) { + return useTagsViewStore().delLeftTags(obj || router.currentRoute.value); + }, + // 鍏抽棴鍙充晶tab椤电 + closeRightPage(obj?: RouteLocationNormalized) { + return useTagsViewStore().delRightTags(obj || router.currentRoute.value); + }, + // 鍏抽棴鍏朵粬tab椤电 + closeOtherPage(obj?: RouteLocationNormalized) { + return useTagsViewStore().delOthersViews(obj || router.currentRoute.value); + }, + /** + * 鎵撳紑tab椤电 + * @param url 璺敱鍦板潃 + * @param title 鏍囬 + * @param query 鍙傛暟 + */ + openPage(url: string, title?: string, query?: any) { + const obj = { path: url, query: { ...query, title } }; + return router.push(obj); + }, + /** + * 淇敼tab椤电 + * @param obj 鏍囩瀵硅薄 + */ + updatePage(obj: RouteLocationNormalized) { + return useTagsViewStore().updateVisitedView(obj); + } }; -- Gitblit v1.9.3