From 7453b79c8def4293ff0b7b25afcfd8332b69741a Mon Sep 17 00:00:00 2001 From: kuaifan Date: Thu, 18 Jun 2026 10:50:18 +0000 Subject: [PATCH] =?UTF-8?q?feat(ai-assistant):=20chat=20=E6=B5=AE=E7=AA=97?= =?UTF-8?q?=E6=8E=A5=E5=85=A5=E5=85=A8=E5=B1=80=E6=A8=A1=E6=80=81=E6=A0=88?= =?UTF-8?q?=E6=94=AF=E6=8C=81=20ESC/=E6=BB=91=E5=8A=A8=E8=BF=94=E5=9B=9E?= =?UTF-8?q?=E5=85=B3=E9=97=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - modal.vue: chat 模式新增空助理 Modal(mask=false 不挡背后操作), 进入 ViewUI 模态栈,由 removeLast() 统一管理 ESC/滑动返回/返回键/Electron 关窗 - index.vue: 移除 onInputKeydown 内重复的 chat ESC 处理,改由全局栈统一处理 - modal.vue: 捕获阶段抢先拦截 ESC,chat 全屏时退全屏而非关闭栈顶 Modal (AI 浮窗 z-index 恒最高但未必是栈顶,故不能依赖 ViewUI 冒泡 ESC) Co-Authored-By: Claude Opus 4.8 (1M context) --- .../js/components/AIAssistant/index.vue | 13 ++++-- .../js/components/AIAssistant/modal.vue | 42 ++++++++++++++++++- 2 files changed, 50 insertions(+), 5 deletions(-) diff --git a/resources/assets/js/components/AIAssistant/index.vue b/resources/assets/js/components/AIAssistant/index.vue index afc4d568f..9f4de1a26 100644 --- a/resources/assets/js/components/AIAssistant/index.vue +++ b/resources/assets/js/components/AIAssistant/index.vue @@ -703,10 +703,6 @@ export default { this.onSubmit(); return; } - if (e.key === 'Escape' && this.displayMode === 'chat') { - this.showModal = false; - return; - } } // 上下键切换历史输入 if (e.key === 'ArrowUp') { @@ -3416,6 +3412,15 @@ export default { } } +.ai-assistant-assist { + width: 0; + height: 0; + opacity: 0; + display: none; + visibility: hidden; + pointer-events: none; +} + .ai-assistant-modal { --apply-reasoning-before-bg: #e1e1e1; .ivu-modal { diff --git a/resources/assets/js/components/AIAssistant/modal.vue b/resources/assets/js/components/AIAssistant/modal.vue index 77d443cbb..f0e167f5a 100644 --- a/resources/assets/js/components/AIAssistant/modal.vue +++ b/resources/assets/js/components/AIAssistant/modal.vue @@ -44,6 +44,15 @@ + + { + this.onClose() + }); + }, + + /** + * 关闭:直接关闭浮窗(不区分显示模式),由外部控制 visible 变为 false + */ onClose() { this.$emit('input', false); - } + }, } };