index.vue 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. <template>
  2. <!--这里由于包裹了一层div所以原生collpase样式无法起作用-->
  3. <div class='menu-wrapper'>
  4. <el-scrollbar style="height:100%">
  5. <template v-for="item in routes">
  6. <template v-if="item.children==null || item.children.length==0">
  7. <el-menu-item :index="item.menuUrl + ',' + item.menuName" :key="item.id">
  8. <i :class="item.icon"></i>
  9. <span>{{item.menuName}}</span>
  10. </el-menu-item>
  11. </template>
  12. <template v-else>
  13. <!--子菜单index不能重复,否则打开菜单时相同index菜单会同时开启-->
  14. <el-submenu :index="item.id" :key="item.id">
  15. <template slot="title">
  16. <i :class="item.icon"></i>
  17. <span>{{item.menuName}}</span>
  18. </template>
  19. <menu-tree-item class='nest-menu' :routes='item.children' :key="item.id"></menu-tree-item>
  20. </el-submenu>
  21. </template>
  22. </template>
  23. </el-scrollbar>
  24. </div>
  25. </template>
  26. <script>
  27. export default {
  28. name: 'MenuTreeItem',
  29. props: {
  30. routes: {
  31. type: Array
  32. }
  33. }
  34. }
  35. </script>
  36. <style lang="scss" scoped>
  37. .el-menu--collapse {
  38. .menu-wrapper{
  39. .el-submenu {
  40. .el-submenu__title {
  41. span {
  42. height: 0;
  43. width: 0;
  44. overflow: hidden;
  45. visibility: hidden;
  46. display: inline-block;
  47. }
  48. }
  49. }
  50. }
  51. }
  52. </style>