<template>
|
<div class="common-card-wrapper">
|
<div class="common-card-content">
|
<div class="common-card-title-wrapper">
|
<div class="common-card-title">{{ title }}</div>
|
<slot name="title-right"></slot>
|
</div>
|
<slot></slot>
|
</div>
|
<div class="common-card-footer">
|
<slot name="footer">
|
<Avatar
|
@click.stop="goUserHomePage"
|
class="common-card-footer-avatar"
|
:size="24"
|
:src="src ? setOSSLink(src) : ''"
|
/>
|
<div class="common-card-footer-name-wrapper">
|
<div class="common-card-footer-name">{{ name }}</div>
|
<template v-if="jobTitle">
|
<div class="common-card-footer-dot"></div>
|
<div class="common-card-footer-jobTitle">{{ jobTitle }}</div>
|
</template>
|
<div class="common-card-footer-time">{{ dayjs(time).format('MM-DD HH:mm') }}</div>
|
</div>
|
</slot>
|
</div>
|
</div>
|
</template>
|
|
<script setup lang="ts">
|
import { commonCardProps } from './cardProps';
|
import { Avatar } from '@12333/components';
|
import { setOSSLink } from '@12333/utils';
|
import dayjs from 'dayjs';
|
import Taro from '@tarojs/taro';
|
|
defineOptions({
|
name: 'CommonCard',
|
});
|
|
const props = defineProps(commonCardProps);
|
|
function goUserHomePage() {
|
if (props.userId) {
|
Taro.navigateTo({
|
url: `${RouterPath.userHomePage}?userId=${props.userId}`,
|
});
|
}
|
}
|
</script>
|
|
<style lang="scss">
|
@import '@/styles/common.scss';
|
|
.common-card-wrapper {
|
background: #ffffff;
|
border-radius: 8px;
|
padding: 0 28px;
|
margin-bottom: 24px;
|
|
&:last-child {
|
margin-bottom: 0;
|
}
|
|
.common-card-content {
|
padding: 24px 0;
|
border-bottom: 1px solid #f6f6f6;
|
|
.common-card-title-wrapper {
|
display: flex;
|
align-items: center;
|
margin-bottom: 24px;
|
|
.common-card-title {
|
flex: 1;
|
min-width: 0;
|
font-weight: 600;
|
font-size: 32px;
|
color: boleGetCssVar('text-color', 'primary');
|
line-height: 44px;
|
@include ellipsis;
|
}
|
|
.nut-button {
|
height: 44rpx;
|
font-size: 24rpx;
|
padding: 0 30rpx;
|
}
|
}
|
}
|
|
.common-card-footer {
|
padding: 14px 0;
|
display: flex;
|
align-items: center;
|
|
.common-card-footer-avatar {
|
margin-right: 16px;
|
}
|
|
.common-card-footer-name-wrapper {
|
color: boleGetCssVar('text-color', 'primary');
|
line-height: 34px;
|
font-size: 0;
|
display: flex;
|
align-items: center;
|
flex: 1;
|
min-width: 0;
|
}
|
|
.common-card-footer-name {
|
font-weight: 400;
|
font-size: 24px;
|
vertical-align: middle;
|
@include ellipsis;
|
}
|
|
.common-card-footer-dot {
|
width: 4px;
|
height: 4px;
|
background: boleGetCssVar('text-color', 'primary');
|
vertical-align: middle;
|
border-radius: 50%;
|
margin: 0 8px;
|
flex-shrink: 0;
|
}
|
|
.common-card-footer-jobTitle {
|
font-weight: 400;
|
font-size: 24px;
|
vertical-align: middle;
|
flex-shrink: 0;
|
}
|
|
.common-card-footer-time {
|
font-weight: 400;
|
font-size: 24px;
|
vertical-align: middle;
|
color: boleGetCssVar('text-color', 'secondary');
|
margin-left: 16px;
|
flex-shrink: 0;
|
}
|
}
|
}
|
</style>
|