1
lzhe
2024-06-03 a786409d7f6769f43c107159dd84faf4a2927a9a
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
import { nextTick  } from 'vue'
import NProgress from 'nprogress'
import 'nprogress/nprogress.css'
import router from '@/router'
import store from '@/store'
 
export default {
    //刷新标签
    refresh() {
        NProgress.start()
        const route = router.currentRoute.value
        store.commit("removeKeepLive", route.name)
        store.commit("setRouteShow", false)
        nextTick(() => {
            store.commit("pushKeepLive", route.name)
            store.commit("setRouteShow", true)
            NProgress.done()
        })
    },
    //关闭标签
    close(tag) {
        const route = tag || router.currentRoute.value
        store.commit("removeViewTags", route)
        store.commit("removeIframeList", route)
        store.commit("removeKeepLive", route.name)
        const tagList = store.state.viewTags.viewTags
        const latestView = tagList.slice(-1)[0]
        if (latestView) {
            router.push(latestView)
        } else {
            router.push('/')
        }
    },
    //关闭标签后处理
    closeNext(next) {
        const route = router.currentRoute.value
        store.commit("removeViewTags", route)
        store.commit("removeIframeList", route)
        store.commit("removeKeepLive", route.name)
        if(next){
            const tagList = store.state.viewTags.viewTags
            next(tagList)
        }
    },
    //关闭其他
    closeOther() {
        const route = router.currentRoute.value
        const tagList = [...store.state.viewTags.viewTags]
        tagList.forEach(tag => {
            if(tag.meta&&tag.meta.affix || route.fullPath==tag.fullPath){
                return true
            }else{
                this.close(tag)
            }
        })
    },
    //设置标题
    setTitle(title){
        store.commit("updateViewTagsTitle", title)
    }
}