From f14032d69d5c89eb74cac549fcd67203d5005d73 Mon Sep 17 00:00:00 2001 From: cherishsince Date: Thu, 16 May 2024 00:18:29 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90=E5=A2=9E=E5=8A=A0=E3=80=91AI=20?= =?UTF-8?q?=E9=85=8D=E7=BD=AE=20Chat=E8=A7=92=E8=89=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/ai/chat/message/index.ts | 6 +++--- src/views/ai/chat/index.vue | 21 ++++++++++++++------- src/views/ai/chat/role/index.vue | 5 ++++- 3 files changed, 21 insertions(+), 11 deletions(-) diff --git a/src/api/ai/chat/message/index.ts b/src/api/ai/chat/message/index.ts index b4e80816..d2f91579 100644 --- a/src/api/ai/chat/message/index.ts +++ b/src/api/ai/chat/message/index.ts @@ -5,8 +5,8 @@ import { config } from '@/config/axios/config' // 聊天VO export interface ChatMessageVO { - id: string // 编号 - conversationId: string // 会话编号 + id: number // 编号 + conversationId: number // 会话编号 type: string // 消息类型 userId: string // 用户编号 roleId: string // 角色编号 @@ -25,7 +25,7 @@ export interface ChatMessageSendVO { // AI chat 聊天 export const ChatMessageApi = { // 消息列表 - messageList: async (conversationId: string) => { + messageList: async (conversationId: number) => { return await request.get({ url: `/ai/chat/message/list-by-conversation-id?conversationId=${conversationId}` }) diff --git a/src/views/ai/chat/index.vue b/src/views/ai/chat/index.vue index a2e73ebd..d64c5e25 100644 --- a/src/views/ai/chat/index.vue +++ b/src/views/ai/chat/index.vue @@ -199,7 +199,7 @@ import { marked } from 'marked' // 代码高亮 https://highlightjs.org/ import 'highlight.js/styles/vs2015.min.css' import hljs from 'highlight.js' - +const route = useRoute() // 路由 const message = useMessage() // 消息弹窗 // 自定义渲染器 @@ -220,7 +220,7 @@ const { copy } = useClipboard() const searchName = ref('') // 查询的内容 const inputTimeout = ref() // 处理输入中回车的定时器 -const conversationId = ref(0) // 选中的对话编号 +const conversationId = ref(-1) // 选中的对话编号 const conversationInProgress = ref(false) // 对话进行中 const conversationInAbortController = ref() // 对话进行中 abort 控制器(控制 stream 对话) @@ -297,7 +297,7 @@ const onSend = async () => { if (conversationInProgress.value) { return } - const content = prompt.value?.trim() + const content = prompt.value?.trim() + '' if (content.length < 2) { ElMessage({ message: '请输入内容!', @@ -316,7 +316,7 @@ const onSend = async () => { const userMessage = { conversationId: conversationId.value, content: content - } + } as ChatMessageVO // list.value.push(userMessage) // // 滚动到住下面 // scrollToBottom() @@ -387,6 +387,9 @@ const doSendStream = async (userMessage: ChatMessageVO) => { /** 查询列表 */ const messageList = async () => { try { + if (!conversationId.value) { + return + } // 获取列表数据 const res = await ChatMessageApi.messageList(conversationId.value) @@ -504,7 +507,7 @@ const onPromptInput = (event) => { }, 400) } -const getConversation = async (conversationId: string) => { +const getConversation = async (conversationId: number) => { // 获取对话信息 useConversation.value = await ChatConversationApi.getChatConversationMy(conversationId) console.log('useConversation.value', useConversation.value) @@ -527,12 +530,16 @@ const getChatConversationList = async () => { /** 初始化 **/ onMounted(async () => { + // 设置当前对话 + if (route.query.conversationId) { + conversationId.value = route.query.conversationId as number + } // 获得聊天会话列表 await getChatConversationList() // 获取对话信息 - getConversation(conversationId.value) + await getConversation(conversationId.value) // 获取列表数据 - messageList() + await messageList() // scrollToBottom(); // await nextTick // 监听滚动事件,判断用户滚动状态 diff --git a/src/views/ai/chat/role/index.vue b/src/views/ai/chat/role/index.vue index ee2fd4d5..0d85fbc6 100644 --- a/src/views/ai/chat/role/index.vue +++ b/src/views/ai/chat/role/index.vue @@ -149,7 +149,10 @@ const handlerCardUse = async (role) => { const conversation = await ChatConversationApi.createChatConversationMy(data) // 调整页面 router.push({ - path: `/ai/chat/index?conversationId=${conversation.id}` + path: `/ai/chat/index`, + query: { + conversationId: conversation, + } }) }