From 2603beb74c5a08612130c53b6635f5c7c7e6aa5e Mon Sep 17 00:00:00 2001 From: lijisanxiong <1518062161@qq.com> Date: Thu, 11 Dec 2025 16:54:33 +0800 Subject: [PATCH] =?UTF-8?q?feat=EF=BC=9A=E4=BC=98=E5=8C=96ai=E8=A1=8C?= =?UTF-8?q?=E5=86=85=E8=81=8A=E5=A4=A9=E7=BB=84=E4=BB=B6=EF=BC=8C=E6=94=AF?= =?UTF-8?q?=E6=8C=81=E5=8A=A0=E8=BD=BD=E4=B8=AD=E4=B9=9F=E5=8F=AF=E4=BB=A5?= =?UTF-8?q?=E7=BB=88=E6=AD=A2AI?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 1 + .../inline-ai-textarea.hook.ts | 18 +++++++++--------- .../inline-ai-textarea/inline-ai-textarea.tsx | 2 +- 3 files changed, 11 insertions(+), 10 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 44cbe87a8..78e749a67 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ ### Changed - 优化ai行内聊天组件,文本框随着内容增加跟随滚动 +- 优化ai行内聊天组件,支持加载中也可以终止AI ## [0.7.41-alpha.48] - 2025-12-10 diff --git a/src/util/inline-ai-util/inline-ai-textarea/inline-ai-textarea.hook.ts b/src/util/inline-ai-util/inline-ai-textarea/inline-ai-textarea.hook.ts index a200eadc3..b379dee7e 100644 --- a/src/util/inline-ai-util/inline-ai-textarea/inline-ai-textarea.hook.ts +++ b/src/util/inline-ai-util/inline-ai-textarea/inline-ai-textarea.hook.ts @@ -85,6 +85,7 @@ export const useInLineAIContainerClick = ( }, message: Ref, isLoading: Ref, + abortController: Ref, ): void => { const handMousedown = async (evt: MouseEvent): Promise => { const target = evt.target as HTMLElement; @@ -93,14 +94,9 @@ export const useInLineAIContainerClick = ( !target.closest('.ibiz-inline-ai-textarea-container') && !target.closest('.ibiz-inline-ai-alert') ) { - // loading时不可点击外部 - if (isLoading.value) { - evt.stopPropagation(); - return; - } const isChange = props.content !== message.value.content; let isClose = true; - if (isChange) { + if (isChange || isLoading.value) { isClose = await ibiz.confirm.warning({ title: ibiz.i18n.t('util.inlineAiUtil.warningTitle'), desc: ibiz.i18n.t('util.inlineAiUtil.warningDesc'), @@ -109,7 +105,13 @@ export const useInLineAIContainerClick = ( }, }); } - if (isClose) props.unMountAIChat(); + if (isClose) { + // 加载中需要取消请求 + if (isLoading.value) { + abortController.value?.abort(); + } + props.unMountAIChat(); + } } }; @@ -527,8 +529,6 @@ export const useBase = ( if (!textareaRef.value) return; textareaRef.value.style.height = 'auto'; textareaRef.value.style.height = `${textareaRef.value.scrollHeight}px`; - textareaRef.value.parentElement!.scrollTop = - textareaRef.value.parentElement!.scrollHeight; }); }, { diff --git a/src/util/inline-ai-util/inline-ai-textarea/inline-ai-textarea.tsx b/src/util/inline-ai-util/inline-ai-textarea/inline-ai-textarea.tsx index 83aae93e9..9d72491a6 100644 --- a/src/util/inline-ai-util/inline-ai-textarea/inline-ai-textarea.tsx +++ b/src/util/inline-ai-util/inline-ai-textarea/inline-ai-textarea.tsx @@ -152,7 +152,7 @@ export const InlineAITextArea = defineComponent({ }); // 处理点击事件 - useInLineAIContainerClick(props, message, isLoading); + useInLineAIContainerClick(props, message, isLoading, abortController); /** * @description 终止提问并关闭AI聊天 -- Gitee