聊天数据分页加载
This commit is contained in:
@@ -150,6 +150,7 @@
|
|||||||
ref="messageList"
|
ref="messageList"
|
||||||
class="message-list"
|
class="message-list"
|
||||||
:class="activeMenu === 'settings' ? '' : 'active'"
|
:class="activeMenu === 'settings' ? '' : 'active'"
|
||||||
|
@scroll="handleMessageScroll"
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
v-for="message in contactMessages"
|
v-for="message in contactMessages"
|
||||||
@@ -316,7 +317,7 @@ export default {
|
|||||||
// 选择联系人
|
// 选择联系人
|
||||||
selectContact(contact) {
|
selectContact(contact) {
|
||||||
this.currentContact = contact;
|
this.currentContact = contact;
|
||||||
this.getContactMessageList(contact.contactName, 10);
|
this.getContactMessageList(contact.contactName, 10, 0);
|
||||||
|
|
||||||
// 查看联系人后清除未读数量
|
// 查看联系人后清除未读数量
|
||||||
contact.unread = 0;
|
contact.unread = 0;
|
||||||
@@ -334,16 +335,16 @@ export default {
|
|||||||
},
|
},
|
||||||
|
|
||||||
// 获取当前联系人的消息列表
|
// 获取当前联系人的消息列表
|
||||||
getContactMessageList(contactName, limit) {
|
getContactMessageList(contactName, limit, offset) {
|
||||||
// 获取当前联系人的消息列表
|
// 获取当前联系人的消息列表
|
||||||
getContactMessages({
|
getContactMessages({
|
||||||
contactName: contactName,
|
contactName: contactName,
|
||||||
limit: limit,
|
limit: limit,
|
||||||
|
offset: offset
|
||||||
})
|
})
|
||||||
.then((response) => {
|
.then((response) => {
|
||||||
const contactMessages = [];
|
const contactMessages = [];
|
||||||
const messages = response.data.messages || [];
|
const messages = response.data.messages || [];
|
||||||
// 把联系人的消息按联系人 id 分组存储
|
|
||||||
messages.forEach((item) => {
|
messages.forEach((item) => {
|
||||||
contactMessages.push({
|
contactMessages.push({
|
||||||
...item,
|
...item,
|
||||||
@@ -352,7 +353,8 @@ export default {
|
|||||||
time: item.time || item.createdAt,
|
time: item.time || item.createdAt,
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
this.contactMessages = contactMessages.reverse();
|
// 将新获取的消息放到现有消息的最前面,用于按时间顺序倒序展示
|
||||||
|
this.contactMessages = contactMessages.reverse().concat(this.contactMessages);
|
||||||
console.log("contactMessages", contactMessages);
|
console.log("contactMessages", contactMessages);
|
||||||
})
|
})
|
||||||
.catch((error) => {
|
.catch((error) => {
|
||||||
@@ -456,6 +458,20 @@ export default {
|
|||||||
messageList.scrollTop = messageList.scrollHeight;
|
messageList.scrollTop = messageList.scrollHeight;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
// 处理聊天框滚动事件
|
||||||
|
handleMessageScroll() {
|
||||||
|
const el = this.$refs.messageList;
|
||||||
|
// 滚动到顶部
|
||||||
|
if (el.scrollTop === 0) {
|
||||||
|
console.log("滚动到顶部,加载更多消息");
|
||||||
|
|
||||||
|
this.getContactMessageList(this.currentContact.contactName, 10, this.contactMessages.length);
|
||||||
|
|
||||||
|
// 滚动条往下移动 500px,利于继续往上滚动
|
||||||
|
el.scrollTop = 500;
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
Reference in New Issue
Block a user