feat: 进入对话滚动到底部
This commit is contained in:
@@ -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>
|
||||||
|
|||||||
@@ -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}`,
|
||||||
|
|||||||
Reference in New Issue
Block a user