Browse Source

页签新增关闭右侧

tags/v3.0.0
RuoYi 4 years ago
parent
commit
94a6a5a7d9
  1. 15
      ruoyi-ui/src/layout/components/TagsView/index.vue
  2. 24
      ruoyi-ui/src/store/modules/tagsView.js

15
ruoyi-ui/src/layout/components/TagsView/index.vue

@ -21,6 +21,7 @@ @@ -21,6 +21,7 @@
<li @click="refreshSelectedTag(selectedTag)">刷新页面</li>
<li v-if="!isAffix(selectedTag)" @click="closeSelectedTag(selectedTag)">关闭当前</li>
<li @click="closeOthersTags">关闭其他</li>
<li v-if="!isLastView()" @click="closeRightTags">关闭右侧</li>
<li @click="closeAllTags(selectedTag)">关闭所有</li>
</ul>
</div>
@ -83,6 +84,13 @@ export default { @@ -83,6 +84,13 @@ export default {
isAffix(tag) {
return tag.meta && tag.meta.affix
},
isLastView() {
try {
return this.selectedTag.fullPath === this.visitedViews[this.visitedViews.length - 1].fullPath
} catch (err) {
return false
}
},
filterAffixTags(routes, basePath = '/') {
let tags = []
routes.forEach(route => {
@ -152,6 +160,13 @@ export default { @@ -152,6 +160,13 @@ export default {
}
})
},
closeRightTags() {
this.$store.dispatch('tagsView/delRightTags', 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(() => {

24
ruoyi-ui/src/store/modules/tagsView.js

@ -62,6 +62,23 @@ const mutations = { @@ -62,6 +62,23 @@ const mutations = {
break
}
}
},
DEL_RIGHT_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
})
}
}
@ -148,6 +165,13 @@ const actions = { @@ -148,6 +165,13 @@ const actions = {
updateVisitedView({ commit }, view) {
commit('UPDATE_VISITED_VIEW', view)
},
delRightTags({ commit }, view) {
return new Promise(resolve => {
commit('DEL_RIGHT_VIEWS', view)
resolve([...state.visitedViews])
})
}
}

Loading…
Cancel
Save