subItem.vue 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. <template>
  2. <template v-for="val in chils">
  3. <el-sub-menu :index="val.path" :key="val.path" v-if="val.children && val.children.length > 0">
  4. <template #title>
  5. <SvgIcon :name="val.meta?.icon" />
  6. <span>{{ val.meta?.title.indexOf('.')>0?$t(val.meta?.title):val.meta?.title }}</span>
  7. </template>
  8. <sub-item :chil="val.children" />
  9. </el-sub-menu>
  10. <template v-else>
  11. <el-menu-item :index="val.path" :key="val.path">
  12. <template v-if="!val.meta?.isLink || (val.meta?.isLink && val.meta.isIframe)">
  13. <SvgIcon :name="val.meta?.icon" />
  14. <span>{{ val.meta?.title.indexOf('.')>0?$t(val.meta?.title):val.meta?.title }}</span>
  15. </template>
  16. <template v-else>
  17. <a :href="val.meta?.linkUrl" target="_blank" rel="opener" class="w100">
  18. <SvgIcon :name="val.meta?.icon" />
  19. {{ val.meta?.title.indexOf('.')>0?$t(val.meta?.title):val.meta?.title }}
  20. </a>
  21. </template>
  22. </el-menu-item>
  23. </template>
  24. </template>
  25. </template>
  26. <script lang="ts">
  27. import { computed, defineComponent } from 'vue';
  28. export default defineComponent({
  29. name: 'navMenuSubItem',
  30. props: {
  31. chil: {
  32. type: Array,
  33. default: () => [],
  34. },
  35. },
  36. setup(props) {
  37. // 获取父级菜单数据
  38. const chils = computed(() => {
  39. return <any>props.chil;
  40. });
  41. return {
  42. chils,
  43. };
  44. },
  45. });
  46. </script>