TableDoubleView.vue 2.4 KB
<!-- 表格信息界面 -->
<template>
  <div :style="incomingGridCls" class="tb-info displaydata">
    <div class="ValueCls" v-for="(value, key, index) of keyValue" :key="index">
      <div :style="incomingKeyCls" :class="{'keyValueCls': keyClass}">{{ value }}</div>
      <div :style="incomingValCls" :class="{'dataInfoCls': keyClass}">{{ data[key] }}</div>
    </div>
  </div>
</template>

<script>
export default {
  name: 'TableDoubleView',
  props: {
    title: String,
    keyValue: Object,
    data: Object,
    faIndex: {
      type: Number,
      default: 0
    },
    //title是否使用原本的样式
    keyClass: {
      type: Boolean,
      default: true
    },
    //传入自定义的title样式
    incomingKeyCls: Object,
    //value是否使用原本的样式
    valueCls: {
      type: Boolean,
      default: true
    },
    //传入自定义的value样式
    incomingValCls: Object,
    //传入自定义的Grid样式
    incomingGridCls: Object
  },
  datakey: '',
  datalength: 0,
  data() {
    return {
      maxWidth: document.body.clientWidth * 0.9 * 0.6,
      lineWidth: document.body.clientWidth * 0.9,
      flowerFlag: false
    };
  },
  activated() {
    this.datalength = Math.ceil((Object.keys(this.keyValue).length) / 2);
  },
  methods: {
    //是否按文本域展示
    getNewline(value) {
      if (!value) return false;
      var chValue = value.match(/[\u4e00-\u9fa5]/g) ? value.match(/[\u4e00-\u9fa5]/g).join('') : '',
        onlineWidth = chValue.length * 14 + (value.length - chValue.length) * 7;
      return onlineWidth > this.maxWidth ? true : false;
    },
    //文本域是否超出展示区域
    getNewHeight(value) {
      if (!value) return false;
      var chValue = value.match(/[\u4e00-\u9fa5]/g) ? value.match(/[\u4e00-\u9fa5]/g).join('') : '',
        onlineWidth = chValue.length * 14 + (value.length - chValue.length) * 7;
      return onlineWidth / this.lineWidth > 2 ? true : false;
    }
  }
};
</script>

<style scoped lang="scss">
.displaydata {
  width: 100%;
  height: auto;
  display: grid;
  grid-template-columns: repeat(2, 1fr);
}
.ValueCls {
  margin: 8px 0;
  display: flex;
  justify-content: center;
  align-items: center;
}
.keyValueCls {
  width: 100%;
  color: #999999;
  text-align: right;
  font-size: 16px;
  white-space: nowrap;
}
.dataInfoCls {
  width: 100%;
  color: #333333;
  text-align: left;
  font-size: 16px;
}
</style>