diff --git a/src/pages/index/ChatPage.vue b/src/pages/index/ChatPage.vue index a8046f0..3504865 100644 --- a/src/pages/index/ChatPage.vue +++ b/src/pages/index/ChatPage.vue @@ -150,6 +150,7 @@ ref="messageList" class="message-list" :class="activeMenu === 'settings' ? '' : 'active'" + @scroll="handleMessageScroll" >
{ const contactMessages = []; const messages = response.data.messages || []; - // 把联系人的消息按联系人 id 分组存储 messages.forEach((item) => { contactMessages.push({ ...item, @@ -352,7 +353,8 @@ export default { time: item.time || item.createdAt, }); }); - this.contactMessages = contactMessages.reverse(); + // 将新获取的消息放到现有消息的最前面,用于按时间顺序倒序展示 + this.contactMessages = contactMessages.reverse().concat(this.contactMessages); console.log("contactMessages", contactMessages); }) .catch((error) => { @@ -456,6 +458,20 @@ export default { 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; + } + } }, };