index.tsx 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208
  1. import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react'
  2. import styles from './index.module.scss'
  3. import { B3_4inputKeyArr, B3baseFormData, D3InputKeyType } from '@/pages/B_enterTibet/B3_4page'
  4. import { Button, DatePicker, Input, Select } from 'antd'
  5. import MyPopconfirm from '@/components/MyPopconfirm'
  6. import history from '@/utils/history'
  7. import dayjs from 'dayjs'
  8. import MyTable from '@/components/MyTable'
  9. import { B3tableC } from '@/utils/tableData'
  10. const { RangePicker } = DatePicker
  11. function C6edit() {
  12. // 没有接入后端 待完善
  13. const [formData, setFormData] = useState(B3baseFormData)
  14. const formDataRef = useRef(B3baseFormData)
  15. useEffect(() => {
  16. formDataRef.current = formData
  17. }, [formData])
  18. // 点击搜索的 时间戳
  19. const [timeKey, setTimeKey] = useState(0)
  20. // 点击搜索
  21. const clickSearch = useCallback(() => {
  22. setFormData({ ...formData, pageNum: 1 })
  23. setTimeout(() => {
  24. setTimeKey(Date.now())
  25. }, 50)
  26. }, [formData])
  27. // 时间选择器改变
  28. const timeChange = useCallback(
  29. (date: any, dateString: any) => {
  30. let startTime = ''
  31. let endTime = ''
  32. if (dateString[0] && dateString[1]) {
  33. startTime = dateString[0] + ' 00:00:00'
  34. endTime = dateString[1] + ' 23:59:59'
  35. }
  36. setFormData({ ...formData, startTime, endTime })
  37. },
  38. [formData]
  39. )
  40. // 封装发送请求的函数
  41. const getListFu = useCallback(() => {
  42. console.log('发送请求', formDataRef.current)
  43. }, [])
  44. useEffect(() => {
  45. getListFu()
  46. }, [getListFu, timeKey])
  47. // 输入框的改变
  48. const txtChangeFu = useCallback(
  49. (txt: string, key: D3InputKeyType) => {
  50. setFormData({
  51. ...formData,
  52. [key]: txt
  53. })
  54. },
  55. [formData]
  56. )
  57. // 点击重置
  58. const resetSelectFu = useCallback(() => {
  59. setFormData(B3baseFormData)
  60. setTimeout(() => {
  61. setTimeKey(Date.now())
  62. }, 50)
  63. }, [])
  64. // 页码变化
  65. const paginationChange = useCallback(
  66. (pageNum: number, pageSize: number) => {
  67. setFormData({ ...formData, pageNum, pageSize })
  68. setTimeout(() => {
  69. setTimeKey(Date.now())
  70. }, 50)
  71. },
  72. [formData]
  73. )
  74. // 点击删除
  75. const delTableFu = useCallback(
  76. async (id: number) => {
  77. getListFu()
  78. },
  79. [getListFu]
  80. )
  81. // 点击各种操作按钮
  82. const btnFu = useCallback((id: number | string, key: string) => {
  83. history.push(`/edit_add/${key}/${id}`)
  84. }, [])
  85. const tableLastBtn = useMemo(() => {
  86. // 看状态和账号角色显示按钮 待完善
  87. return [
  88. {
  89. title: '操作',
  90. render: (item: any) => {
  91. return (
  92. <>
  93. <Button size='small' type='text' onClick={() => btnFu(item.id, '2')}>
  94. 编辑
  95. </Button>
  96. <Button size='small' type='text' onClick={() => btnFu(item.id, '3')}>
  97. 审批
  98. </Button>
  99. <Button size='small' type='text' onClick={() => btnFu(item.id, '4')}>
  100. 查看
  101. </Button>
  102. <MyPopconfirm txtK='删除' onConfirm={() => delTableFu(item.id)} />
  103. </>
  104. )
  105. }
  106. }
  107. ]
  108. }, [btnFu, delTableFu])
  109. return (
  110. <div className={styles.C6edit}>
  111. <div className='pageTitle'>藏品编辑</div>
  112. <div className='C6top'>
  113. <div className='C6topll'>
  114. {B3_4inputKeyArr.map(item => (
  115. <div key={item.name}>
  116. <span>{item.name}:</span>
  117. <Input
  118. placeholder={`请输入${item.name}`}
  119. maxLength={30}
  120. value={formData[item.key]}
  121. onChange={e => txtChangeFu(e.target.value, item.key)}
  122. />
  123. </div>
  124. ))}
  125. </div>
  126. <div className='C6toprr'>
  127. <Button type='primary'>批量导出</Button>&emsp;
  128. <Button type='primary' onClick={() => btnFu('null', '1')}>
  129. 新增
  130. </Button>
  131. </div>
  132. </div>
  133. <div className='C6top'>
  134. <div className='C6topll'>
  135. <div>
  136. <span>发起日期范围:</span>
  137. <RangePicker
  138. value={
  139. formData.startTime ? [dayjs(formData.startTime), dayjs(formData.endTime)] : null
  140. }
  141. onChange={timeChange}
  142. />
  143. </div>
  144. <div>
  145. <span>申请状态:</span>
  146. <Select
  147. placeholder='请选择'
  148. style={{ width: 200 }}
  149. value={formData.status}
  150. onChange={e => setFormData({ ...formData, status: e })}
  151. options={[{ value: '', label: '全部' }]}
  152. />
  153. </div>
  154. <div>
  155. <span>选择角色:</span>
  156. <Select
  157. style={{ width: 200 }}
  158. placeholder='请选择'
  159. options={[]}
  160. fieldNames={{ value: 'id', label: 'roleName' }}
  161. value={formData.userType}
  162. onChange={e => setFormData({ ...formData, userType: e })}
  163. />
  164. </div>
  165. </div>
  166. <div className='C6toprr'>
  167. <Button type='primary' onClick={clickSearch}>
  168. 查询
  169. </Button>
  170. &emsp;<Button onClick={resetSelectFu}>重置</Button>
  171. </div>
  172. </div>
  173. {/* 表格 */}
  174. <MyTable
  175. yHeight={610}
  176. list={[{ id: 91 }]}
  177. columnsTemp={B3tableC}
  178. lastBtn={tableLastBtn}
  179. pageNum={formData.pageNum}
  180. pageSize={formData.pageSize}
  181. total={0}
  182. onChange={(pageNum, pageSize) => paginationChange(pageNum, pageSize)}
  183. />
  184. </div>
  185. )
  186. }
  187. const MemoC6edit = React.memo(C6edit)
  188. export default MemoC6edit