breadcrumb.vue 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. <template>
  2. <!-- 面包屑组件 -->
  3. <div class="breadcrumb flex-row-center" :style="{ 'background': meta.breadcrumbColor ? meta.breadcrumbColor : '#ffffff' }">
  4. <div class="breadcrumb-bos flex-row-start">
  5. <div class="home" @click="goHome">首页</div>
  6. <template v-if="meta.navList && meta.navList.length > 0">
  7. <div v-for="(item, index) in meta.navList" :key="index" class="nav-list">
  8. <el-icon style="margin: 0 4px"><ArrowRight /></el-icon>
  9. <div @click="goPath(item)" class="like">{{ item.title || '' }}</div>
  10. </div>
  11. </template>
  12. <el-icon style="margin: 0 4px"><ArrowRight /></el-icon>
  13. <div>{{ meta.title || '' }}</div>
  14. </div>
  15. </div>
  16. </template>
  17. <script setup lang="ts">
  18. const router = useRouter();
  19. const route = useRoute();
  20. const meta = ref<any>({});
  21. meta.value = route.meta;
  22. watch(route, () => {
  23. meta.value = route.meta;
  24. });
  25. const goHome = () => {
  26. router.push('/');
  27. };
  28. const goPath = (res: any) => {
  29. router.push(res.url);
  30. };
  31. </script>
  32. <style lang="scss" scoped>
  33. .breadcrumb {
  34. width: 100%;
  35. height: 44px;
  36. background: #ffffff;
  37. .breadcrumb-bos {
  38. width: 1200px;
  39. font-size: 14px;
  40. color: #101828;
  41. .nav-list {
  42. height: 44px;
  43. display: flex;
  44. align-items: center;
  45. .like {
  46. cursor: pointer;
  47. &:hover {
  48. color: var(--el-color-primary);
  49. }
  50. }
  51. }
  52. .home {
  53. cursor: pointer;
  54. &:hover {
  55. color: var(--el-color-primary);
  56. }
  57. }
  58. }
  59. }
  60. </style>