| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <script lang="ts" setup> |
| | | import { computed } from 'vue' |
| | | |
| | | import { ImFriendAddSource } from '../../../utils/constants' |
| | | import { UserAvatar } from '../user' |
| | | |
| | | defineOptions({ name: 'ImGroupMember' }) |
| | | |
| | | const props = withDefaults( |
| | | defineProps<{ |
| | | active?: boolean // é䏿ï¼@åéé®çé«äº®çï¼ |
| | | clickable?: boolean // 头åç¹å»æ¯å¦å¼¹ UserInfoCardï¼@åéåºæ¯é常ç¦ç¨ï¼é¿å
åµå¥äº¤äºï¼ |
| | | groupName?: string // 群åï¼å 好忶æ¼ãææ¯ 'XX 群' ç YYãè¯æ¯ï¼è½åº add_source=GROUP |
| | | height?: number // è¡é«ï¼pxï¼ï¼å½±å头åå¤§å° |
| | | member: GroupMemberLite |
| | | }>(), |
| | | { |
| | | height: 50, |
| | | active: false, |
| | | clickable: false, |
| | | groupName: '' |
| | | } |
| | | ) |
| | | |
| | | /** 群æåç»æï¼è·¨å¤å¤ä½¿ç¨ï¼æ¾è¿éåçªæ¥å£ï¼ç¬ç«äº types/index.tsï¼ */ |
| | | export interface GroupMemberLite { |
| | | userId: number // ç¨æ·ç¼å·ï¼ç¹æ®å¼è§ IM_AT_ALL_USER_IDï¼@ å
¨ä½æåï¼ |
| | | nickname: string // ç宿µç§°ï¼æ°¸è¿æ¯ç¨æ·ç nicknameï¼ä¸ç» UserAvatar è²å¡ç¨ï¼ä¿è¯åä¸ä¸ªäººè²å¡é¦åæ¯å¨ææçé¢ä¸è´ |
| | | showName: string // å±ç¤ºæµç§°ï¼å¥½å夿³¨ > ç¨æ·ç¾¤å¤æ³¨ï¼displayUserNameï¼ > ç宿µç§°ï¼nicknameï¼ï¼ç»"æ¾ç¤ºç»ç¨æ·ç"çä½ç½®ç¨ï¼è¡å
æåã@åéæ ç¾çï¼ |
| | | avatar?: string |
| | | status?: number |
| | | role?: number // æåè§è²ï¼ä»
å¨ç¾¤ä¿¡æ¯æ½å±çéè¦å±ç¤ºè§è²æ ç¾çåºæ¯éä¼ ï¼@åé / 已读å表çåºæ¯å¯ä¸ä¼ |
| | | } |
| | | |
| | | const avatarSize = computed(() => Math.ceil(props.height * 0.75)) |
| | | </script> |
| | | |
| | | <template> |
| | | <!-- |
| | | 群æååè¡ |
| | | è·¨ååå¤ç¨ï¼@åé (MentionPicker) / 已读å表 (MessageReadStatus) / 群æåå®«æ ¼ (ConversationGroupSide) |
| | | --> |
| | | <div |
| | | class="relative flex items-center px-[5px] box-border whitespace-nowrap" |
| | | :class="{ 'bg-[#e1eaf7] dark:bg-[var(--ant-color-primary-bg)]': active }" |
| | | :style="{ height: `${height }px` }" |
| | | > |
| | | <UserAvatar |
| | | :size="avatarSize" |
| | | :name="member.nickname" |
| | | :url="member.avatar" |
| | | :clickable="clickable" |
| | | :id="member.userId" |
| | | :add-source="ImFriendAddSource.GROUP" |
| | | :add-source-extra="groupName" |
| | | /> |
| | | <div |
| | | class="flex-1 h-full pl-2.5 overflow-hidden text-sm text-left truncate text-[var(--ant-color-text)]" |
| | | :style="{ lineHeight: `${height }px` }" |
| | | > |
| | | {{ member.showName }} |
| | | </div> |
| | | </div> |
| | | </template> |