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,
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 => ({
// 4. 构建团队成员列表(从返回的 { userId: { avatar, name } } 中提取)
members.value = teamMemberIds.value.map(userId => {
const memberInfo = memberMap[userId] || {}
return {
id: userId,
name: userId, // 这里可以从其他地方获取真实姓名
avatar: avatarMap[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
})
}
}

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',
getTeamHealthTemps: "getTeamHealthTemps",
getCorpMemberJob: "getCorpMemberJob",
getTeamMemberAvatars: "getTeamMemberAvatars"
getTeamMemberAvatarsAndName: "getTeamMemberAvatarsAndName"
},
knowledgeBase: {