basic.vue 994 B

123456789101112131415161718192021222324252627282930313233343536
  1. <template>
  2. <el-tree-v2 :data="data" :props="props" :height="208" />
  3. </template>
  4. <script lang="ts" setup>
  5. interface Tree {
  6. id: string
  7. label: string
  8. children?: Tree[]
  9. }
  10. const getKey = (prefix: string, id: number) => {
  11. return `${prefix}-${id}`
  12. }
  13. const createData = (maxDeep: number, maxChildren: number, minNodesNumber: number, deep = 1, key = 'node'): Tree[] => {
  14. let id = 0
  15. return Array.from({ length: minNodesNumber })
  16. .fill(deep)
  17. .map(() => {
  18. const childrenNumber = deep === maxDeep ? 0 : Math.round(Math.random() * maxChildren)
  19. const nodeKey = getKey(key, ++id)
  20. return {
  21. id: nodeKey,
  22. label: nodeKey,
  23. children: childrenNumber ? createData(maxDeep, maxChildren, childrenNumber, deep + 1, nodeKey) : undefined,
  24. }
  25. })
  26. }
  27. const props = {
  28. value: 'id',
  29. label: 'label',
  30. children: 'children',
  31. }
  32. const data = createData(4, 30, 40)
  33. </script>