index.vue 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160
  1. <template>
  2. <div>
  3. <el-alert
  4. effect="dark"
  5. :closable="false"
  6. title="基于 Element 的 Table 组件进行二次封装,实现数据驱动,支持所有 Table 参数 -- 流体高度"
  7. type="info"
  8. style="margin-bottom: 20px;"
  9. />
  10. <com-table
  11. v-loading="loading"
  12. :columns="columns"
  13. :data="tableData"
  14. border
  15. max-height="250"
  16. style="width: 820px;"
  17. >
  18. <template #action="scope">
  19. <el-button type="text" size="small" @click="deleteRow(scope.$index)">移除</el-button>
  20. </template>
  21. </com-table>
  22. </div>
  23. </template>
  24. <script lang="ts">
  25. import { defineComponent, ref } from 'vue'
  26. const columns = [
  27. {
  28. key: 'date',
  29. label: '日期',
  30. fixed: true,
  31. width: '150'
  32. },
  33. {
  34. key: 'name',
  35. label: '姓名',
  36. width: '120'
  37. },
  38. {
  39. key: 'province',
  40. label: '省份',
  41. width: '120'
  42. },
  43. {
  44. key: 'city',
  45. label: '市区',
  46. width: '120'
  47. },
  48. {
  49. key: 'address',
  50. label: '地址',
  51. width: '300'
  52. },
  53. {
  54. key: 'zip',
  55. label: '邮编',
  56. width: '120'
  57. },
  58. {
  59. key: 'action',
  60. label: '操作',
  61. width: '100',
  62. fixed: 'right',
  63. slots: {
  64. default: 'action'
  65. }
  66. }
  67. ]
  68. export default defineComponent({
  69. // name: 'FluidHeight',
  70. setup() {
  71. const tableData = ref<any[]>([
  72. {
  73. date: '2016-05-02',
  74. name: '王小虎',
  75. province: '上海',
  76. city: '普陀区',
  77. address: '上海市普陀区金沙江路 1518 弄',
  78. zip: 200333
  79. },
  80. {
  81. date: '2016-05-04',
  82. name: '王小虎',
  83. province: '上海',
  84. city: '普陀区',
  85. address: '上海市普陀区金沙江路 1517 弄',
  86. zip: 200333
  87. },
  88. {
  89. date: '2016-05-01',
  90. name: '王小虎',
  91. province: '上海',
  92. city: '普陀区',
  93. address: '上海市普陀区金沙江路 1519 弄',
  94. zip: 200333
  95. },
  96. {
  97. date: '2016-05-03',
  98. name: '王小虎',
  99. province: '上海',
  100. city: '普陀区',
  101. address: '上海市普陀区金沙江路 1516 弄',
  102. zip: 200333
  103. },
  104. {
  105. date: '2016-05-02',
  106. name: '王小虎',
  107. province: '上海',
  108. city: '普陀区',
  109. address: '上海市普陀区金沙江路 1518 弄',
  110. zip: 200333
  111. },
  112. {
  113. date: '2016-05-04',
  114. name: '王小虎',
  115. province: '上海',
  116. city: '普陀区',
  117. address: '上海市普陀区金沙江路 1517 弄',
  118. zip: 200333
  119. },
  120. {
  121. date: '2016-05-01',
  122. name: '王小虎',
  123. province: '上海',
  124. city: '普陀区',
  125. address: '上海市普陀区金沙江路 1519 弄',
  126. zip: 200333
  127. },
  128. {
  129. date: '2016-05-03',
  130. name: '王小虎',
  131. province: '上海',
  132. city: '普陀区',
  133. address: '上海市普陀区金沙江路 1516 弄',
  134. zip: 200333
  135. }
  136. ])
  137. const loading = ref<boolean>(true)
  138. setTimeout(() => {
  139. loading.value = false
  140. }, 1000)
  141. function deleteRow(index: number) {
  142. tableData.value.splice(index, 1)
  143. }
  144. return {
  145. columns,
  146. tableData,
  147. loading,
  148. deleteRow
  149. }
  150. }
  151. })
  152. </script>
  153. <style>
  154. </style>