|
@@ -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) {
|