| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157 |
- <template>
- <!-- 富文本 -->
- <view v-show="!isSortType">
- <common-wrapper :config="configData">
- <view class="richText" v-if="description" :style="[richTextStyle]">
- <!-- #ifndef APP-PLUS -->
- <jyf-parser
- :html="description"
- ref="article"
- :tag-style="tagStyle"
- ></jyf-parser>
- <!-- #endif -->
- <!-- #ifdef APP-PLUS -->
- <!-- eslint-disable-next-line vue/no-v-text-v-html-on-component -->
- <view v-html="description"></view>
- <!-- #endif -->
- </view>
- </common-wrapper>
- </view>
- </template>
- <script>
- import commonWrapper from "./commonWrapper.vue";
- import parser from "@/components/jyf-parser/jyf-parser";
- export default {
- name: "richText",
- props: {
- dataConfig: {
- type: Object,
- default: () => {},
- },
- isSortType: {
- type: String | Number,
- default: 0,
- },
- },
- components: {
- "jyf-parser": parser,
- commonWrapper,
- },
- data() {
- return {
- tagStyle: {
- img: "width:100%;display:block;",
- table: "width:100%",
- video: "width:100%",
- },
- bgColor: "",
- lrConfig: 0,
- udConfig: 0,
- };
- },
- computed: {
- configData() {
- return {
- ...this.dataConfig,
- paddingConfig: this.dataConfig.paddingConfig || {
- isAll: false,
- valList: [
- {
- val: this.dataConfig.topConfig
- ? this.dataConfig.topConfig.val
- : 0,
- },
- {
- val: this.dataConfig.prConfig ? this.dataConfig.prConfig.val : 0,
- },
- {
- val: this.dataConfig.bottomConfig
- ? this.dataConfig.bottomConfig.val
- : 0,
- },
- {
- val: this.dataConfig.prConfig ? this.dataConfig.prConfig.val : 0,
- },
- ],
- },
- marginConfig: this.dataConfig.marginConfig || {
- isAll: false,
- valList: [
- {
- val: this.dataConfig.mbConfig ? this.dataConfig.mbConfig.val : 0,
- },
- {
- val: 0,
- },
- {
- val: 0,
- },
- {
- val: 0,
- },
- ],
- },
- };
- },
- description() {
- let description = this.dataConfig.richText.val;
- if (description) {
- description = description.replace(
- /<img/gi,
- '<img style="max-width:100%;height:auto;float:left;display:block" '
- );
- description = description.replace(
- /<video/gi,
- '<video style="width:100%;height:auto;display:block" '
- );
- }
- return description;
- },
- richTextStyle() {
- let borderRadius = `${this.dataConfig.fillet.val * 2}rpx`;
- if (this.dataConfig.fillet.type) {
- borderRadius = `${this.dataConfig.fillet.valList[0].val * 2}rpx ${
- this.dataConfig.fillet.valList[1].val * 2
- }rpx ${this.dataConfig.fillet.valList[3].val * 2}rpx ${
- this.dataConfig.fillet.valList[2].val * 2
- }rpx`;
- }
- return {
- "border-radius": borderRadius,
- background: this.dataConfig.bgColor.color[0].item,
- };
- },
- // richTextWrapStyle() {
- // return {
- // 'padding': `${this.dataConfig.topConfig.val*2}rpx ${this.dataConfig.lrConfig.val*2}rpx ${this.dataConfig.bottomConfig.val*2}rpx`,
- // 'margin-top': `${this.dataConfig.udConfig.val*2}rpx`,
- // 'background': this.dataConfig.bottomBgColor.color[0].item,
- // };
- // },
- },
- };
- </script>
- <style lang="scss">
- .richText {
- padding: 30rpx;
- background-color: #fff;
- // margin: 0 20rpx;
- // border-radius: 24rpx;
- &::after {
- content: "";
- display: table;
- clear: both;
- }
- }
- ::v-deep uni-video {
- width: 100% !important;
- }
- ::v-deep video {
- width: 100% !important;
- }
- </style>
|