From bc46246333bca81f8949928233034c87395c3afb Mon Sep 17 00:00:00 2001 From: ZF sun <34314687@qq.com> Date: Thu, 30 Apr 2026 10:11:40 +0800 Subject: [PATCH] =?UTF-8?q?refactor(frontend):=20=E7=A7=BB=E9=99=A4?= =?UTF-8?q?=E5=AF=B9=E8=AF=9D=E6=8E=A7=E5=88=B6=E9=9D=A2=E6=9D=BF=E5=8F=8A?= =?UTF-8?q?=E7=9B=B8=E5=85=B3=E5=8A=9F=E8=83=BD=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 移除不再需要的对话控制面板HTML结构、CSS样式和JavaScript功能代码 --- frontend/index.html | 58 ------------ frontend/scripts/main.js | 194 +-------------------------------------- frontend/styles/main.css | 59 ------------ 3 files changed, 1 insertion(+), 310 deletions(-) diff --git a/frontend/index.html b/frontend/index.html index 9855c19..1a3552d 100644 --- a/frontend/index.html +++ b/frontend/index.html @@ -22,9 +22,6 @@ - @@ -71,61 +68,6 @@ - -
-
-

🎮 对话控制

- -
-
-
-

对话控制

-
- - -
-
- -
-

语音交互

-
- - -
-
- -
-

文本交互

-
- - -
-
- -
-

其他控制

-
- - -
-
-
-
-
diff --git a/frontend/scripts/main.js b/frontend/scripts/main.js index fec78a2..07657df 100644 --- a/frontend/scripts/main.js +++ b/frontend/scripts/main.js @@ -53,20 +53,11 @@ const elements = { initBtn: document.getElementById('initBtn'), destroyBtn: document.getElementById('destroyBtn'), getOnceCodeBtn: document.getElementById('getOnceCodeBtn'), - startChatBtn: document.getElementById('startChatBtn'), - stopChatBtn: document.getElementById('stopChatBtn'), - startSpeakBtn: document.getElementById('startSpeakBtn'), - stopSpeakBtn: document.getElementById('stopSpeakBtn'), - sendTextBtn: document.getElementById('sendTextBtn'), - interruptBtn: document.getElementById('interruptBtn'), - toggleAudioBtn: document.getElementById('toggleAudioBtn'), clearLogBtn: document.getElementById('clearLogBtn'), fullscreenBtn: document.getElementById('fullscreenBtn'), toggleConfigBtn: document.getElementById('toggleConfigBtn'), - toggleControlBtn: document.getElementById('toggleControlBtn'), toggleLogBtn: document.getElementById('toggleLogBtn'), - textInput: document.getElementById('textInput'), logLevel: document.getElementById('logLevel'), digitalHumanBox: document.getElementById('digitalHumanBox'), @@ -82,7 +73,6 @@ const fullscreenState = { const panelState = { configPanel: false, - controlPanel: false, logPanel: false }; @@ -170,28 +160,10 @@ const eventListeners = { }; function updateUIState() { - const { isInitialized, isChatting, isSpeaking } = state; + const { isInitialized } = state; elements.initBtn.disabled = isInitialized; elements.destroyBtn.disabled = !isInitialized; - - elements.startChatBtn.disabled = !isInitialized || isChatting; - elements.stopChatBtn.disabled = !isInitialized || !isChatting; - - elements.startSpeakBtn.disabled = !isInitialized || !isChatting || isSpeaking; - elements.stopSpeakBtn.disabled = !isInitialized || !isChatting || !isSpeaking; - - elements.textInput.disabled = !isInitialized || !isChatting; - elements.sendTextBtn.disabled = !isInitialized || !isChatting; - - elements.interruptBtn.disabled = !isInitialized || !isChatting; - elements.toggleAudioBtn.disabled = !isInitialized; - - if (isChatting) { - elements.digitalHumanBox.classList.add('active'); - } else { - elements.digitalHumanBox.classList.remove('active'); - } } function updateConnectionStatus(connected) { @@ -228,7 +200,6 @@ function togglePanel(panelId) { const btnMap = { configPanel: 'toggleConfigBtn', - controlPanel: 'toggleControlBtn', logPanel: 'toggleLogBtn' }; @@ -344,152 +315,6 @@ async function destroySDK() { } } -async function startChat() { - try { - logger.info('正在开始对话...'); - - const result = await HwICSUiSdk.startChat({ - interactionMode: InteractionMode.AUDIO, - wakeupType: undefined, - preCheckPermissions: true - }); - - if (result.result) { - state.isChatting = true; - logger.info('对话已开始', { chatId: result.chatId, sessionId: result.sessionId }); - updateUIState(); - } else { - logger.error('开始对话失败', result); - } - - } catch (error) { - logger.error('开始对话出错', error); - } -} - -async function stopChat() { - try { - logger.info('正在停止对话...'); - - const result = await HwICSUiSdk.stopChat(); - - if (result.result) { - state.isChatting = false; - state.isSpeaking = false; - logger.info('对话已停止'); - updateUIState(); - } else { - logger.error('停止对话失败', result); - } - - } catch (error) { - logger.error('停止对话出错', error); - } -} - -async function startUserSpeak() { - try { - logger.info('开始语音识别...'); - - const result = await HwICSUiSdk.startUserSpeak({ - preCheckPermissions: true - }); - - if (result.result) { - logger.info('语音识别已启动'); - } else { - logger.error('启动语音识别失败', result); - } - - } catch (error) { - logger.error('启动语音识别出错', error); - } -} - -async function stopUserSpeak() { - try { - logger.info('停止语音识别...'); - - const result = await HwICSUiSdk.stopUserSpeak(); - - if (result.result) { - logger.info('语音识别已停止'); - } else { - logger.error('停止语音识别失败', result); - } - - } catch (error) { - logger.error('停止语音识别出错', error); - } -} - -async function sendTextMessage() { - const text = elements.textInput.value.trim(); - - if (!text) { - logger.warn('请输入文本内容'); - return; - } - - try { - logger.info('发送文本消息...', { text }); - - const result = await HwICSUiSdk.sendTextQuestion({ - text, - questionParam: undefined - }); - - if (result.result) { - logger.info('消息发送成功', { chatId: result.chatId }); - elements.textInput.value = ''; - } else { - logger.error('发送消息失败', result); - } - - } catch (error) { - logger.error('发送消息出错', error); - } -} - -async function interruptSpeaking() { - try { - logger.info('打断说话...'); - - const result = await HwICSUiSdk.interruptSpeaking(); - - if (result.result) { - logger.info('已打断说话'); - } else { - logger.error('打断说话失败', result); - } - - } catch (error) { - logger.error('打断说话出错', error); - } -} - -async function toggleAudio() { - try { - if (state.isMuted) { - const result = await HwICSUiSdk.unmuteRemoteAudio(); - if (result) { - state.isMuted = false; - elements.toggleAudioBtn.innerHTML = '🔊 静音'; - logger.info('已取消静音'); - } - } else { - const result = await HwICSUiSdk.muteRemoteAudio(); - if (result) { - state.isMuted = true; - elements.toggleAudioBtn.innerHTML = '🔇 取消静音'; - logger.info('已静音'); - } - } - } catch (error) { - logger.error('切换音频状态出错', error); - } -} - async function handleGetOnceCode() { try { elements.getOnceCodeBtn.disabled = true; @@ -579,22 +404,6 @@ function bindEvents() { elements.destroyBtn.addEventListener('click', destroySDK); elements.getOnceCodeBtn.addEventListener('click', handleGetOnceCode); - elements.startChatBtn.addEventListener('click', startChat); - elements.stopChatBtn.addEventListener('click', stopChat); - - elements.startSpeakBtn.addEventListener('click', startUserSpeak); - elements.stopSpeakBtn.addEventListener('click', stopUserSpeak); - - elements.sendTextBtn.addEventListener('click', sendTextMessage); - elements.textInput.addEventListener('keypress', (e) => { - if (e.key === 'Enter') { - sendTextMessage(); - } - }); - - elements.interruptBtn.addEventListener('click', interruptSpeaking); - elements.toggleAudioBtn.addEventListener('click', toggleAudio); - elements.clearLogBtn.addEventListener('click', clearLogs); elements.logLevel.addEventListener('change', () => { if (state.isInitialized) { @@ -604,7 +413,6 @@ function bindEvents() { }); elements.toggleConfigBtn.addEventListener('click', () => togglePanel('configPanel')); - elements.toggleControlBtn.addEventListener('click', () => togglePanel('controlPanel')); elements.toggleLogBtn.addEventListener('click', () => togglePanel('logPanel')); elements.fullscreenBtn.addEventListener('click', toggleFullscreen); diff --git a/frontend/styles/main.css b/frontend/styles/main.css index e665c38..9ea1b1d 100644 --- a/frontend/styles/main.css +++ b/frontend/styles/main.css @@ -333,65 +333,6 @@ body { } /* ===== 对话控制面板 ===== */ -.control-panel { - bottom: calc(var(--spacing-xl) + 60px); - right: var(--spacing-xl); - width: 360px; -} - -.control-group { - margin-bottom: var(--spacing-lg); -} - -.control-group:last-child { - margin-bottom: 0; -} - -.control-group h3 { - font-size: 0.875rem; - font-weight: 600; - color: var(--text-secondary); - margin-bottom: var(--spacing-sm); - text-transform: uppercase; - letter-spacing: 0.05em; -} - -.button-row { - display: flex; - gap: var(--spacing-sm); - flex-wrap: wrap; -} - -.button-row .btn { - flex: 1; - min-width: 100px; -} - -.text-input-row { - display: flex; - gap: var(--spacing-sm); -} - -.text-input-row input { - flex: 1; - padding: var(--spacing-sm) var(--spacing-md); - background: var(--bg-tertiary); - border: 1px solid var(--border-color); - border-radius: var(--radius-md); - color: var(--text-primary); - font-size: 0.875rem; -} - -.text-input-row input:focus { - outline: none; - border-color: var(--primary-color); -} - -.text-input-row input:disabled { - opacity: 0.5; - cursor: not-allowed; -} - /* ===== 日志面板 ===== */ .log-panel { bottom: calc(var(--spacing-xl) + 60px);