index.tsx 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  1. import React, { useCallback, useEffect, useState } from 'react'
  2. import styles from './index.module.scss'
  3. import { A2SonListType } from './type'
  4. import { A1_APIgetInfo, A1_APIupdate } from '@/store/action/A1list'
  5. import { MessageFu } from '@/utils/message'
  6. type Props = {
  7. sId: number
  8. closeFu: () => void
  9. type: '查看' | '核销'
  10. upTable: () => void
  11. }
  12. function A2look({ sId, closeFu, type, upTable }: Props) {
  13. const [list, setList] = useState<A2SonListType[]>([])
  14. const [info, setInfo] = useState({
  15. createTime: '',
  16. bookDate: '',
  17. time: '',
  18. type: '',
  19. pcs: 0,
  20. teamDesc: ''
  21. })
  22. const getInfoFu = useCallback(
  23. async (id: number) => {
  24. const res = await A1_APIgetInfo(id)
  25. if (res.code === 0) {
  26. if (res.data.status === 1 && type === '核销') {
  27. MessageFu.success('此二维码已经核销')
  28. upTable()
  29. closeFu()
  30. return
  31. }
  32. setInfo(res.data)
  33. setList(JSON.parse(res.data.rtf))
  34. }
  35. },
  36. [closeFu, type, upTable]
  37. )
  38. useEffect(() => {
  39. getInfoFu(sId)
  40. }, [getInfoFu, sId])
  41. // 核销
  42. const updateFu = useCallback(
  43. async (id: number, status: 0 | 1) => {
  44. const res = await A1_APIupdate(id, status)
  45. if (res.code === 0) {
  46. MessageFu.success('核销成功!')
  47. upTable()
  48. closeFu()
  49. }
  50. },
  51. [closeFu, upTable]
  52. )
  53. return (
  54. <div className={styles.A2look}>
  55. <div className='A1top'>
  56. <h1>预约详情</h1>
  57. <span></span>
  58. </div>
  59. <div className='B2Lmain'>
  60. <div className='B2row B2rowOne'>
  61. <div className='B2box'>
  62. <div className='B2boxll'>预约类型:</div>
  63. <div className='B2boxrr'>
  64. {info.type === 'person' ? '个人预约' : '团队预约'}
  65. </div>
  66. </div>
  67. <div className='B2box'>
  68. <div className='B2boxll'>申请时间:</div>
  69. <div className='B2boxrr'>{info.createTime}</div>
  70. </div>
  71. <div className='B2box'>
  72. <div className='B2boxll'>预约日期:</div>
  73. <div className='B2boxrr'>{info.bookDate}</div>
  74. </div>
  75. <div className='B2box'>
  76. <div className='B2boxll'>预约时段:</div>
  77. <div className='B2boxrr'>{info.time}</div>
  78. </div>
  79. </div>
  80. {list.map((item, index) => (
  81. <div className='B2row' key={index}>
  82. <div className='B2box'>
  83. <div className='B2boxll'>
  84. {info.type === 'person' ? '参观人' : '负责人'}姓名:
  85. </div>
  86. <div className='B2boxrr'>{item.name}</div>
  87. </div>
  88. <div className='B2box'>
  89. <div className='B2boxll'>
  90. {info.type === 'person' ? '参观人' : '负责人'}电话:
  91. </div>
  92. <div className='B2boxrr'>{item.phone}</div>
  93. </div>
  94. <div className='B2box'>
  95. <div className='B2boxll B2boxllZZ'>
  96. {item.papers || '证件号码'}:<span>{item.identity}</span>
  97. </div>
  98. </div>
  99. </div>
  100. ))}
  101. {info.type === 'team' ? (
  102. <div className='B2row B2row2'>
  103. <div className='B2box'>
  104. <div className='B2boxll'>参团人数:</div>
  105. <div className='B2boxrr'>{info.pcs}</div>
  106. </div>
  107. {info.teamDesc ? (
  108. <div className='B2box B2box2'>
  109. <div className='B2boxll'>团队描述:</div>
  110. <div className='B2boxrr'>{info.teamDesc}</div>
  111. </div>
  112. ) : null}
  113. </div>
  114. ) : null}
  115. </div>
  116. {/* 按钮 */}
  117. <div
  118. className='A1Lbtn'
  119. style={{ justifyContent: type === '查看' ? 'center' : 'space-between' }}
  120. >
  121. {type === '查看' ? null : (
  122. <div className='A1Lbtn1' onClick={() => updateFu(sId, 1)}>
  123. 核销
  124. </div>
  125. )}
  126. <div className='A1Lbtn2' onClick={closeFu}>
  127. {type === '查看' ? '返回' : '取消'}
  128. </div>
  129. </div>
  130. </div>
  131. )
  132. }
  133. const MemoA2look = React.memo(A2look)
  134. export default MemoA2look