imgText.vue 4.23 KB
Newer Older
liujinsa committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121
<template>
  <div class="img-text">
    <!-- 顶部文字 -->
    <div v-if="datas.componentData.initcharSite=='outer_top'">
      <div
        :style="{'font-size':datas.componentData.initcharSize+'em','text-align':datas.componentData.initcharAlign,'color':datas.componentData.fontColor}"
        :class="datas.componentData.titles.length > 0 ? 'textH' : ''"
      >{{datas.componentData.titles}}</div>
      <div
        :style="{'font-size':datas.componentData.initcharSize+'em','text-align':datas.componentData.initcharAlign,'color':datas.componentData.fontColor}"
        :class="datas.componentData.abstract.length > 0 ? 'textC' : ''"
      >{{datas.componentData.abstract}}</div>
    </div>
    <!-- 图片区域 -->
    <div class="imgcontent" @click="itemClick()">
      <image :src="datas.componentData.imageUrl" alt lazy-load="true" mode="widthFix" :style="{'width':'100%','display':'block'}" ></image>
      <!-- 内部文字 -->
      <div
        v-if="datas.componentData.initcharSite==='inner_top' || datas.componentData.initcharSite==='inner_center' || datas.componentData.initcharSite==='inner_bottom'"
        class="text-class"
        :style="[datas.componentData.initcharSite=='inner_bottom'?{'justify-content': 'flex-end'}:datas.componentData.initcharSite=='inner_top'?{'justify-content': 'flex-start'}:{'justify-content': 'center'}]"
      >
        <div
          :style="{'font-size':datas.componentData.initcharSize+'em','text-align':datas.componentData.initcharAlign,'color':datas.componentData.fontColor}"
          :class="datas.componentData.titles.length > 0 ? 'textH' : ''"
        >{{datas.componentData.titles}}</div>
        <div
          :style="{'font-size':datas.componentData.initcharSize+'em','text-align':datas.componentData.initcharAlign,'color':datas.componentData.fontColor}"
          :class="datas.componentData.abstract.length > 0 ? 'textC' : ''"
        >{{datas.componentData.abstract}}</div>
      </div>
    </div>
    <!-- 底部文字 -->
    <div v-if="datas.componentData.initcharSite=='outer_bottom'">
      <div
        :style="{'font-size':datas.componentData.initcharSize+'em','text-align':datas.componentData.initcharAlign,'color':datas.componentData.fontColor}"
        :class="datas.componentData.titles.length > 0 ? 'textH' : ''"
      >{{datas.componentData.titles}}</div>
      <div
        :style="{'font-size':datas.componentData.initcharSize+'em','text-align':datas.componentData.initcharAlign,'color':datas.componentData.fontColor}"
        :class="datas.componentData.abstract.length > 0 ? 'textC' : ''"
      >{{datas.componentData.abstract}}</div>
    </div>
  </div>
</template>
<script>
const app = getApp()
export default {
  name : "img-text",
  props: {
    datas: {
      type: Object,
      default: () => {
        return {
          id: "",
          pageCode: 0,
          pageType: 0,
          queueNumber: 0,
          componentName: "图文",
          componentCode: "img-text",
          code: 1,
          componentData: {
            titles: "这是标题",
            abstract:
              "摘要文字 这是一个图文组件,可以上传图片和编辑文字,并且对图片大小、文字大小以及位置进行自定义编辑,快使用它!",
            imageUrl:
              "https://ss0.bdstatic.com/70cFvHSh_Q1YnxGkpoWK1HF6hhy/it/u=2546973851,4267148231&fm=26&gp=0.jpg",
            link: {
              name: "",
              link: ""
            },
            initimgSize: "80%", //图片默认尺寸
            initcharSize: 1,
            initcharAlign: "left",
            initcharSite: "left"
          }
        };
      }
    }
  },
  data() {
    return {};
  },
  computed: {},
  methods: {
    itemClick() {
      app.$themeToLink(this.datas.componentData.link);
    }
  },
  mounted() {}
};
</script>
<style lang="scss" scoped>
.img-text {
  font-size: 16px;
  .imgcontent {
    overflow: hidden;
    position: relative;
    width: 100%;
    text-align: center;
    .text-class {
      // vertical-align: middle;
      height: 100%;
      position: absolute;
      top: 0;
      display: flex;
      flex-direction: column;
    }
    image{
      vertical-align: top/middle/bottom;
    }
  }
  .textH {
    font-weight: bold;
    margin: 16px 16px;
  }
  .textC {
    padding: 16px 16px;
  }
}
</style>