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 @@ @@ -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;