diff --git a/src/views/ai/chat/Conversation.vue b/src/views/ai/chat/Conversation.vue
index 4b2d60ef..3c0af731 100644
--- a/src/views/ai/chat/Conversation.vue
+++ b/src/views/ai/chat/Conversation.vue
@@ -387,6 +387,8 @@ onMounted(async () => {
// 首次默认选中第一个
if (conversationList.value.length) {
activeConversationId.value = conversationList.value[0].id
+ // 回调 onConversationClick
+ await emits('onConversationClick', conversationList.value[0])
}
}
})
diff --git a/src/views/ai/chat/index.vue b/src/views/ai/chat/index.vue
index 3298737c..353733e6 100644
--- a/src/views/ai/chat/index.vue
+++ b/src/views/ai/chat/index.vue
@@ -36,11 +36,10 @@
-
-
+
@@ -103,12 +102,14 @@ import MessageLoading from './MessageLoading.vue'
import MessageNewChat from './MessageNewChat.vue'
import {ChatMessageApi, ChatMessageVO} from '@/api/ai/chat/message'
import {ChatConversationApi, ChatConversationVO} from '@/api/ai/chat/conversation'
-import { getUserProfile, ProfileVO } from '@/api/system/user/profile'
+import {getUserProfile, ProfileVO} from '@/api/system/user/profile'
+import {useClipboard} from '@vueuse/core'
import ChatConversationUpdateForm from "@/views/ai/chat/components/ChatConversationUpdateForm.vue";
import {Download, Top} from "@element-plus/icons-vue";
const route = useRoute() // 路由
const message = useMessage() // 消息弹窗
+const {copy} = useClipboard() // 初始化 copy 到粘贴板
// ref 属性定义
const activeConversationId = ref(null) // 选中的对话编号
@@ -338,8 +339,14 @@ const doSendStream = async (userMessage: ChatMessageVO) => {
userMessage.content,
conversationInAbortController.value,
enableContext.value,
- async (message) => {
- const data = JSON.parse(message.data) // TODO 芋艿:类型处理;
+ async (res) => {
+ console.log('res', res)
+ const { code, data, msg } = JSON.parse(res.data)
+ if (code !== 0) {
+ message.alert(`对话异常! ${msg}`)
+ return
+ }
+
// 如果内容为空,就不处理。
if (data.receive.content === '') {
return
@@ -360,14 +367,13 @@ const doSendStream = async (userMessage: ChatMessageVO) => {
await scrollToBottom()
},
(error) => {
- console.log('onError')
+ message.alert(`对话异常! ${error}`)
// 标记对话结束
conversationInProgress.value = false
// 结束 stream 对话
conversationInAbortController.value.abort()
},
() => {
- console.log('onClose')
// 标记对话结束
conversationInProgress.value = false
// 结束 stream 对话
@@ -390,23 +396,6 @@ const stopStream = async () => {
// ============== message 数据 =================
-/** 消息列表 */
-const messageList = computed(() => {
- if (list.value.length > 0) {
- return list.value
- }
- // 没有消息时,如果有 systemMessage 则展示它
- // TODO add by 芋艿:这个消息下面,不能有复制、删除按钮
- if (activeConversation.value?.systemMessage) {
- return [{
- id: 0,
- type: 'system',
- content: activeConversation.value.systemMessage
- }]
- }
- return []
-})
-
/**
* 获取 - message 列表
*/
@@ -486,6 +475,8 @@ const handleConversationClick = async (conversation: ChatConversationVO) => {
await getMessageList()
// 滚动底部
scrollToBottom(true)
+ // 清空输入框
+ prompt.value = ''
return true
}
@@ -536,6 +527,10 @@ const handlerNewChat = async () => {
* 删除 message
*/
const handlerMessageDelete = async () => {
+ if (conversationInProgress.value) {
+ message.alert('回答中,不能删除!')
+ return
+ }
// 刷新 message
await getMessageList()
}