diff --git a/src/pages/course/components/talkingItem.vue b/src/pages/course/components/talkingItem.vue
index f5f1a5b1..7a84a470 100644
--- a/src/pages/course/components/talkingItem.vue
+++ b/src/pages/course/components/talkingItem.vue
@@ -466,12 +466,10 @@
pauseVoice();
});
let prevTime = -1;
- let activeTime = -1;
talkVoiceObj.value.onEnded(() => {
console.log('onEnded');
emit('changePlay', '');
prevTime = -1;
- activeTime = -1;
talkVoiceObj.value.src = '';
});
talkVoiceObj.value.onStop(() => {
diff --git a/src/pages/courseRecord/components/esQuestion.vue b/src/pages/courseRecord/components/esQuestion.vue
index f62e5503..98f20e73 100644
--- a/src/pages/courseRecord/components/esQuestion.vue
+++ b/src/pages/courseRecord/components/esQuestion.vue
@@ -6,7 +6,8 @@
你的答案:
-
+
@@ -37,17 +38,25 @@
talkingVoice: ''
}),
type: Object
+ },
+ activeVoiceId: {
+ default: '',
+ type: String
}
});
const {
- dataInfo
+ dataInfo,
+ activeVoiceId
} = toRefs(props);
const intrctWay = computed(() => {
- console.log('props.intrctWay', props.intrctWay);
return props.intrctWay;
});
const emit = defineEmits(['changePlay', 'buutton_click']);
+ const changePlay = (val) => {
+ console.log('esq')
+ emit('changePlay', val)
+ }
watch(
() => props.dataInfo,
() => {}, {
@@ -57,7 +66,7 @@
);
const initData = (item) => {
return {
-
+
}
}
// 声音播放初始化
@@ -74,81 +83,11 @@
const showContent = computed(() => {
return props.text || props.dataInfo.anserResult || '';
});
- onMounted(() => {
- initVoice();
- });
- onUnload(() => {
- pauseVoice();
- });
- watch(
- () => props.dataInfo.talkingVoice,
- (val) => {
- if (val) {
- initVoice();
- }
- }, {
- deep: true,
- immediate: true
- }
- );
// 按钮点击
const buutton_click = (type) => {
emit('buutton_click', type, props.dataInfo);
};
- const pauseVoice = () => {
- if (!talkVoiceObj.value) return;
- talkVoiceObj.value.pause();
- isPlaying.value = false;
- emit('changePlay', '');
- };
- const playVoice = () => {
- emit('changePlay', unref(dataInfo)?.id);
- if (talkVoiceObj.value && talkVoiceObj.value.src) {
- talkVoiceObj.value.play();
- return;
- } else {
- talkVoiceObj.value.src = '';
- if (unref(dataInfo).talkingVoice) {
- setTimeout(() => {
- talkVoiceObj.value.src = unref(dataInfo).talkingVoice;
- talkVoiceObj.value.play();
- isPlaying.value = true;
- }, 100);
- }
- }
- };
- const initVoice = () => {
- talkVoiceObj.value = uni.createInnerAudioContext();
- talkVoiceObj.value.onEnded(() => {
- emit('changePlay', '');
- talkVoiceObj.value.src = '';
- });
- talkVoiceObj.value.onError(() => {
- talkVoiceObj.value.src = '';
- });
- if (unref(dataInfo).intrctWay === '02') {
- itemVoice.value = unref(dataInfo).talkingVoice;
- talkVoiceObj.value.src = itemVoice.value;
- setTimeout(() => {
- setVoiceTime(0);
- }, 100);
- }
- };
- const setVoiceTime = (sum) => {
- sum += 1;
- if (Math.ceil(talkVoiceObj.value.duration) > 0) {
- voiceTime.value = (Math.ceil(talkVoiceObj.value.duration) || 1) + 's';
- } else {
- if (sum === 20) {
- voiceTime.value = 0 + 's';
- return;
- }
- setTimeout(() => {
- setVoiceTime(sum);
- }, 200);
- }
- };
\ No newline at end of file
diff --git a/src/pages/courseRecord/components/esQuestionAnswer.vue b/src/pages/courseRecord/components/esQuestionAnswer.vue
index 86770318..e16214e9 100644
--- a/src/pages/courseRecord/components/esQuestionAnswer.vue
+++ b/src/pages/courseRecord/components/esQuestionAnswer.vue
@@ -1,6 +1,6 @@
-
+
{{ voiceTime }}
@@ -14,10 +14,12 @@
-
+
- 文
+
@@ -80,7 +82,6 @@
} = toRefs(props);
const intrctWay = computed(() => {
- console.log('props.intrctWay', props.intrctWay);
return props.intrctWay;
});
const emit = defineEmits(['changePlay', 'buutton_click']);
@@ -91,6 +92,12 @@
immediate: true
}
);
+ watch(() => props.activeVoiceId, (val) => {
+ if (val != dataInfo.value.ossAddr) {
+ pauseVoice();
+ isPlaying.value = false
+ }
+ })
// 声音播放初始化
const talkVoiceObj = ref(null);
@@ -107,21 +114,21 @@
});
onMounted(() => {
initVoice();
+ watch(
+ () => props.dataInfo.ossAddr,
+ (val) => {
+ if (val) {
+ initVoice();
+ }
+ }, {
+ deep: true,
+ immediate: true
+ }
+ );
});
onUnload(() => {
pauseVoice();
});
- watch(
- () => props.dataInfo.ossAddr,
- (val) => {
- if (val) {
- initVoice();
- }
- }, {
- deep: true,
- immediate: true
- }
- );
// 按钮点击
const buutton_click = (type) => {
@@ -134,7 +141,7 @@
emit('changePlay', '');
};
const playVoice = () => {
- emit('changePlay', unref(dataInfo)?.id);
+ emit('changePlay', unref(dataInfo)?.ossAddr);
if (talkVoiceObj.value && talkVoiceObj.value.src) {
talkVoiceObj.value.play();
return;
@@ -142,7 +149,8 @@
talkVoiceObj.value.src = '';
if (unref(dataInfo).ossAddr) {
setTimeout(() => {
- talkVoiceObj.value.src = unref(dataInfo).ossAddr;
+ talkVoiceObj.value.src =
+ 'http://25.18.122.92:9786/traoss/tras3/show//S3F0250181221042025091814253800004818633' //unref(dataInfo).ossAddr;
talkVoiceObj.value.play();
isPlaying.value = true;
}, 100);
@@ -151,13 +159,42 @@
};
const initVoice = () => {
talkVoiceObj.value = uni.createInnerAudioContext();
+ let prevTime = -1;
talkVoiceObj.value.onEnded(() => {
emit('changePlay', '');
+ prevTime = -1;
talkVoiceObj.value.src = '';
});
- talkVoiceObj.value.onError(() => {
+ talkVoiceObj.value.onStop(() => {
+ emit('changePlay', '');
+ prevTime = -1;
talkVoiceObj.value.src = '';
});
+ talkVoiceObj.value.onPause(() => {
+ prevTime = talkVoiceObj.value.currentTime;
+ emit('changePlay', '');
+ });
+ talkVoiceObj.value.onError(() => {
+ prevTime = -1;
+ emit('changePlay', '');
+ });
+ talkVoiceObj.value.onPlay(() => {
+ prevTime = talkVoiceObj.value.currentTime;
+ emit('changePlay', unref(dataInfo)?.ossAddr);
+ });
+ talkVoiceObj.value.onTimeUpdate(() => {
+ if (props.activeVoiceId === unref(dataInfo)?.ossAddr) {
+ setTimeout(() => {
+ if (talkVoiceObj.value.currentTime !== prevTime) {
+ if (talkVoiceObj.value.currentTime > 0) {
+ prevTime = talkVoiceObj.value.currentTime;
+ }
+ } else {
+ emit('changePlay', '');
+ }
+ }, 500);
+ }
+ });
if (unref(dataInfo).intrctWay === '02') {
itemVoice.value = unref(dataInfo).ossAddr;
talkVoiceObj.value.src = itemVoice.value;
@@ -202,8 +239,8 @@
padding-left: 168rpx;
&.is-play {
- background: url(@/static/images/course/voice-white.gif) no-repeat;
- background-size: contain;
+ background: url(@/static/images/course/voice-white.gif) no-repeat !important;
+ background-size: contain !important;
}
}
diff --git a/src/pages/courseRecord/components/talkingItem.vue b/src/pages/courseRecord/components/talkingItem.vue
index 1dadec45..87de89af 100644
--- a/src/pages/courseRecord/components/talkingItem.vue
+++ b/src/pages/courseRecord/components/talkingItem.vue
@@ -15,8 +15,9 @@
-
-
+
+
@@ -30,16 +31,10 @@
{{ showContent }}
-
-
+
+
@@ -48,24 +43,28 @@
-->
-
+
举例:{{ dataInfo.exampie }}
-
-
+
+
+
-
-
-
+
+
+
-
+
参考答案:{{ dataInfo.itemAnswer }}
-
+
@@ -73,21 +72,11 @@
-
-
-
+
+
+
@@ -107,7 +96,7 @@
{{voiceTime}}
-
+
{{ showContent }}
@@ -116,27 +105,15 @@
-->
-
-
+
+
文
完成
- 撤回
-
+ 撤回
+
@@ -152,27 +129,46 @@