From 8762eacb3edd7c63f78c695beb65933329454963 Mon Sep 17 00:00:00 2001 From: Roe-xin Date: Wed, 31 Dec 2025 18:13:21 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=A2=9E=E5=BC=BA=E8=BE=93=E5=85=A5?= =?UTF-8?q?=E6=A1=86=E7=8A=B6=E6=80=81=E7=AE=A1=E7=90=86=EF=BC=8C=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E7=A6=81=E7=94=A8=E7=8A=B6=E6=80=81=E5=92=8C=E6=81=A2?= =?UTF-8?q?=E5=A4=8D=E8=BE=93=E5=85=A5=E7=8A=B6=E6=80=81=E7=9A=84=E9=80=BB?= =?UTF-8?q?=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/utils/messageHandler.ts | 12 ++++++++++++ src/views/inputArea.ts | 16 ++++++++++++++++ 2 files changed, 28 insertions(+) diff --git a/src/utils/messageHandler.ts b/src/utils/messageHandler.ts index 0495f0e..ff72b6a 100644 --- a/src/utils/messageHandler.ts +++ b/src/utils/messageHandler.ts @@ -96,6 +96,12 @@ export async function handleUserMessage( text: "后端服务不可用", type: "error", }); + // 恢复输入状态 + panel.webview.postMessage({ + command: "updateSegments", + segments: [], + isComplete: true, + }); throw error; } } @@ -255,6 +261,12 @@ async function handleUserMessageWithBackend( command: "receiveMessage", text: `❌ 错误: ${message}`, }); + // 恢复输入状态 + panel.webview.postMessage({ + command: "updateSegments", + segments: [], + isComplete: true, + }); reject(new Error(message)); }, diff --git a/src/views/inputArea.ts b/src/views/inputArea.ts index a1c044e..49f13d2 100644 --- a/src/views/inputArea.ts +++ b/src/views/inputArea.ts @@ -197,6 +197,11 @@ export function getInputAreaStyles(): string { overflow-y: auto; line-height: 1.5; } + textarea:disabled { + opacity: 0.5; + cursor: not-allowed; + background: rgba(128, 128, 128, 0.1); + } /* 简洁的滚动条样式 */ textarea::-webkit-scrollbar { width: 8px; @@ -300,11 +305,17 @@ export function getInputAreaScript(): string { sendIconContainer.style.display = 'none'; stopIconContainer.style.display = 'block'; isConversationActive = true; + // 禁用输入框 + messageInput.disabled = true; + messageInput.placeholder = '正在处理中,请稍候...'; } else { sendButton.classList.remove('sending'); sendIconContainer.style.display = 'block'; stopIconContainer.style.display = 'none'; isConversationActive = false; + // 启用输入框 + messageInput.disabled = false; + messageInput.placeholder = '输入您的问题,按 Enter 发送,Shift + Enter 换行...'; } } @@ -324,6 +335,11 @@ export function getInputAreaScript(): string { const text = messageInput.value.trim(); if (!text) return; + // 如果正在对话中,阻止发送新消息 + if (isConversationActive) { + return; + } + // 检查工作区状态 if (!hasWorkspace) { // 如果没有工作区,阻止发送并清空输入框