SidebarItem.vue 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. <template>
  2. <div v-if="item.status">
  3. <template v-if="!item.children || !item.children.length">
  4. <app-link v-if="item.meta" :to="item.path">
  5. <el-menu-item :index="item.path" :class="{ 'submenu-title-noDropdown': !isNest }">
  6. <item :icon="item.meta.icon || (item.meta && item.meta.icon)" :title="item.meta.title" />
  7. </el-menu-item>
  8. </app-link>
  9. </template>
  10. <el-submenu v-else ref="subMenu" :index="item.path" popper-append-to-body>
  11. <template slot="title">
  12. <item v-if="item.meta" :icon="item.meta && item.meta.icon" :title="item.meta.title" />
  13. </template>
  14. <sidebar-item v-for="child in item.children" :key="child.name" :is-nest="true" :item="child" class="nest-menu" />
  15. </el-submenu>
  16. </div>
  17. </template>
  18. <script>
  19. import Item from './Item'
  20. import AppLink from './Link'
  21. import FixiOSBug from './FixiOSBug'
  22. export default {
  23. name: 'SidebarItem',
  24. components: { Item, AppLink },
  25. mixins: [FixiOSBug],
  26. props: {
  27. item: {
  28. type: Object,
  29. required: true
  30. },
  31. isNest: {
  32. type: Boolean,
  33. default: false
  34. }
  35. },
  36. data() {
  37. return {}
  38. },
  39. methods: {}
  40. }
  41. </script>