index.tsx 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. import { RootState } from "@/store";
  2. import { getLogListAPI } from "@/store/action/Z2log";
  3. import { Input, DatePicker } from "antd";
  4. import React, { useCallback, useEffect, useRef, useState } from "react";
  5. import { useDispatch, useSelector } from "react-redux";
  6. import styles from "./index.module.scss";
  7. import MyTable from "@/components/MyTable";
  8. import { Z2tableC } from "@/utils/tableData";
  9. const { RangePicker } = DatePicker;
  10. function Z2log() {
  11. const dispatch = useDispatch();
  12. // 筛选和分页
  13. const [fromData, setFromData] = useState({
  14. searchKey: "",
  15. pageSize: 10,
  16. pageNum: 1,
  17. startTime: "",
  18. endTime: "",
  19. });
  20. // 账号的输入
  21. const nameTime = useRef(-1);
  22. const nameChange = useCallback(
  23. (e: React.ChangeEvent<HTMLInputElement>) => {
  24. clearTimeout(nameTime.current);
  25. nameTime.current = window.setTimeout(() => {
  26. setFromData({ ...fromData, searchKey: e.target.value, pageNum: 1 });
  27. }, 500);
  28. },
  29. [fromData]
  30. );
  31. // 时间选择器改变
  32. const timeChange = useCallback(
  33. (date: any, dateString: any) => {
  34. let startTime = "";
  35. let endTime = "";
  36. if (dateString[0] && dateString[1]) {
  37. startTime = dateString[0] + " 00:00:00";
  38. endTime = dateString[1] + " 23:59:59";
  39. }
  40. setFromData({ ...fromData, startTime, endTime, pageNum: 1 });
  41. },
  42. [fromData]
  43. );
  44. useEffect(() => {
  45. dispatch(getLogListAPI(fromData));
  46. }, [dispatch, fromData]);
  47. // ---------关于表格
  48. const tableInfo = useSelector((state: RootState) => state.Z2log.tableInfo);
  49. return (
  50. <div className={styles.Z2log}>
  51. <div className="pageTitle">操作日志</div>
  52. <div className="logTop">
  53. <div className="tableSelectBox">
  54. <div className="row">
  55. <span>账号:</span>
  56. <Input
  57. maxLength={10}
  58. showCount
  59. style={{ width: 300 }}
  60. placeholder="请输入账号"
  61. allowClear
  62. onChange={(e) => nameChange(e)}
  63. />
  64. </div>
  65. <div className="row">
  66. <span>操作日期:</span>
  67. <RangePicker onChange={timeChange} />
  68. </div>
  69. </div>
  70. </div>
  71. {/* 表格主体 */}
  72. <div className="tableMain">
  73. <MyTable
  74. yHeight={630}
  75. list={tableInfo.list}
  76. columnsTemp={Z2tableC}
  77. pageNum={fromData.pageNum}
  78. pageSize={fromData.pageSize}
  79. total={tableInfo.total}
  80. onChange={(pageNum, pageSize) =>
  81. setFromData({ ...fromData, pageNum, pageSize })
  82. }
  83. />
  84. </div>
  85. </div>
  86. );
  87. }
  88. const MemoZ2log = React.memo(Z2log);
  89. export default MemoZ2log;