Y44com.tsx 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193
  1. import MyTable from '@/components/MyTable'
  2. import { Y44tableC } from '@/utils/tableData'
  3. import { Button, DatePicker, Input, Select } from 'antd'
  4. import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react'
  5. import { TypeY44form } from './type'
  6. import { B3_4inputKeyArr } from '@/pages/B_enterTibet/B3_4page'
  7. import dayjs from 'dayjs'
  8. const { RangePicker } = DatePicker
  9. type InputKeyType = 'num' | 'name' | 'deptName' | 'userName'
  10. const baseFormData: TypeY44form = {
  11. pageSize: 10,
  12. pageNum: 1,
  13. num: '',
  14. name: '',
  15. deptName: '',
  16. userName: '',
  17. startTime: '',
  18. endTime: '',
  19. status: '',
  20. // 待完善 type字段
  21. type: ''
  22. }
  23. // 待完善 没有接入后端
  24. type Props = {
  25. isLook?: boolean
  26. sId: number
  27. }
  28. function Y44com({ isLook, sId }: Props) {
  29. const [formData, setFormData] = useState(baseFormData)
  30. const formDataRef = useRef(baseFormData)
  31. useEffect(() => {
  32. formDataRef.current = formData
  33. }, [formData])
  34. // 点击搜索的 时间戳
  35. const [timeKey, setTimeKey] = useState(0)
  36. // 点击搜索
  37. const clickSearch = useCallback(() => {
  38. setFormData({ ...formData, pageNum: 1 })
  39. setTimeout(() => {
  40. setTimeKey(Date.now())
  41. }, 50)
  42. }, [formData])
  43. // 时间选择器改变
  44. const timeChange = useCallback(
  45. (date: any, dateString: any) => {
  46. let startTime = ''
  47. let endTime = ''
  48. if (dateString[0] && dateString[1]) {
  49. startTime = dateString[0] + ' 00:00:00'
  50. endTime = dateString[1] + ' 23:59:59'
  51. }
  52. setFormData({ ...formData, startTime, endTime })
  53. },
  54. [formData]
  55. )
  56. // 封装发送请求的函数
  57. const getListFu = useCallback(() => {
  58. console.log('发送请求', formDataRef.current)
  59. }, [])
  60. useEffect(() => {
  61. getListFu()
  62. }, [getListFu, timeKey])
  63. // 输入框的改变
  64. const txtChangeFu = useCallback(
  65. (txt: string, key: InputKeyType) => {
  66. setFormData({
  67. ...formData,
  68. [key]: txt
  69. })
  70. },
  71. [formData]
  72. )
  73. // 点击重置
  74. const resetSelectFu = useCallback(() => {
  75. setFormData(baseFormData)
  76. setTimeout(() => {
  77. setTimeKey(Date.now())
  78. }, 50)
  79. }, [])
  80. // 页码变化
  81. // const paginationChange = useCallback(
  82. // (pageNum: number, pageSize: number) => {
  83. // setFormData({ ...formData, pageNum, pageSize })
  84. // setTimeout(() => {
  85. // setTimeKey(Date.now())
  86. // }, 50)
  87. // },
  88. // [formData]
  89. // )
  90. // 点击查看 新窗口打开
  91. const lookPage = useCallback((id: number) => {
  92. // 根据业务类型打开不同的新页面 待完善
  93. window.open('/#/entering_edit/4/1/1', '_blank')
  94. }, [])
  95. const tableLastBtn = useMemo(() => {
  96. return [
  97. {
  98. title: '操作',
  99. render: (item: any) => {
  100. return (
  101. <Button size='small' type='text' onClick={() => lookPage(item.id)}>
  102. 查看
  103. </Button>
  104. )
  105. }
  106. }
  107. ]
  108. }, [lookPage])
  109. return (
  110. <div className='Y44com'>
  111. {isLook ? (
  112. <>
  113. <div className='Y44top'>
  114. <div className='Y44topll'>
  115. {B3_4inputKeyArr.map(item => (
  116. <div key={item.name}>
  117. <span>{item.name}:</span>
  118. <Input
  119. placeholder={`请输入${item.name}`}
  120. maxLength={30}
  121. value={formData[item.key]}
  122. onChange={e => txtChangeFu(e.target.value, item.key)}
  123. />
  124. </div>
  125. ))}
  126. </div>
  127. <div className='Y44toprr'></div>
  128. </div>
  129. <div className='Y44top'>
  130. <div className='Y44topll'>
  131. <div>
  132. <span>发起日期范围:</span>
  133. <RangePicker
  134. value={
  135. formData.startTime ? [dayjs(formData.startTime), dayjs(formData.endTime)] : null
  136. }
  137. onChange={timeChange}
  138. />
  139. </div>
  140. <div>
  141. <span>业务类型:</span>
  142. <Select
  143. placeholder='请选择'
  144. style={{ width: 200 }}
  145. value={formData.type}
  146. onChange={e => setFormData({ ...formData, type: e })}
  147. options={[{ value: '', label: '全部' }]}
  148. />
  149. </div>
  150. </div>
  151. <div className='Y44toprr'>
  152. <Button type='primary' onClick={clickSearch}>
  153. 查询
  154. </Button>
  155. &emsp;<Button onClick={resetSelectFu}>重置</Button>
  156. </div>
  157. </div>
  158. </>
  159. ) : null}
  160. {/* 表格 */}
  161. <MyTable
  162. classKey='Y44comTable'
  163. yHeight={isLook ? 600 : 666}
  164. list={[{ id: 1, xxxx: '藏品入馆' }]}
  165. columnsTemp={Y44tableC}
  166. lastBtn={tableLastBtn}
  167. pagingInfo={false}
  168. />
  169. </div>
  170. )
  171. }
  172. const MemoY44com = React.memo(Y44com)
  173. export default MemoY44com