import { Route } from "vue-router"; import { SketonVue } from "../types/sketon.vue"; export default { methods:{ /** * @param {*} _route * @returns * 判断route 是否使用时 点击过tagView */ isExitView(this: SketonVue , _route:Route){ let index = this.page.visitViews.findIndex( (view:Route) => view.fullPath == _route.fullPath) return index }, /** * 将当前打开的tagView 调换到最后打开 */ goLastVisitView(this: SketonVue , ){ let lastView = this.page.visitViews.pop() this.page.visitViews.unshift(lastView); }, /** * 关闭当前tagView 同时打开最后一次打开的tagview */ closeAndGoLastVisitView(this: SketonVue , currentFullPath:string){ let isVisitLastTags = false // 设置当前最后一个tag let visitIndex = this.page.visitViews.findIndex( (view:Route) => view.fullPath == currentFullPath) if(visitIndex == this.page.visitViews.length-1) { isVisitLastTags = true } this.page.visitViews.splice(visitIndex , 1) // 删除当前 tag let index = this.page.openedPages.findIndex((route:Route) => route.fullPath == currentFullPath); if (index > -1) { // 清除当前页面的 alive this.removePageAlive(this.page.openedPages[index]); this.page.openedPages.splice(index, 1); } this.page.currentOpenPage = this.page.visitViews[this.page.visitViews.length-1] || this.page.defaultRoute sessionStorage.setItem('page', JSON.stringify(this.page)) isVisitLastTags && this.ctx.redirect(this.page.currentOpenPage.fullPath) }, removeView(this: SketonVue , fullPath:string){ let index = this.page.visitViews.findIndex( (route:Route) => route.fullPath == fullPath ) if(index > -1 ) this.page.visitViews.splice(index ,1) }, addLastView(this: SketonVue , route:Route){ let viewIndex = this.isExitView(route) if(viewIndex > -1){ this.page.visitViews.splice(viewIndex , 1) } this.page.visitViews.push(route) } } }