treeMenu.vue 972 B

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. <template>
  2. <view>
  3. <view @click="toggleNodes(item)" style="display: flex;align-items: center;justify-content: start;">
  4. <!-- <u-icon name="arrow-left" v-if="!expanded"></u-icon>
  5. <u-icon name="arrow-down" v-else></u-icon> -->
  6. <image style="width:80rpx;height:80rpx;float:left" mode="">
  7. </image>
  8. {{ item.name }}
  9. </view>
  10. <view @click="clickNodes(item)" :class="expanded == true ? 'expandedStyle' : ''" v-if="item.children && item.children.length && expanded">
  11. <tree-menu @click="clickNodes(child)" v-for="child in item.children" :key="child.id" :item="child"></tree-menu>
  12. </view>
  13. </view>
  14. </template>
  15. <script>
  16. export default {
  17. name: 'TreeMenu',
  18. props: ['item'],
  19. data() {
  20. return {
  21. expanded: true,
  22. };
  23. },
  24. methods: {
  25. toggleNodes(item) {
  26. this.expanded = !this.expanded;
  27. },
  28. clickNodes(item) {
  29. this.$emit("menuClick",item.id)
  30. },
  31. }
  32. }
  33. </script>
  34. <style lang="scss" scoped>
  35. .expandedStyle {
  36. margin-left: 20px;
  37. }
  38. </style>