index.tsx 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. import React from 'react'
  2. import { CloseCircleOutlined } from '@ant-design/icons'
  3. import styles from './index.module.scss'
  4. import { useSelector } from 'react-redux'
  5. import store, { RootState } from '@/store'
  6. import { baseURL } from '@/utils/http'
  7. import classNames from 'classnames'
  8. function LookDom() {
  9. const { src, type, flag, name } = useSelector((state: RootState) => state.loginStore.lookDom)
  10. // 控制放大缩小复位
  11. // const modelMoveFu = useCallback((fuName: 'resetView' | 'zoomIn' | 'zoomOut') => {
  12. // const dom: any = document.querySelector('#modelIframe')
  13. // if (dom && dom.contentWindow && dom.contentWindow.sceneFc[fuName]) {
  14. // dom.contentWindow.sceneFc[fuName]()
  15. // }
  16. // }, [])
  17. return (
  18. <div className={styles.LookDom} style={src ? { opacity: 1, pointerEvents: 'auto' } : {}}>
  19. {src ? (
  20. <>
  21. {type === 'video' ? (
  22. <div className='viedoBox'>
  23. <video autoPlay controls src={flag ? src : baseURL + src}></video>
  24. </div>
  25. ) : type === 'audio' ? (
  26. <div className='audioBox'>
  27. <audio autoPlay controls src={flag ? src : baseURL + src}></audio>
  28. </div>
  29. ) : (
  30. <div className='modelBox'>
  31. <iframe
  32. id='modelIframe'
  33. src={`./modelLook/index.html?src=${baseURL + src}&min=0.3&max=3`}
  34. frameBorder='0'
  35. title='model'
  36. ></iframe>
  37. {/* <div className='modelBtn'>
  38. <img
  39. onClick={() => modelMoveFu('zoomIn')}
  40. src={require('@/assets/img/model+.png')}
  41. alt=''
  42. />
  43. <img
  44. onClick={() => modelMoveFu('zoomOut')}
  45. src={require('@/assets/img/model-.png')}
  46. alt=''
  47. />
  48. <img
  49. onClick={() => modelMoveFu('resetView')}
  50. src={require('@/assets/img/modelR.png')}
  51. alt=''
  52. />
  53. </div> */}
  54. {name ? <div className='modelName'>{name}</div> : null}
  55. </div>
  56. )}
  57. <div
  58. className={classNames('close', type === 'model' ? 'closeModel' : '')}
  59. onClick={() =>
  60. store.dispatch({
  61. type: 'layout/lookDom',
  62. payload: { src: '', type: '', flag: false, name: '' }
  63. })
  64. }
  65. >
  66. <CloseCircleOutlined rev={undefined} />
  67. </div>
  68. </>
  69. ) : null}
  70. </div>
  71. )
  72. }
  73. const MemoLookDom = React.memo(LookDom)
  74. export default MemoLookDom