<template>
|
<Card class="rich-edit-card">
|
<div class="rich-edit-card-title">{{ title }}</div>
|
<slot>
|
<RichContent v-if="content.length > 0" :content="content" />
|
<div class="rich-edit-card-add-wrapper" @click="handleClick">
|
<img :src="AddIcon" class="rich-edit-card-add-icon" />
|
<div class="rich-edit-card-add-text">可添加图文介绍</div>
|
<div class="rich-edit-card-add-danger">去编辑</div>
|
</div>
|
</slot>
|
</Card>
|
</template>
|
|
<script setup lang="ts">
|
import Card from '../Card/Card.vue';
|
import AddIcon from '@/assets/components/rich-card/icon-add.png';
|
import Taro from '@tarojs/taro';
|
import RichContent from './RichContent.vue';
|
import { EmptyTextEditorItem } from '@12333/constants';
|
|
defineOptions({
|
name: 'RichEditCard',
|
});
|
|
type Props = {
|
title?: string;
|
content?: API.IntroInfo[];
|
};
|
|
const props = withDefaults(defineProps<Props>(), {
|
content: () => [],
|
});
|
|
const emit = defineEmits<{
|
(e: 'update:content', content: Props['content']): void;
|
}>();
|
|
function handleClick() {
|
Taro.navigateTo({
|
url: RouterPath.editRichContent,
|
events: {
|
addRichContent: function (data: { content: API.IntroInfo[] }) {
|
console.log('EditRichContent onChange', data.content);
|
emit(
|
'update:content',
|
data.content.length > 0 ? data.content : [{ ...EmptyTextEditorItem }]
|
);
|
},
|
},
|
success: function (res) {
|
res.eventChannel.emit('acceptRichContent', { content: props.content });
|
},
|
});
|
}
|
</script>
|
|
<style lang="scss">
|
@import '@/styles/common.scss';
|
|
.rich-edit-card {
|
padding: 28px 32px;
|
|
.rich-edit-card-title {
|
margin-bottom: 20px;
|
font-size: 28px;
|
color: boleGetCssVar('text-color', 'primary');
|
// font-weight: bold;
|
}
|
|
.rich-edit-card-add-wrapper {
|
margin-top: 32px;
|
display: flex;
|
justify-content: center;
|
align-items: center;
|
|
.rich-edit-card-add-icon {
|
width: 20px;
|
height: 20px;
|
margin-right: 10px;
|
}
|
|
.rich-edit-card-add-text,
|
.rich-edit-card-add-danger {
|
line-height: 1;
|
font-size: 26px;
|
}
|
|
.rich-edit-card-add-text {
|
color: #8c8c8c;
|
margin-right: 6px;
|
}
|
|
.rich-edit-card-add-danger {
|
color: boleGetCssVar('color', 'primary');
|
}
|
}
|
|
.nut-textarea {
|
padding: 0;
|
}
|
}
|
|
.rich-edit-content {
|
.rich-content-item {
|
margin-bottom: 10px;
|
|
&:last-child {
|
margin-bottom: 0;
|
}
|
}
|
|
.rich-content-image-item {
|
display: block;
|
}
|
|
.rich-content-text-item {
|
word-break: break-all;
|
white-space: pre-line;
|
font-size: 30px;
|
line-height: 50px;
|
color: boleGetCssVar('text-color', 'primary');
|
}
|
|
.rich-content-video-item {
|
width: 100%;
|
height: 300px;
|
}
|
|
&.small {
|
.rich-content-text-item {
|
font-size: 24px;
|
line-height: 36px;
|
}
|
}
|
}
|
</style>
|