From dc734198bd2d56413a56cefc159f8e5a2e41f374 Mon Sep 17 00:00:00 2001 From: Seven <1530011482@qq.com> Date: Wed, 30 Sep 2026 15:19:49 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=8A=A0=E8=BD=BD=E6=9B=B4?= =?UTF-8?q?=E5=A4=9A=E6=B6=88=E6=81=AF=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- DESIGN.md | 4 ++-- src/pages/index/ChatPage.vue | 8 ++++++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/DESIGN.md b/DESIGN.md index 2afb05d..9d1681a 100644 --- a/DESIGN.md +++ b/DESIGN.md @@ -190,9 +190,9 @@ HTTP 401 会清理认证状态并导航至登录页。用户主动退出会先 以下内容是根据当前代码观察到的限制,供后续迭代使用,并非已实现功能: 1. **运行配置集中化**:HTTP base URL 与 WebSocket 地址目前分散/硬编码,应按开发、测试、生产环境配置,减少部署时遗漏。(已解决) -2. **认证状态持久性**:token 会持久化,但 username 不持久化;刷新后需由用户信息接口恢复展示状态。还应评估 localStorage 对 token 的安全取舍及 token 过期刷新方案。 +2. **认证状态持久性**:token 会持久化,但 username 不持久化;刷新后需由用户信息接口恢复展示状态。还应评估 localStorage 对 token 的安全取舍及 token 过期刷新方案。(username已删除,token问题待解决) 3. **WebSocket 健壮性**:当前没有断线重连、心跳、待发送队列或连接状态 UI;发送前应明确连接不可用的反馈,并评估 ACK 超时及重复消息处理。 -4. **会话切换与分页状态**:`loadEnd` 等分页标志需要在联系人切换时明确重置;异步消息请求也应避免旧联系人响应覆盖新联系人视图。 +4. **会话切换与分页状态**:`loadEnd` 等分页标志需要在联系人切换时明确重置;异步消息请求也应避免旧联系人响应覆盖新联系人视图。(已解决) 5. **实时会话一致性**:收到当前联系人消息时会更新消息区,但当前实现没有同步刷新最近会话预览;接收新消息的未读判断及空会话创建逻辑也值得通过业务用例确认。 6. **响应契约与错误处理**:页面依赖响应中存在 `data` 字段。建议与服务端定义统一响应 DTO,并区分网络错误、认证错误、业务错误;当前错误主要由页面提示。 7. **UI 菜单与能力范围**:侧栏存在设置入口,但当前点击后主要改变菜单状态,未形成独立设置页;工具栏的表情和附件按钮也尚未绑定完整功能。 diff --git a/src/pages/index/ChatPage.vue b/src/pages/index/ChatPage.vue index 4816f2f..aa80253 100644 --- a/src/pages/index/ChatPage.vue +++ b/src/pages/index/ChatPage.vue @@ -266,6 +266,8 @@ export default { contactMessages: [], // 首次加载 firstLoad: true, + // 每次请求加载的消息条数 + pageSize: 10, // 正在加载更多消息 loadingMore: false, // 是否所有消息都加载完毕 @@ -348,10 +350,12 @@ export default { // 选择联系人 async selectContact(contact) { this.currentContact = contact; + + this.loadEnd = false; //重置加载消息结束标志 this.contactMessages = []; // 每次选择联系人的时候需要首次加载消息 this.firstLoad = true; - await this.getContactMessageList(contact.contactName, 10, 0); + await this.getContactMessageList(contact.contactName, this.pageSize, 0); // 查看联系人后清除未读数量 contact.unreadCount = 0; @@ -620,7 +624,7 @@ export default { try { await this.getContactMessageList( this.currentContact.contactName, - 10, + this.pageSize, this.contactMessages.length );