| 
					
				 | 
			
			
				@@ -0,0 +1,70 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+<template></template> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+<script setup> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import { onReady, onLoad, onUnload, onShow, onNavigationBarButtonTap, onPullDownRefresh, onReachBottom } from "@dcloudio/uni-app"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import { defineComponent, getCurrentInstance, inject, nextTick, onMounted, watchEffect, ref } from "vue"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const emit = defineEmits(["onEnded", "onError"]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const props = defineProps({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  //播放原地址 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  audioUrl: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    type: String, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    defualt: "", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  //是否开启 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  audioBool: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    type: Boolean, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    defualt: "", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const isPlay = ref(false); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const innerAudio = ref(null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+function handleTTS() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  if (!audioBool) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  if (innerAudio.value) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      innerAudio.value.pause(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      innerAudio.value.destroy(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      innerAudio.value = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } catch (e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      //TODO handle the exception 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  innerAudio.value = uni.createInnerAudioContext(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  innerAudio.value.autoplay = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  innerAudio.value.volume = 1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  innerAudio.value.src = props.audioUrl; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  innerAudio.value.onPlay(() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    console.log("开始播放"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  innerAudio.value.onEnded((res) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    console.log("音频播放结束"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    isPlay.value = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  innerAudio.value.onError((res) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    console.log("音频播放出错" + res); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    console.log(res.errCode); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  innerAudio.value.play(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+watchEffect(() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  if (props.audioUrl) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    handleTTS(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+onUnload(() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  if (innerAudio.value) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    innerAudio.value.stop(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    innerAudio.value.destroy(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+</script> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+<style lang="scss" scoped></style> 
			 |