diff --git a/src/api/socket.js b/src/api/socket.js
index 40957666..f10f1ba3 100644
--- a/src/api/socket.js
+++ b/src/api/socket.js
@@ -35,6 +35,7 @@ export default class WebSocketUtil {
*/
init(flag = false) {
if(flag) this.reconnectCount = 0
+ this.isClose = false; // 手动关闭
// 创建WebSocket连接
this.socketTask = uni.connectSocket({
url: this.url,
diff --git a/src/pages/course/components/touchBtn.vue b/src/pages/course/components/touchBtn.vue
index 33e287d4..3765cae2 100644
--- a/src/pages/course/components/touchBtn.vue
+++ b/src/pages/course/components/touchBtn.vue
@@ -61,12 +61,23 @@ const props = defineProps({
default: false,
type: Boolean
},
+ canAnswer:{
+ default: true,
+ type: Boolean
+ },
+ canAnswerText:{
+ default: '当前状态不能发送内容!',
+ type: String
+ },
})
const { isDisabled, onlyVoice } = toRefs(props)
const isLoadingState = computed(() => props.isLoading)
watch(()=>props.isLoading,()=>{},{
deep:true,immediate:true
})
+watch(()=>props.canAnswer,()=>{},{
+ deep:true,immediate:true
+})
watch(()=>props.onlyVoice,()=>{},{
deep:true,immediate:true
})
@@ -88,12 +99,19 @@ const initRecord = () => {
unref(recordObjCom)?.onStop((res, duration)=>{
audioPath.value = res.tempFilePath
showTalkingModel.value = false
+ if(startFlag.value !== 2){
+ common.msg('说话时间太短,没有听清!')
+ return
+ }
if(!isOut.value){
emit('uploadVoice', audioPath.value)
}
})
unref(recordObjCom).onStart(() => {
- console.log('开始录音了');
+ startFlag.value = 1
+ setTimeout(()=>{
+ startFlag.value = 2
+ },1000)
let _recordPerm = uni.getAppAuthorizeSetting()
let _state = _recordPerm.microphoneAuthorized
if(_state === 'authorized'){
@@ -101,6 +119,7 @@ const initRecord = () => {
}
})
}
+const startFlag = ref(1)
const startRecord = () => {
unref(recordObjCom).start({format:'mp3'})
}
@@ -139,10 +158,7 @@ onMounted(async ()=>{
common.show('提示信息', '当前页面需要使用的录音权限,是否前往开启?',true, '取消','确定').then((res) => {
if(res) {
// 去开启权限
- permission.gotoAppPermissionSetting()
- uni.openAppAuthorizeSetting({
-
- })
+ uni.openAppAuthorizeSetting()
}else{
// 取消
common.navigateBack()
@@ -173,22 +189,10 @@ const outScreen = computed(()=>{
const recNum = ref(1)
const activeNum = ref(1)
-const getRecordPermission = async (obj) => {
-
- //#ifdef APP-PLUS
- // 安卓端
- // let _recordPerm = await permission.requestAndroidPermission('android.permission.RECORD_AUDIO')
- // if(_recordPerm !== 1){
- // permission.gotoAppPermissionSetting()
- // return
- // }
- showOverlayTalking(obj)
- // #endif
- //#ifndef APP-PLUS
- // pc端
- showOverlayTalking(obj)
- // #endif
+const getRecordPermission = (obj) => {
+ showOverlayTalking(obj)
}
+const isMoving = ref(false)
const showOverlayTalking = (obj) => {
if(isLoadingState.value){
uni.showToast({
@@ -198,6 +202,15 @@ const showOverlayTalking = (obj) => {
})
return
}
+ if(!props.canAnswer){
+ uni.showToast({
+ title: props.canAnswerText,
+ icon: "none",
+ duration:1000
+ })
+ return
+ }
+ isMoving.value = true
emit('startRecord')
recNum.value += 1
if(!isDisabled.value){
@@ -220,6 +233,7 @@ const showOverlayTalking = (obj) => {
}
}
const hideOverlayTalking = (obj) => {
+ isMoving.value = false
if(!showTalkingModel.value) return
//#ifdef APP-PLUS
stopRecord()
@@ -227,10 +241,12 @@ const hideOverlayTalking = (obj) => {
}
const handleMove = (obj) => {
- touchX.value = obj.changedTouches[0].pageX
- touchY.value = obj.changedTouches[0].pageY
- if(outScreen.value){
- hideOverlayTalking(obj)
+ if(isMoving.value){
+ touchX.value = obj.changedTouches[0].pageX
+ touchY.value = obj.changedTouches[0].pageY
+ if(outScreen.value){
+ hideOverlayTalking(obj)
+ }
}
}
// 发送文本
diff --git a/src/pages/course/study.vue b/src/pages/course/study.vue
index 30abf488..6c78dcf6 100644
--- a/src/pages/course/study.vue
+++ b/src/pages/course/study.vue
@@ -85,6 +85,8 @@
@startRecord="changePlayItemId('')"
:isLoading="isUploadingVoice"
:onlyVoice="answerOnlyVoice"
+ :canAnswer="testAnswer"
+ :canAnswerText="'每个问题最多连续发送五次答案!'"
:isDisabled="((lastTalkingInfo.type||0) !== 4)"
/>
diff --git a/src/pages/index/components/question.vue b/src/pages/index/components/question.vue
index f6e9a8df..900169d6 100644
--- a/src/pages/index/components/question.vue
+++ b/src/pages/index/components/question.vue
@@ -1,6 +1,6 @@
-
+
{{voiceTime}}
@@ -45,7 +45,7 @@