tree-and-lazy.vue 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. <template>
  2. <div>
  3. <el-table :data="tableData" style="width: 100%; margin-bottom: 20px" row-key="id" border default-expand-all>
  4. <el-table-column prop="date" label="date" sortable width="180" />
  5. <el-table-column prop="name" label="Name" sortable width="180" />
  6. </el-table>
  7. <el-table :data="tableData1" style="width: 100%" row-key="id" border lazy :load="load" :tree-props="{ children: 'children', hasChildren: 'hasChildren' }">
  8. <el-table-column prop="date" label="Date" width="180" />
  9. <el-table-column prop="name" label="Name" width="180" />
  10. </el-table>
  11. </div>
  12. </template>
  13. <script lang="ts" setup>
  14. interface User {
  15. id: number
  16. date: string
  17. name: string
  18. hasChildren?: boolean
  19. children?: User[]
  20. }
  21. const load = (row: User, treeNode: unknown, resolve: (date: User[]) => void) => {
  22. setTimeout(() => {
  23. resolve([
  24. {
  25. id: 31,
  26. date: '2016-05-01',
  27. name: 'wangxiaohu',
  28. },
  29. {
  30. id: 32,
  31. date: '2016-05-01',
  32. name: 'wangxiaohu',
  33. },
  34. ])
  35. }, 1000)
  36. }
  37. const tableData: User[] = [
  38. {
  39. id: 1,
  40. date: '2016-05-02',
  41. name: 'wangxiaohu',
  42. },
  43. {
  44. id: 2,
  45. date: '2016-05-04',
  46. name: 'wangxiaohu',
  47. },
  48. {
  49. id: 3,
  50. date: '2016-05-01',
  51. name: 'wangxiaohu',
  52. children: [
  53. {
  54. id: 31,
  55. date: '2016-05-01',
  56. name: 'wangxiaohu',
  57. },
  58. {
  59. id: 32,
  60. date: '2016-05-01',
  61. name: 'wangxiaohu',
  62. },
  63. ],
  64. },
  65. {
  66. id: 4,
  67. date: '2016-05-03',
  68. name: 'wangxiaohu',
  69. },
  70. ]
  71. const tableData1: User[] = [
  72. {
  73. id: 1,
  74. date: '2016-05-02',
  75. name: 'wangxiaohu',
  76. },
  77. {
  78. id: 2,
  79. date: '2016-05-04',
  80. name: 'wangxiaohu',
  81. },
  82. {
  83. id: 3,
  84. date: '2016-05-01',
  85. name: 'wangxiaohu',
  86. hasChildren: true,
  87. },
  88. {
  89. id: 4,
  90. date: '2016-05-03',
  91. name: 'wangxiaohu',
  92. },
  93. ]
  94. </script>