index.tsx 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. import React, { useCallback, useEffect, useMemo, useState } from 'react'
  2. import styles from './index.module.scss'
  3. import { Button } from 'antd'
  4. import { useDispatch, useSelector } from 'react-redux'
  5. import { B2EditInfoType } from './data'
  6. import { B_APIgetList, B_APIdel } from '@/store/action/Breserve'
  7. import { RootState } from '@/store'
  8. import { B2tableType } from '@/types'
  9. import MyPopconfirm from '@/components/MyPopconfirm'
  10. import MyTable from '@/components/MyTable'
  11. import { B2tableC } from '@/utils/tableData'
  12. import B2look from './B2look'
  13. import { MessageFu } from '@/utils/message'
  14. const pageDataBase = {
  15. pageNum: 1,
  16. pageSize: 10
  17. }
  18. function B2reserve2() {
  19. const dispatch = useDispatch()
  20. const [pageData, setPageData] = useState(pageDataBase)
  21. const getListFu = useCallback(() => {
  22. // status: -1 全部 0 未发布 1 已发布
  23. dispatch(B_APIgetList({ ...pageData, type: 2 }))
  24. }, [dispatch, pageData])
  25. useEffect(() => {
  26. getListFu()
  27. }, [getListFu])
  28. // 点击重置
  29. const resetSelectFu = useCallback(() => {
  30. setPageData({ ...pageDataBase })
  31. }, [])
  32. const tableInfo = useSelector((state: RootState) => state.Breserve.tableInfo)
  33. const delTableFu = useCallback(
  34. async (id: number) => {
  35. const res = await B_APIdel(id)
  36. if (res.code === 0) {
  37. MessageFu.success('删除成功!')
  38. getListFu()
  39. }
  40. },
  41. [getListFu]
  42. )
  43. const tableLastBtn = useMemo(() => {
  44. return [
  45. {
  46. title: '操作',
  47. render: (item: B2tableType) => (
  48. <>
  49. <Button
  50. size='small'
  51. type='text'
  52. onClick={() => setEditInfo({ id: item.id, txt: '查看' })}
  53. >
  54. 查看
  55. </Button>
  56. <MyPopconfirm txtK='删除' onConfirm={() => delTableFu(item.id)} />
  57. </>
  58. )
  59. }
  60. ]
  61. }, [delTableFu])
  62. //查看
  63. const [editInfo, setEditInfo] = useState<B2EditInfoType>({
  64. id: 0,
  65. txt: ''
  66. })
  67. return (
  68. <div className={styles.B2reserve2}>
  69. <div className='pageTitle'>展馆预约记录</div>
  70. {/* 顶部筛选 */}
  71. <div className='B2top'>
  72. <Button type='primary' onClick={() => setEditInfo({ id: -1, txt: '导出' })}>
  73. 导出
  74. </Button>
  75. </div>
  76. {/* 表格主体 */}
  77. <div className='B2tableBox'>
  78. <MyTable
  79. myKey='id'
  80. yHeight={625}
  81. list={tableInfo.list}
  82. columnsTemp={B2tableC}
  83. lastBtn={tableLastBtn}
  84. pageNum={pageData.pageNum}
  85. pageSize={pageData.pageSize}
  86. total={tableInfo.total}
  87. onChange={(pageNum, pageSize) => setPageData({ ...pageData, pageNum, pageSize })}
  88. />
  89. </div>
  90. {/* 导出 */}
  91. {editInfo.id ? (
  92. <B2look
  93. editInfo={editInfo}
  94. closeFu={() => setEditInfo({ id: 0, txt: '导出' })}
  95. addTableFu={resetSelectFu}
  96. editTableFu={getListFu}
  97. />
  98. ) : null}
  99. </div>
  100. )
  101. }
  102. const MemoB2reserve2 = React.memo(B2reserve2)
  103. export default MemoB2reserve2