From 3c405f2f55a44462685316a5e71fe9b8b8b9fe43 Mon Sep 17 00:00:00 2001 From: wangdongbo <949818794@qq.com> Date: Tue, 3 Feb 2026 16:01:31 +0800 Subject: [PATCH] no message --- pages/message/hooks/use-group-chat.js | 34 +++++++++++------ store/team.js | 55 +++++++++++++++++++++++++++ utils/api.js | 2 +- 3 files changed, 79 insertions(+), 12 deletions(-) create mode 100644 store/team.js diff --git a/pages/message/hooks/use-group-chat.js b/pages/message/hooks/use-group-chat.js index 17232c8..9860650 100644 --- a/pages/message/hooks/use-group-chat.js +++ b/pages/message/hooks/use-group-chat.js @@ -23,6 +23,14 @@ export default function useGroupChat(groupID) { avatar: member.avatar, isTeamMember: member.isTeamMember // 标记是否为团队成员 } + // 如果成员有 miniAppId(患者的聊天 userID),也添加一个映射(用于消息的 from 字段) + if (member.miniAppId) { + res[member.miniAppId] = { + name: member.name, + avatar: member.avatar, + isTeamMember: member.isTeamMember + } + } }) return res }) @@ -67,20 +75,23 @@ export default function useGroupChat(groupID) { teamId: groupResult.data.teamId } - // 2. 如果有teamId,获取团队成员头像 + // 2. 如果有teamId,获取团队成员头像和名称 if (groupResult.data.teamId) { - const avatarMap = await teamStore.getTeamMemberAvatars(groupResult.data.teamId) + const memberMap = await teamStore.getTeamMemberAvatarsAndName(groupResult.data.teamId) // 3. 存储团队成员ID列表 - teamMemberIds.value = Object.keys(avatarMap) + teamMemberIds.value = Object.keys(memberMap) - // 4. 构建团队成员列表 - members.value = teamMemberIds.value.map(userId => ({ - id: userId, - name: userId, // 这里可以从其他地方获取真实姓名 - avatar: avatarMap[userId] || '', - isTeamMember: true - })) + // 4. 构建团队成员列表(从返回的 { userId: { avatar, name } } 中提取) + members.value = teamMemberIds.value.map(userId => { + const memberInfo = memberMap[userId] || {} + return { + id: userId, + name: memberInfo.name || userId, // 使用返回的 name,如果没有则用 userId + avatar: memberInfo.avatar || '', // 使用返回的 avatar + isTeamMember: true + } + }) // 5. 添加患者信息(使用默认患者头像) if (groupResult.data.patient) { @@ -90,7 +101,8 @@ export default function useGroupChat(groupID) { id: pid, name: groupResult.data.patient.name || '患者', avatar: '', // 患者不设置头像,使用默认 - isTeamMember: false + isTeamMember: false, + miniAppId: groupResult.data.patient.miniAppId || '' // 患者的聊天 userID }) } } diff --git a/store/team.js b/store/team.js new file mode 100644 index 0000000..ef7126d --- /dev/null +++ b/store/team.js @@ -0,0 +1,55 @@ +import { computed, ref } from "vue"; +import { defineStore, storeToRefs } from "pinia"; +import api from '@/utils/api'; +import { toast } from '@/utils/widget'; +import useAccountStore from "./account"; + + +export default defineStore("teamStore", () => { + const { account, doctorInfo } = storeToRefs(useAccountStore()); + const teams = ref([]); + + const chargeTeams = computed(() => { + const userid = doctorInfo.value?.userid; + return teams.value.filter(team => { + const memberLeaderList = Array.isArray(team.memberLeaderList) ? team.memberLeaderList : []; + return memberLeaderList.includes(userid); + }); + }) + + async function getTeam(teamId) { + if (!teamId || !account.value?.corpId) return; + const res = await api('getTeamData', { teamId, corpId: account.value.corpId }); + if (res && res.data) { + return res.data; + } else { + toast(res?.message || '获取团队信息失败') + } + } + + + + + async function getTeams() { + const corpId = account.value?.corpId; + const mateId = doctorInfo.value?.userid; + if (!corpId || !mateId) return; + const res = await api('getJoinedTeams', { corpId, mateId }); + teams.value = res && Array.isArray(res.data) ? res.data : []; + } + + // 获取团队成员头像和名称映射 + async function getTeamMemberAvatarsAndName(teamId) { + if (!teamId || !account.value?.corpId) return {}; + const res = await api('getTeamMemberAvatarsAndName', { + teamId, + corpId: account.value.corpId + }); + if (res && res.success && res.data) { + return res.data; + } + return {}; + } + + return { teams, chargeTeams, getTeam, getTeams, getTeamMemberAvatarsAndName } +}) diff --git a/utils/api.js b/utils/api.js index c20f556..e380dc8 100644 --- a/utils/api.js +++ b/utils/api.js @@ -10,7 +10,7 @@ const urlsConfig = { getTeamHealthTemplate: 'getTeamHealthTemplate', getTeamHealthTemps: "getTeamHealthTemps", getCorpMemberJob: "getCorpMemberJob", - getTeamMemberAvatars: "getTeamMemberAvatars" + getTeamMemberAvatarsAndName: "getTeamMemberAvatarsAndName" }, knowledgeBase: {