tree-menu.vue 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. <template>
  2. <div>
  3. <template v-for="list in menuList" >
  4. <el-submenu
  5. v-if="list.children && list.children.length > 0"
  6. :key="list.value"
  7. :index="list.value + ''" >
  8. <template slot="title">
  9. <span>{{ list.label}}</span>
  10. </template>
  11. <treeMenu @clickMenu="changeMenu" :menuList="list.children"></treeMenu>
  12. </el-submenu>
  13. <el-menu-item
  14. v-else
  15. @click="selectMenu(list)"
  16. :index="list.value + ''"
  17. :key="list.value">
  18. <span> {{list.label}}</span>
  19. </el-menu-item>
  20. </template>
  21. </div>
  22. </template>
  23. <script>
  24. export default{
  25. name: 'treeMenu',
  26. props: {
  27. menuList: {
  28. type: Array,
  29. required: true,
  30. default () {
  31. return []
  32. }
  33. }
  34. },
  35. data () {
  36. return {
  37. }
  38. },
  39. methods: {
  40. selectMenu (item) {
  41. this.$emit('clickMenu', item)
  42. },
  43. changeMenu (item) {
  44. this.$emit('clickMenu', item)
  45. }
  46. }
  47. }
  48. </script>
  49. <style>
  50. .el-menu-item.is-active {
  51. background-color: #fff !important;
  52. }
  53. </style>