diff --git a/src/views/im/home/components/card/CardBubble.vue b/src/views/im/home/components/card/CardBubble.vue new file mode 100644 index 000000000..ead70f839 --- /dev/null +++ b/src/views/im/home/components/card/CardBubble.vue @@ -0,0 +1,67 @@ + + + diff --git a/src/views/im/home/components/card/CardLineLabel.vue b/src/views/im/home/components/card/CardLineLabel.vue new file mode 100644 index 000000000..eb265f791 --- /dev/null +++ b/src/views/im/home/components/card/CardLineLabel.vue @@ -0,0 +1,28 @@ + + + diff --git a/src/views/im/home/components/user/RecommendCardDialog.vue b/src/views/im/home/components/user/RecommendCardDialog.vue index af781161f..233cb3411 100644 --- a/src/views/im/home/components/user/RecommendCardDialog.vue +++ b/src/views/im/home/components/user/RecommendCardDialog.vue @@ -1,6 +1,6 @@ @@ -195,6 +195,7 @@ import RecommendCardDialog from './RecommendCardDialog.vue' import { getSimpleUser, type UserVO } from '@/api/system/user' import { useFriendStore } from '../../store/friendStore' import { ImFriendAddSource } from '../../../utils/constants' +import { toUserCardTarget } from '../../../utils/message' import { getGenderColor, getGenderIcon } from '../../../utils/user' import { DICT_TYPE, getDictLabel } from '@/utils/dict' import { formatDate } from '@/utils/formatTime' @@ -353,6 +354,8 @@ const presetUserForAdd = ref(null) /** 把他推荐给朋友:弹 RecommendCardDialog 选目标会话 */ const recommendVisible = ref(false) // 推荐名片弹窗显隐:「把他推荐给朋友」入口控制 +/** 推荐名片源对象:用户名片(targetType = PRIVATE),从 full 派生 */ +const recommendTarget = computed(() => toUserCardTarget(full.value)) function handleRecommend() { if (!props.user?.id) { return diff --git a/src/views/im/home/pages/conversation/components/conversation/ConversationGroupSide.vue b/src/views/im/home/pages/conversation/components/conversation/ConversationGroupSide.vue index c992485de..e1f8f14fe 100644 --- a/src/views/im/home/pages/conversation/components/conversation/ConversationGroupSide.vue +++ b/src/views/im/home/pages/conversation/components/conversation/ConversationGroupSide.vue @@ -253,6 +253,19 @@ class="im-conversation-group-side__chevron" /> + +
+ 分享群名片 + +
@@ -395,6 +408,9 @@ + + + @@ -427,6 +443,8 @@ import GroupMemberSelector, { type GroupMemberFlag } from '../../../../components/group/GroupMemberSelector.vue' import GroupRequestListDialog from '../../../../components/group/GroupRequestListDialog.vue' +import RecommendCardDialog from '../../../../components/user/RecommendCardDialog.vue' +import { toGroupCardTarget } from '@/views/im/utils/message' import type { Conversation, FriendLite, GroupLite } from '../../../../types' import type { GroupMemberLite } from '../../../../components/group/GroupMember.vue' @@ -471,6 +489,10 @@ const removeVisible = ref(false) const adminVisible = ref(false) const transferOwnerVisible = ref(false) const requestListVisible = ref(false) +/** 分享群名片弹窗显隐:「分享群名片」入口控制 */ +const recommendCardVisible = ref(false) +/** 群名片源对象:targetType = GROUP,含成员数快照 */ +const recommendCardTarget = computed(() => toGroupCardTarget(props.group)) const showAllMembers = ref(false) const namePopoverVisible = ref(false) const noticePopoverVisible = ref(false) diff --git a/src/views/im/home/pages/conversation/components/message/MessageHistory.vue b/src/views/im/home/pages/conversation/components/message/MessageHistory.vue index e3b7f8caf..cafc18519 100644 --- a/src/views/im/home/pages/conversation/components/message/MessageHistory.vue +++ b/src/views/im/home/pages/conversation/components/message/MessageHistory.vue @@ -252,14 +252,12 @@ [视频] - -
+ - - 个人名片:{{ cardOf(message)?.nickname || '' }} -
+ :card="cardOf(message)" + class="text-sm text-[var(--el-text-color-secondary)]" + /> (message.content)?.nickname ?? ''}` + case ImMessageType.CARD: { + const card = parseMessage(message.content) + return `[${getCardLabelInfo(card).label}] ${card?.name ?? ''}` + } case ImMessageType.FACE: return buildFacePreviewText(faceOf(message)) case ImMessageType.RECALL: diff --git a/src/views/im/home/pages/conversation/components/message/ReplyPreview.vue b/src/views/im/home/pages/conversation/components/message/ReplyPreview.vue index 7f76c6e91..463590bf1 100644 --- a/src/views/im/home/pages/conversation/components/message/ReplyPreview.vue +++ b/src/views/im/home/pages/conversation/components/message/ReplyPreview.vue @@ -57,13 +57,8 @@ - - + +