custom-column.vue 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. <template>
  2. <el-table :data="tableData" style="width: 100%">
  3. <el-table-column label="Date" width="180">
  4. <template #default="scope">
  5. <div style="display: flex; align-items: center">
  6. <el-icon><timer /></el-icon>
  7. <span style="margin-left: 10px">{{ scope.row.date }}</span>
  8. </div>
  9. </template>
  10. </el-table-column>
  11. <el-table-column label="Name" width="180">
  12. <template #default="scope">
  13. <el-popover effect="light" trigger="hover" placement="top" width="auto">
  14. <template #default>
  15. <div>name: {{ scope.row.name }}</div>
  16. <div>address: {{ scope.row.address }}</div>
  17. </template>
  18. <template #reference>
  19. <el-tag>{{ scope.row.name }}</el-tag>
  20. </template>
  21. </el-popover>
  22. </template>
  23. </el-table-column>
  24. <el-table-column label="Operations">
  25. <template #default="scope">
  26. <el-button size="small" @click="handleEdit(scope.$index, scope.row)">Edit</el-button>
  27. <el-button size="small" type="danger" @click="handleDelete(scope.$index, scope.row)">Delete</el-button>
  28. </template>
  29. </el-table-column>
  30. </el-table>
  31. </template>
  32. <script lang="ts" setup>
  33. import { Timer } from '@element-plus/icons-vue'
  34. interface User {
  35. date: string
  36. name: string
  37. address: string
  38. }
  39. const handleEdit = (index: number, row: User) => {
  40. console.log(index, row)
  41. }
  42. const handleDelete = (index: number, row: User) => {
  43. console.log(index, row)
  44. }
  45. const tableData: User[] = [
  46. {
  47. date: '2016-05-03',
  48. name: 'Tom',
  49. address: 'No. 189, Grove St, Los Angeles',
  50. },
  51. {
  52. date: '2016-05-02',
  53. name: 'Tom',
  54. address: 'No. 189, Grove St, Los Angeles',
  55. },
  56. {
  57. date: '2016-05-04',
  58. name: 'Tom',
  59. address: 'No. 189, Grove St, Los Angeles',
  60. },
  61. {
  62. date: '2016-05-01',
  63. name: 'Tom',
  64. address: 'No. 189, Grove St, Los Angeles',
  65. },
  66. ]
  67. </script>