overlay.vue 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. <template>
  2. <el-table-v2 :columns="columns" :data="data" :row-height="40" :width="700" :height="400">
  3. <template #overlay>
  4. <div class="el-loading-mask" style="display: flex; align-items: center; justify-content: center">
  5. <el-icon class="is-loading" color="var(--el-color-primary)" :size="26">
  6. <loading-icon />
  7. </el-icon>
  8. </div>
  9. </template>
  10. </el-table-v2>
  11. </template>
  12. <script lang="ts" setup>
  13. import { Loading as LoadingIcon } from '@element-plus/icons-vue'
  14. const generateColumns = (length = 10, prefix = 'column-', props?: any) =>
  15. Array.from({ length }).map((_, columnIndex) => ({
  16. ...props,
  17. key: `${prefix}${columnIndex}`,
  18. dataKey: `${prefix}${columnIndex}`,
  19. title: `Column ${columnIndex}`,
  20. width: 150,
  21. }))
  22. const generateData = (columns: ReturnType<typeof generateColumns>, length = 200, prefix = 'row-') =>
  23. Array.from({ length }).map((_, rowIndex) => {
  24. return columns.reduce(
  25. (rowData, column, columnIndex) => {
  26. rowData[column.dataKey] = `Row ${rowIndex} - Col ${columnIndex}`
  27. return rowData
  28. },
  29. {
  30. id: `${prefix}${rowIndex}`,
  31. parentId: null,
  32. }
  33. )
  34. })
  35. const columns = generateColumns(10)
  36. const data = generateData(columns, 200)
  37. </script>
  38. <style>
  39. .example-showcase .el-table-v2__overlay {
  40. z-index: 9;
  41. }
  42. </style>