<template>
|
<Card class="message-card-wrapper">
|
<div class="message-card-inner">
|
<nut-badge :value="badge" :max="99" top="6" right="10" :hidden="!badge">
|
<Avatar :size="40" class="message-card-avatar" :src="avatarUrl" />
|
</nut-badge>
|
<div class="message-card-content">
|
<div class="message-card-content-top">
|
<div class="message-card-title">{{ contact }}</div>
|
<div class="message-card-time">
|
{{ dayjs(latestMessageCreationTime).format('YYYY-MM-DD') }}
|
</div>
|
</div>
|
<div class="message-card-content-bottom">{{ latestMessageContent }}</div>
|
</div>
|
</div>
|
</Card>
|
</template>
|
|
<script setup lang="ts">
|
import Card from './Card.vue';
|
import { Avatar } from '@12333/components';
|
import dayjs from 'dayjs';
|
import { MessageChatTypeEnum } from '@12333/constants';
|
import { MessageChatTypeAvatarMap } from '@/constants';
|
|
defineOptions({
|
name: 'MessageCard',
|
});
|
|
type Props = {
|
badge?: number;
|
avatarUrl?: string;
|
latestMessageCreationTime?: string;
|
latestMessageContent?: string;
|
contact?: string;
|
chatType?: MessageChatTypeEnum;
|
};
|
|
const props = withDefaults(defineProps<Props>(), {});
|
</script>
|
|
<style lang="scss">
|
@import '@/styles/common.scss';
|
|
.message-card-wrapper {
|
border-radius: 0;
|
padding: 0 boleGetCssVar('size', 'body-padding-h');
|
margin-bottom: 0;
|
|
&:last-child {
|
.message-card-inner {
|
border-bottom: none;
|
}
|
}
|
|
.message-card-inner {
|
border-bottom: 2px solid #f6f6f6;
|
padding: 32px 0;
|
display: flex;
|
|
.message-card-avatar {
|
margin-right: 16px;
|
}
|
|
.message-card-content {
|
flex: 1;
|
min-width: 0;
|
|
.message-card-content-top {
|
display: flex;
|
align-items: center;
|
margin-bottom: 8px;
|
|
.message-card-title {
|
font-weight: 600;
|
font-size: 28px;
|
color: #555555;
|
line-height: 40px;
|
@include ellipsis;
|
flex: 1;
|
min-width: 0;
|
}
|
|
.message-card-time {
|
font-weight: 400;
|
font-size: 22px;
|
color: boleGetCssVar('text-color', 'regular');
|
line-height: 32px;
|
}
|
}
|
|
.message-card-content-bottom {
|
font-weight: 400;
|
font-size: 24px;
|
color: boleGetCssVar('text-color', 'regular');
|
line-height: 34px;
|
@include ellipsis;
|
}
|
}
|
}
|
}
|
</style>
|