From 889eb0e9ed69059785fd2c7d5b7fb263b60a0c9f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Tue, 2 Jun 2026 10:19:10 +0800 Subject: [PATCH] =?UTF-8?q?fix=20=E4=BF=AE=E5=A4=8D=20ai=E8=81=8A=E5=A4=A9?= =?UTF-8?q?=20=E7=AC=AC=E4=B8=80=E5=8F=A5=E8=AF=9D=E4=B8=8D=E5=B1=95?= =?UTF-8?q?=E7=A4=BA=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/ai/chat/index.tsx | 42 ++++++++++++++++++++++++++----------- 1 file changed, 30 insertions(+), 12 deletions(-) diff --git a/src/pages/ai/chat/index.tsx b/src/pages/ai/chat/index.tsx index f2456acf..8893eb5f 100644 --- a/src/pages/ai/chat/index.tsx +++ b/src/pages/ai/chat/index.tsx @@ -210,14 +210,6 @@ export default function AiChatPage() { } }, [agents, currentAgentId]); - useEffect(() => { - abortRef.current?.abort(); - finishSending(); - if (!currentConversationId) { - setMessages([]); - } - }, [currentConversationId, finishSending]); - useEffect(() => { if (currentConversationId && conversationMessagesQuery.data && !sending) { setMessages(conversationMessagesQuery.data); @@ -242,15 +234,41 @@ export default function AiChatPage() { ); const selectAgent = (agentId: string | number) => { - setCurrentAgentId(Number(agentId)); + const nextAgentId = Number(agentId); + if (currentAgentId === nextAgentId) return; + abortRef.current?.abort(); + finishSending(); + setCurrentAgentId(nextAgentId); setCurrentConversationId(''); + setMessages([]); + }; + + const startNewConversation = () => { + abortRef.current?.abort(); + finishSending(); + setCurrentConversationId(''); + setMessages([]); + }; + + const selectConversation = (conversationId: string | number) => { + const nextConversationId = String(conversationId); + if (currentConversationId === nextConversationId) return; + abortRef.current?.abort(); + finishSending(); + setCurrentConversationId(nextConversationId); + setMessages([]); }; const removeConversation = async (conversationId: string) => { if (!currentAgent) return; await deleteConversation(currentAgent.id, conversationId); message.success('删除成功'); - if (currentConversationId === conversationId) setCurrentConversationId(''); + if (currentConversationId === conversationId) { + abortRef.current?.abort(); + finishSending(); + setCurrentConversationId(''); + setMessages([]); + } await refreshConversationData(currentAgent.id); }; @@ -390,7 +408,7 @@ export default function AiChatPage() { block icon={} disabled={!agents.length} - onClick={() => setCurrentConversationId('')} + onClick={startNewConversation} > 新对话 @@ -416,7 +434,7 @@ export default function AiChatPage() { className="ai-chat-conversations" items={conversationItems} activeKey={currentConversationId} - onActiveChange={key => setCurrentConversationId(String(key))} + onActiveChange={selectConversation} menu={item => ({ items: [{ key: 'delete', label: '删除', icon: , danger: true }], onClick: ({ domEvent }) => {