borderNums.vue 3.02 KB
<template>
  <div class="dashbord-list">
    <p class="tip">
      <span class="tip-title">页面说明:</span>
      <span
        >可查看当前系统各项数据统计情况。互动频次及点播趋势图展示部分数据,可进入互动统计及趋势分析详情页查看全部数据。</span
      >
    </p>
    <ul>
      <li v-for="(item, index) in list" :key="index">
        <div class="title-name">{{ item.label }}</div>
        <img :src="getImg(item.urlName)" alt="" />
        <div class="title">
          <span>
            <a class="num">{{ item.num }}</a>
            <a class="unit">{{ item.unit }}</a>
          </span>
        </div>
      </li>
    </ul>
  </div>
</template>

<script>
export default {
  name: "nums",
  data() {
    return {
      data: [
        {
          label: "总播放量",
          num: 0,
          unit: "次",
          urlName: "play",
          feild: "playCnt",
        },
        {
          label: "单位组织",
          num: 0,
          unit: "家",
          urlName: "org",
          feild: "orgCnt",
        },
        {
          label: "展板总量",
          num: 0,
          unit: "个",
          urlName: "boardsTotal",
          feild: "boardCnt",
        },
        {
          label: "互动总量",
          num: 0,
          unit: "次",
          urlName: "interaction",
          feild: "interactionCnt",
        },
      ],
      list: [],
    };
  },
  mounted() {
    this.getList()
  },
  methods: {
    getImg(imgUrl) {
      return require("@/assets/overview/" + imgUrl + ".png");
    },
    getList() {
      this.$https({
        method: "post",
        url: "tBoardStatistic/getBoardSurvey",
        authType: this.backToken,
      })
        .then((res) => {
          if (res.status == 200) {
            if (res.data.resultCode == 200) {
              let resData = res.data.data;
              this.list = [...this.data].map((v) => {
                v['num'] = resData[v['feild']];
                return v
              });
            } else {
              this.list = [...this.data];
            }
          } else {
            this.list = [...this.data];
          }
        })
        .catch((err) => {
          this.$message.error(err.message);
        });
    },
  },
};
</script>

<style lang="less">
.dashbord-list {
  width: 100%;
  position: absolute;
  padding: 0 10px;
  z-index: 100;
  .tip {
    color: @font-color;
    .tip-title {
      font-weight: bold;
      padding-right: 10px;
    }
  }
  ul {
    display: flex;
    font-size: 0;
    justify-content: space-around;
    li {
      position: relative;
      width: 9vw;
      margin-top: 15px;
    }
    img {
      width: 100%;
    }
    .title-name {
      font-size: 18px;
      color: @font-color;
      position: absolute;
      top: -8px;
      right: 0;
    }
    .title {
      position: absolute;
      right: 0.2rem;
      bottom: 5px;
      color: @party-white;
      .num {
        font-size: 28px;
      }
      .unit {
        font-size: 16px;
        margin-left: 5px;
      }
    }
  }
}
</style>