with-status.vue 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. <template>
  2. <el-table
  3. :data="tableData"
  4. style="width: 100%"
  5. :row-class-name="tableRowClassName"
  6. >
  7. <el-table-column prop="date" label="Date" width="180" />
  8. <el-table-column prop="name" label="Name" width="180" />
  9. <el-table-column prop="address" label="Address" />
  10. </el-table>
  11. </template>
  12. <script lang="ts" setup>
  13. interface User {
  14. date: string
  15. name: string
  16. address: string
  17. }
  18. const tableRowClassName = ({
  19. row,
  20. rowIndex,
  21. }: {
  22. row: User
  23. rowIndex: number
  24. }) => {
  25. if (rowIndex === 1) {
  26. return 'warning-row'
  27. } else if (rowIndex === 3) {
  28. return 'success-row'
  29. }
  30. return ''
  31. }
  32. const tableData: User[] = [
  33. {
  34. date: '2016-05-03',
  35. name: 'Tom',
  36. address: 'No. 189, Grove St, Los Angeles',
  37. },
  38. {
  39. date: '2016-05-02',
  40. name: 'Tom',
  41. address: 'No. 189, Grove St, Los Angeles',
  42. },
  43. {
  44. date: '2016-05-04',
  45. name: 'Tom',
  46. address: 'No. 189, Grove St, Los Angeles',
  47. },
  48. {
  49. date: '2016-05-01',
  50. name: 'Tom',
  51. address: 'No. 189, Grove St, Los Angeles',
  52. },
  53. ]
  54. </script>
  55. <style>
  56. .el-table .warning-row {
  57. --el-table-tr-bg-color: var(--el-color-warning-light-9);
  58. }
  59. .el-table .success-row {
  60. --el-table-tr-bg-color: var(--el-color-success-light-9);
  61. }
  62. </style>