leftcard.vue 4.89 KB
<template>
  <div class="leftcard">
    <div class="card">
      <div class="cardhead">区县接入</div>
      <div class="cardcontent">
        <ul class="cardcontent-left d-center">
          <div class="rjjrlList">
            <p v-for="(item, index) in qxjrlList" class="d-center qxjr" :key="index">
              {{ item }}
            </p>
          </div>
          <li>总量</li>
        </ul>
        <div class="cardcontent-right d-center">
          <p>
            <span>失败</span>
            <span class="bad">{{ qxerrer }}</span>
          </p>
          <p>
            <span>成功率</span>
            <span class="cg">{{ qxcgl }}</span>
          </p>
        </div>
      </div>
    </div>
    <div class="card mt-15">
      <div class="cardhead">省厅汇交</div>
      <div class="cardcontent">
        <ul class="cardcontent-left d-center">
          <div class="rjjrlList">
            <p v-for="(item, index) in stjrlList" class="d-center sthj" :key="index">
              {{ item }}
            </p>
          </div>
          <li>总量</li>
        </ul>
        <div class="cardcontent-right d-center">
          <p>
            <span>失败</span>
            <span class="bad">{{ sterrer }}</span>
          </p>
          <p>
            <span>成功率</span>
            <span class="cg">{{ stcgl }}</span>
          </p>
        </div>
      </div>
    </div>
    <div class="card1 mt-15">
      <div class="cardhead">各区县数据上报统计</div>
      <columnar />
    </div>
  </div>
</template>

<script>
import columnar from "@/components/Echart/Columnar";
import work from "@/api/work";
export default {
  data () {
    return {
      // 日均接入量
      qxerrer: "",
      qxsuccess: "",
      sterrer: "",
      stsuccess: "",
      qxjrl: "",
      stjrl: "",
      qxcgl: "",
      stcgl: ""
    };
  },
  mounted () {
    this.getsthjqxjrtotal();
  },
  components: { columnar },
  computed: {
    qxjrlList: function () {
      return this.qxjrl && this.qxjrl.toString().split("");
    },
    stjrlList: function () {
      return this.stjrl && this.stjrl.toString().split("");
    },
  },
  methods: {
    getsthjqxjrtotal () {
      return new Promise(async (resolve) => {
        try {
          let p = {
            DJLX: "",
            QLLX: "",
            XZQDM: "",
          };
          let res = await work.getsthjqxjrtotal(p);
          this.stjrl=res.result.stsum
          this.qxjrl=res.result.qxsum
          this.qxerrer=Number(res.result.qxjrerrer)
          this.sterrer=Number(res.result.sthjerrer)
          if(res.result.sum=="0"){
             this.qxcgl="100%"
             this.stcgl="100%"
          }else{
            let qxcglnum=Number(res.result.qxjrsuccess)/this.qxjrl*100
            let stcgl=Number(res.result.sthjsuccess)/this.qxjrl*100
          this.qxcgl=qxcglnum.toFixed(2)+"%";
          this.stcgl=stcgl.toFixed(2)+"%";

          }
        } catch (error) {
          this.$refs.msg.messageShow();
        }
      });
    },
  },
};
</script>

<style lang="scss" scoped>
.leftcard {
  width: 32%;
  height: calc(100% -110px);
  display: flex;
  flex-direction: column;

  .card {
    background: url("~@/image/homeLeftBg.png") no-repeat;
    background-size: 100% 100%;
    position: relative;
    height: 22%;
  }

  .card1 {
    background: url("~@/image/qxsj.png") no-repeat;
    background-size: 100% 100%;
    position: relative;
    box-sizing: border-box;
    flex: 1;
    height: 56%;
  }

  .cardhead {
    color: #02d9fd;
    line-height: 24px;
    letter-spacing: 2px;
    position: absolute;
    font-size: 20px;
    left: 0;
    right: 0;
    margin: auto;
    text-align: center;
    top: 8px;
    font-weight: 700;
  }

  .rjjrlList {
    display: flex;
    margin-top: 15px;

    .qxjr {
      background: url("~@/image/jrl3.png");
    }

    .sthj {
      background: url("~@/image/jh.png");
    }

    p {
      margin: 0 3px 10px 3px;
      font-weight: 700;
      width: 24px;
      height: 36px;
      font-size: 30px;
      font-size: 32px;
    }
  }

  .cardcontent {
    width: 100%;
    height: 100%;
    display: flex;
    box-sizing: border-box;
    color: #e3f1ff;

    .cardcontent-left {
      width: 60%;
      flex-direction: column;
      position: relative;
    }

    .cardcontent-left::before {
      position: absolute;
      right: 0;
      top: 20px;
      content: "";
      width: 1px;
      height: 90px;
      background: linear-gradient(180deg,
          #091b4c 0%,
          #47b5e0 56%,
          #091b4c 100%);
    }

    .cardcontent-right {
      flex: 1;
      width: 100%;
      flex-direction: column;
      font-size: 16px;

      .bad {
        color: #c97168;
      }

      .cg {
        color: #5fba7d;
      }

      p {
        margin-bottom: 8px;

        span:nth-child(1) {
          margin-right: 15px;
        }

        span:nth-child(2) {
          font-size: 20px;
          font-weight: 900;
        }
      }
    }
  }
}
</style>