ruoyi-plus-soybean/src/layouts/common/global-header/components/global-breadcrumb.vue

54 lines
1.7 KiB
Vue
Raw Normal View History

2022-01-11 19:03:42 +08:00
<template>
<n-breadcrumb class="px-12px">
<template v-for="breadcrumb in breadcrumbs" :key="breadcrumb.key">
<n-breadcrumb-item>
<n-dropdown v-if="breadcrumb.hasChildren" :options="breadcrumb.options" @select="dropdownSelect">
2022-01-11 19:03:42 +08:00
<span>
<component
:is="breadcrumb.icon"
v-if="theme.header.crumb.showIcon"
class="inline-block align-text-bottom mr-4px text-16px"
/>
2022-01-11 19:03:42 +08:00
<span>{{ breadcrumb.label }}</span>
</span>
</n-dropdown>
<template v-else>
<component
:is="breadcrumb.icon"
v-if="theme.header.crumb.showIcon"
class="inline-block align-text-bottom mr-4px text-16px"
:class="{ 'text-#BBBBBB': theme.header.inverted }"
/>
<span :class="{ 'text-#BBBBBB': theme.header.inverted }">{{ breadcrumb.label }}</span>
2022-01-11 19:03:42 +08:00
</template>
</n-breadcrumb-item>
</template>
</n-breadcrumb>
</template>
<script setup lang="ts">
import { computed } from 'vue';
import { useRoute } from 'vue-router';
import { routePath } from '@/router';
import { useRouteStore, useThemeStore } from '@/store';
2022-01-11 19:03:42 +08:00
import { useRouterPush } from '@/composables';
import { getBreadcrumbByRouteKey } from '@/utils';
defineOptions({ name: 'GlobalBreadcrumb' });
2022-01-11 19:03:42 +08:00
const route = useRoute();
const theme = useThemeStore();
const routeStore = useRouteStore();
const { routerPush } = useRouterPush();
const breadcrumbs = computed(() =>
getBreadcrumbByRouteKey(route.name as string, routeStore.menus as App.GlobalMenuOption[], routePath('root'))
2022-01-11 19:03:42 +08:00
);
function dropdownSelect(key: string) {
routerPush({ name: key });
}
</script>
2022-01-11 19:03:42 +08:00
<style scoped></style>