index.tsx 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. import React, { useCallback, useEffect, useState } from 'react'
  2. import styles from './index.module.scss'
  3. import TopCom from '@/components/TopCom'
  4. import classNames from 'classnames'
  5. import { APIN_getList } from '@/store/action/all'
  6. import { A3NlistType } from './type'
  7. import ZFlooBtn from '@/components/ZFlooBtn'
  8. import history from '@/utils/history'
  9. import dayjs from 'dayjs'
  10. const week = ['日', '一', '二', '三', '四', '五', '六']
  11. const nowDay = dayjs().format('YYYY-MM-DD')
  12. function A3selectDayNew() {
  13. const [list, setList] = useState<A3NlistType[]>([])
  14. const [loding, setLoding] = useState(false)
  15. const getListFu = useCallback(async () => {
  16. const res = await APIN_getList(7)
  17. if (res.code === 0) {
  18. setLoding(true)
  19. const obj: any = res.data.time || {}
  20. let arr: A3NlistType[] = []
  21. for (const k in obj) {
  22. arr.push({
  23. name: k,
  24. arr: obj[k]
  25. })
  26. }
  27. setList(arr)
  28. }
  29. }, [])
  30. useEffect(() => {
  31. getListFu()
  32. }, [getListFu])
  33. const [acObj, setAcObj] = useState({ bookDate: '', bookTime: '', id: 0 })
  34. // 当天的日期过滤 已经超过现在的时间 返回true
  35. const timeFile = useCallback((date: string, time: string) => {
  36. let falg = false
  37. if (nowDay === date) {
  38. const nowTime = dayjs(date + ' ' + time).valueOf()
  39. if (Date.now() > nowTime) falg = true
  40. }
  41. return falg
  42. }, [])
  43. return (
  44. <div className={styles.A3selectDayNew}>
  45. <TopCom txt='选择日期' />
  46. <div className={classNames('A3main', acObj.bookDate ? '' : 'A3mainNoBtn')}>
  47. <div className='A3list'>
  48. {list.length ? (
  49. <div className='mySorrl'>
  50. {list.map(item => (
  51. <div className='A3row' key={item.name}>
  52. <div className='A3R1'>
  53. {item.name} {`星期${week[dayjs(item.name).day()]}`}
  54. </div>
  55. <div className='A3R2'>
  56. {item.arr.map(vv => (
  57. <div
  58. key={vv.id}
  59. onClick={() =>
  60. setAcObj({
  61. bookDate: item.name,
  62. bookTime: `${vv.timeStart}-${vv.timeEnd}`,
  63. id: vv.id
  64. })
  65. }
  66. className={classNames(
  67. acObj.id === vv.id ? 'A3ac' : '',
  68. vv.pcs === 0 || timeFile(item.name, vv.timeStart) ? 'A3R2rowNo' : ''
  69. )}
  70. >
  71. {vv.timeStart} - {vv.timeEnd}
  72. {vv.pcs === 0 ? ' 已满' : ''}
  73. </div>
  74. ))}
  75. </div>
  76. </div>
  77. ))}
  78. </div>
  79. ) : (
  80. <div className='A3listNo' hidden={!loding}>
  81. 暂无可约日期
  82. </div>
  83. )}
  84. </div>
  85. <ZFlooBtn
  86. txt={acObj.bookDate ? '下一步' : '请选择日期'}
  87. clickFu={() =>
  88. history.push(`/selectCourse/${acObj.id}/${acObj.bookDate}/${acObj.bookTime}`)
  89. }
  90. />
  91. </div>
  92. </div>
  93. )
  94. }
  95. const MemoA3selectDayNew = React.memo(A3selectDayNew)
  96. export default MemoA3selectDayNew