index.tsx 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  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) => setFromData({ ...fromData, pageNum, pageSize })}
  81. />
  82. </div>
  83. </div>
  84. )
  85. }
  86. const MemoZ2log = React.memo(Z2log)
  87. export default MemoZ2log