From 83b9332125907d1b3c0ef31e615f7bdf7976859f Mon Sep 17 00:00:00 2001 From: YunaiV Date: Wed, 15 May 2024 20:32:58 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90=E6=96=B0=E5=A2=9E=E3=80=91AI=EF=BC=9A?= =?UTF-8?q?=E8=81=8A=E5=A4=A9=E5=AF=B9=E8=AF=9D=E7=9A=84=E5=88=A0=E9=99=A4?= =?UTF-8?q?=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/ai/chat/conversation/index.ts | 13 ++++++-- src/views/ai/chat/index.vue | 44 ++++++++++----------------- 2 files changed, 26 insertions(+), 31 deletions(-) diff --git a/src/api/ai/chat/conversation/index.ts b/src/api/ai/chat/conversation/index.ts index 8ff4990f..d394c6d2 100644 --- a/src/api/ai/chat/conversation/index.ts +++ b/src/api/ai/chat/conversation/index.ts @@ -13,6 +13,7 @@ export interface ChatConversationVO { maxTokens: number // 单条回复的最大 Token 数量 maxContexts: number // 上下文的最大 Message 数量 // 额外字段 + modelName?: string // 模型名字 roleAvatar?: string // 角色头像 modelMaxTokens?: string // 模型的单条回复的最大 Token 数量 modelMaxContexts?: string // 模型的上下文的最大 Message 数量 @@ -24,14 +25,20 @@ export const ChatConversationApi = { getChatConversationMy: async (id: number) => { return await request.get({ url: `/ai/chat/conversation/get-my?id=${id}` }) }, + + // 新增【我的】聊天会话 + createChatConversationMy: async (data?: ChatConversationVO) => { + return await request.post({ url: `/ai/chat/conversation/create-my`, data }) + }, + // 更新【我的】聊天会话 updateChatConversationMy: async (data: ChatConversationVO) => { return await request.put({ url: `/ai/chat/conversation/update-my`, data }) }, - // 新增【我的】聊天会话 - createChatConversationMy: async (data?: ChatConversationVO) => { - return await request.post({ url: `/ai/chat/conversation/create-my`, data }) + // 删除【我的】聊天会话 + deleteChatConversationMy: async (id: number) => { + return await request.delete({ url: `/ai/chat/conversation/delete-my?id=${id}` }) }, // 获得【我的】聊天会话列表 diff --git a/src/views/ai/chat/index.vue b/src/views/ai/chat/index.vue index aa4ad0cd..9284f83b 100644 --- a/src/views/ai/chat/index.vue +++ b/src/views/ai/chat/index.vue @@ -22,7 +22,7 @@
- +
置顶
@@ -35,11 +35,12 @@ {{ conversation.title }}
+
- +
@@ -69,7 +70,7 @@
- + @@ -190,7 +191,6 @@ import { ChatMessageApi, ChatMessageSendVO, ChatMessageVO } from '@/api/ai/chat/message' import { ChatConversationApi, ChatConversationVO } from '@/api/ai/chat/conversation' import ChatConversationUpdateForm from './components/ChatConversationUpdateForm.vue' -import { ChatModelApi, ChatModelVO } from '@/api/ai/model/chatModel' import { formatDate } from '@/utils/formatTime' import { useClipboard } from '@vueuse/core' // 转换 markdown @@ -199,7 +199,6 @@ import { marked } from 'marked' import 'highlight.js/styles/vs2015.min.css' import hljs from 'highlight.js' -const { t } = useI18n() // 国际化 const message = useMessage() // 消息弹窗 // 自定义渲染器 @@ -221,8 +220,7 @@ const { copy } = useClipboard() const searchName = ref('') // 查询的内容 const inputTimeout = ref() // 处理输入中回车的定时器 const conversationId = ref(0) // 选中的对话编号 -const conversationInProgress = ref() // 对话进行中 -conversationInProgress.value = false +const conversationInProgress = ref(false) // 对话进行中 const conversationInAbortController = ref() // 对话进行中 abort 控制器(控制 stream 对话) const prompt = ref() // prompt @@ -235,9 +233,7 @@ const isComposing = ref(false) // 判断用户是否在输入 /** chat message 列表 */ // defineOptions({ name: 'chatMessageList' }) const list = ref([]) // 列表的数据 -const useModal = ref() // 使用的modal const useConversation = ref() // 使用的 Conversation -const modalList = ref([]) // 列表的数据 /** 新建对话 */ const createConversation = async () => { @@ -274,13 +270,20 @@ const updateConversationTitle = async (conversation: ChatConversationVO) => { } /** 删除聊天会话 */ -const deleteConversationTitle = async (conversation: ChatConversationVO) => { - console.log(conversation) - // TODO 芋艿:待实现 +const deleteChatConversation = async (conversation: ChatConversationVO) => { + try { + // 删除的二次确认 + await message.delConfirm(`是否确认删除会话 - ${conversation.title}?`) + // 发起删除 + await ChatConversationApi.deleteChatConversationMy(conversation.id) + message.success('会话已删除') + // 刷新列表 + await getChatConversationList() + } catch {} } const searchConversation = () => { - // TODO 芋艿:待实现 + // TODO fan:待实现 } /** send */ @@ -456,11 +459,6 @@ const openChatConversationUpdateForm = async () => { chatConversationUpdateFormRef.value.open(conversationId.value) } -const getModalList = async () => { - // 获取模型 as unknown as ChatModelVO - modalList.value = (await ChatModelApi.getChatModelSimpleList(0)) as unknown as ChatModelVO[] -} - // 输入 const onCompositionstart = () => { console.log('onCompositionstart。。。.') @@ -500,14 +498,6 @@ const getConversation = async (conversationId: string) => { // 获取对话信息 useConversation.value = await ChatConversationApi.getChatConversationMy(conversationId) console.log('useConversation.value', useConversation.value) - // 选中 modal - if (useConversation.value) { - modalList.value.forEach((item) => { - if (useConversation.value?.modelId === item.id) { - useModal.value = item - } - }) - } } /** 获得聊天会话列表 */ @@ -529,8 +519,6 @@ const getChatConversationList = async () => { onMounted(async () => { // 获得聊天会话列表 await getChatConversationList() - // 获取模型 - getModalList() // 获取对话信息 getConversation(conversationId.value) // 获取列表数据