73 lines
1.8 KiB
TypeScript
73 lines
1.8 KiB
TypeScript
import { nextTick } from 'vue'
|
|
import NProgress from 'nprogress'
|
|
import 'nprogress/nprogress.css'
|
|
import router from '@/router'
|
|
import viewTagsStore from "@/store/viewTags";
|
|
import keepAliveStore from "@/store/keepAlive";
|
|
import iframeStore from "@/store/iframe";
|
|
|
|
export default {
|
|
//刷新标签
|
|
refresh() {
|
|
NProgress.start()
|
|
const keepAlive = keepAliveStore()
|
|
const route = router.currentRoute.value
|
|
keepAlive.removeKeepLive(route.name)
|
|
keepAlive.setRouteShow(false)
|
|
nextTick(() => {
|
|
keepAlive.pushKeepLive(route.name)
|
|
keepAlive.setRouteShow(true)
|
|
NProgress.done()
|
|
}).then(()=>{})
|
|
},
|
|
//关闭标签
|
|
close(tag) {
|
|
const viewTags = viewTagsStore()
|
|
const keepAlive = keepAliveStore()
|
|
const iframe = iframeStore()
|
|
const route = tag || router.currentRoute.value
|
|
viewTags.removeViewTags(route)
|
|
iframe.removeIframeList(route)
|
|
keepAlive.removeKeepLive(route.name)
|
|
const tagList = viewTags.viewTags
|
|
const latestView = tagList.slice(-1)[0]
|
|
if (latestView) {
|
|
router.push(latestView)
|
|
} else {
|
|
router.push('/')
|
|
}
|
|
},
|
|
//关闭标签后处理
|
|
closeNext(next) {
|
|
const viewTags = viewTagsStore()
|
|
const keepAlive = keepAliveStore()
|
|
const iframe = iframeStore()
|
|
const route = router.currentRoute.value
|
|
viewTags.removeViewTags(route)
|
|
iframe.removeIframeList(route)
|
|
keepAlive.removeKeepLive(route.name)
|
|
if(next){
|
|
const tagList = viewTags.viewTags
|
|
next(tagList)
|
|
}
|
|
},
|
|
//关闭其他
|
|
closeOther() {
|
|
const viewTags = viewTagsStore()
|
|
const route = router.currentRoute.value
|
|
const tagList = [...viewTags.viewTags]
|
|
tagList.forEach(tag => {
|
|
if(tag.meta&&tag.meta.affix || route.fullPath==tag.fullPath){
|
|
return true
|
|
}else{
|
|
this.close(tag)
|
|
}
|
|
})
|
|
},
|
|
//设置标题
|
|
setTitle(title){
|
|
const viewTags = viewTagsStore()
|
|
viewTags.updateViewTagsTitle(title)
|
|
}
|
|
}
|