diff --git a/src/components/chat/GroupInfoPanel.vue b/src/components/chat/GroupInfoPanel.vue index bba77c0..7421503 100644 --- a/src/components/chat/GroupInfoPanel.vue +++ b/src/components/chat/GroupInfoPanel.vue @@ -224,6 +224,16 @@ @confirm="handleDissolve" @cancel="showDissolveConfirm = false" /> + + + @@ -237,6 +247,8 @@ import * as groupApi from '@/api/modules/room' import * as contactApi from '@/api/modules/contact' import Avatar from '@/components/common/Avatar.vue' import ConfirmModal from '@/components/common/ConfirmModal.vue' +import UserInfoCard from '@/components/common/UserInfoCard.vue' +import SelectContactsModal from '@/components/chat/SelectContactsModal.vue' interface Props { show: boolean @@ -267,6 +279,8 @@ const showRemoveMemberConfirm = ref(false) const showQuitConfirm = ref(false) const showDissolveConfirm = ref(false) const pendingMember = ref(null) +const selectedMember = ref(null) +const showUserInfoCard = ref(false) // 当前用户角色 const currentUserRole = computed(() => { @@ -336,7 +350,42 @@ function canManageMember(member: GroupMember): boolean { // 处理成员点击 function handleMemberClick(member: GroupMember) { - // 可以扩展为显示成员详情 + selectedMember.value = member + showUserInfoCard.value = true +} + +// 处理发送消息 +function handleSendMessageToMember() { + if (!selectedMember.value) return + const contact: Contact = { + id: selectedMember.value.user_id, + user_id: selectedMember.value.user_id, + contact_user_id: selectedMember.value.user_id, + room_id: '', + room_type: 'p2p', + is_group: false, + remark_name: selectedMember.value.user?.name || selectedMember.value.nickname || '未知', + is_top: false, + is_muted: false, + user: selectedMember.value.user, + } + chatStore.setCurrentTarget(contact) + showUserInfoCard.value = false + emit('close') +} + +// 处理语音通话 +function handleAudioCallToMember() { + if (!selectedMember.value) return + // 这里可以调用 WebRTC 相关功能 + showUserInfoCard.value = false +} + +// 处理视频通话 +function handleVideoCallToMember() { + if (!selectedMember.value) return + // 这里可以调用 WebRTC 相关功能 + showUserInfoCard.value = false } // 移除成员 diff --git a/src/components/common/Avatar.vue b/src/components/common/Avatar.vue index 591d3b7..68866b4 100644 --- a/src/components/common/Avatar.vue +++ b/src/components/common/Avatar.vue @@ -1,23 +1,30 @@