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'"> + + +