|
@@ -1,4 +1,4 @@
|
|
|
-import React, { useCallback, useEffect, useRef, useState } from 'react'
|
|
|
+import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react'
|
|
|
import styles from './index.module.scss'
|
|
|
import { baseURL, myData } from '@/utils/http'
|
|
|
import classNames from 'classnames'
|
|
@@ -32,10 +32,16 @@ function A11base() {
|
|
|
// 最后一个过长动画
|
|
|
const [lastVideo, setLastVideo] = useState(false)
|
|
|
|
|
|
- // 名帖视频播放之后,或者点击跳过
|
|
|
+ // 名帖文字的显示和隐藏
|
|
|
+ const [txtShow, setTxtShow] = useState(false)
|
|
|
+
|
|
|
+ // 点击报名帖
|
|
|
const btnStartFu = useCallback(() => {
|
|
|
// 播放长视频
|
|
|
- setLastVideo(true)
|
|
|
+ setTxtShow(true)
|
|
|
+ setTimeout(() => {
|
|
|
+ setLastVideo(true)
|
|
|
+ }, 2000)
|
|
|
}, [])
|
|
|
|
|
|
// 点击开始
|
|
@@ -49,13 +55,34 @@ function A11base() {
|
|
|
// 名帖1点击毛笔
|
|
|
const [biShow, setBiShow] = useState(false)
|
|
|
|
|
|
- // 2个名帖视频路径
|
|
|
- const [tieVideoSrc, setTieVideoSrc] = useState('')
|
|
|
+ // 名帖2点击选中一个
|
|
|
+ const [inptxt, setInpTxt] = useState({
|
|
|
+ type: 0,
|
|
|
+ txt1: '',
|
|
|
+ txt2: '',
|
|
|
+ txt3: ''
|
|
|
+ })
|
|
|
+
|
|
|
+ // 在页面显示的html格式文字
|
|
|
+ const txtRes = useMemo(() => {
|
|
|
+ let txt = `弟子 ${inptxt.txt1} 再拜 问起居 ${inptxt.txt3} 字${inptxt.txt2}`
|
|
|
+ if (inptxt.type === 2) {
|
|
|
+ txt = `中郎豫章 ${inptxt.txt3} ${inptxt.txt1} 七十三 字${inptxt.txt2}`
|
|
|
+ }
|
|
|
+ return txt
|
|
|
+ }, [inptxt])
|
|
|
+
|
|
|
+ // 输入框是否输入完整
|
|
|
+ const isOk = useMemo(() => {
|
|
|
+ let flag = false
|
|
|
+ if (inptxt.txt1 && inptxt.txt2 && inptxt.txt3) flag = true
|
|
|
+ return flag
|
|
|
+ }, [inptxt])
|
|
|
|
|
|
return (
|
|
|
<div className={styles.A11base}>
|
|
|
{/* 背景图页面 */}
|
|
|
- {!tieVideoSrc ? (
|
|
|
+ {!lastVideo ? (
|
|
|
<div className={classNames('A11bg')} hidden={window.location.href.includes('r=ren')}>
|
|
|
<img onLoad={imgNumFu} id='bgImgBox' src={baseURL + myData.base.bgImg} alt='' />
|
|
|
|
|
@@ -79,7 +106,7 @@ function A11base() {
|
|
|
) : null}
|
|
|
|
|
|
{/* 名帖信息 */}
|
|
|
- {imgNow && !tieVideoSrc ? (
|
|
|
+ {imgNow && !lastVideo ? (
|
|
|
<div className={classNames('A11Tit', tieShow ? 'A11TitShow' : '')}>
|
|
|
<div>
|
|
|
<img className='t1Bg' src={`${baseURL}base/tieBg.jpg`} alt='' />
|
|
@@ -107,35 +134,102 @@ function A11base() {
|
|
|
<img className='A11TitSon1' src={`${baseURL}base/ban.png`} alt='' />
|
|
|
<p className='A11TitSon2'>请选择内容</p>
|
|
|
|
|
|
- <div className='A11TitSonTxt' onClick={() => setTieVideoSrc('tie1')}>
|
|
|
- <img src={`${baseURL}base/txt1.png`} alt='' />
|
|
|
- <img src={`${baseURL}base/txt1Ac.png`} alt='' />
|
|
|
- </div>
|
|
|
- <div className='A11TitSonTxt2' onClick={() => setTieVideoSrc('tie2')}>
|
|
|
+ <div
|
|
|
+ className='A11TitSonTxt'
|
|
|
+ onClick={() => setInpTxt({ type: 1, txt1: '吴应', txt2: '子远', txt3: '南昌' })}
|
|
|
+ >
|
|
|
<img src={`${baseURL}base/txt2.png`} alt='' />
|
|
|
- <img src={`${baseURL}base/txt2Ac.png`} alt='' />
|
|
|
+ <img
|
|
|
+ style={{ opacity: inptxt.type === 1 ? '1' : '' }}
|
|
|
+ src={`${baseURL}base/txt2Ac.png`}
|
|
|
+ alt=''
|
|
|
+ />
|
|
|
+ </div>
|
|
|
+ <div
|
|
|
+ className='A11TitSonTxt2'
|
|
|
+ onClick={() =>
|
|
|
+ setInpTxt({
|
|
|
+ type: 2,
|
|
|
+ txt1: '吴应年',
|
|
|
+ txt2: '子远',
|
|
|
+ txt3: '南昌都乡吉阳里'
|
|
|
+ })
|
|
|
+ }
|
|
|
+ >
|
|
|
+ <img src={`${baseURL}base/txt1.png`} alt='' />
|
|
|
+ <img
|
|
|
+ style={{ opacity: inptxt.type === 2 ? '1' : '' }}
|
|
|
+ src={`${baseURL}base/txt1Ac.png`}
|
|
|
+ alt=''
|
|
|
+ />
|
|
|
</div>
|
|
|
|
|
|
<BtnRight title='返回' clickSon={() => setBiShow(false)} imgName='back' />
|
|
|
+
|
|
|
+ {/* 填完信息出来的文字盒子 */}
|
|
|
+ <div
|
|
|
+ className='A11txtBox'
|
|
|
+ style={{ opacity: txtShow ? '1' : '0' }}
|
|
|
+ dangerouslySetInnerHTML={{ __html: txtRes }}
|
|
|
+ ></div>
|
|
|
+
|
|
|
+ {/* 底部按钮 */}
|
|
|
+ <div
|
|
|
+ className='Tiebtn'
|
|
|
+ onClick={btnStartFu}
|
|
|
+ hidden={!inptxt.type || txtShow}
|
|
|
+ style={{ opacity: isOk ? '1' : '0.5', pointerEvents: isOk ? 'auto' : 'none' }}
|
|
|
+ >
|
|
|
+ 报名帖
|
|
|
+ </div>
|
|
|
+
|
|
|
+ {/* 右侧自定义输入 */}
|
|
|
+ <div className='TieRight' hidden={!inptxt.type}>
|
|
|
+ <div className='TieRight1'>自定义内容</div>
|
|
|
+ <div className='TieRight2'>
|
|
|
+ <div>姓名</div>
|
|
|
+ <div>
|
|
|
+ <input
|
|
|
+ maxLength={4}
|
|
|
+ value={inptxt.txt1}
|
|
|
+ onChange={e =>
|
|
|
+ setInpTxt({ ...inptxt, txt1: e.target.value.replace(/\s+/g, '') })
|
|
|
+ }
|
|
|
+ />
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <div className='TieRight2'>
|
|
|
+ <div>表字</div>
|
|
|
+ <div>
|
|
|
+ <input
|
|
|
+ maxLength={4}
|
|
|
+ value={inptxt.txt2}
|
|
|
+ onChange={e =>
|
|
|
+ setInpTxt({ ...inptxt, txt2: e.target.value.replace(/\s+/g, '') })
|
|
|
+ }
|
|
|
+ />
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <div className='TieRight2'>
|
|
|
+ <div>籍贯</div>
|
|
|
+ <div>
|
|
|
+ <input
|
|
|
+ maxLength={10}
|
|
|
+ value={inptxt.txt3}
|
|
|
+ onChange={e =>
|
|
|
+ setInpTxt({ ...inptxt, txt3: e.target.value.replace(/\s+/g, '') })
|
|
|
+ }
|
|
|
+ />
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
</div>
|
|
|
) : null}
|
|
|
|
|
|
{/* 名帖动画 */}
|
|
|
- {imgNow ? (
|
|
|
- <>
|
|
|
- <CatVideo
|
|
|
- isShow={tieVideoSrc === 'tie1'}
|
|
|
- src={baseURL + 'base/tie1.mp4'}
|
|
|
- parentFu={() => btnStartFu()}
|
|
|
- />
|
|
|
- <CatVideo
|
|
|
- isShow={tieVideoSrc === 'tie2'}
|
|
|
- src={baseURL + 'base/tie2.mp4'}
|
|
|
- parentFu={() => btnStartFu()}
|
|
|
- />
|
|
|
- </>
|
|
|
- ) : null}
|
|
|
|
|
|
{/* 最后一个过长动画 */}
|
|
|
{imgNow ? (
|