|
@@ -1,9 +1,272 @@
|
|
|
-import React from 'react'
|
|
|
+import React, { useEffect, useMemo, useState } from 'react'
|
|
|
import styles from './index.module.scss'
|
|
|
+import ZexhiBtn from '@/components/ZexhiBtn'
|
|
|
+import dayjs from 'dayjs'
|
|
|
+import getWeekList from '@/utils/timeChange'
|
|
|
+import classNames from 'classnames'
|
|
|
+import history from '@/utils/history'
|
|
|
+
|
|
|
+type ListType = {
|
|
|
+ createTime: string
|
|
|
+ creatorId: number
|
|
|
+ creatorName: string
|
|
|
+ friday: number
|
|
|
+ id: number
|
|
|
+ monday: number
|
|
|
+ saturday: number
|
|
|
+ sunday: number
|
|
|
+ thursday: number
|
|
|
+ time: string
|
|
|
+ tuesday: number
|
|
|
+ updateTime: string
|
|
|
+ wednesday: number
|
|
|
+}[]
|
|
|
+
|
|
|
+const listTemp = [
|
|
|
+ {
|
|
|
+ createTime: '2024-05-06 17:59:02',
|
|
|
+ creatorId: 1,
|
|
|
+ creatorName: '',
|
|
|
+ friday: 100,
|
|
|
+ id: 9,
|
|
|
+ monday: 0,
|
|
|
+ saturday: 100,
|
|
|
+ sunday: 100,
|
|
|
+ thursday: 1,
|
|
|
+ time: '08:00-09:00',
|
|
|
+ tuesday: 0,
|
|
|
+ updateTime: '2024-11-04 16:47:33',
|
|
|
+ wednesday: 100
|
|
|
+ },
|
|
|
+ {
|
|
|
+ createTime: '2024-05-06 17:59:02',
|
|
|
+ creatorId: 1,
|
|
|
+ creatorName: '',
|
|
|
+ friday: 100,
|
|
|
+ id: 10,
|
|
|
+ monday: 0,
|
|
|
+ saturday: 100,
|
|
|
+ sunday: 100,
|
|
|
+ thursday: 100,
|
|
|
+ time: '09:00-10:00',
|
|
|
+ tuesday: 100,
|
|
|
+ updateTime: '2024-11-04 16:47:33',
|
|
|
+ wednesday: 100
|
|
|
+ },
|
|
|
+ {
|
|
|
+ createTime: '2024-05-06 17:59:02',
|
|
|
+ creatorId: 1,
|
|
|
+ creatorName: '',
|
|
|
+ friday: 100,
|
|
|
+ id: 11,
|
|
|
+ monday: 0,
|
|
|
+ saturday: 100,
|
|
|
+ sunday: 100,
|
|
|
+ thursday: 100,
|
|
|
+ time: '10:00-11:00',
|
|
|
+ tuesday: 100,
|
|
|
+ updateTime: '2024-11-04 16:47:33',
|
|
|
+ wednesday: 100
|
|
|
+ },
|
|
|
+ {
|
|
|
+ createTime: '2024-05-06 17:59:02',
|
|
|
+ creatorId: 1,
|
|
|
+ creatorName: '',
|
|
|
+ friday: 100,
|
|
|
+ id: 12,
|
|
|
+ monday: 0,
|
|
|
+ saturday: 100,
|
|
|
+ sunday: 100,
|
|
|
+ thursday: 100,
|
|
|
+ time: '11:00-12:00',
|
|
|
+ tuesday: 100,
|
|
|
+ updateTime: '2024-11-04 16:47:33',
|
|
|
+ wednesday: 100
|
|
|
+ },
|
|
|
+ {
|
|
|
+ createTime: '2024-05-06 17:59:02',
|
|
|
+ creatorId: 1,
|
|
|
+ creatorName: '',
|
|
|
+ friday: 100,
|
|
|
+ id: 13,
|
|
|
+ monday: 0,
|
|
|
+ saturday: 100,
|
|
|
+ sunday: 100,
|
|
|
+ thursday: 100,
|
|
|
+ time: '14:00-15:00',
|
|
|
+ tuesday: 100,
|
|
|
+ updateTime: '2024-11-04 16:47:33',
|
|
|
+ wednesday: 100
|
|
|
+ },
|
|
|
+ {
|
|
|
+ createTime: '2024-05-06 17:59:02',
|
|
|
+ creatorId: 1,
|
|
|
+ creatorName: '',
|
|
|
+ friday: 100,
|
|
|
+ id: 14,
|
|
|
+ monday: 0,
|
|
|
+ saturday: 9999,
|
|
|
+ sunday: 100,
|
|
|
+ thursday: 100,
|
|
|
+ time: '15:00-16:00',
|
|
|
+ tuesday: 100,
|
|
|
+ updateTime: '2024-11-04 16:47:34',
|
|
|
+ wednesday: 100
|
|
|
+ },
|
|
|
+ {
|
|
|
+ createTime: '2024-05-06 17:59:02',
|
|
|
+ creatorId: 1,
|
|
|
+ creatorName: '',
|
|
|
+ friday: 100,
|
|
|
+ id: 15,
|
|
|
+ monday: 0,
|
|
|
+ saturday: 100,
|
|
|
+ sunday: 100,
|
|
|
+ thursday: 100,
|
|
|
+ time: '16:00-17:00',
|
|
|
+ tuesday: 100,
|
|
|
+ updateTime: '2024-11-04 16:47:34',
|
|
|
+ wednesday: 100
|
|
|
+ },
|
|
|
+ {
|
|
|
+ createTime: '2024-05-06 17:59:02',
|
|
|
+ creatorId: 1,
|
|
|
+ creatorName: '',
|
|
|
+ friday: 100,
|
|
|
+ id: 16,
|
|
|
+ monday: 0,
|
|
|
+ saturday: 100,
|
|
|
+ sunday: 100,
|
|
|
+ thursday: 100,
|
|
|
+ time: '17:00-18:00',
|
|
|
+ tuesday: 100,
|
|
|
+ updateTime: '2024-11-04 16:47:34',
|
|
|
+ wednesday: 100
|
|
|
+ }
|
|
|
+]
|
|
|
+
|
|
|
+type ZhouArrType = {
|
|
|
+ name: string
|
|
|
+ date: string
|
|
|
+ timeStamp: number
|
|
|
+}[]
|
|
|
+
|
|
|
function B3start() {
|
|
|
+ const [list, setList] = useState<ListType>([])
|
|
|
+
|
|
|
+ useEffect(() => {
|
|
|
+ setTimeout(() => {
|
|
|
+ setList(listTemp)
|
|
|
+ }, 100)
|
|
|
+ }, [])
|
|
|
+
|
|
|
+ // 获取当前时间
|
|
|
+ const [nowTime, setNowTime] = useState('')
|
|
|
+
|
|
|
+ // 一周日期
|
|
|
+ const [zhouArr, setZhouArr] = useState<ZhouArrType>([])
|
|
|
+
|
|
|
+ // 当前选中时间 返回 索引
|
|
|
+ const indexRes = useMemo(() => {
|
|
|
+ return zhouArr.findIndex(v => v.date === nowTime)
|
|
|
+ }, [nowTime, zhouArr])
|
|
|
+
|
|
|
+ // 一周的所有 时段 数字 合集
|
|
|
+ const zhouObj = useMemo(() => {
|
|
|
+ const obj: { [key: string]: { name: string; num: number }[] } = {
|
|
|
+ 0: [],
|
|
|
+ 1: [],
|
|
|
+ 2: [],
|
|
|
+ 3: [],
|
|
|
+ 4: [],
|
|
|
+ 5: [],
|
|
|
+ 6: []
|
|
|
+ }
|
|
|
+
|
|
|
+ list.forEach(v => {
|
|
|
+ obj[0].push({ name: v.time, num: v.monday })
|
|
|
+ obj[1].push({ name: v.time, num: v.tuesday })
|
|
|
+ obj[2].push({ name: v.time, num: v.wednesday })
|
|
|
+ obj[3].push({ name: v.time, num: v.thursday })
|
|
|
+ obj[4].push({ name: v.time, num: v.friday })
|
|
|
+ obj[5].push({ name: v.time, num: v.saturday })
|
|
|
+ obj[6].push({ name: v.time, num: v.sunday })
|
|
|
+ })
|
|
|
+
|
|
|
+ return obj
|
|
|
+ }, [list])
|
|
|
+
|
|
|
+ // 返回的数据
|
|
|
+ const numRes = useMemo(() => {
|
|
|
+ let arr: { name: string; num: number }[] = []
|
|
|
+
|
|
|
+ if (indexRes > -1) arr = zhouObj[indexRes]
|
|
|
+ // console.log(123, arr)
|
|
|
+
|
|
|
+ return arr
|
|
|
+ // const index = nowTime.
|
|
|
+ }, [indexRes, zhouObj])
|
|
|
+
|
|
|
+ useEffect(() => {
|
|
|
+ setNowTime(dayjs().format('YYYY.MM.DD'))
|
|
|
+
|
|
|
+ const nowWrrk = dayjs().day()
|
|
|
+ if ([0, 5, 6].includes(nowWrrk)) {
|
|
|
+ setTimeout(() => {
|
|
|
+ const dom: HTMLDivElement = document.querySelector('.B3selDay')!
|
|
|
+ if (dom) dom.scrollLeft = 1000
|
|
|
+ }, 100)
|
|
|
+ }
|
|
|
+
|
|
|
+ const arr = getWeekList()
|
|
|
+ setZhouArr(arr)
|
|
|
+ }, [])
|
|
|
+
|
|
|
+ const [acInd, setAcInd] = useState(-1)
|
|
|
+
|
|
|
+ const pageInd = useMemo(() => {
|
|
|
+ let num = 0
|
|
|
+ if (numRes[acInd] && numRes[acInd].num) num = numRes[acInd].num
|
|
|
+ return num
|
|
|
+ }, [acInd, numRes])
|
|
|
+
|
|
|
return (
|
|
|
<div className={styles.B3start}>
|
|
|
- <h1>B3start</h1>
|
|
|
+ <div className='B3main'>
|
|
|
+ <div className='B3tit'>选择日期</div>
|
|
|
+ <div className='B3nowTime'>{nowTime}</div>
|
|
|
+ <div className='B3selDay'>
|
|
|
+ {zhouArr.map((item, index) => (
|
|
|
+ <div
|
|
|
+ key={item.name}
|
|
|
+ className={classNames('B3dayRow', nowTime === item.date ? 'B3dayRowAc' : '')}
|
|
|
+ onClick={() => setNowTime(item.date)}
|
|
|
+ >
|
|
|
+ <div>{item.name}</div>
|
|
|
+ <div>{item.date.slice(-2)}</div>
|
|
|
+ </div>
|
|
|
+ ))}
|
|
|
+ </div>
|
|
|
+ <div className='B3tit'>入馆时间</div>
|
|
|
+ <div className='B3time'>
|
|
|
+ {numRes.map((item, index) => (
|
|
|
+ <div
|
|
|
+ key={item.name}
|
|
|
+ onClick={() => setAcInd(index)}
|
|
|
+ className={classNames(
|
|
|
+ 'B3timeRow',
|
|
|
+ acInd === index ? 'B3timeRowAc' : '',
|
|
|
+ item.num <= 0 ? 'myBtnNo' : ''
|
|
|
+ )}
|
|
|
+ >
|
|
|
+ {item.name}
|
|
|
+
|
|
|
+ {item.num <= 0 ? <p>预约已满</p> : ''}
|
|
|
+ </div>
|
|
|
+ ))}
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <ZexhiBtn nextOk={!!pageInd} nextFu={() => history.push(`/exhiForm/${indexRes}/${acInd}`)} />
|
|
|
</div>
|
|
|
)
|
|
|
}
|