Commit 69dba93ae5f0db0060e8c3ad9f587ed2dde82d19

Authored by YunaiV
1 parent 3d090880

v3.7.0 页签新增关闭左侧

yudao-ui-admin/src/layout/components/TagsView/index.vue
@@ -21,6 +21,7 @@ @@ -21,6 +21,7 @@
21 <li @click="refreshSelectedTag(selectedTag)"><i class="el-icon-refresh-right"></i> 刷新页面</li> 21 <li @click="refreshSelectedTag(selectedTag)"><i class="el-icon-refresh-right"></i> 刷新页面</li>
22 <li v-if="!isAffix(selectedTag)" @click="closeSelectedTag(selectedTag)"><i class="el-icon-close"></i> 关闭当前</li> 22 <li v-if="!isAffix(selectedTag)" @click="closeSelectedTag(selectedTag)"><i class="el-icon-close"></i> 关闭当前</li>
23 <li @click="closeOthersTags"><i class="el-icon-circle-close"></i> 关闭其他</li> 23 <li @click="closeOthersTags"><i class="el-icon-circle-close"></i> 关闭其他</li>
  24 + <li v-if="!isFirstView()" @click="closeLeftTags"><i class="el-icon-back"></i> 关闭左侧</li>
24 <li v-if="!isLastView()" @click="closeRightTags"><i class="el-icon-right"></i> 关闭右侧</li> 25 <li v-if="!isLastView()" @click="closeRightTags"><i class="el-icon-right"></i> 关闭右侧</li>
25 <li @click="closeAllTags(selectedTag)"><i class="el-icon-circle-close"></i> 全部关闭</li> 26 <li @click="closeAllTags(selectedTag)"><i class="el-icon-circle-close"></i> 全部关闭</li>
26 </ul> 27 </ul>
@@ -84,6 +85,13 @@ export default { @@ -84,6 +85,13 @@ export default {
84 isAffix(tag) { 85 isAffix(tag) {
85 return tag.meta && tag.meta.affix 86 return tag.meta && tag.meta.affix
86 }, 87 },
  88 + isFirstView() {
  89 + try {
  90 + return this.selectedTag.fullPath === this.visitedViews[1].fullPath || this.selectedTag.fullPath === '/index'
  91 + } catch (err) {
  92 + return false
  93 + }
  94 + },
87 isLastView() { 95 isLastView() {
88 try { 96 try {
89 return this.selectedTag.fullPath === this.visitedViews[this.visitedViews.length - 1].fullPath 97 return this.selectedTag.fullPath === this.visitedViews[this.visitedViews.length - 1].fullPath
@@ -167,6 +175,13 @@ export default { @@ -167,6 +175,13 @@ export default {
167 } 175 }
168 }) 176 })
169 }, 177 },
  178 + closeLeftTags() {
  179 + this.$store.dispatch('tagsView/delLeftTags', this.selectedTag).then(visitedViews => {
  180 + if (!visitedViews.find(i => i.fullPath === this.$route.fullPath)) {
  181 + this.toLastView(visitedViews)
  182 + }
  183 + })
  184 + },
170 closeOthersTags() { 185 closeOthersTags() {
171 this.$router.push(this.selectedTag).catch(()=>{}); 186 this.$router.push(this.selectedTag).catch(()=>{});
172 this.$store.dispatch('tagsView/delOthersViews', this.selectedTag).then(() => { 187 this.$store.dispatch('tagsView/delOthersViews', this.selectedTag).then(() => {