Logs.tsx 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. import { ProTable } from "@ant-design/pro-components";
  2. import { useIntl } from "react-intl";
  3. interface IItem {
  4. id: number;
  5. message: string;
  6. createdAt: Date;
  7. }
  8. const Widget = () => {
  9. const intl = useIntl();
  10. return (
  11. <ProTable<IItem>
  12. columns={[
  13. {
  14. title: intl.formatMessage({ id: "forms.fields.id.label" }),
  15. dataIndex: "id",
  16. key: "id",
  17. width: 80,
  18. search: false,
  19. },
  20. {
  21. title: intl.formatMessage({ id: "forms.fields.message.label" }),
  22. dataIndex: "message",
  23. key: "message",
  24. search: false,
  25. },
  26. {
  27. title: intl.formatMessage({ id: "forms.fields.created-at.label" }),
  28. key: "created-at",
  29. width: 200,
  30. render: (_, it) => <>{it.createdAt.toISOString()}</>,
  31. search: false,
  32. },
  33. ]}
  34. request={async (params = {}, sorter, filter) => {
  35. // TODO
  36. console.log(params, sorter, filter);
  37. const size = params.pageSize || 20;
  38. return {
  39. total: 1 << 12,
  40. success: true,
  41. data: Array.from(Array(size).keys()).map((x) => {
  42. const id = ((params.current || 1) - 1) * size + x + 1;
  43. const it: IItem = {
  44. id,
  45. message: `message ${id}`,
  46. createdAt: new Date(),
  47. };
  48. return it;
  49. }),
  50. };
  51. }}
  52. rowKey="id"
  53. bordered
  54. pagination={{
  55. showQuickJumper: true,
  56. showSizeChanger: true,
  57. }}
  58. headerTitle={intl.formatMessage({ id: "nut.users.logs.title" })}
  59. />
  60. );
  61. };
  62. export default Widget;