From e71caa6d695b86eabfa8d4f0273108e2d2dbc45c Mon Sep 17 00:00:00 2001
From: wangdongbo <949818794@qq.com>
Date: Thu, 12 Feb 2026 12:04:57 +0800
Subject: [PATCH 1/3] no message
---
App.vue | 2 +-
pages/message/hooks/use-group-chat.js | 28 +++++++++++++++++++++------
pages/message/index.vue | 17 +++++++++-------
pages/message/message.vue | 24 +++++++++++------------
store/account.js | 4 ++--
5 files changed, 47 insertions(+), 28 deletions(-)
diff --git a/App.vue b/App.vue
index b4a9dbf..e02d1be 100644
--- a/App.vue
+++ b/App.vue
@@ -40,7 +40,7 @@ export default {
if (success) {
console.log("IM 初始化成功");
// IM 初始化成功后,设置全局未读消息监听
- globalUnreadListenerManager.setup();
+ // globalUnreadListenerManager.setup();
} else {
console.warn("IM 初始化失败");
}
diff --git a/pages/message/hooks/use-group-chat.js b/pages/message/hooks/use-group-chat.js
index 310cafe..279f39c 100644
--- a/pages/message/hooks/use-group-chat.js
+++ b/pages/message/hooks/use-group-chat.js
@@ -1,6 +1,5 @@
import { ref, computed } from 'vue'
-import { onShow, onUnload } from '@dcloudio/uni-app'
-import { storeToRefs } from 'pinia'
+import { onShow } from '@dcloudio/uni-app'
import api from '@/utils/api.js'
import useTeamStore from '@/store/team.js'
import useAccountStore from '@/store/account.js'
@@ -57,12 +56,15 @@ export default function useGroupChat(groupID) {
return member.isTeamMember ? '/static/default-avatar.png' : '/static/default-patient-avatar.png'
}
+
// 获取群聊信息和成员头像
async function getGroupInfo() {
const gid = typeof groupID === 'string' ? groupID : groupID.value
if (!gid) return
try {
+ console.log('开始获取群组信息,groupId:', gid)
+
// 1. 获取群聊基本信息
const groupResult = await api('getGroupListByGroupId', { groupId: gid })
@@ -74,11 +76,16 @@ export default function useGroupChat(groupID) {
teamId: groupResult.data.teamId
}
+ console.log('群组基本信息:', groupInfo.value)
+
// 2. 如果有teamId,获取团队成员头像和名称
if (groupResult.data.teamId) {
-
+ console.log('开始获取团队成员信息,teamId:', groupResult.data.teamId)
+
const memberMap = await teamStore.getTeamMemberAvatarsAndName(groupResult.data.teamId)
+ console.log('团队成员信息返回:', memberMap)
+
// 3. 存储团队成员ID列表
teamMemberIds.value = Object.keys(memberMap)
@@ -93,6 +100,8 @@ export default function useGroupChat(groupID) {
}
})
+ console.log('团队成员列表已构建:', members.value)
+
// 5. 添加患者信息(使用默认患者头像)
if (groupResult.data.patient) {
const pid = groupResult.data.patientId?.toString() || ''
@@ -104,7 +113,16 @@ export default function useGroupChat(groupID) {
isTeamMember: false,
miniAppId: groupResult.data.patient.miniAppId || '' // 患者的聊天 userID
})
+
+ console.log('患者信息已添加:', {
+ id: pid,
+ name: groupResult.data.patient.name,
+ miniAppId: groupResult.data.patient.miniAppId
+ })
}
+
+ console.log('最终成员列表:', members.value)
+ console.log('chatMember映射:', chatMember.value)
}
}
} catch (error) {
@@ -113,12 +131,10 @@ export default function useGroupChat(groupID) {
}
onShow(() => {
+ debugger
getGroupInfo()
})
- onUnload(() => {
- // 清理资源
- })
return {
groupInfo,
diff --git a/pages/message/index.vue b/pages/message/index.vue
index e97a2c1..88a2618 100644
--- a/pages/message/index.vue
+++ b/pages/message/index.vue
@@ -444,7 +444,7 @@ function getBubbleClass(message) {
}
// 页面加载
-onLoad((options) => {
+onLoad(async (options) => {
groupId.value = options.groupID || "";
messageList.value = [];
isLoading.value = false;
@@ -473,6 +473,9 @@ onLoad((options) => {
}
});
+ // 先获取群组信息和成员信息,确保 chatMember 已初始化
+ await getGroupInfo();
+
checkLoginAndInitTIM();
updateNavigationTitle();
});
@@ -563,7 +566,7 @@ const initTIMCallbacks = async () => {
.then(async () => {
console.log("✓ 收到新消息后已标记为已读");
// 标记为已读后,立即刷新 tabBar 徽章
- await globalUnreadListenerManager.refreshBadge();
+ // await globalUnreadListenerManager.refreshBadge();
})
.catch((error) => {
console.error("✗ 标记已读失败:", error);
@@ -717,7 +720,7 @@ const loadMessageList = async () => {
.then(async () => {
console.log("✓ 会话已标记为已读:", chatInfo.value.conversationID);
// 标记为已读后,立即刷新 tabBar 徽章
- await globalUnreadListenerManager.refreshBadge();
+ // await globalUnreadListenerManager.refreshBadge();
})
.catch((error) => {
console.error("✗ 标记会话已读失败:", error);
@@ -913,10 +916,10 @@ onHide(() => {
timChatManager.currentConversationID = null;
console.log("✓ 页面隐藏,已清空当前会话ID");
- // 页面隐藏时刷新 tabBar 徽章,确保显示正确的未读数
- if (globalUnreadListenerManager.isInitialized) {
- globalUnreadListenerManager.refreshBadge();
- }
+ // // 页面隐藏时刷新 tabBar 徽章,确保显示正确的未读数
+ // if (globalUnreadListenerManager.isInitialized) {
+ // globalUnreadListenerManager.refreshBadge();
+ // }
});
// 处理取消申请
diff --git a/pages/message/message.vue b/pages/message/message.vue
index 005fd2f..6c12c30 100644
--- a/pages/message/message.vue
+++ b/pages/message/message.vue
@@ -380,8 +380,8 @@ const setupConversationListener = () => {
// 将回调添加到全局未读监听器的回调链中
// 这样不会覆盖全局未读监听器,而是与之共存
if (globalUnreadListenerManager.isInitialized) {
- globalUnreadListenerManager.addCallback("onConversationListUpdated", handleConversationListUpdate);
- globalUnreadListenerManager.addCallback("onMessageReceived", handleMessageReceived);
+ // globalUnreadListenerManager.addCallback("onConversationListUpdated", handleConversationListUpdate);
+ // globalUnreadListenerManager.addCallback("onMessageReceived", handleMessageReceived);
console.log("【消息列表页】已添加回调到全局监听器回调链");
} else {
console.warn("【消息列表页】全局未读监听器未初始化,使用直接回调方式");
@@ -454,7 +454,7 @@ const handleClickConversation = async (conversation) => {
console.log("✓ 已标记会话为已读:", conversation.conversationID);
// 立即刷新 tabBar 徽章
- await globalUnreadListenerManager.refreshBadge();
+ // await globalUnreadListenerManager.refreshBadge();
} catch (error) {
console.error("✗ 标记会话已读失败:", error);
}
@@ -514,9 +514,9 @@ const cleanMessageText = (text) => {
// 页面显示
onShow(async () => {
// 页面显示时刷新 tabBar 徽章
- if (globalUnreadListenerManager.isInitialized) {
- await globalUnreadListenerManager.refreshBadge();
- }
+ // if (globalUnreadListenerManager.isInitialized) {
+ // await globalUnreadListenerManager.refreshBadge();
+ // }
});
// 页面隐藏
@@ -544,12 +544,12 @@ onUnmounted(() => {
updateTimer = null;
}
- // 从全局未读监听器的回调链中移除本页面的回调
- if (globalUnreadListenerManager.isInitialized) {
- globalUnreadListenerManager.removeCallback("onConversationListUpdated", handleConversationListUpdate);
- globalUnreadListenerManager.removeCallback("onMessageReceived", handleMessageReceived);
- console.log("【消息列表页】已从回调链移除回调");
- }
+ // // 从全局未读监听器的回调链中移除本页面的回调
+ // if (globalUnreadListenerManager.isInitialized) {
+ // globalUnreadListenerManager.removeCallback("onConversationListUpdated", handleConversationListUpdate);
+ // globalUnreadListenerManager.removeCallback("onMessageReceived", handleMessageReceived);
+ // console.log("【消息列表页】已从回调链移除回调");
+ // }
});
diff --git a/store/account.js b/store/account.js
index 0c62dd8..21ed7f8 100644
--- a/store/account.js
+++ b/store/account.js
@@ -79,7 +79,7 @@ export default defineStore("accountStore", () => {
console.log('IM 初始化成功');
// IM 初始化成功后,设置全局未读消息监听
- globalUnreadListenerManager.setup();
+ // globalUnreadListenerManager.setup();
return true;
} catch (error) {
@@ -99,7 +99,7 @@ export default defineStore("accountStore", () => {
// 清除全局未读监听
if (globalUnreadListenerManager.isInitialized) {
- globalUnreadListenerManager.destroy();
+ // globalUnreadListenerManager.destroy();
}
} catch (error) {
console.error('退出腾讯IM失败:', error);
From 6b9d7201348375320b96f92a0a25f77ff4fa91fc Mon Sep 17 00:00:00 2001
From: wangdongbo <949818794@qq.com>
Date: Thu, 12 Feb 2026 12:05:35 +0800
Subject: [PATCH 2/3] no message
---
pages/message/hooks/use-group-chat.js | 31 ++++++---------------------
1 file changed, 7 insertions(+), 24 deletions(-)
diff --git a/pages/message/hooks/use-group-chat.js b/pages/message/hooks/use-group-chat.js
index 279f39c..9b09377 100644
--- a/pages/message/hooks/use-group-chat.js
+++ b/pages/message/hooks/use-group-chat.js
@@ -1,5 +1,6 @@
import { ref, computed } from 'vue'
-import { onShow } from '@dcloudio/uni-app'
+import { onShow, onUnload } from '@dcloudio/uni-app'
+import { storeToRefs } from 'pinia'
import api from '@/utils/api.js'
import useTeamStore from '@/store/team.js'
import useAccountStore from '@/store/account.js'
@@ -46,7 +47,7 @@ export default function useGroupChat(groupID) {
const getUserAvatar = (userId) => {
const member = chatMember.value[userId]
if (!member) {
- return userId === openid.value ? '/static/default-patient-avatar.png' : '/static/default-avatar.png'
+ return userId === openid.value ? '/static/default-patient-avatar.png' : '/static/default-avatar.svg'
}
// 如果有头像且不为空字符串,返回头像
@@ -54,17 +55,14 @@ export default function useGroupChat(groupID) {
return member.avatar
}
- return member.isTeamMember ? '/static/default-avatar.png' : '/static/default-patient-avatar.png'
+ return member.isTeamMember ? '/static/default-avatar.svg' : '/static/default-patient-avatar.png'
}
-
// 获取群聊信息和成员头像
async function getGroupInfo() {
const gid = typeof groupID === 'string' ? groupID : groupID.value
if (!gid) return
try {
- console.log('开始获取群组信息,groupId:', gid)
-
// 1. 获取群聊基本信息
const groupResult = await api('getGroupListByGroupId', { groupId: gid })
@@ -76,16 +74,10 @@ export default function useGroupChat(groupID) {
teamId: groupResult.data.teamId
}
- console.log('群组基本信息:', groupInfo.value)
-
// 2. 如果有teamId,获取团队成员头像和名称
if (groupResult.data.teamId) {
- console.log('开始获取团队成员信息,teamId:', groupResult.data.teamId)
-
const memberMap = await teamStore.getTeamMemberAvatarsAndName(groupResult.data.teamId)
- console.log('团队成员信息返回:', memberMap)
-
// 3. 存储团队成员ID列表
teamMemberIds.value = Object.keys(memberMap)
@@ -100,8 +92,6 @@ export default function useGroupChat(groupID) {
}
})
- console.log('团队成员列表已构建:', members.value)
-
// 5. 添加患者信息(使用默认患者头像)
if (groupResult.data.patient) {
const pid = groupResult.data.patientId?.toString() || ''
@@ -113,16 +103,7 @@ export default function useGroupChat(groupID) {
isTeamMember: false,
miniAppId: groupResult.data.patient.miniAppId || '' // 患者的聊天 userID
})
-
- console.log('患者信息已添加:', {
- id: pid,
- name: groupResult.data.patient.name,
- miniAppId: groupResult.data.patient.miniAppId
- })
}
-
- console.log('最终成员列表:', members.value)
- console.log('chatMember映射:', chatMember.value)
}
}
} catch (error) {
@@ -131,10 +112,12 @@ export default function useGroupChat(groupID) {
}
onShow(() => {
- debugger
getGroupInfo()
})
+ onUnload(() => {
+ // 清理资源
+ })
return {
groupInfo,
From 253970b86017ee8bf8bfe9a70663ea0e18fe4682 Mon Sep 17 00:00:00 2001
From: wangdongbo <949818794@qq.com>
Date: Thu, 12 Feb 2026 15:06:49 +0800
Subject: [PATCH 3/3] no message
---
pages/article/article-detail.vue | 52 ++++++++++++---------
pages/message/chat.scss | 10 ++--
pages/message/components/consult-apply.vue | 2 +
pages/message/components/consult-cancel.vue | 7 +--
pages/message/hooks/use-group-chat.js | 18 +++----
pages/message/index.vue | 5 +-
store/team.js | 6 +--
7 files changed, 54 insertions(+), 46 deletions(-)
diff --git a/pages/article/article-detail.vue b/pages/article/article-detail.vue
index 5e1e900..4de34d3 100644
--- a/pages/article/article-detail.vue
+++ b/pages/article/article-detail.vue
@@ -1,31 +1,34 @@
-
-
-
- 加载中...
-
-
-
- {{ error }}
-
-
-
-
-
- {{ articleData.title }}
- {{ articleData.date }}
+
+
+
+
+ 加载中...
-
-
-
+
+
+ {{ error }}
+
+
+
+
+
+ {{ articleData.title }}
+ {{ articleData.date }}
-
-
-
+
+
+
+
+
+
+
+
@@ -26,6 +25,8 @@ const handleCancel = () => {
padding: 20rpx 32rpx;
background-color: #f5f5f5;
box-sizing: border-box;
+ position: absolute;
+ bottom: 40rpx;
}
.cancel-card {
diff --git a/pages/message/hooks/use-group-chat.js b/pages/message/hooks/use-group-chat.js
index 9b09377..6e7014c 100644
--- a/pages/message/hooks/use-group-chat.js
+++ b/pages/message/hooks/use-group-chat.js
@@ -58,8 +58,8 @@ export default function useGroupChat(groupID) {
return member.isTeamMember ? '/static/default-avatar.svg' : '/static/default-patient-avatar.png'
}
// 获取群聊信息和成员头像
- async function getGroupInfo() {
- const gid = typeof groupID === 'string' ? groupID : groupID.value
+ async function getGroupInfo(id) {
+ const gid = id || groupID;
if (!gid) return
try {
@@ -73,7 +73,6 @@ export default function useGroupChat(groupID) {
status: groupResult.data.orderStatus || 'active',
teamId: groupResult.data.teamId
}
-
// 2. 如果有teamId,获取团队成员头像和名称
if (groupResult.data.teamId) {
const memberMap = await teamStore.getTeamMemberAvatarsAndName(groupResult.data.teamId)
@@ -111,13 +110,14 @@ export default function useGroupChat(groupID) {
}
}
- onShow(() => {
- getGroupInfo()
- })
+ // onShow(() => {
- onUnload(() => {
- // 清理资源
- })
+ // getGroupInfo()
+ // })
+
+ // onUnload(() => {
+ // // 清理资源
+ // })
return {
groupInfo,
diff --git a/pages/message/index.vue b/pages/message/index.vue
index 88a2618..3dd1fb0 100644
--- a/pages/message/index.vue
+++ b/pages/message/index.vue
@@ -456,7 +456,7 @@ onLoad(async (options) => {
if (options.userID) {
chatInfo.value.userID = options.userID;
}
-
+ await getGroupInfo(groupId.value);
// 监听键盘高度变化
uni.onKeyboardHeightChange((res) => {
console.log("键盘高度变化:", res.height);
@@ -474,8 +474,7 @@ onLoad(async (options) => {
});
// 先获取群组信息和成员信息,确保 chatMember 已初始化
- await getGroupInfo();
-
+
checkLoginAndInitTIM();
updateNavigationTitle();
});
diff --git a/store/team.js b/store/team.js
index 0b1956e..63661ac 100644
--- a/store/team.js
+++ b/store/team.js
@@ -40,10 +40,10 @@ export default defineStore("teamStore", () => {
// 获取团队成员头像和名称映射
async function getTeamMemberAvatarsAndName(teamId) {
- if (!teamId || !account.value?.corpId) return {};
+
+ if (!teamId) return {};
const res = await api('getTeamMemberAvatarsAndName', {
- teamId,
- corpId: account.value.corpId
+ teamId
}, false);
if (res && res.success && res.data) {
return res.data;