columns.tsx 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. import { message } from "@/utils/message";
  2. import { tableData } from "../data";
  3. // 如果您不习惯tsx写法,可以传slot,然后在template里写
  4. // 需是hooks写法(函数中有return),避免失去响应性
  5. export function useColumns() {
  6. const columns: TableColumnList = [
  7. {
  8. label: "日期",
  9. prop: "date",
  10. cellRenderer: ({ row }) => (
  11. <div style="display: flex; align-items: center">
  12. <iconify-icon-online icon="ep:timer" />
  13. <span style="margin-left: 10px">{row.date}</span>
  14. </div>
  15. )
  16. },
  17. {
  18. label: "姓名",
  19. prop: "name",
  20. cellRenderer: ({ row }) => (
  21. <el-popover effect="light" trigger="hover" placement="top" width="auto">
  22. {{
  23. default: () => (
  24. <>
  25. <div>name: {row.name}</div>
  26. <div>address: {row.address}</div>
  27. </>
  28. ),
  29. reference: () => <el-tag>{row.name}</el-tag>
  30. }}
  31. </el-popover>
  32. )
  33. },
  34. {
  35. label: "地址",
  36. prop: "address"
  37. },
  38. {
  39. label: "操作",
  40. cellRenderer: ({ index, row }) => (
  41. <>
  42. <el-button size="small" onClick={() => handleEdit(index + 1, row)}>
  43. Edit
  44. </el-button>
  45. <el-button
  46. size="small"
  47. type="danger"
  48. onClick={() => handleDelete(index + 1, row)}
  49. >
  50. Delete
  51. </el-button>
  52. </>
  53. )
  54. }
  55. ];
  56. const handleEdit = (index: number, row) => {
  57. message(`您修改了第 ${index} 行,数据为:${JSON.stringify(row)}`, {
  58. type: "success"
  59. });
  60. };
  61. const handleDelete = (index: number, row) => {
  62. message(`您删除了第 ${index} 行,数据为:${JSON.stringify(row)}`);
  63. };
  64. return {
  65. columns,
  66. tableData
  67. };
  68. }