【增加】chat 增加 modal 切换

This commit is contained in:
cherishsince 2024-05-14 15:32:04 +08:00
parent 27569a746e
commit cea5b8b138
2 changed files with 54 additions and 4 deletions

View File

@ -0,0 +1,37 @@
import request from '@/config/axios'
// 聊天VO
export interface ChatConversationVO {
id: string // 会话编号
userId: string // 用户编号
title: string // 会话标题
pinned: string // 是否置顶
roleId: string // 角色编号
model: number // 模型标志
modelId: number // 模型编号
temperature: string // 温度参数
maxTokens: string // 单条回复的最大 Token 数量
maxContexts: string // 上下文的最大 Message 数量
}
export interface ChatConversationUpdateVO {
id: string // 会话编号
title: string // 会话标题
pinned: string // 是否置顶
modelId: number // 模型编号
temperature: string // 温度参数
maxTokens: string // 单条回复的最大 Token 数量
maxContexts: string // 上下文的最大 Message 数量
}
// AI chat 聊天
export const ChatConversationApi = {
// 获取 Conversation
get: async (id: number) => {
return await request.get({ url: `/ai/chat/conversation/get?id=${id}`})
},
// 更新 Conversation
update: async (data: ChatConversationUpdateVO) => {
return await request.put({ url: `/ai/chat/conversation/update`, data})
},
}

View File

@ -72,11 +72,11 @@
<!-- </el-button>--> <!-- </el-button>-->
<el-dropdown style="margin-right: 12px;" @command="modalClick" > <el-dropdown style="margin-right: 12px;" @command="modalClick" >
<el-button type="primary"> <el-button type="primary">
GPT3.5 <Icon icon="ep:setting" style="margin-left: 10px;"/> <span v-html="useModal?.name"></span> <Icon icon="ep:setting" style="margin-left: 10px;"/>
</el-button> </el-button>
<template #dropdown> <template #dropdown>
<el-dropdown-menu v-for="(item, index) in modalList" :key="index" > <el-dropdown-menu v-for="(item, index) in modalList" :key="index" >
<el-dropdown-item :command="item.model" >{{item.model}}</el-dropdown-item> <el-dropdown-item :command="item" >{{item.name}}</el-dropdown-item>
</el-dropdown-menu> </el-dropdown-menu>
</template> </template>
</el-dropdown> </el-dropdown>
@ -176,6 +176,7 @@
<script setup lang="ts"> <script setup lang="ts">
import {ChatMessageApi, ChatMessageSendVO, ChatMessageVO} from "@/api/ai/chat/message" import {ChatMessageApi, ChatMessageSendVO, ChatMessageVO} from "@/api/ai/chat/message"
import {ChatConversationApi, ChatConversationUpdateVO} from "@/api/ai/chat/conversation"
import {ChatModelApi, ChatModelVO} from "@/api/ai/model/chatModel" import {ChatModelApi, ChatModelVO} from "@/api/ai/model/chatModel"
import {formatDate} from "@/utils/formatTime" import {formatDate} from "@/utils/formatTime"
import {useClipboard} from "@vueuse/core"; import {useClipboard} from "@vueuse/core";
@ -230,6 +231,7 @@ const isScrolling = ref(false)//用于判断用户是否在滚动
/** chat message 列表 */ /** chat message 列表 */
// defineOptions({ name: 'chatMessageList' }) // defineOptions({ name: 'chatMessageList' })
const list = ref<ChatMessageVO[]>([]) // const list = ref<ChatMessageVO[]>([]) //
const useModal = ref<ChatModelVO>() // 使modal
const modalList = ref<ChatModelVO[]>([]) // const modalList = ref<ChatModelVO[]>([]) //
@ -406,12 +408,23 @@ const stopStream = async () => {
} }
const modalClick = async (command) => { const modalClick = async (command) => {
console.log('22', command) const update = {
id: conversationId.value,
modelId: command.id,
} as unknown as ChatConversationUpdateVO
// modal
useModal.value = command
//
await ChatConversationApi.update(update)
} }
const getModalList = async () => { const getModalList = async () => {
// as unknown as ChatModelVO // as unknown as ChatModelVO
modalList.value = await ChatModelApi.getChatModelSimpleList(0) as unknown as ChatModelVO[] modalList.value = await ChatModelApi.getChatModelSimpleList(0) as unknown as ChatModelVO[]
//
if (modalList.value.length) {
useModal.value = modalList.value[0]
}
} }
/** 初始化 **/ /** 初始化 **/