From b1181964f07feaeea5f94e1013a8b3ca28fb50b3 Mon Sep 17 00:00:00 2001
From: Seven <1530011482@qq.com>
Date: Mon, 21 Sep 2026 17:24:59 +0800
Subject: [PATCH] =?UTF-8?q?=E8=81=8A=E5=A4=A9=E6=95=B0=E6=8D=AE=E5=88=86?=
=?UTF-8?q?=E9=A1=B5=E5=8A=A0=E8=BD=BD?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/pages/index/ChatPage.vue | 24 ++++++++++++++++++++----
1 file changed, 20 insertions(+), 4 deletions(-)
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;
+ }
+ }
},
};