{
mqttService.onMessage(topicKey, (message: any) => {
- console.log(message)
-
if (message.message_type === MessageStatusEnum.ACTICON) {
- messageStore.setMessageStatus(MessageStatusEnum.ACTICON)
- messageStore.setMessageLastItem({
- messageType: MessageTypeEnum.AI,
- content: message.message_content,
- time: String(new Date().getTime()),
- avatar: '',
- messageStatus: MessageStatusEnum.ACTICON,
- })
+ // 这里主要是数据库的数据更新,因为数据库回答是每次都是一个字,并不是通常的不断叠加,需要前端手动叠加
+ if (
+ messageStore.getLastMessageList.messageStatus === MessageStatusEnum.ACTICON
+ && messageStore.getConversationData
+ && Number(messageStore.getConversationData.modelType) === ModelTypeEnum.QANYTHING) {
+ messageStore.setMessageStatus(MessageStatusEnum.ACTICON)
+ messageStore.setMessageLastPushItem(message.message_content)
+ }
+ else {
+ // 这里是通用的数据更新
+ messageStore.setMessageStatus(MessageStatusEnum.ACTICON)
+ messageStore.setMessageLastItem({
+ messageType: MessageTypeEnum.AI,
+ content: message.message_content,
+ time: String(new Date().getTime()),
+ avatar: '',
+ messageStatus: MessageStatusEnum.ACTICON,
+ })
+ }
}
if (message.message_type === MessageStatusEnum.END) {
messageStore.setMessageStatus(MessageStatusEnum.END)
diff --git a/src/store/moules/messageStore/index.ts b/src/store/moules/messageStore/index.ts
index 166030d..e575fdb 100644
--- a/src/store/moules/messageStore/index.ts
+++ b/src/store/moules/messageStore/index.ts
@@ -25,6 +25,9 @@ export const useMessageStore = defineStore('useMessageStore', {
getMessageList(): MessageItem[] {
return this.messageList
},
+ getLastMessageList(): MessageItem {
+ return this.messageList[this.messageList.length - 1]
+ },
},
actions: {
setMessageStatus(status: MessageStatusEnum): void {
@@ -47,6 +50,10 @@ export const useMessageStore = defineStore('useMessageStore', {
this.messageList[this.messageList.length - 1] = item
},
+ setMessageLastPushItem(content: string) {
+ this.messageList[this.messageList.length - 1].content = this.messageList[this.messageList.length - 1].content + content
+ },
+
setMessageClear() {
this.messageList = []
},
diff --git a/src/utils/axios/index.ts b/src/utils/axios/index.ts
index b52c41c..3943569 100644
--- a/src/utils/axios/index.ts
+++ b/src/utils/axios/index.ts
@@ -28,6 +28,7 @@ const notDecryptWhiteList = [
'/open-gpts/gpts/getDallEImages',
'/open-chat/chat/stopGenerate',
'/hulk-system/hulk-resource/oss/endpoint/put-file',
+ '/open-gpts/gpts/getQanythingStreamChat',
]
/**
diff --git a/src/views/conversation/index.vue b/src/views/conversation/index.vue
index c075533..3f307a2 100644
--- a/src/views/conversation/index.vue
+++ b/src/views/conversation/index.vue
@@ -63,6 +63,7 @@ const historyMessageParams = ref({
const conversationDefaultShow = ref(false)
const appMessageShow = ref(true)
const spinning = ref(true)
+const elIndex = ref(0) // 新分页数据的数量
watch(
() => messageStatus.value,
@@ -223,13 +224,9 @@ async function getHistoryMessage() {
messageStore.setMessageUnshiftItem(itemData)
})
- conversationDefaultShow.value = false
+ elIndex.value = res.records.length
- // 因为会话切换时滚动底部有问题,所以重新加载下
- // appMessageShow.value = false
- // setTimeout(() => {
- // appMessageShow.value = true
- // }, 0)
+ conversationDefaultShow.value = false
}
/**
@@ -246,10 +243,12 @@ async function onScrollTop(scrollTop: number) {
if (historyMessageParams.value.current < historyMessageParams.value.total) {
historyMessageParams.value.current++
+
await getHistoryMessage()
// 无缝滚动
- appMessageRef.value.seamlessScrollToTop()
+ await appMessageRef.value.getElementOffsetTop()
+ await appMessageRef.value.seamlessScrollToTop()
}
}
@@ -439,27 +438,30 @@ onBeforeRouteLeave(() => {
>
-
-
-
+
-
-
-
diff --git a/src/views/repository/index.vue b/src/views/repository/index.vue
index 2eae58a..4f90fb0 100644
--- a/src/views/repository/index.vue
+++ b/src/views/repository/index.vue
@@ -1,8 +1,10 @@