index.tsx 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. import React, { useEffect, useMemo, useState } from 'react'
  2. import styles from './index.module.scss'
  3. import { useParams } from 'react-router-dom'
  4. import { isPc, myData, otherUrl } from '@/utils/http'
  5. import { VisitHotDataType } from '@/types'
  6. import Hot1 from '../A2visit/PanoVideo/Hot1'
  7. import Hot2 from '../A2visit/PanoVideo/Hot2'
  8. import history from '@/utils/history'
  9. import BtnRight from '@/components/BtnRight'
  10. const obj = {
  11. 1: {
  12. pc: 'unity/HeNanMuseum-pc/MainScene/index.html',
  13. mo: 'unity/HeNanMuseum-mobile/MainScene/index.html'
  14. },
  15. 2: {
  16. pc: 'unity/HeNanMuseum-pc/RoomScene/index.html',
  17. mo: 'unity/HeNanMuseum-mobile/RoomScene/index.html'
  18. }
  19. }
  20. function C1unity() {
  21. const urlObj: any = useParams()
  22. const [urlId, setUrlId] = useState('')
  23. // 1:室外 2:室内
  24. const [url, setUrl] = useState('')
  25. useEffect(() => {
  26. setUrlId(urlObj.id)
  27. const temp = Reflect.get(obj, urlObj.id)
  28. const res = Reflect.get(temp, isPc ? 'pc' : 'mo')
  29. setUrl(otherUrl + res)
  30. // 注册
  31. window.unityOpenHot = (index: number) => {
  32. // 打开热点
  33. setInd(Number(index))
  34. }
  35. window.unityBack = () => {
  36. // 退出
  37. history.go(-1)
  38. }
  39. }, [urlObj.id])
  40. // 打开热点的索引
  41. const [ind, setInd] = useState(-1)
  42. const data = useMemo(() => {
  43. let arr: VisitHotDataType = []
  44. if (ind !== -1) {
  45. const data1 = myData.visit.hot[ind].data
  46. const data2 = myData.banquet.hot[ind].data
  47. arr = urlId === '1' ? data1 : data2
  48. }
  49. return arr
  50. }, [ind, urlId])
  51. useEffect(() => {
  52. if (url) {
  53. // 待完善
  54. const body = document.querySelector('body')
  55. const iframe = document.createElement('iframe')
  56. iframe.frameBorder = 'none'
  57. iframe.title = '漫游'
  58. iframe.id = 'myIframe'
  59. iframe.src = url
  60. body?.appendChild(iframe)
  61. }
  62. return () => {
  63. const iframeDom = document.querySelector('#myIframe')
  64. iframeDom?.remove()
  65. }
  66. }, [url])
  67. return (
  68. <div className={styles.C1unity}>
  69. {/* {url ? <iframe frameBorder='none' title='漫游' src={url}></iframe> : null} */}
  70. {/* 返回按钮 */}
  71. <BtnRight imgName='back' clickSon={() => history.go(-1)} title='返回' />
  72. {ind === -1 ? null : ind === 0 && urlId === '1' ? (
  73. <Hot1 data={data} closeFu={() => setInd(-1)} />
  74. ) : (
  75. <Hot2
  76. data={data}
  77. closeFu={() => setInd(-1)}
  78. name={myData[urlId === '1' ? 'visit' : 'banquet'].hot[ind].name}
  79. />
  80. )}
  81. </div>
  82. )
  83. }
  84. const MemoC1unity = React.memo(C1unity)
  85. export default MemoC1unity