SentHistory.tsx 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. import { ProList } from "@ant-design/pro-components";
  2. import { Space } from "antd";
  3. import { get } from "../../request";
  4. import User from "../auth/User";
  5. import { IUser } from "../auth/UserName";
  6. import TimeShow from "../general/TimeShow";
  7. interface ISentHistoryData {
  8. id: string;
  9. sent_uid: string;
  10. content: string;
  11. editor: IUser;
  12. landmark: string;
  13. created_at: string;
  14. }
  15. interface ISentHistoryListResponse {
  16. ok: boolean;
  17. message: string;
  18. data: { rows: ISentHistoryData[]; count: number };
  19. }
  20. interface ISentHistory {
  21. content: string;
  22. editor: IUser;
  23. createdAt: string;
  24. }
  25. interface IWidget {
  26. sentId?: string;
  27. }
  28. const SentHistoryWidget = ({ sentId }: IWidget) => {
  29. return (
  30. <ProList<ISentHistory>
  31. rowKey="id"
  32. request={async (params = {}, sorter, filter) => {
  33. if (typeof sentId === "undefined") {
  34. return {
  35. total: 0,
  36. succcess: false,
  37. data: [],
  38. };
  39. }
  40. console.log(params, sorter, filter);
  41. let url = `/v2/sent_history?view=sentence&id=${sentId}`;
  42. const offset =
  43. ((params.current ? params.current : 1) - 1) *
  44. (params.pageSize ? params.pageSize : 20);
  45. url += `&limit=${params.pageSize}&offset=${offset}`;
  46. if (typeof params.keyword !== "undefined") {
  47. url += "&search=" + (params.keyword ? params.keyword : "");
  48. }
  49. const res = await get<ISentHistoryListResponse>(url);
  50. if (res.ok) {
  51. console.log(res.data);
  52. const items: ISentHistory[] = res.data.rows.map((item, id) => {
  53. return {
  54. content: item.content,
  55. editor: item.editor,
  56. createdAt: item.created_at,
  57. };
  58. });
  59. console.log(items);
  60. return {
  61. total: res.data.count,
  62. succcess: true,
  63. data: items,
  64. };
  65. } else {
  66. console.error(res.message);
  67. return {
  68. total: 0,
  69. succcess: false,
  70. data: [],
  71. };
  72. }
  73. }}
  74. pagination={{
  75. showQuickJumper: true,
  76. showSizeChanger: true,
  77. }}
  78. metas={{
  79. title: {
  80. dataIndex: "content",
  81. },
  82. avatar: {
  83. dataIndex: "image",
  84. editable: false,
  85. },
  86. description: {
  87. render: (text, row, index, action) => {
  88. return (
  89. <Space style={{ fontSize: "80%" }}>
  90. <User {...row.editor} />
  91. <TimeShow type="secondary" createdAt={row.createdAt} />
  92. </Space>
  93. );
  94. },
  95. },
  96. actions: {
  97. render: (text, row, index, action) => [<></>],
  98. },
  99. }}
  100. />
  101. );
  102. };
  103. export default SentHistoryWidget;