From f5e31febbd18372a34166cac390b1d9b914fe80e Mon Sep 17 00:00:00 2001 From: 无木 <netfan@foxmail.com> Date: 星期二, 13 七月 2021 11:09:00 +0800 Subject: [PATCH] fix(breadcrumb): `redirect` not worked --- src/router/helper/menuHelper.ts | 1 + src/layouts/default/header/components/Breadcrumb.vue | 15 +++++---------- 2 files changed, 6 insertions(+), 10 deletions(-) diff --git a/src/layouts/default/header/components/Breadcrumb.vue b/src/layouts/default/header/components/Breadcrumb.vue index 6d5d225..fe1295e 100644 --- a/src/layouts/default/header/components/Breadcrumb.vue +++ b/src/layouts/default/header/components/Breadcrumb.vue @@ -1,9 +1,9 @@ <template> <div :class="[prefixCls, `${prefixCls}--${theme}`]"> <a-breadcrumb :routes="routes"> - <template #itemRender="{ route, routes, paths }"> + <template #itemRender="{ route, routes: routesMatched, paths }"> <Icon :icon="getIcon(route)" v-if="getShowBreadCrumbIcon && getIcon(route)" /> - <span v-if="!hasRedirect(routes, route)"> + <span v-if="!hasRedirect(routesMatched, route)"> {{ t(route.name || route.meta.title) }} </span> <router-link v-else to="" @click="handleClick(route, paths, $event)"> @@ -15,6 +15,7 @@ </template> <script lang="ts"> import type { RouteLocationMatched } from 'vue-router'; + import { useRouter } from 'vue-router'; import type { Menu } from '/@/router/types'; import { defineComponent, ref, watchEffect } from 'vue'; @@ -26,7 +27,6 @@ import { useRootSetting } from '/@/hooks/setting/useRootSetting'; import { useGo } from '/@/hooks/web/usePage'; import { useI18n } from '/@/hooks/web/useI18n'; - import { useRouter } from 'vue-router'; import { propTypes } from '/@/utils/propTypes'; import { isString } from '/@/utils/is'; @@ -96,7 +96,7 @@ } function filterItem(list: RouteLocationMatched[]) { - let resultList = filter(list, (item) => { + return filter(list, (item) => { const { meta, name } = item; if (!meta) { return !!name; @@ -107,8 +107,6 @@ } return true; }).filter((item) => !item.meta?.hideBreadcrumb || !item.meta?.hideMenu); - - return resultList; } function handleClick(route: RouteLocationMatched, paths: string[], e: Event) { @@ -140,10 +138,7 @@ } function hasRedirect(routes: RouteLocationMatched[], route: RouteLocationMatched) { - if (routes.indexOf(route) === routes.length - 1) { - return false; - } - return true; + return routes.indexOf(route) !== routes.length - 1; } function getIcon(route) { diff --git a/src/router/helper/menuHelper.ts b/src/router/helper/menuHelper.ts index 62a8478..a130712 100644 --- a/src/router/helper/menuHelper.ts +++ b/src/router/helper/menuHelper.ts @@ -62,6 +62,7 @@ name: title, hideMenu, path: node.path, + ...(node.redirect ? { redirect: node.redirect } : {}), }; }, }); -- Gitblit v1.8.0