feat: 进入对话滚动到底部

This commit is contained in:
zhangyahui
2025-10-30 15:00:44 +08:00
parent e5618433e8
commit c01470ec75
2 changed files with 20 additions and 7 deletions

View File

@@ -11,8 +11,7 @@
<script setup lang="ts"> <script setup lang="ts">
import NoticeItem from './NoticeItem.vue' import NoticeItem from './NoticeItem.vue'
import GenerateLoading from './GenerateLoading.vue' import { ref, onMounted, watch, nextTick } from 'vue'
import { ref, onMounted, onUnmounted, watch, nextTick } from 'vue'
// 定义消息类型 // 定义消息类型
interface ChatMessage { interface ChatMessage {
@@ -63,10 +62,20 @@ watch(
} }
) )
// 页面挂载时滚动到底部
onMounted(async () => {
await nextTick()
scrollToBottom()
})
const handleSendMessage = (message: string): void => { const handleSendMessage = (message: string): void => {
console.log('list发送消息:', message) console.log('list发送消息:', message)
emits('send-message', message) emits('send-message', message)
} }
defineExpose({
scrollToBottom
})
</script> </script>
<style lang="less" scoped> <style lang="less" scoped>

View File

@@ -29,7 +29,7 @@ import HeaderTitle from '@/components/HeaderTitle.vue'
import NoticeList from './components/NoticeList.vue' import NoticeList from './components/NoticeList.vue'
import InputArea from './components/InputArea.vue' import InputArea from './components/InputArea.vue'
import GenerateLoading from './components/GenerateLoading.vue' import GenerateLoading from './components/GenerateLoading.vue'
import { ref, onMounted, onUnmounted } from 'vue' import { ref, onUnmounted, onActivated } from 'vue'
import { useRouter } from 'vue-router' import { useRouter } from 'vue-router'
import { useUserInfoStore, useGenerateStore } from '@/stores' import { useUserInfoStore, useGenerateStore } from '@/stores'
import { streamChatAddress } from '@/api/workshop' import { streamChatAddress } from '@/api/workshop'
@@ -47,6 +47,7 @@ defineOptions({
// 定义NoticeList组件引用类型 // 定义NoticeList组件引用类型
interface NoticeListRef { interface NoticeListRef {
simulateSendMessage: () => void simulateSendMessage: () => void
scrollToBottom: () => void
} }
// 定义消息类型 // 定义消息类型
interface ChatMessage { interface ChatMessage {
@@ -66,7 +67,9 @@ const messageList = ref<ChatMessage[]>([])
const isStreaming = ref<boolean>(false) const isStreaming = ref<boolean>(false)
const currentStreamingMessage = ref<ChatMessage | null>(null) const currentStreamingMessage = ref<ChatMessage | null>(null)
onMounted(() => {}) onActivated(() => {
noticeListRef.value?.scrollToBottom()
})
onUnmounted(() => { onUnmounted(() => {
abort.abort() abort.abort()
@@ -133,6 +136,7 @@ const handleFetchMessage = (message: string) => {
credentials: 'include' credentials: 'include'
}) })
.then(async (response) => { .then(async (response) => {
console.log('response',response)
if (!response.ok) { if (!response.ok) {
showToast({ showToast({
message: `failed to fetch: ${response.status}`, message: `failed to fetch: ${response.status}`,