tree-and-lazy.vue 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. <template>
  2. <div>
  3. <el-table
  4. :data="tableData"
  5. style="width: 100%; margin-bottom: 20px"
  6. row-key="id"
  7. border
  8. default-expand-all
  9. >
  10. <el-table-column prop="date" label="Date" sortable />
  11. <el-table-column prop="name" label="Name" sortable />
  12. <el-table-column prop="address" label="Address" sortable />
  13. </el-table>
  14. <el-table
  15. :data="tableData1"
  16. style="width: 100%"
  17. row-key="id"
  18. border
  19. lazy
  20. :load="load"
  21. :tree-props="{ children: 'children', hasChildren: 'hasChildren' }"
  22. >
  23. <el-table-column prop="date" label="Date" />
  24. <el-table-column prop="name" label="Name" />
  25. <el-table-column prop="address" label="Address" />
  26. </el-table>
  27. </div>
  28. </template>
  29. <script lang="ts" setup>
  30. interface User {
  31. id: number
  32. date: string
  33. name: string
  34. address: string
  35. hasChildren?: boolean
  36. children?: User[]
  37. }
  38. const load = (
  39. row: User,
  40. treeNode: unknown,
  41. resolve: (date: User[]) => void
  42. ) => {
  43. setTimeout(() => {
  44. resolve([
  45. {
  46. id: 31,
  47. date: '2016-05-01',
  48. name: 'wangxiaohu',
  49. address: 'No. 189, Grove St, Los Angeles',
  50. },
  51. {
  52. id: 32,
  53. date: '2016-05-01',
  54. name: 'wangxiaohu',
  55. address: 'No. 189, Grove St, Los Angeles',
  56. },
  57. ])
  58. }, 1000)
  59. }
  60. const tableData: User[] = [
  61. {
  62. id: 1,
  63. date: '2016-05-02',
  64. name: 'wangxiaohu',
  65. address: 'No. 189, Grove St, Los Angeles',
  66. },
  67. {
  68. id: 2,
  69. date: '2016-05-04',
  70. name: 'wangxiaohu',
  71. address: 'No. 189, Grove St, Los Angeles',
  72. },
  73. {
  74. id: 3,
  75. date: '2016-05-01',
  76. name: 'wangxiaohu',
  77. address: 'No. 189, Grove St, Los Angeles',
  78. children: [
  79. {
  80. id: 31,
  81. date: '2016-05-01',
  82. name: 'wangxiaohu',
  83. address: 'No. 189, Grove St, Los Angeles',
  84. },
  85. {
  86. id: 32,
  87. date: '2016-05-01',
  88. name: 'wangxiaohu',
  89. address: 'No. 189, Grove St, Los Angeles',
  90. },
  91. ],
  92. },
  93. {
  94. id: 4,
  95. date: '2016-05-03',
  96. name: 'wangxiaohu',
  97. address: 'No. 189, Grove St, Los Angeles',
  98. },
  99. ]
  100. const tableData1: User[] = [
  101. {
  102. id: 1,
  103. date: '2016-05-02',
  104. name: 'wangxiaohu',
  105. address: 'No. 189, Grove St, Los Angeles',
  106. },
  107. {
  108. id: 2,
  109. date: '2016-05-04',
  110. name: 'wangxiaohu',
  111. address: 'No. 189, Grove St, Los Angeles',
  112. },
  113. {
  114. id: 3,
  115. date: '2016-05-01',
  116. name: 'wangxiaohu',
  117. hasChildren: true,
  118. address: 'No. 189, Grove St, Los Angeles',
  119. },
  120. {
  121. id: 4,
  122. date: '2016-05-03',
  123. name: 'wangxiaohu',
  124. address: 'No. 189, Grove St, Los Angeles',
  125. },
  126. ]
  127. </script>