From 859c075b75cd0b23b1752dc1657ede4197f832a6 Mon Sep 17 00:00:00 2001 From: Gary Fu Date: Sat, 13 Jan 2024 14:30:46 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96tabs=E4=BB=A5=E5=8F=8A?= =?UTF-8?q?=E7=BC=93=E5=AD=98=E8=A7=84=E5=88=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/route/AdminRoutes.js | 8 ++++---- src/stores/TabsViewStore.js | 22 +++++++++------------- src/views/admin/MenuEdit.vue | 7 +++++-- 3 files changed, 18 insertions(+), 19 deletions(-) diff --git a/src/route/AdminRoutes.js b/src/route/AdminRoutes.js index 165b96e..c789fda 100644 --- a/src/route/AdminRoutes.js +++ b/src/route/AdminRoutes.js @@ -22,17 +22,17 @@ export default [{ component: () => import('@/views/admin/Authority.vue') }, { path: `${BASE_PATH}/menus`, - name: 'Menus', + name: 'MenusBase', children: [{ path: '', - name: 'menus-index', + name: 'Menus', component: () => import('@/views/admin/Menus.vue') }, { path: 'edit/:id', - name: 'menus-edit', + name: 'MenuEdit', component: () => import('@/views/admin/MenuEdit.vue'), meta: { - replaceTabHistory: 'menus-index', + replaceTabHistory: 'Menus', labelKey: 'menu.label.menuEdit', icon: 'Edit' } diff --git a/src/stores/TabsViewStore.js b/src/stores/TabsViewStore.js index da2c276..5dd8bd4 100644 --- a/src/stores/TabsViewStore.js +++ b/src/stores/TabsViewStore.js @@ -65,19 +65,14 @@ export const useTabsViewStore = defineStore('tabsView', () => { if (idx < 0) { const replaceIdx = historyTabs.value.findIndex(v => checkMataReplaceHistory(v, tab) || checkMataReplaceHistory(tab, v) || isSameReplaceHistory(v, tab)) + let replaceTab = null if (replaceIdx > -1) { - console.info(replaceIdx, historyTabs.value[replaceIdx]) - if (replaceIdx !== undefined) { - historyTabs.value.splice(replaceIdx, 1, Object.assign({}, tab)) - return - } - } - historyTabs.value.push(Object.assign({}, tab)) // 可能是Proxy,需要解析出来 - if (isCachedTabMode.value && tab.name) { - if (!cachedTabs.value.includes(tab.name)) { - cachedTabs.value.push(tab.name) - } + replaceTab = historyTabs.value[replaceIdx] + historyTabs.value.splice(replaceIdx, 1, Object.assign({}, tab)) + } else { + historyTabs.value.push(Object.assign({}, tab)) // 可能是Proxy,需要解析出来 } + addCachedTab(tab, replaceTab) } } } @@ -116,8 +111,9 @@ export const useTabsViewStore = defineStore('tabsView', () => { } } } - const addCachedTab = (tab) => { - if (isCachedTabMode.value && tab.name) { + const addCachedTab = (tab, replaceTab) => { + if (isCachedTabMode.value && tab.name && !tab.name.includes('-')) { + removeCachedTab(replaceTab) if (!cachedTabs.value.includes(tab.name)) { cachedTabs.value.push(tab.name) } diff --git a/src/views/admin/MenuEdit.vue b/src/views/admin/MenuEdit.vue index d095c6a..7226c3d 100644 --- a/src/views/admin/MenuEdit.vue +++ b/src/views/admin/MenuEdit.vue @@ -1,10 +1,12 @@