12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- <template>
- <template v-for="val in chils">
- <el-sub-menu :index="val.path" :key="val.path" v-if="val.children && val.children.length > 0">
- <template #title>
- <SvgIcon :name="val.meta.icon" />
- <span>{{ $t(val.meta.title) }}</span>
- </template>
- <sub-item :chil="val.children" />
- </el-sub-menu>
- <template v-else>
- <el-menu-item :index="val.path" :key="val.path">
- <template v-if="!val.meta.isLink || (val.meta.isLink && val.meta.isIframe)">
- <SvgIcon :name="val.meta.icon" />
- <span>{{ $t(val.meta.title) }}</span>
- </template>
- <template v-else>
- <a class="w100" @click.prevent="onALinkClick(val)">
- <SvgIcon :name="val.meta.icon" />
- {{ $t(val.meta.title) }}
- </a>
- </template>
- </el-menu-item>
- </template>
- </template>
- </template>
- <script setup lang="ts" name="navMenuSubItem">
- import { computed } from 'vue';
- import { RouteRecordRaw } from 'vue-router';
- import other from '/@/utils/other';
- // 定义父组件传过来的值
- const props = defineProps({
- // 菜单列表
- chil: {
- type: Array<RouteRecordRaw>,
- default: () => [],
- },
- });
- // 获取父级菜单数据
- const chils = computed(() => {
- return <RouteItems>props.chil;
- });
- // 打开外部链接
- const onALinkClick = (val: RouteItem) => {
- other.handleOpenLink(val);
- };
- </script>
|