|  | @@ -44,7 +44,7 @@ export default defineComponent({
 | 
											
												
													
														|  |        default: false
 |  |        default: false
 | 
											
												
													
														|  |      }
 |  |      }
 | 
											
												
													
														|  |    },
 |  |    },
 | 
											
												
													
														|  | -  emits: ['loadedmetadata', 'togglePlay', 'ended', 'reset', 'close', 'error'],
 |  | 
 | 
											
												
													
														|  | 
 |  | +  emits: ['canplay', 'pause', 'togglePlay', 'ended', 'reset', 'close', 'error'],
 | 
											
												
													
														|  |    setup(props, { emit, expose }) {
 |  |    setup(props, { emit, expose }) {
 | 
											
												
													
														|  |      const videoID = 'video' + Date.now() + Math.floor(Math.random() * 100);
 |  |      const videoID = 'video' + Date.now() + Math.floor(Math.random() * 100);
 | 
											
												
													
														|  |      const videoItem = ref();
 |  |      const videoItem = ref();
 | 
											
										
											
												
													
														|  | @@ -119,7 +119,7 @@ export default defineComponent({
 | 
											
												
													
														|  |        if (videoItem.value) {
 |  |        if (videoItem.value) {
 | 
											
												
													
														|  |          console.log(videoItem.value);
 |  |          console.log(videoItem.value);
 | 
											
												
													
														|  |          videoItem.value.poster(props.item.coverImg); // 封面
 |  |          videoItem.value.poster(props.item.coverImg); // 封面
 | 
											
												
													
														|  | -        videoItem.value.src(isEmtry.value ? '' : item.value.content); // url 播放地址
 |  | 
 | 
											
												
													
														|  | 
 |  | +        videoItem.value.src(item.value.content); // url 播放地址
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |          // 初步加载时
 |  |          // 初步加载时
 | 
											
												
													
														|  |          videoItem.value.one('loadedmetadata', (e: any) => {
 |  |          videoItem.value.one('loadedmetadata', (e: any) => {
 | 
											
										
											
												
													
														|  | @@ -128,7 +128,17 @@ export default defineComponent({
 | 
											
												
													
														|  |            // 获取时长
 |  |            // 获取时长
 | 
											
												
													
														|  |            data.duration = videoItem.value.duration();
 |  |            data.duration = videoItem.value.duration();
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | -          emit('loadedmetadata', videoItem.value);
 |  | 
 | 
											
												
													
														|  | 
 |  | +          emit('canplay', videoItem.value);
 | 
											
												
													
														|  | 
 |  | +        });
 | 
											
												
													
														|  | 
 |  | +        // 视频开始播放
 | 
											
												
													
														|  | 
 |  | +        videoItem.value.on('play', () => {
 | 
											
												
													
														|  | 
 |  | +          emit('close')
 | 
											
												
													
														|  | 
 |  | +          emit('canplay')
 | 
											
												
													
														|  | 
 |  | +        });
 | 
											
												
													
														|  | 
 |  | +        //
 | 
											
												
													
														|  | 
 |  | +        videoItem.value.on('pause', () => {
 | 
											
												
													
														|  | 
 |  | +          data.playState = 'pause';
 | 
											
												
													
														|  | 
 |  | +          emit('pause')
 | 
											
												
													
														|  |          });
 |  |          });
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |          // 视频播放时加载
 |  |          // 视频播放时加载
 | 
											
										
											
												
													
														|  | @@ -136,24 +146,20 @@ export default defineComponent({
 | 
											
												
													
														|  |            if (data.timer) return;
 |  |            if (data.timer) return;
 | 
											
												
													
														|  |            data.currentTime = videoItem.value.currentTime();
 |  |            data.currentTime = videoItem.value.currentTime();
 | 
											
												
													
														|  |          });
 |  |          });
 | 
											
												
													
														|  | -
 |  | 
 | 
											
												
													
														|  |          // 视频播放结束
 |  |          // 视频播放结束
 | 
											
												
													
														|  |          videoItem.value.on('ended', () => {
 |  |          videoItem.value.on('ended', () => {
 | 
											
												
													
														|  |            data.playState = 'pause';
 |  |            data.playState = 'pause';
 | 
											
												
													
														|  |            emit('ended');
 |  |            emit('ended');
 | 
											
												
													
														|  | -        });
 |  | 
 | 
											
												
													
														|  | -
 |  | 
 | 
											
												
													
														|  | -        //
 |  | 
 | 
											
												
													
														|  | -        videoItem.value.on('pause', () => {
 |  | 
 | 
											
												
													
														|  | -          data.playState = 'pause';
 |  | 
 | 
											
												
													
														|  | -        });
 |  | 
 | 
											
												
													
														|  | 
 |  | +        });     
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |          videoItem.value.on('playing', () => {
 |  |          videoItem.value.on('playing', () => {
 | 
											
												
													
														|  |            data.playState = 'play';
 |  |            data.playState = 'play';
 | 
											
												
													
														|  |          });
 |  |          });
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |          videoItem.value.on('canplay', (e: any) => {
 |  |          videoItem.value.on('canplay', (e: any) => {
 | 
											
												
													
														|  | -          console.log('canplay', e);
 |  | 
 | 
											
												
													
														|  | 
 |  | +          console.log('canplay', );
 | 
											
												
													
														|  | 
 |  | +          data.duration = videoItem.value.duration();
 | 
											
												
													
														|  | 
 |  | +          emit('canplay')
 | 
											
												
													
														|  |          });
 |  |          });
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |          // 视频播放异常
 |  |          // 视频播放异常
 | 
											
										
											
												
													
														|  | @@ -164,27 +170,36 @@ export default defineComponent({
 | 
											
												
													
														|  |        }
 |  |        }
 | 
											
												
													
														|  |      };
 |  |      };
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | 
 |  | +    watch(() => props.item, (val, oldVal) => {
 | 
											
												
													
														|  | 
 |  | +      videoItem.value.currentTime(0)
 | 
											
												
													
														|  | 
 |  | +      videoItem.value.poster(props.item.coverImg); // 封面
 | 
											
												
													
														|  | 
 |  | +      videoItem.value.src(item.value.content); // url 播放地址
 | 
											
												
													
														|  | 
 |  | +      data.playState = 'pause';
 | 
											
												
													
														|  | 
 |  | +    })
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  |      onMounted(() => {
 |  |      onMounted(() => {
 | 
											
												
													
														|  |        __init();
 |  |        __init();
 | 
											
												
													
														|  |      });
 |  |      });
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | 
 |  | +    const pause = () => {
 | 
											
												
													
														|  | 
 |  | +      videoItem.value.pause();
 | 
											
												
													
														|  | 
 |  | +    }
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  |      expose({
 |  |      expose({
 | 
											
												
													
														|  | -      onPlay
 |  | 
 | 
											
												
													
														|  | 
 |  | +      onPlay,
 | 
											
												
													
														|  | 
 |  | +      pause
 | 
											
												
													
														|  |      });
 |  |      });
 | 
											
												
													
														|  |      return () => (
 |  |      return () => (
 | 
											
												
													
														|  |        <div class={styles.videoWrap}>
 |  |        <div class={styles.videoWrap}>
 | 
											
												
													
														|  |          <div class={styles.content}>
 |  |          <div class={styles.content}>
 | 
											
												
													
														|  |            <div ref={contetRef} class={styles.contentWrap}>
 |  |            <div ref={contetRef} class={styles.contentWrap}>
 | 
											
												
													
														|  | -            {!data.reload && (
 |  | 
 | 
											
												
													
														|  | -              <video
 |  | 
 | 
											
												
													
														|  | -                style={{ width: '100%', height: '100%' }}
 |  | 
 | 
											
												
													
														|  | -                poster={props.item.coverImg}
 |  | 
 | 
											
												
													
														|  | -                src={isEmtry.value ? '' : item.value.content}
 |  | 
 | 
											
												
													
														|  | -                id={videoID}
 |  | 
 | 
											
												
													
														|  | -                preload="auto"
 |  | 
 | 
											
												
													
														|  | -                playsinline
 |  | 
 | 
											
												
													
														|  | -                webkit-playsinline></video>
 |  | 
 | 
											
												
													
														|  | -            )}
 |  | 
 | 
											
												
													
														|  | 
 |  | +            <video
 | 
											
												
													
														|  | 
 |  | +              style={{ width: '100%', height: '100%' }}
 | 
											
												
													
														|  | 
 |  | +              id={videoID}
 | 
											
												
													
														|  | 
 |  | +              preload="auto"
 | 
											
												
													
														|  | 
 |  | +              playsinline
 | 
											
												
													
														|  | 
 |  | +              webkit-playsinline
 | 
											
												
													
														|  | 
 |  | +              x5-video-player-type="h5"></video>
 | 
											
												
													
														|  |            </div>
 |  |            </div>
 | 
											
												
													
														|  |            <div class={styles.videoSection}></div>
 |  |            <div class={styles.videoSection}></div>
 | 
											
												
													
														|  |          </div>
 |  |          </div>
 | 
											
										
											
												
													
														|  | @@ -193,8 +208,11 @@ export default defineComponent({
 | 
											
												
													
														|  |            class={[styles.controls, props.showModel ? '' : styles.hide]}
 |  |            class={[styles.controls, props.showModel ? '' : styles.hide]}
 | 
											
												
													
														|  |            onClick={(e: Event) => {
 |  |            onClick={(e: Event) => {
 | 
											
												
													
														|  |              e.stopPropagation();
 |  |              e.stopPropagation();
 | 
											
												
													
														|  | 
 |  | +            if(videoItem.value.paused()) return
 | 
											
												
													
														|  | 
 |  | +            emit('close');
 | 
											
												
													
														|  |            }}
 |  |            }}
 | 
											
												
													
														|  |            onTouchmove={(e: TouchEvent) => {
 |  |            onTouchmove={(e: TouchEvent) => {
 | 
											
												
													
														|  | 
 |  | +            if(videoItem.value.paused()) return
 | 
											
												
													
														|  |              emit('close');
 |  |              emit('close');
 | 
											
												
													
														|  |            }}>
 |  |            }}>
 | 
											
												
													
														|  |            <div class={styles.time}>
 |  |            <div class={styles.time}>
 | 
											
										
											
												
													
														|  | @@ -211,7 +229,7 @@ export default defineComponent({
 | 
											
												
													
														|  |                onUpdate:value={val => handleChangeTime(val)}
 |  |                onUpdate:value={val => handleChangeTime(val)}
 | 
											
												
													
														|  |              />
 |  |              />
 | 
											
												
													
														|  |            </div>
 |  |            </div>
 | 
											
												
													
														|  | -          <div class={styles.actions} onClick={() => emit('close')}>
 |  | 
 | 
											
												
													
														|  | 
 |  | +          <div class={styles.actions}>
 | 
											
												
													
														|  |              <div
 |  |              <div
 | 
											
												
													
														|  |                class={styles.actionBtn}
 |  |                class={styles.actionBtn}
 | 
											
												
													
														|  |                onClick={() =>
 |  |                onClick={() =>
 |