|  | @@ -4,10 +4,13 @@ import iconplay from '@views/attend-class/image/icon-pause.png';
 | 
	
		
			
				|  |  |  import iconpause from '@views/attend-class/image/icon-play.png';
 | 
	
		
			
				|  |  |  import iconReplay from '@views/attend-class/image/icon-replay.png';
 | 
	
		
			
				|  |  |  import iconPreviewDownload from '@views/attend-class/image/icon-preivew-download.png';
 | 
	
		
			
				|  |  | +import iconFullscreen from '@views/attend-class/image/icon-fullscreen.png';
 | 
	
		
			
				|  |  | +import iconFullscreenExit from '@views/attend-class/image/icon-fullscreen-exit.png';
 | 
	
		
			
				|  |  |  import { NSlider, useMessage } from 'naive-ui';
 | 
	
		
			
				|  |  |  import Vudio from 'vudio.js';
 | 
	
		
			
				|  |  |  import tickMp3 from '@views/attend-class/image/tick.mp3';
 | 
	
		
			
				|  |  |  import { saveAs } from 'file-saver';
 | 
	
		
			
				|  |  | +import { exitFullscreen } from '/src/utils';
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  export default defineComponent({
 | 
	
		
			
				|  |  |    name: 'audio-play',
 | 
	
	
		
			
				|  | @@ -32,8 +35,11 @@ export default defineComponent({
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |    },
 | 
	
		
			
				|  |  |    setup(props) {
 | 
	
		
			
				|  |  | +    const videoId =
 | 
	
		
			
				|  |  | +      'vFullscreen' + Date.now() + Math.floor(Math.random() * 100);
 | 
	
		
			
				|  |  |      const message = useMessage();
 | 
	
		
			
				|  |  |      const audioForms = reactive({
 | 
	
		
			
				|  |  | +      isFullScreen: false, // 是否全屏
 | 
	
		
			
				|  |  |        paused: true,
 | 
	
		
			
				|  |  |        currentTimeNum: 0,
 | 
	
		
			
				|  |  |        currentTime: '00:00',
 | 
	
	
		
			
				|  | @@ -141,8 +147,38 @@ export default defineComponent({
 | 
	
		
			
				|  |  |        vudio1.dance();
 | 
	
		
			
				|  |  |      });
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +    /** 全屏 */
 | 
	
		
			
				|  |  | +    const isElementFullscreen = (element: any) => {
 | 
	
		
			
				|  |  | +      const dom: any = document;
 | 
	
		
			
				|  |  | +      return (
 | 
	
		
			
				|  |  | +        element ===
 | 
	
		
			
				|  |  | +        (dom.fullscreenElement ||
 | 
	
		
			
				|  |  | +          dom.webkitFullscreenElement ||
 | 
	
		
			
				|  |  | +          dom.mozFullScreenElement ||
 | 
	
		
			
				|  |  | +          dom.msFullscreenElement)
 | 
	
		
			
				|  |  | +      );
 | 
	
		
			
				|  |  | +    };
 | 
	
		
			
				|  |  | +    const onFullScreen = () => {
 | 
	
		
			
				|  |  | +      const el: any = document.querySelector('#' + videoId);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      //   //进入全屏
 | 
	
		
			
				|  |  | +      if (el) {
 | 
	
		
			
				|  |  | +        if (isElementFullscreen(el)) {
 | 
	
		
			
				|  |  | +          exitFullscreen();
 | 
	
		
			
				|  |  | +          audioForms.isFullScreen = false;
 | 
	
		
			
				|  |  | +        } else {
 | 
	
		
			
				|  |  | +          (el.requestFullscreen && el.requestFullscreen()) ||
 | 
	
		
			
				|  |  | +            (el.mozRequestFullScreen && el.mozRequestFullScreen()) ||
 | 
	
		
			
				|  |  | +            (el.webkitRequestFullscreen && el.webkitRequestFullscreen()) ||
 | 
	
		
			
				|  |  | +            (el.msRequestFullscreen && el.msRequestFullscreen());
 | 
	
		
			
				|  |  | +          audioForms.isFullScreen = true;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        // audioForms.isFullScreen = isElementFullscreen(el);
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +    };
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |      return () => (
 | 
	
		
			
				|  |  | -      <div class={styles.audioWrap}>
 | 
	
		
			
				|  |  | +      <div class={styles.audioWrap} id={videoId}>
 | 
	
		
			
				|  |  |          <div class={styles.audioContainer}>
 | 
	
		
			
				|  |  |            <audio
 | 
	
		
			
				|  |  |              ref={audio}
 | 
	
	
		
			
				|  | @@ -227,13 +263,21 @@ export default defineComponent({
 | 
	
		
			
				|  |  |              </div>
 | 
	
		
			
				|  |  |              <div class={styles.actionWrap}>
 | 
	
		
			
				|  |  |                {props.isDownload && (
 | 
	
		
			
				|  |  | -                <button
 | 
	
		
			
				|  |  | -                  class={styles.iconReplay}
 | 
	
		
			
				|  |  | -                  onClick={onDownload}
 | 
	
		
			
				|  |  | -                  style={{ marginLeft: '15px' }}>
 | 
	
		
			
				|  |  | +                <button class={styles.iconDownload} onClick={onDownload}>
 | 
	
		
			
				|  |  |                    <img src={iconPreviewDownload} />
 | 
	
		
			
				|  |  |                  </button>
 | 
	
		
			
				|  |  |                )}
 | 
	
		
			
				|  |  | +              {props.fullscreen && (
 | 
	
		
			
				|  |  | +                <button class={styles.iconDownload} onClick={onFullScreen}>
 | 
	
		
			
				|  |  | +                  <img
 | 
	
		
			
				|  |  | +                    src={
 | 
	
		
			
				|  |  | +                      audioForms.isFullScreen
 | 
	
		
			
				|  |  | +                        ? iconFullscreenExit
 | 
	
		
			
				|  |  | +                        : iconFullscreen
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                  />
 | 
	
		
			
				|  |  | +                </button>
 | 
	
		
			
				|  |  | +              )}
 | 
	
		
			
				|  |  |              </div>
 | 
	
		
			
				|  |  |            </div>
 | 
	
		
			
				|  |  |          </div>
 |