Commit f87e1d822ccedbc8157775c8d58212fa4a6a6252

Authored by YunaiV
1 parent 19f62078

v3.8.0 新增tab对象简化页签操作

yudao-ui-admin/src/layout/components/TagsView/index.vue
@@ -152,31 +152,24 @@ export default { @@ -152,31 +152,24 @@ export default {
152 }) 152 })
153 }, 153 },
154 refreshSelectedTag(view) { 154 refreshSelectedTag(view) {
155 - this.$store.dispatch('tagsView/delCachedView', view).then(() => {  
156 - const { fullPath } = view  
157 - this.$nextTick(() => {  
158 - this.$router.replace({  
159 - path: '/redirect' + fullPath  
160 - })  
161 - })  
162 - }) 155 + this.$tab.refreshPage(view);
163 }, 156 },
164 closeSelectedTag(view) { 157 closeSelectedTag(view) {
165 - this.$store.dispatch('tagsView/delView', view).then(({ visitedViews }) => { 158 + this.$tab.closePage(view).then(({ visitedViews }) => {
166 if (this.isActive(view)) { 159 if (this.isActive(view)) {
167 this.toLastView(visitedViews, view) 160 this.toLastView(visitedViews, view)
168 } 161 }
169 }) 162 })
170 }, 163 },
171 closeRightTags() { 164 closeRightTags() {
172 - this.$store.dispatch('tagsView/delRightTags', this.selectedTag).then(visitedViews => { 165 + this.$tab.closeRightPage(this.selectedTag).then(visitedViews => {
173 if (!visitedViews.find(i => i.fullPath === this.$route.fullPath)) { 166 if (!visitedViews.find(i => i.fullPath === this.$route.fullPath)) {
174 this.toLastView(visitedViews) 167 this.toLastView(visitedViews)
175 } 168 }
176 }) 169 })
177 }, 170 },
178 closeLeftTags() { 171 closeLeftTags() {
179 - this.$store.dispatch('tagsView/delLeftTags', this.selectedTag).then(visitedViews => { 172 + this.$tab.closeLeftPage(this.selectedTag).then(visitedViews => {
180 if (!visitedViews.find(i => i.fullPath === this.$route.fullPath)) { 173 if (!visitedViews.find(i => i.fullPath === this.$route.fullPath)) {
181 this.toLastView(visitedViews) 174 this.toLastView(visitedViews)
182 } 175 }
@@ -184,12 +177,12 @@ export default { @@ -184,12 +177,12 @@ export default {
184 }, 177 },
185 closeOthersTags() { 178 closeOthersTags() {
186 this.$router.push(this.selectedTag).catch(()=>{}); 179 this.$router.push(this.selectedTag).catch(()=>{});
187 - this.$store.dispatch('tagsView/delOthersViews', this.selectedTag).then(() => { 180 + this.$tab.closeOtherPage(this.selectedTag).then(() => {
188 this.moveToCurrentTag() 181 this.moveToCurrentTag()
189 }) 182 })
190 }, 183 },
191 closeAllTags(view) { 184 closeAllTags(view) {
192 - this.$store.dispatch('tagsView/delAllViews').then(({ visitedViews }) => { 185 + this.$tab.closeAllPage().then(({ visitedViews }) => {
193 if (this.affixTags.some(tag => tag.path === this.$route.path)) { 186 if (this.affixTags.some(tag => tag.path === this.$route.path)) {
194 return 187 return
195 } 188 }
yudao-ui-admin/src/store/modules/tagsView.js
@@ -63,7 +63,7 @@ const mutations = { @@ -63,7 +63,7 @@ const mutations = {
63 } 63 }
64 } 64 }
65 }, 65 },
66 - 66 +
67 DEL_RIGHT_VIEWS: (state, view) => { 67 DEL_RIGHT_VIEWS: (state, view) => {
68 const index = state.visitedViews.findIndex(v => v.path === view.path) 68 const index = state.visitedViews.findIndex(v => v.path === view.path)
69 if (index === -1) { 69 if (index === -1) {
@@ -79,6 +79,23 @@ const mutations = { @@ -79,6 +79,23 @@ const mutations = {
79 } 79 }
80 return false 80 return false
81 }) 81 })
  82 + },
  83 +
  84 + DEL_LEFT_VIEWS: (state, view) => {
  85 + const index = state.visitedViews.findIndex(v => v.path === view.path)
  86 + if (index === -1) {
  87 + return
  88 + }
  89 + state.visitedViews = state.visitedViews.filter((item, idx) => {
  90 + if (idx >= index || (item.meta && item.meta.affix)) {
  91 + return true
  92 + }
  93 + const i = state.cachedViews.indexOf(item.name)
  94 + if (i > -1) {
  95 + state.cachedViews.splice(i, 1)
  96 + }
  97 + return false
  98 + })
82 } 99 }
83 } 100 }
84 101
@@ -172,7 +189,14 @@ const actions = { @@ -172,7 +189,14 @@ const actions = {
172 commit('DEL_RIGHT_VIEWS', view) 189 commit('DEL_RIGHT_VIEWS', view)
173 resolve([...state.visitedViews]) 190 resolve([...state.visitedViews])
174 }) 191 })
175 - } 192 + },
  193 +
  194 + delLeftTags({ commit }, view) {
  195 + return new Promise(resolve => {
  196 + commit('DEL_LEFT_VIEWS', view)
  197 + resolve([...state.visitedViews])
  198 + })
  199 + },
176 } 200 }
177 201
178 export default { 202 export default {