diff --git a/config/index.js b/config/index.js
index f8f45d8..6735560 100644
--- a/config/index.js
+++ b/config/index.js
@@ -19,7 +19,7 @@ const config = {
// 网络全局配置
netConfig: {
development: {
- baseURL: 'http://127.0.0.1:8003/englishread-admin/appletApi',
+ baseURL: 'http://127.0.0.1:8002/englishread-admin/appletApi',
// baseURL: 'http://h5.xzaiyp.top/englishread-admin/appletApi',
},
testing: {
diff --git a/manifest.json b/manifest.json
index 9eed575..eaed83b 100644
--- a/manifest.json
+++ b/manifest.json
@@ -51,7 +51,7 @@
/* H5特有相关 */
"h5" : {
"devServer" : {
- "port" : 8002,
+ "port" : 8003,
"disableHostCheck" : true
}
},
diff --git a/subPages/home/AudioControls.vue b/subPages/home/AudioControls.vue
index c22d1be..e5df1a0 100644
--- a/subPages/home/AudioControls.vue
+++ b/subPages/home/AudioControls.vue
@@ -31,8 +31,8 @@
-
- 循环
+
+ {{ loopModeLabel }}
@@ -126,7 +126,7 @@ export default {
totalTime: 0,
sliderValue: 0, // 滑動條的值
isDragging: false, // 是否正在拖動滑動條
- isLoop: false,
+ loopMode: 'sequential',
playSpeed: 1.0,
speedOptions: [0.5, 0.8, 1.0, 1.25, 1.5, 2.0], // 根據uni-app文檔的官方支持值
playbackRateSupported: true, // 播放速度控制是否支持
@@ -208,6 +208,18 @@ export default {
}
}
return false;
+ },
+
+ // 播放模式文案
+ loopModeLabel() {
+ switch (this.loopMode) {
+ case 'sentence':
+ return '单句';
+ case 'page':
+ return '单页';
+ default:
+ return '顺序';
+ }
}
},
watch: {
@@ -1673,6 +1685,13 @@ export default {
return;
}
+ // 单句循环模式:重播当前句(如果是导语则跳到第一个非导语)
+ if (this.loopMode === 'sentence') {
+ this.playAudio();
+ this.isProcessingEnded = false;
+ return;
+ }
+
if (this.currentAudioIndex < this.currentPageAudios.length - 1) {
// 还有下一个音频,继续播放
let currentAudioData = this.currentPageAudios[this.currentAudioIndex];
@@ -1747,7 +1766,7 @@ export default {
handlePlaybackComplete() {
console.log('🎵 handlePlaybackComplete: 所有音频播放完毕');
- if (this.isLoop) {
+ if (this.loopMode === 'page') {
// 循环播放 - 跳过导语音频
console.log('🎵 handlePlaybackComplete: 循环播放,查找第一个非导语音频');
const firstNonLeadIndex = this.findFirstNonLeadAudio();
@@ -1865,7 +1884,15 @@ export default {
// },
toggleLoop() {
- this.isLoop = !this.isLoop;
+ const modes = ['sequential', 'sentence', 'page'];
+ const idx = modes.indexOf(this.loopMode);
+ this.loopMode = modes[(idx + 1) % modes.length];
+ this.$emit('loop-mode-change', this.loopMode);
+ uni.showToast({
+ title: `播放模式:${this.loopModeLabel}`,
+ icon: 'none',
+ duration: 800
+ });
},
toggleSpeed() {
@@ -2323,7 +2350,7 @@ export default {
this.preloadedPages = new Set();
// 5. 重置播放控制状态
- this.isLoop = false;
+ this.loopMode = 'sequential';
this.playSpeed = 1.0;
this.playbackRateSupported = true;
diff --git a/subPages/home/articleDetail.vue b/subPages/home/articleDetail.vue
index a8875a7..1fdea3d 100644
--- a/subPages/home/articleDetail.vue
+++ b/subPages/home/articleDetail.vue
@@ -19,7 +19,7 @@
-
+
@@ -35,11 +35,17 @@
:color="isPlaying ? '#ff6b6b' : '#4CAF50'">
+
+
+