|  | @@ -49,7 +49,8 @@ export default defineComponent({
 | 
	
		
			
				|  |  |        dragStatus: false, // 是否开始拖动
 | 
	
		
			
				|  |  |        playState: 'pause' as 'play' | 'pause',
 | 
	
		
			
				|  |  |        vudio: null as any,
 | 
	
		
			
				|  |  | -      afterMa3: true
 | 
	
		
			
				|  |  | +      afterMa3: true,
 | 
	
		
			
				|  |  | +      count: 0
 | 
	
		
			
				|  |  |      });
 | 
	
		
			
				|  |  |      const canvasRef: any = ref();
 | 
	
		
			
				|  |  |      const audioRef: any = ref();
 | 
	
	
		
			
				|  | @@ -58,14 +59,27 @@ export default defineComponent({
 | 
	
		
			
				|  |  |      watch(
 | 
	
		
			
				|  |  |        () => props.show,
 | 
	
		
			
				|  |  |        val => {
 | 
	
		
			
				|  |  | +        data.count = 0;
 | 
	
		
			
				|  |  |          if (val) {
 | 
	
		
			
				|  |  | -          // onToggleAudio();
 | 
	
		
			
				|  |  | +          // data.count = 0;
 | 
	
		
			
				|  |  | +          // audioRef.value.src = item.value.content;
 | 
	
		
			
				|  |  | +          onToggleAudio();
 | 
	
		
			
				|  |  |          } else {
 | 
	
		
			
				|  |  |            audioRef.value.pause();
 | 
	
		
			
				|  |  | +          // audioRef.value.src = '';
 | 
	
		
			
				|  |  |            data.playState = 'pause';
 | 
	
		
			
				|  |  | +          // data.vudio = null;
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |        }
 | 
	
		
			
				|  |  |      );
 | 
	
		
			
				|  |  | +    // watch(
 | 
	
		
			
				|  |  | +    //   () => props.item,
 | 
	
		
			
				|  |  | +    //   () => {
 | 
	
		
			
				|  |  | +    //     // data.count = 0;
 | 
	
		
			
				|  |  | +    //     // audioRef.value.src = item.value.content;
 | 
	
		
			
				|  |  | +    //     onToggleAudio();
 | 
	
		
			
				|  |  | +    //   }
 | 
	
		
			
				|  |  | +    // );
 | 
	
		
			
				|  |  |      watch(
 | 
	
		
			
				|  |  |        () => props.pageVisibility,
 | 
	
		
			
				|  |  |        val => {
 | 
	
	
		
			
				|  | @@ -79,9 +93,19 @@ export default defineComponent({
 | 
	
		
			
				|  |  |      // 切换音频播放
 | 
	
		
			
				|  |  |      const onToggleAudio = () => {
 | 
	
		
			
				|  |  |        if (audioRef.value.paused) {
 | 
	
		
			
				|  |  | -        onInit(audioRef.value, canvasRef.value);
 | 
	
		
			
				|  |  |          audioRef.value.play();
 | 
	
		
			
				|  |  |          data.playState = 'play';
 | 
	
		
			
				|  |  | +        //
 | 
	
		
			
				|  |  | +        nextTick(() => {
 | 
	
		
			
				|  |  | +          // onInit(audioRef.value, canvasRef.value);
 | 
	
		
			
				|  |  | +          // setTimeout(() => {
 | 
	
		
			
				|  |  | +          //   onInit(audioRef.value, canvasRef.value);
 | 
	
		
			
				|  |  | +          // }, 100);
 | 
	
		
			
				|  |  | +          // console.log(data.vudio, 'data.vudio');
 | 
	
		
			
				|  |  | +          // if (data.vudio) {
 | 
	
		
			
				|  |  | +          //   data.vudio.dance();
 | 
	
		
			
				|  |  | +          // }
 | 
	
		
			
				|  |  | +        });
 | 
	
		
			
				|  |  |        } else {
 | 
	
		
			
				|  |  |          audioRef.value.pause();
 | 
	
		
			
				|  |  |          data.playState = 'pause';
 | 
	
	
		
			
				|  | @@ -89,33 +113,56 @@ export default defineComponent({
 | 
	
		
			
				|  |  |      };
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      const onInit = (audio: undefined, canvas: undefined) => {
 | 
	
		
			
				|  |  | -      if (!data.vudio) {
 | 
	
		
			
				|  |  | -        const rect = contetRef.value.getBoundingClientRect() || {
 | 
	
		
			
				|  |  | -          width: 200,
 | 
	
		
			
				|  |  | -          height: 200
 | 
	
		
			
				|  |  | -        };
 | 
	
		
			
				|  |  | -        data.vudio = new Vudio(audio, canvas, {
 | 
	
		
			
				|  |  | -          effect: 'waveform',
 | 
	
		
			
				|  |  | -          accuracy: 128,
 | 
	
		
			
				|  |  | -          width: rect.width,
 | 
	
		
			
				|  |  | -          height: rect.height,
 | 
	
		
			
				|  |  | -          waveform: {
 | 
	
		
			
				|  |  | -            maxHeight: 160,
 | 
	
		
			
				|  |  | -            color: [
 | 
	
		
			
				|  |  | -              [0, '#44D1FF'],
 | 
	
		
			
				|  |  | -              [0.5, '#44D1FF'],
 | 
	
		
			
				|  |  | -              [0.5, '#198CFE'],
 | 
	
		
			
				|  |  | -              [1, '#198CFE']
 | 
	
		
			
				|  |  | -            ],
 | 
	
		
			
				|  |  | -            prettify: false
 | 
	
		
			
				|  |  | -          }
 | 
	
		
			
				|  |  | -        });
 | 
	
		
			
				|  |  | -        data.vudio.dance();
 | 
	
		
			
				|  |  | +      if (!data.vudio && data.count > 1) {
 | 
	
		
			
				|  |  | +        console.log(data.vudio, 'data.vudio');
 | 
	
		
			
				|  |  | +        try {
 | 
	
		
			
				|  |  | +          const rect = contetRef.value.getBoundingClientRect() || {
 | 
	
		
			
				|  |  | +            width: 200,
 | 
	
		
			
				|  |  | +            height: 200
 | 
	
		
			
				|  |  | +          };
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +          data.vudio = new Vudio(audio, canvas, {
 | 
	
		
			
				|  |  | +            effect: 'waveform',
 | 
	
		
			
				|  |  | +            accuracy: 128,
 | 
	
		
			
				|  |  | +            width: rect.width,
 | 
	
		
			
				|  |  | +            height: rect.height,
 | 
	
		
			
				|  |  | +            waveform: {
 | 
	
		
			
				|  |  | +              maxHeight: 160,
 | 
	
		
			
				|  |  | +              color: [
 | 
	
		
			
				|  |  | +                [0, '#44D1FF'],
 | 
	
		
			
				|  |  | +                [0.5, '#44D1FF'],
 | 
	
		
			
				|  |  | +                [0.5, '#198CFE'],
 | 
	
		
			
				|  |  | +                [1, '#198CFE']
 | 
	
		
			
				|  |  | +              ],
 | 
	
		
			
				|  |  | +              prettify: false
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +          });
 | 
	
		
			
				|  |  | +          data.vudio.dance();
 | 
	
		
			
				|  |  | +        } catch (e) {
 | 
	
		
			
				|  |  | +          console.log(e, 'e');
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +      } else {
 | 
	
		
			
				|  |  |        }
 | 
	
		
			
				|  |  |      };
 | 
	
		
			
				|  |  |      /** 加载成功 */
 | 
	
		
			
				|  |  |      const onLoadedmetadata = () => {
 | 
	
		
			
				|  |  | -      data.duration = audioRef.value.duration;
 | 
	
		
			
				|  |  | +      data.duration = audioRef.value?.duration;
 | 
	
		
			
				|  |  | +      // onInit(audioRef.value, canvasRef.value);
 | 
	
		
			
				|  |  | +      if (props.item.autoPlay && audioRef.value && props.show) {
 | 
	
		
			
				|  |  | +        // data.vudio = null;
 | 
	
		
			
				|  |  | +        // data.count = 0;
 | 
	
		
			
				|  |  | +        onToggleAudio();
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      // if (audioRef.value) {
 | 
	
		
			
				|  |  | +      //   audioRef.value.stop = () => {
 | 
	
		
			
				|  |  | +      //     audioRef.value?.pause();
 | 
	
		
			
				|  |  | +      //   };
 | 
	
		
			
				|  |  | +      //   audioRef.value.onPlay = () => {
 | 
	
		
			
				|  |  | +      //     audioRef.value?.play();
 | 
	
		
			
				|  |  | +      //     onInit(audioRef.value, canvasRef.value);
 | 
	
		
			
				|  |  | +      //   };
 | 
	
		
			
				|  |  | +      // }
 | 
	
		
			
				|  |  |      };
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      /** 改变播放时间 */
 | 
	
	
		
			
				|  | @@ -172,10 +219,13 @@ export default defineComponent({
 | 
	
		
			
				|  |  |                onLoadedmetadata={onLoadedmetadata}
 | 
	
		
			
				|  |  |                onTimeupdate={() => {
 | 
	
		
			
				|  |  |                  if (data.timer && data.playState === 'pause') return;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | +                if (data.count <= 1) {
 | 
	
		
			
				|  |  | +                  data.count += 1;
 | 
	
		
			
				|  |  | +                  onInit(audioRef.value, canvasRef.value);
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  |                  // 开始拖动时也不能更新
 | 
	
		
			
				|  |  |                  if (data.dragStatus) return;
 | 
	
		
			
				|  |  | -                data.currentTime = audioRef.value.currentTime;
 | 
	
		
			
				|  |  | +                data.currentTime = audioRef.value?.currentTime;
 | 
	
		
			
				|  |  |                }}
 | 
	
		
			
				|  |  |                onError={() => {
 | 
	
		
			
				|  |  |                  console.log('error');
 |