聊天框数据根据最新时间逐步往上显示

This commit is contained in:
2026-09-21 16:35:45 +08:00
parent 5445fbdd22
commit 2ac985bbe6
+5 -17
View File
@@ -152,7 +152,7 @@
:class="activeMenu === 'settings' ? '' : 'active'" :class="activeMenu === 'settings' ? '' : 'active'"
> >
<div <div
v-for="message in currentMessages" v-for="message in contactMessages"
:key="message.id" :key="message.id"
class="message-row" class="message-row"
:class="{ :class="{
@@ -238,7 +238,7 @@ export default {
// 最近聊天列表 // 最近聊天列表
recentChats: [], recentChats: [],
// 聊天消息 // 聊天消息
contactMessages: {}, contactMessages: [],
// 搜索联系人 // 搜索联系人
searchText: "", searchText: "",
// 输入的消息内容 // 输入的消息内容
@@ -261,15 +261,6 @@ export default {
contact.contactName.toLowerCase().includes(keyword) contact.contactName.toLowerCase().includes(keyword)
); );
}, },
// 当前联系人对应的消息
currentMessages() {
if (!this.currentContact) {
return [];
}
return this.contactMessages[this.currentContact.contactName] || [];
},
}, },
created() { created() {
@@ -350,21 +341,18 @@ export default {
limit: limit, limit: limit,
}) })
.then((response) => { .then((response) => {
const contactMessages = {}; const contactMessages = [];
const messages = response.data.messages || []; const messages = response.data.messages || [];
// 把联系人的消息按联系人 id 分组存储 // 把联系人的消息按联系人 id 分组存储
messages.forEach((item) => { messages.forEach((item) => {
if (!contactMessages[contactName]) { contactMessages.push({
contactMessages[contactName] = [];
}
contactMessages[contactName].push({
...item, ...item,
from: from:
item.senderName === this.currentUser.username ? "me" : "other", item.senderName === this.currentUser.username ? "me" : "other",
time: item.time || item.createdAt, time: item.time || item.createdAt,
}); });
}); });
this.contactMessages = contactMessages; this.contactMessages = contactMessages.reverse();
console.log("contactMessages", contactMessages); console.log("contactMessages", contactMessages);
}) })
.catch((error) => { .catch((error) => {