From 1b555a0ab0527478cdf2b0c31c0ea8aea70f8adc Mon Sep 17 00:00:00 2001 From: yxh <172933527@qq.com> Date: 星期四, 15 六月 2023 10:52:39 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' into yxh01 --- src/components/Breadcrumb/index.vue | 83 +++++++++++++++++++++++++++++++++++++++++ 1 files changed, 83 insertions(+), 0 deletions(-) diff --git a/src/components/Breadcrumb/index.vue b/src/components/Breadcrumb/index.vue new file mode 100644 index 0000000..8e6be4c --- /dev/null +++ b/src/components/Breadcrumb/index.vue @@ -0,0 +1,83 @@ +<!-- 椤堕儴璺緞 --> +<template> + <el-breadcrumb class="app-breadcrumb" separator="/"> + <transition-group name="breadcrumb"> + <el-breadcrumb-item v-for="(item, index) in levelList" :key="item.path"> + <span + v-if="item.redirect === 'noRedirect' || index == levelList.length - 1" + class="no-redirect" + >{{ item.meta.title }}</span + > + <a v-else @click.prevent="handleLink(item)">{{ item.meta.title }}</a> + </el-breadcrumb-item> + </transition-group> + </el-breadcrumb> +</template> + +<script> +export default { + data() { + return { + levelList: null, + }; + }, + watch: { + $route(route) { + // if you go to the redirect page, do not update the breadcrumbs + if (route.path.startsWith("/redirect/")) { + return; + } + this.getBreadcrumb(); + }, + }, + created() { + this.getBreadcrumb(); + }, + methods: { + getBreadcrumb() { + // only show routes with meta.title + let matched = this.$route.matched.filter( + (item) => item.meta && item.meta.title + ); + const first = matched[0]; + + if (!this.isDashboard(first)) { + matched = [{ path: "/index", meta: { title: "棣栭〉" } }].concat(matched); + } + + this.levelList = matched.filter( + (item) => item.meta && item.meta.title && item.meta.breadcrumb !== false + ); + }, + isDashboard(route) { + const name = route && route.name; + if (!name) { + return false; + } + return name.trim() === "Index"; + }, + handleLink(item) { + const { redirect, path } = item; + if (redirect) { + this.$router.push(redirect); + return; + } + this.$router.push(path); + }, + }, +}; +</script> + +<style lang="scss" scoped> +.app-breadcrumb.el-breadcrumb { + display: inline-block; + font-size: 14px; + line-height: 50px; + margin-left: 8px; + + .no-redirect { + color: #97a8be; + cursor: text; + } +} +</style> -- Gitblit v1.9.3