From 0e6150720c4edf38eb0df775c50481284fcc646c Mon Sep 17 00:00:00 2001 From: RuoYi Date: Sun, 5 Sep 2021 13:27:58 +0800 Subject: [PATCH] =?UTF-8?q?=E9=A1=B5=E7=AD=BE=E6=96=B0=E5=A2=9E=E5=85=B3?= =?UTF-8?q?=E9=97=AD=E5=B7=A6=E4=BE=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/layout/components/TagsView/index.vue | 15 +++++++++++ ruoyi-ui/src/store/modules/tagsView.js | 26 ++++++++++++++++++- 2 files changed, 40 insertions(+), 1 deletion(-) diff --git a/ruoyi-ui/src/layout/components/TagsView/index.vue b/ruoyi-ui/src/layout/components/TagsView/index.vue index eff632146..e43aa2e4a 100644 --- a/ruoyi-ui/src/layout/components/TagsView/index.vue +++ b/ruoyi-ui/src/layout/components/TagsView/index.vue @@ -21,6 +21,7 @@
  • 刷新页面
  • 关闭当前
  • 关闭其他
  • +
  • 关闭左侧
  • 关闭右侧
  • 全部关闭
  • @@ -84,6 +85,13 @@ export default { isAffix(tag) { return tag.meta && tag.meta.affix }, + isFirstView() { + try { + return this.selectedTag.fullPath === this.visitedViews[1].fullPath || this.selectedTag.fullPath === '/index' + } catch (err) { + return false + } + }, isLastView() { try { return this.selectedTag.fullPath === this.visitedViews[this.visitedViews.length - 1].fullPath @@ -167,6 +175,13 @@ export default { } }) }, + closeLeftTags() { + this.$store.dispatch('tagsView/delLeftTags', this.selectedTag).then(visitedViews => { + if (!visitedViews.find(i => i.fullPath === this.$route.fullPath)) { + this.toLastView(visitedViews) + } + }) + }, closeOthersTags() { this.$router.push(this.selectedTag).catch(()=>{}); this.$store.dispatch('tagsView/delOthersViews', this.selectedTag).then(() => { diff --git a/ruoyi-ui/src/store/modules/tagsView.js b/ruoyi-ui/src/store/modules/tagsView.js index a1873e4a3..93d44040d 100644 --- a/ruoyi-ui/src/store/modules/tagsView.js +++ b/ruoyi-ui/src/store/modules/tagsView.js @@ -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 {