history.vue 2.2 KB
Newer Older
Mr.奇淼('s avatar
Mr.奇淼( 已提交
1 2
<template>
          <div class="router-history">
3
            <el-tabs v-model="activeValue" type="card" :closable="!(historys.length==1&&this.$route.name=='dashboard')" @tab-click="changeTab" @tab-remove="removeTab">
Mr.奇淼('s avatar
Mr.奇淼( 已提交
4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
              <el-tab-pane
                v-for="item in historys"
                :key="item.name"
                :label="item.meta.title"
                :name="item.name"
              >
              </el-tab-pane>
            </el-tabs>
          </div>
</template>
<script>
export default {
    name:"HistoryComponent",
    data(){
        return{
19
            historys:[],
20
            activeValue:"dashboard"
21 22 23 24
        }
    },
    created(){
        const initHistorys = [
Mr.奇淼('s avatar
Mr.奇淼( 已提交
25
                {
26
                name:"dashboard",
Mr.奇淼('s avatar
Mr.奇淼( 已提交
27 28 29 30
                meta:{
                    title:"仪表盘"
                }
                }
31 32 33
            ]
        this.historys = JSON.parse(sessionStorage.getItem("historys")) || initHistorys
        this.setTab(this.$route)
Mr.奇淼('s avatar
Mr.奇淼( 已提交
34 35
    },
    methods:{
36 37 38 39 40
        setTab(route){
        if(!this.historys.some(item=>item.name==route.name)){
           const obj = {}
           obj.name = route.name
           obj.meta = route.meta
41
           this.historys.push(obj)
42 43 44
       }
           this.activeValue = this.$route.name
        },
Mr.奇淼('s avatar
Mr.奇淼( 已提交
45 46 47 48 49 50 51
        changeTab(tab){
            this.$router.push({name:tab.name})
        },
        removeTab(tab){
           const index = this.historys.findIndex(item=>item.name == tab)
           if(this.$route.name == tab){
               if(this.historys.length==1){
52
                   this.$router.push({name:"dashboard"})
Mr.奇淼('s avatar
Mr.奇淼( 已提交
53 54 55 56 57 58 59 60 61 62 63 64 65 66
               }else{
                    if(index<this.historys.length-1){
                        this.$router.push({name:this.historys[index+1].name})
                    }else{
                        this.$router.push({name:this.historys[index-1].name})
                    }
               }
           }
               this.historys.splice(index,1)
        }
    },
    watch:{
     $route( to ){
       this.historys = this.historys.filter(item=>!item.meta.hidden)
67 68
       this.setTab(to)
       sessionStorage.setItem("historys",JSON.stringify(this.historys))
Mr.奇淼('s avatar
Mr.奇淼( 已提交
69
     }
70
     
Mr.奇淼('s avatar
Mr.奇淼( 已提交
71 72 73 74 75 76
    }
}
</script>
<style lang="scss">
    
</style>