no message

This commit is contained in:
wangdongbo 2026-02-03 16:01:31 +08:00
parent f69e374b39
commit 3c405f2f55
3 changed files with 79 additions and 12 deletions

View File

@ -23,6 +23,14 @@ export default function useGroupChat(groupID) {
avatar: member.avatar, avatar: member.avatar,
isTeamMember: member.isTeamMember // 标记是否为团队成员 isTeamMember: member.isTeamMember // 标记是否为团队成员
} }
// 如果成员有 miniAppId患者的聊天 userID也添加一个映射用于消息的 from 字段)
if (member.miniAppId) {
res[member.miniAppId] = {
name: member.name,
avatar: member.avatar,
isTeamMember: member.isTeamMember
}
}
}) })
return res return res
}) })
@ -67,20 +75,23 @@ export default function useGroupChat(groupID) {
teamId: groupResult.data.teamId teamId: groupResult.data.teamId
} }
// 2. 如果有teamId获取团队成员头像 // 2. 如果有teamId获取团队成员头像和名称
if (groupResult.data.teamId) { if (groupResult.data.teamId) {
const avatarMap = await teamStore.getTeamMemberAvatars(groupResult.data.teamId) const memberMap = await teamStore.getTeamMemberAvatarsAndName(groupResult.data.teamId)
// 3. 存储团队成员ID列表 // 3. 存储团队成员ID列表
teamMemberIds.value = Object.keys(avatarMap) teamMemberIds.value = Object.keys(memberMap)
// 4. 构建团队成员列表 // 4. 构建团队成员列表(从返回的 { userId: { avatar, name } } 中提取)
members.value = teamMemberIds.value.map(userId => ({ members.value = teamMemberIds.value.map(userId => {
id: userId, const memberInfo = memberMap[userId] || {}
name: userId, // 这里可以从其他地方获取真实姓名 return {
avatar: avatarMap[userId] || '', id: userId,
isTeamMember: true name: memberInfo.name || userId, // 使用返回的 name如果没有则用 userId
})) avatar: memberInfo.avatar || '', // 使用返回的 avatar
isTeamMember: true
}
})
// 5. 添加患者信息(使用默认患者头像) // 5. 添加患者信息(使用默认患者头像)
if (groupResult.data.patient) { if (groupResult.data.patient) {
@ -90,7 +101,8 @@ export default function useGroupChat(groupID) {
id: pid, id: pid,
name: groupResult.data.patient.name || '患者', name: groupResult.data.patient.name || '患者',
avatar: '', // 患者不设置头像,使用默认 avatar: '', // 患者不设置头像,使用默认
isTeamMember: false isTeamMember: false,
miniAppId: groupResult.data.patient.miniAppId || '' // 患者的聊天 userID
}) })
} }
} }

55
store/team.js Normal file
View File

@ -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 }
})

View File

@ -10,7 +10,7 @@ const urlsConfig = {
getTeamHealthTemplate: 'getTeamHealthTemplate', getTeamHealthTemplate: 'getTeamHealthTemplate',
getTeamHealthTemps: "getTeamHealthTemps", getTeamHealthTemps: "getTeamHealthTemps",
getCorpMemberJob: "getCorpMemberJob", getCorpMemberJob: "getCorpMemberJob",
getTeamMemberAvatars: "getTeamMemberAvatars" getTeamMemberAvatarsAndName: "getTeamMemberAvatarsAndName"
}, },
knowledgeBase: { knowledgeBase: {