From 1058af4f84cbd253cba27b8756693d63c43288a5 Mon Sep 17 00:00:00 2001
From: wangdongbo <949818794@qq.com>
Date: Mon, 9 Feb 2026 09:18:33 +0800
Subject: [PATCH 1/2] no message
---
pages/message/chat.scss | 6 ++---
pages/message/message.vue | 51 ++++++++++++---------------------------
store/account.js | 8 +++---
utils/tim-chat.js | 23 +++++++++---------
4 files changed, 34 insertions(+), 54 deletions(-)
diff --git a/pages/message/chat.scss b/pages/message/chat.scss
index d70ffb2..c14e295 100644
--- a/pages/message/chat.scss
+++ b/pages/message/chat.scss
@@ -1,6 +1,6 @@
// SCSS 变量定义
-$font-size-text: 28rpx;
-$font-size-tip: 24rpx;
+$font-size-text: 30rpx;
+$font-size-tip: 28rpx;
$font-size-title: 32rpx;
$text-color-sub: #999;
$primary-color: #0877F1;
@@ -356,7 +356,7 @@ $primary-color: #0877F1;
}
.message-text {
- font-size: $font-size-text;
+ font-size: 30rpx;
line-height: 1.4;
word-wrap: break-word;
word-break: break-all;
diff --git a/pages/message/message.vue b/pages/message/message.vue
index 3eeeb2a..4467ce8 100644
--- a/pages/message/message.vue
+++ b/pages/message/message.vue
@@ -110,22 +110,12 @@ const initIM = async () => {
);
if (!isIMInitialized.value) {
- uni.showLoading({
- title: "连接中...",
- });
-
console.log("开始调用 initIMAfterLogin");
const success = await initIMAfterLogin();
console.log("initIMAfterLogin 返回:", success);
- uni.hideLoading();
-
if (!success) {
- console.error("initIMAfterLogin 失败");
- uni.showToast({
- title: "IM连接失败,请重试",
- icon: "none",
- });
+ console.log("initIMAfterLogin 失败,跳过 IM 初始化");
return false;
}
@@ -141,14 +131,10 @@ const initIM = async () => {
);
} else if (globalTimChatManager && !globalTimChatManager.isLoggedIn) {
console.log("IM 已初始化但未登录,尝试重连");
- uni.showLoading({
- title: "重连中...",
- });
const reconnected = await globalTimChatManager.ensureIMConnection();
- uni.hideLoading();
if (!reconnected) {
- console.error("重连失败");
+ console.log("重连失败");
return false;
}
}
@@ -167,19 +153,22 @@ const loadConversationList = async () => {
// 验证 IM 管理器和 TIM 实例是否存在
if (!globalTimChatManager) {
- throw new Error("IM管理器未初始化");
+ console.log("IM管理器未初始化,跳过加载");
+ return;
}
if (!globalTimChatManager.tim) {
- console.error("TIM实例不存在,尝试重新初始化");
+ console.log("TIM实例不存在,尝试重新初始化");
const imReady = await initIM();
if (!imReady || !globalTimChatManager.tim) {
- throw new Error("TIM实例初始化失败");
+ console.log("TIM实例初始化失败,跳过加载");
+ return;
}
}
if (!globalTimChatManager.getGroupList) {
- throw new Error("getGroupList 方法不存在");
+ console.log("getGroupList 方法不存在,跳过加载");
+ return;
}
// 直接调用getGroupList,它会自动等待SDK就绪
@@ -198,18 +187,10 @@ const loadConversationList = async () => {
// 加载所有群聊的头像
await loadGroupAvatars(conversationList.value);
} else {
- console.error("加载群聊列表失败:", result);
- uni.showToast({
- title: "加载失败,请重试",
- icon: "none",
- });
+ console.log("加载群聊列表失败或返回数据为空");
}
} catch (error) {
- console.error("加载会话列表失败:", error);
- uni.showToast({
- title: error.message || "加载失败,请重试",
- icon: "none",
- });
+ console.log("加载会话列表异常:", error.message);
} finally {
loading.value = false;
}
@@ -466,17 +447,15 @@ onShow(async () => {
// 初始化IM
const imReady = await initIM();
- if (!imReady) initIMAfterLogin();
+ if (!imReady) {
+ console.log("IM初始化失败,继续加载列表");
+ }
// 先加载初始会话列表
await loadConversationList();
// 再设置监听器,后续通过事件更新列表
setupConversationListener();
} catch (error) {
- console.error("页面初始化失败:", error);
- uni.showToast({
- title: error.message || "初始化失败,请重试",
- icon: "none",
- });
+ console.log("页面初始化异常:", error.message);
}
});
diff --git a/store/account.js b/store/account.js
index 9441b40..7f46c00 100644
--- a/store/account.js
+++ b/store/account.js
@@ -58,7 +58,7 @@ export default defineStore("accountStore", () => {
// 使用 openid 作为 userID 初始化 IM
const userID = openid.value || uni.getStorageSync('openid');
if (!userID) {
- console.error('无法获取 openid,IM 初始化失败');
+ console.log('未获取到有效的 userId,跳过 IM 初始化');
return false;
}
@@ -66,13 +66,13 @@ export default defineStore("accountStore", () => {
const success = await initGlobalTIM(userID);
if (!success) {
- console.error('initGlobalTIM 返回失败');
+ console.log('initGlobalTIM 返回失败,跳过 IM 初始化');
return false;
}
// 验证 TIM 实例是否真正创建成功
if (!globalTimChatManager || !globalTimChatManager.tim) {
- console.error('IM 初始化后 TIM 实例不存在');
+ console.log('IM 初始化后 TIM 实例不存在,跳过 IM 初始化');
return false;
}
@@ -80,7 +80,7 @@ export default defineStore("accountStore", () => {
console.log('IM 初始化成功');
return true;
} catch (error) {
- console.error('IM初始化失败:', error);
+ console.log('IM初始化异常,跳过 IM 初始化:', error.message);
return false;
}
}
diff --git a/utils/tim-chat.js b/utils/tim-chat.js
index 04be22c..74ae03f 100644
--- a/utils/tim-chat.js
+++ b/utils/tim-chat.js
@@ -193,7 +193,12 @@ class TimChatManager {
// 获取用户信息并登录
console.log('开始获取用户信息并登录...')
- await this.getUserInfoAndLogin(userID)
+ const loginSuccess = await this.getUserInfoAndLogin(userID)
+ if (!loginSuccess) {
+ console.log('获取用户信息失败,跳过 IM 初始化')
+ await this.cleanupOldInstance()
+ return false
+ }
console.log('用户信息获取并登录成功')
// 等待SDK Ready
@@ -206,11 +211,7 @@ class TimChatManager {
return true
} catch (error) {
- console.error('=== IM初始化失败 ===', error)
- console.error('错误详情:', error.message || error)
- console.error('错误堆栈:', error.stack)
- this.triggerCallback('onError', `初始化失败: ${error.message || error}`)
-
+ console.log('=== IM初始化异常 ===', error.message)
// 初始化失败时清理资源
console.log('初始化失败,开始清理资源...')
await this.cleanupOldInstance()
@@ -390,7 +391,8 @@ class TimChatManager {
console.log('本地存储的 userInfo:', userInfo)
if (!userInfo?.userID) {
- throw new Error('未找到用户信息,请先登录')
+ console.log('未找到用户信息,跳过 IM 初始化')
+ return false
}
this.currentUserID = userInfo.userID
console.log('从本地存储获取到 userID:', this.currentUserID)
@@ -403,11 +405,10 @@ class TimChatManager {
console.log('开始登录 TIM...')
await this.loginTIM()
console.log('TIM 登录成功')
+ return true
} catch (error) {
- console.error('获取用户信息失败:', error)
- console.error('错误详情:', error.message || error)
- this.triggerCallback('onError', `登录失败: ${error.message || error}`)
- throw error // 重新抛出错误,让调用者知道登录失败
+ console.log('获取用户信息异常:', error.message)
+ return false
}
}
From 62b03f8343e557333f6fdedb7cd37d06eb0549de Mon Sep 17 00:00:00 2001
From: wangdongbo <949818794@qq.com>
Date: Mon, 9 Feb 2026 14:07:55 +0800
Subject: [PATCH 2/2] no message
---
pages/message/chat.scss | 4 +-
pages/message/index.vue | 8 ++
pages/message/message.vue | 114 ++++++++++++++++++++++++---
utils/global-unread-listener.js | 135 ++++++++++++++++++++++++++++++++
utils/tim-chat.js | 5 +-
5 files changed, 251 insertions(+), 15 deletions(-)
create mode 100644 utils/global-unread-listener.js
diff --git a/pages/message/chat.scss b/pages/message/chat.scss
index c14e295..fbe22c3 100644
--- a/pages/message/chat.scss
+++ b/pages/message/chat.scss
@@ -15,7 +15,8 @@ $primary-color: #0877F1;
/* 患者信息栏样式 */
.patient-info-bar {
- position: relative;
+ position: sticky;
+ top: 0;
background: #fff;
border-bottom: 1rpx solid #f0f0f0;
padding: 20rpx 32rpx;
@@ -112,6 +113,7 @@ $primary-color: #0877F1;
flex: 1;
box-sizing: border-box;
overflow-x: hidden;
+ overflow-y: auto;
min-height: 0;
}
diff --git a/pages/message/index.vue b/pages/message/index.vue
index bb88ba5..7c4ce07 100644
--- a/pages/message/index.vue
+++ b/pages/message/index.vue
@@ -524,6 +524,7 @@ const initTIMCallbacks = async () => {
})
.then(() => {
console.log("✓ 收到新消息后已标记为已读");
+ // 标记为已读后,刷新 tabBar 徽章
})
.catch((error) => {
console.error("✗ 标记已读失败:", error);
@@ -677,6 +678,7 @@ const loadMessageList = async () => {
})
.then(() => {
console.log("✓ 会话已标记为已读:", chatInfo.value.conversationID);
+ // 标记为已读后,刷新 tabBar 徽章
})
.catch((error) => {
console.error("✗ 标记会话已读失败:", error);
@@ -825,6 +827,12 @@ onShow(() => {
checkLoginAndInitTIM();
} else if (timChatManager.tim && !timChatManager.isLoggedIn) {
timChatManager.ensureIMConnection();
+ } else if (timChatManager.tim && timChatManager.isLoggedIn && chatInfo.value.conversationID) {
+
+ messageList.value = [];
+ isCompleted.value = false;
+ lastFirstMessageId.value = "";
+ loadMessageList();
}
startIMMonitoring(30000);
diff --git a/pages/message/message.vue b/pages/message/message.vue
index 4467ce8..24d6587 100644
--- a/pages/message/message.vue
+++ b/pages/message/message.vue
@@ -1,5 +1,10 @@
+
+
+
{{
- conversation.lastMessage || "暂无消息"
+ cleanMessageText(conversation.lastMessage) || "暂无消息"
}}
@@ -75,7 +80,7 @@