【解决todo】AI 对话增加加载中。

This commit is contained in:
cherishsince
2024-05-21 14:24:21 +08:00
parent 8b0d598d8a
commit 6a03b7637e

View File

@ -24,7 +24,10 @@
<!-- 左中间对话列表 -->
<div class="conversation-list">
<!-- TODO @fain置顶聊天记录一星期钱30天前前端对数据重新做一下分组或者后端接口改一下 -->
<el-empty v-if="loading" description="." :v-loading="loading" />
<!-- TODO done @fain置顶聊天记录一星期钱30天前前端对数据重新做一下分组或者后端接口改一下 -->
<div v-for="conversationKey in Object.keys(conversationMap)" :key="conversationKey">
<div class="conversation-item classify-title" v-if="conversationMap[conversationKey].length">
<el-text class="mx-1" size="small" tag="b">{{ conversationKey }}</el-text>
@ -102,6 +105,8 @@ const activeConversationId = ref<string | null>(null) // 选中的对话,默
const conversationList = ref([] as ChatConversationVO[]) // 对话列表
const conversationMap = ref<any>({}) // 对话分组 (置顶、今天、三天前、一星期前、一个月前)
const drawer = ref<boolean>(false) // 角色仓库抽屉
const loading = ref<boolean>(false) // 加载中
const loadingTime = ref<any>() // 加载中定时器
// 定义组件 props
const props = defineProps({
@ -147,25 +152,38 @@ const handleConversationClick = async (id: string) => {
* 对话 - 获取列表
*/
const getChatConversationList = async () => {
// 1、获取 对话数据
const res = await ChatConversationApi.getChatConversationMyList()
// 2、排序
res.sort((a, b) => {
return b.createTime - a.createTime
})
conversationList.value = res
// 3、默认选中
if (!activeId?.value) {
await handleConversationClick(res[0].id)
try {
// 0、加载中
loadingTime.value = setTimeout(() => {
loading.value = true
}, 50)
// 1、获取 对话数据
const res = await ChatConversationApi.getChatConversationMyList()
// 2、排序
res.sort((a, b) => {
return b.createTime - a.createTime
})
conversationList.value = res
// 3、默认选中
if (!activeId?.value) {
await handleConversationClick(res[0].id)
}
// 4、没有 任何对话情况
if (conversationList.value.length === 0) {
activeConversationId.value = null
conversationMap.value = {}
return
}
// 5、对话根据时间分组(置顶、今天、一天前、三天前、七天前、30天前)
conversationMap.value = await conversationTimeGroup(conversationList.value)
} finally {
// 清理定时器
if (loadingTime.value) {
clearTimeout(loadingTime.value)
}
// 加载完成
loading.value = false
}
// 4、没有 任何对话情况
if (conversationList.value.length === 0) {
activeConversationId.value = null
conversationMap.value = {}
return
}
// 5、对话根据时间分组(置顶、今天、一天前、三天前、七天前、30天前)
conversationMap.value = await conversationTimeGroup(conversationList.value)
}
const conversationTimeGroup = async (list: ChatConversationVO[]) => {