From d486f20ccfbd28233462f7eefeb694c84e5235b2 Mon Sep 17 00:00:00 2001 From: flingyp Date: Tue, 29 Jul 2025 17:27:49 +0800 Subject: [PATCH 1/2] =?UTF-8?q?perf(MessageToolbar):=20=E7=82=B9=E5=87=BB?= =?UTF-8?q?=E5=88=87=E6=8D=A2=E7=89=88=E6=9C=AC=E5=A7=8B=E7=BB=88=E5=9C=A8?= =?UTF-8?q?=E6=9C=80=E5=BA=95=E9=83=A8=E5=92=8C=E6=B7=BB=E5=8A=A0=20disabl?= =?UTF-8?q?ed=20=E5=B1=9E=E6=80=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../message/MessageItemAssistant.vue | 32 +++++++++++++------ .../src/components/message/MessageList.vue | 2 ++ .../src/components/message/MessageToolbar.vue | 10 +++--- 3 files changed, 30 insertions(+), 14 deletions(-) diff --git a/src/renderer/src/components/message/MessageItemAssistant.vue b/src/renderer/src/components/message/MessageItemAssistant.vue index e70be06eb..498c254d5 100644 --- a/src/renderer/src/components/message/MessageItemAssistant.vue +++ b/src/renderer/src/components/message/MessageItemAssistant.vue @@ -159,6 +159,7 @@ const emit = defineEmits<{ fromTop: boolean, modelInfo: { model_name: string; model_provider: string } ] + scrollToBottom: [] }>() // 获取当前会话ID @@ -252,9 +253,17 @@ const confirmFork = async () => { } } -const handleAction = ( - action: 'retry' | 'delete' | 'copy' | 'prev' | 'next' | 'copyImage' | 'copyImageFromTop' | 'fork' -) => { +type HandleActionType = + | 'retry' + | 'delete' + | 'copy' + | 'prev' + | 'next' + | 'copyImage' + | 'copyImageFromTop' + | 'fork' + +const handleAction = (action: HandleActionType) => { if (action === 'retry') { chatStore.retryMessage(currentMessage.value.id) } else if (action === 'delete') { @@ -284,14 +293,17 @@ const handleAction = ( .join('\n') .trim() ) - } else if (action === 'prev') { - if (currentVariantIndex.value > 0) { - currentVariantIndex.value-- - } - } else if (action === 'next') { - if (currentVariantIndex.value < totalVariants.value - 1) { - currentVariantIndex.value++ + } else if (action === 'prev' || action === 'next') { + switch (action) { + case 'prev': + currentVariantIndex.value > 0 && currentVariantIndex.value-- + break + case 'next': + currentVariantIndex.value < totalVariants.value - 1 && currentVariantIndex.value++ + break } + + emit('scrollToBottom') } else if (action === 'copyImage') { emit('copyImage', currentMessage.value.id, currentMessage.value.parentId, false, { model_name: currentMessage.value.model_name, diff --git a/src/renderer/src/components/message/MessageList.vue b/src/renderer/src/components/message/MessageList.vue index a75892900..fd1ff737e 100644 --- a/src/renderer/src/components/message/MessageList.vue +++ b/src/renderer/src/components/message/MessageList.vue @@ -18,12 +18,14 @@ :message="msg as AssistantMessage" :is-capturing-image="isCapturingImage" @copy-image="handleCopyImage" + @scroll-to-bottom="scrollToBottom" /> diff --git a/src/renderer/src/components/message/MessageToolbar.vue b/src/renderer/src/components/message/MessageToolbar.vue index aed4fdb22..5fec7b5c8 100644 --- a/src/renderer/src/components/message/MessageToolbar.vue +++ b/src/renderer/src/components/message/MessageToolbar.vue @@ -8,7 +8,7 @@