From f87e1d822ccedbc8157775c8d58212fa4a6a6252 Mon Sep 17 00:00:00 2001 From: YunaiV Date: Tue, 17 May 2022 13:00:47 +0800 Subject: [PATCH] =?UTF-8?q?v3.8.0=20=E6=96=B0=E5=A2=9Etab=E5=AF=B9?= =?UTF-8?q?=E8=B1=A1=E7=AE=80=E5=8C=96=E9=A1=B5=E7=AD=BE=E6=93=8D=E4=BD=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/layout/components/TagsView/index.vue | 19 ++++--------- yudao-ui-admin/src/store/modules/tagsView.js | 28 +++++++++++++++++-- 2 files changed, 32 insertions(+), 15 deletions(-) diff --git a/yudao-ui-admin/src/layout/components/TagsView/index.vue b/yudao-ui-admin/src/layout/components/TagsView/index.vue index 99bb28969..20c4b55e6 100644 --- a/yudao-ui-admin/src/layout/components/TagsView/index.vue +++ b/yudao-ui-admin/src/layout/components/TagsView/index.vue @@ -152,31 +152,24 @@ export default { }) }, refreshSelectedTag(view) { - this.$store.dispatch('tagsView/delCachedView', view).then(() => { - const { fullPath } = view - this.$nextTick(() => { - this.$router.replace({ - path: '/redirect' + fullPath - }) - }) - }) + this.$tab.refreshPage(view); }, closeSelectedTag(view) { - this.$store.dispatch('tagsView/delView', view).then(({ visitedViews }) => { + this.$tab.closePage(view).then(({ visitedViews }) => { if (this.isActive(view)) { this.toLastView(visitedViews, view) } }) }, closeRightTags() { - this.$store.dispatch('tagsView/delRightTags', this.selectedTag).then(visitedViews => { + this.$tab.closeRightPage(this.selectedTag).then(visitedViews => { if (!visitedViews.find(i => i.fullPath === this.$route.fullPath)) { this.toLastView(visitedViews) } }) }, closeLeftTags() { - this.$store.dispatch('tagsView/delLeftTags', this.selectedTag).then(visitedViews => { + this.$tab.closeLeftPage(this.selectedTag).then(visitedViews => { if (!visitedViews.find(i => i.fullPath === this.$route.fullPath)) { this.toLastView(visitedViews) } @@ -184,12 +177,12 @@ export default { }, closeOthersTags() { this.$router.push(this.selectedTag).catch(()=>{}); - this.$store.dispatch('tagsView/delOthersViews', this.selectedTag).then(() => { + this.$tab.closeOtherPage(this.selectedTag).then(() => { this.moveToCurrentTag() }) }, closeAllTags(view) { - this.$store.dispatch('tagsView/delAllViews').then(({ visitedViews }) => { + this.$tab.closeAllPage().then(({ visitedViews }) => { if (this.affixTags.some(tag => tag.path === this.$route.path)) { return } diff --git a/yudao-ui-admin/src/store/modules/tagsView.js b/yudao-ui-admin/src/store/modules/tagsView.js index 5e8f7ff3d..d12c8d8a7 100644 --- a/yudao-ui-admin/src/store/modules/tagsView.js +++ b/yudao-ui-admin/src/store/modules/tagsView.js @@ -63,7 +63,7 @@ const mutations = { } } }, - + DEL_RIGHT_VIEWS: (state, view) => { const index = state.visitedViews.findIndex(v => v.path === view.path) if (index === -1) { @@ -79,6 +79,23 @@ const mutations = { } return false }) + }, + + DEL_LEFT_VIEWS: (state, view) => { + const index = state.visitedViews.findIndex(v => v.path === view.path) + if (index === -1) { + return + } + state.visitedViews = state.visitedViews.filter((item, idx) => { + if (idx >= index || (item.meta && item.meta.affix)) { + return true + } + const i = state.cachedViews.indexOf(item.name) + if (i > -1) { + state.cachedViews.splice(i, 1) + } + return false + }) } } @@ -172,7 +189,14 @@ const actions = { commit('DEL_RIGHT_VIEWS', view) resolve([...state.visitedViews]) }) - } + }, + + delLeftTags({ commit }, view) { + return new Promise(resolve => { + commit('DEL_LEFT_VIEWS', view) + resolve([...state.visitedViews]) + }) + }, } export default {