diff --git a/src/views/deepNine.vue b/src/views/deepNine.vue index 3960ec2..0fecb5d 100644 --- a/src/views/deepNine.vue +++ b/src/views/deepNine.vue @@ -57,14 +57,16 @@ const audioPreloadStatus = { two: { loaded: false, url: null }, three: { loaded: false, url: null }, four: { loaded: false, url: null }, + five: { loaded: false, url: null }, }; // 音频队列顺序管理 const audioQueueOrder = { - "API1-第一个": 1, - "API2-第二个": 2, - "API3-第三个": 3, - "API4-第四个": 4, + "API1-第一个": 1, // 第一个接口的第一个音频 (link1) + "API1-第二个": 2, // 第一个接口的第二个音频 (link) + "API2-第一个": 3, // 第二个接口的第一个音频 (link3) + "API2-第二个": 4, // 第二个接口的第二个音频 (link1) + "API3-第一个": 5, // 第三个接口的音频 (link) }; // 播放下一个音频的函数 @@ -277,6 +279,7 @@ const toggleVoiceForUser = (index) => { audioPreloadStatus.two = { loaded: false, url: null }; audioPreloadStatus.three = { loaded: false, url: null }; audioPreloadStatus.four = { loaded: false, url: null }; + audioPreloadStatus.five = { loaded: false, url: null }; if (chatStore.messages[index].audioArray[0]) { audioPreloadStatus.one.loaded = true; audioPreloadStatus.one.url = chatStore.messages[index].audioArray[0]; @@ -1309,7 +1312,25 @@ watch( ].audioStatus = false; } console.log( - "音频队列:添加API1音频,当前队列长度:", + "音频队列:添加API1-1音频(link1),当前队列长度:", + audioQueue.value.length + ); + } + + // 添加第二个音频(link)到队列 + if (audioPreloadStatus.two.url) { + chatStore.messages[chatStore.inputUserIndex].audioArray.push( + audioPreloadStatus.two.url + ); + if (chatStore.currentUserIndex == chatStore.inputUserIndex) { + addToAudioQueue(audioPreloadStatus.two.url, "API1-第二个"); + } else { + chatStore.messages[ + chatStore.inputUserIndex + ].audioStatus = false; + } + console.log( + "音频队列:添加API1-2音频(link),当前队列长度:", audioQueue.value.length ); } @@ -1488,20 +1509,37 @@ watch( apiStatus.two.executed = true; console.log("执行TwoAPI代码:", apiStatus.two.result); - // 将第二个音频添加到播放队列(确保顺序:API2) - if (audioPreloadStatus.two.url) { + // 将第二个接口的音频添加到播放队列(确保顺序:API2) + if (audioPreloadStatus.three.url) { chatStore.messages[chatStore.inputUserIndex].audioArray.push( - audioPreloadStatus.two.url + audioPreloadStatus.three.url ); if (chatStore.currentUserIndex == chatStore.inputUserIndex) { - addToAudioQueue(audioPreloadStatus.two.url, "API2-第二个"); + addToAudioQueue(audioPreloadStatus.three.url, "API2-第一个"); } else { chatStore.messages[ chatStore.inputUserIndex ].audioStatus = false; } console.log( - "音频队列:添加API2音频,当前队列长度:", + "音频队列:添加API2-1音频(link3),当前队列长度:", + audioQueue.value.length + ); + } + + if (audioPreloadStatus.four.url) { + chatStore.messages[chatStore.inputUserIndex].audioArray.push( + audioPreloadStatus.four.url + ); + if (chatStore.currentUserIndex == chatStore.inputUserIndex) { + addToAudioQueue(audioPreloadStatus.four.url, "API2-第二个"); + } else { + chatStore.messages[ + chatStore.inputUserIndex + ].audioStatus = false; + } + console.log( + "音频队列:添加API2-2音频(link1),当前队列长度:", audioQueue.value.length ); } @@ -1577,15 +1615,15 @@ watch( apiStatus.three.executed = true; console.log("执行ThreeAPI代码:", apiStatus.three.result); - // 将第三个音频添加到播放队列(确保顺序:API3) - if (audioPreloadStatus.three.url) { + // 将第三个接口的音频添加到播放队列(确保顺序:API3) + if (audioPreloadStatus.five.url) { chatStore.messages[chatStore.inputUserIndex].audioArray.push( - audioPreloadStatus.three.url + audioPreloadStatus.five.url ); if (chatStore.currentUserIndex == chatStore.inputUserIndex) { addToAudioQueue( - audioPreloadStatus.three.url, - "API3-第三个" + audioPreloadStatus.five.url, + "API3-第一个" ); } else { chatStore.messages[ @@ -1593,7 +1631,7 @@ watch( ].audioStatus = false; } console.log( - "音频队列:添加API3音频,当前队列长度:", + "音频队列:添加API3音频(link),当前队列长度:", audioQueue.value.length ); } @@ -1716,12 +1754,18 @@ watch( apiStatus.one.completed = true; apiStatus.one.result = result21; - // 预加载第一个接口的音频 - if (result21?.data?.link) { - await preloadAudio(result21.data.link.trim(), "one"); + // 预加载第一个接口的音频 - link1和link + if (result21?.data?.link1) { + await preloadAudio(result21.data.link1.trim(), "one"); } else { audioPreloadStatus.one.loaded = true; } + + if (result21?.data?.link) { + await preloadAudio(result21.data.link.trim(), "two"); + } else { + audioPreloadStatus.two.loaded = true; + } // 检查是否可以执行 checkAndExecuteInOrder(); @@ -1730,6 +1774,7 @@ watch( apiStatus.one.completed = true; apiStatus.one.error = error; audioPreloadStatus.one.loaded = true; // 失败时也标记为已处理 + audioPreloadStatus.two.loaded = true; // 失败时也标记为已处理 // 即使失败也要检查后续执行 checkAndExecuteInOrder(); } @@ -1746,11 +1791,17 @@ watch( apiStatus.two.completed = true; apiStatus.two.result = result22; - // 预加载第二个接口的音频 - if (result22?.data?.link) { - await preloadAudio(result22.data.link.trim(), "two"); + // 预加载第二个接口的音频 - link3和link1 + if (result22?.data?.link3) { + await preloadAudio(result22.data.link3.trim(), "three"); } else { - audioPreloadStatus.two.loaded = true; + audioPreloadStatus.three.loaded = true; + } + + if (result22?.data?.link1) { + await preloadAudio(result22.data.link1.trim(), "four"); + } else { + audioPreloadStatus.four.loaded = true; } // 检查是否可以执行 @@ -1759,7 +1810,8 @@ watch( console.error("TwoAPI失败:", error); apiStatus.two.completed = true; apiStatus.two.error = error; - audioPreloadStatus.two.loaded = true; + audioPreloadStatus.three.loaded = true; + audioPreloadStatus.four.loaded = true; checkAndExecuteInOrder(); } }; @@ -1777,13 +1829,9 @@ watch( apiStatus.three.completed = true; apiStatus.three.result = result23; - // 预加载第三个接口的音频 - if (result23?.data?.link1) { - await preloadAudio(result23.data.link1.trim(), "three"); - if (result23.data.link2 != "") { - await preloadAudio(result23.data.link2.trim(), "four"); - } - await preloadAudio(result23.data.link3.trim(), "five"); + // 预加载第三个接口的音频 - 只有link字段 + if (result23?.data?.link) { + await preloadAudio(result23.data.link.trim(), "five"); } else { audioPreloadStatus.three.loaded = true; } @@ -1865,6 +1913,7 @@ watch( audioPreloadStatus.two = { loaded: false, url: null }; audioPreloadStatus.three = { loaded: false, url: null }; audioPreloadStatus.four = { loaded: false, url: null }; + audioPreloadStatus.five = { loaded: false, url: null }; // 🔧 新增:清理音频实例 if (audioStore.soundInstance) {