index.tsx 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  1. import React, { useCallback, useEffect, useRef, useState } from 'react'
  2. import styles from './index.module.scss'
  3. import classNames from 'classnames'
  4. import { baseURL, myData } from '@/utils/http'
  5. import { domDelOwnFu } from '@/utils/utilsSome'
  6. import Hot2 from '@/pages/A2visit/PanoVideo/Hot2'
  7. import FloorBtn from '../FloorBtn'
  8. // 封面介绍
  9. const txtRes = {
  10. cheQi:
  11. '拜谒迎宾是汉代社交活动中重要礼仪活动。拜谒礼始于周代,是我国古代社交中一种非常重要的见面礼节。“拥彗迎宾”则是两汉时期社交活动中一项约定俗成的礼仪,表达了主人对于宾客的欢迎与尊重。',
  12. yanYing:
  13. '两汉时,随着社会经济的繁荣,人们生活水平的提高,宴饮成为汉代社会生活的风尚,也是汉代庄园的重要社交方式和生活娱乐方式,宴饮中通常以乐舞、百戏等侑食助兴。《周礼·春官·大宗伯》中有记载:“以飨燕之礼,亲四方之宾客”。相较两周时期宴饮政治功能的侧重,汉代宴饮在重礼修时睦的同时,更多了些活沷生动的色彩。',
  14. yueWu:
  15. '乐舞百戏是流行于两汉的竞技、杂耍、幻术及乐舞蹈、俳优、动物戏等多种艺术形式的总称。其在对先秦文化的承续中,汇融了周边民族的器乐歌舞新风,以吹管与弹拔乐取代了金石之声,不仅改变了乐队的结构,也改变了音乐的旋律风格和表现形式。百戏是中外文化交流、融合的产物。东汉时洛阳成国西域人东来的主要流寓地,洛阳出土的舞乐百戏俑群展现了这种将器乐、歌舞、杂质、滑稽以汇为一体的表演方式。',
  16. houCu:
  17. '汉代是我国饮食文化高度发达的时期,汉代经过前期的休养生息,农业生产得以恢复并迅猛发展,为汉代饮食文化的发展奠定了物质基础。汉代已形成了以黍(稷)、粟、麦、菽、稻等五谷在内的谷物为主食,以蔬菜、肉类、水产、果类为副食的饮食结构。随着异域食物种类,以及饮食加工方法的引进,汉代菜肴的烹饪也已进入到精细化阶段,烹饪方法也更为多样。',
  18. tianJian:
  19. '汉代是我国农业生产水平大发展和变革时代,汉代确立了以农业为基础的经济体系,是精耕细作技术急速上升的阶段。中原地区是两汉时期全国重要的经济区。铁农具逐渐大量应用于农业生产,“二牛一人”式耕作方法、代田法、区田法等耕作技术的出现,以及耧车、水碓和风车的发明,极大地提高了农业生产效率,促进了农业的迅速发展。汉代庄园里的农业生产活动涉及农、林、牧、副、渔等多个门类,东汉后期,田庄中的经济体系已经逐步完备,使汉代庄园成为自给自足程度较高的经济实体。',
  20. xianJu:
  21. '汉代画像石中有大量神仙和天象主题的图像,一方面反映出汉代先民的敬天思想,对于自然和宇宙秩序的理解与探索。同时也反映了汉代人的神仙信仰,以神仙境界为生命的终极境界,向往永生的生死观。反映了汉代先民对于自然世界的朴素的理解,以及对于向往永生的神仙世界浪漫而瑰丽的想像。'
  22. }
  23. type Props = {
  24. isShow: boolean //是否显示
  25. iconSrc: string //icon 图标
  26. parentFu: () => void //点击继续的方法(调用父亲)
  27. bgImg?: string
  28. num?: number
  29. moreSta?: boolean
  30. imgNumFu: () => void
  31. imgNow: boolean
  32. hidden?: boolean
  33. lastNum?: number
  34. bird?: string //鸟图,时辰图
  35. }
  36. function BaseImg({
  37. isShow,
  38. iconSrc,
  39. parentFu,
  40. bgImg,
  41. num = 30,
  42. moreSta,
  43. imgNumFu,
  44. imgNow,
  45. hidden = false,
  46. lastNum = 100,
  47. bird
  48. }: Props) {
  49. const [loding, setLoding] = useState(myData.isLdong ? 0 : 100)
  50. const timeRR = useRef(-1)
  51. const btnStartFu = useCallback(() => {
  52. if (loding >= 100) {
  53. parentFu()
  54. // 0.5s之后删除自己
  55. setTimeout(() => {
  56. domDelOwnFu('#BaseImg')
  57. }, 500)
  58. }
  59. }, [loding, parentFu])
  60. useEffect(() => {
  61. if (imgNow) {
  62. clearInterval(timeRR.current)
  63. timeRR.current = window.setInterval(() => {
  64. if (loding >= lastNum) {
  65. if (moreSta) btnStartFu()
  66. clearInterval(timeRR.current)
  67. return
  68. }
  69. setLoding(loding + 2)
  70. }, num)
  71. }
  72. }, [btnStartFu, imgNow, lastNum, loding, moreSta, num])
  73. // 点击 小鸡 出来的热点信息
  74. const [jiAc, setJiAc] = useState(false)
  75. return (
  76. <div
  77. id='BaseImg'
  78. hidden={hidden}
  79. className={classNames(styles.BaseImg, isShow ? styles.BaseImgHide : '')}
  80. >
  81. {bgImg ? <img onLoad={imgNumFu} id='bgImgBox' src={bgImg} alt='' /> : null}
  82. {moreSta ? null : <img onLoad={imgNumFu} className='BIlogo' src={iconSrc} alt='' />}
  83. {/* 文字介绍 */}
  84. {bird ? (
  85. <div className='BItxt' style={{ backgroundImage: `url(${baseURL + 'Zhot/bac.png'})` }}>
  86. <div className='sizeNo'>{Reflect.get(txtRes, bird)}</div>
  87. </div>
  88. ) : null}
  89. {/* 右下角按钮 */}
  90. {loding >= 100 && bird ? <FloorBtn /> : null}
  91. {bird ? (
  92. <div
  93. className='birdBox'
  94. style={{
  95. opacity: loding >= 100 ? '1' : '0',
  96. pointerEvents: loding >= 100 ? 'auto' : 'none'
  97. }}
  98. >
  99. {/* 鸟图 */}
  100. <img className='bird1' onLoad={imgNumFu} src={`${baseURL}bird/${bird}.png`} alt='' />
  101. <div className='bird2' onClick={btnStartFu}>
  102. 点击继续
  103. </div>
  104. <div className='bird3' onClick={() => setJiAc(true)}></div>
  105. </div>
  106. ) : (
  107. <div
  108. className='BIbaseBtn'
  109. onClick={btnStartFu}
  110. style={{ pointerEvents: loding >= 100 ? 'auto' : 'none' }}
  111. >
  112. {moreSta ? null : (
  113. <div className='BIcon'>
  114. <img onLoad={imgNumFu} src={`${baseURL}visit/arrow.png`} alt='' />
  115. </div>
  116. )}
  117. <div className={classNames('BIBtxt', loding >= 100 && !moreSta ? 'BIBtxtFont' : '')}>
  118. {loding >= 100 ? (moreSta ? '加载中' : '点击继续') : '加载中'}
  119. </div>
  120. </div>
  121. )}
  122. {/* 进度条 */}
  123. {loding >= 100 ? null : (
  124. <div className='BIBxian'>
  125. <div>
  126. <div style={{ width: loding + '%' }}></div>
  127. </div>
  128. </div>
  129. )}
  130. {/* 点击小鸡 */}
  131. {jiAc ? (
  132. <Hot2
  133. data={myData.xianJu.imgHot.find(v => v.name === '褐绿釉陶桃都树')!.data}
  134. name='褐绿釉陶桃都树'
  135. closeFu={() => setJiAc(false)}
  136. isJi={true}
  137. />
  138. ) : null}
  139. </div>
  140. )
  141. }
  142. const MemoBaseImg = React.memo(BaseImg)
  143. export default MemoBaseImg