seatonwan9
2025-08-14 a0fc5b1e703769a8936fd8671ec9cdd9adfda20a
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
62
63
64
<template>
  <el-breadcrumb class="breadcrumb" :separator-icon="ArrowRight">
    <!--<el-breadcrumb-item class="hover-item" :to="{ path: '/' }">首页</el-breadcrumb-item>-->
    <el-breadcrumb-item v-for="item in matched" :key="item.path" :class="{ 'hover-item': !item.meta.type }"
        @click="targetViewShow(item)">
      {{ item.meta.title }}
    </el-breadcrumb-item>
  </el-breadcrumb>
</template>
 
<script setup lang="ts">
import router from '@/router';
import {ArrowRight} from '@element-plus/icons-vue'
import {computed} from 'vue'
import {useRoute} from 'vue-router'
import {useNavTabs} from '@/stores/modules/navTabs' // 标签导航
const navTabsStore = useNavTabs()
const route = useRoute();
const matched = computed(() => route.matched.filter((item) => item.meta && item.meta.title && item.meta.title !== '首页'));
const updateTab = function (newRoute: any) {
  // 添加tab
  navTabsStore.addTab(newRoute)
  // 激活当前tab
  navTabsStore.setActiveRoute(newRoute)
  // nextTick(() => {
  //   selectNavTab(tabsRefs.value[navTabsStore.$state.activeIndex])
  // })
}
const targetViewShow = (routeItem: any) => {
  if (!routeItem.meta.type) {
    router.push(routeItem.path)
    updateTab(routeItem)
  }
}
</script>
 
<style lang="scss" scoped>
.breadcrumb {
  width: 100%;
  display: flex;
}
</style>
 
<style lang="scss">
.breadcrumb {
  .el-breadcrumb__inner.is-link {
    color: #606266;
    font-weight: normal;
  }
 
  .hover-item {
    .el-breadcrumb__inner:hover {
      cursor: pointer;
      color: #303133;
      font-weight: bold;
    }
  }
 
  .el-breadcrumb__item:last-child .el-breadcrumb__inner {
    color: #303133;
    font-weight: bold;
  }
}
</style>