cardTopCount.vue 7.64 KB
<template>
  <div>
    <div class="card_top_stc">
      <a-row>
        <a-col :xs="24" :sm="12" :md="12" :lg="12" :xl="6" v-for="(item, index) in cardData" :key="'comment' + index">
          <a-card class="card-hover card-shadow">
            <div class="box-card">
              <div class="box-card-title">
                <span>{{ item.title }}</span>
                <span class="card-title-circle"><a-icon type="info-circle" /></span>
              </div>
              <div class="box-card-center">
                <div class="box-count">
                  <span>{{ item.count }}</span>
                </div>
                <div class="box-nav">
                  <div class="center-msg" v-if="item.children.length>0">
                    <a-tag color="#d48265">{{item.children[0].title}}</a-tag><span class="cont-count">{{item.children[0].count}}</span>
                    <a-tag color="#91c7ae" style="margin-left: 8px;">{{item.children[1].title}}</a-tag><span class="cont-count">{{item.children[1].count}}</span>
                  </div>
                </div>
              </div>
              <div class="box-card-bottom">
                <span class="cont-title">{{item.foot.title}}</span><span class="cont-count">{{item.foot.count}}</span>
              </div>
            </div>
          </a-card>
        </a-col>
      </a-row>
    </div>
  </div>
</template>
<script>
import { getType } from '@/views/utils/auth'
import { Icon } from 'ant-design-vue';
export default {
  name: "cardCount",
  components: { Icon },
  props: {

  },
  data () {
    return {
      cardData: [
        { title: '预审项目数', count: 0, children: [{ title: '待审核', count: 0 }, { title: '已审核', count: 0 }], foot: { title: '今日新上报', count: 0 } },
        { title: '预审通过项目数', count: 0, children: [{ title: '未分配', count: 0 }, { title: '已分配', count: 0 }], foot: { title: '今日新上报', count: 0 } },
        { title: '项目分配人次', count: 0, children: [{ title: '未评审', count: 0 }, { title: '已评审', count: 0 }], foot: { title: '今日评审', count: 0 } },
        { title: '终审项目数', count: 0, children: [{ title: '未审核', count: 0 }, { title: '已审核', count: 0 }], foot: { title: '今日增加', count: 0 } },
      ],
      list2: [
        { title: '预审项目数', count: 0, children: [{ title: '待审核', count: 0 }, { title: '已审核', count: 0 }], foot: { title: '今日新上报', count: 0 } },
        { title: '项目分配人次', count: 0, children: [{ title: '未评审', count: 0 }, { title: '已评审', count: 0 }], foot: { title: '今日评审', count: 0 } },
        { title: '终审项目数', count: 0, children: [{ title: '未审核', count: 0 }, { title: '已审核', count: 0 }], foot: { title: '今日增加', count: 0 } },
        { title: '访问次数', count: 0, children: [], foot: { title: '今日访问', count: 0 } },
      ],
    }
  },
  props: {
    reportYear: {
      type: Number,
      default: () => {
        return null
      }
    },
  },
  created () {
    // this.cardData = this.list1
    // let projType = getType()
    // if (projType && projType == '2') {
    //   this.cardData = this.list2
    // } else {
    //   this.cardData = this.list1
    // }
    // this.changeType()
  },
  computed: {
    // projType: {
    //   get () {
    //     return this.$store.state.app.projType
    //   },
    //   set () {
    //   }
    // },
  },
  methods: {
    changeType () {
      if (!!this.reportYear) {
        this.geFirstAuditCount()
        this.getFirstAuditPassCount()
        this.getAssignPersonCount()
        this.geLastAuditCount()
      }
    },
    geFirstAuditCount () {
      this.$api.statistical.geFirstAuditCount({ auditType: 1, projType: getType(), reportYear: this.reportYear }).then(({ data = {} }) => {
        if (data) {
          this.setCardDataList(0, data.count5, data.count1, data.count2, data.count3)
        }
      }).catch(() => { })
    },
    getFirstAuditPassCount () {
      this.$api.statistical.getFirstAuditPassCount({ auditType: 1, projType: getType(), reportYear: this.reportYear }).then(({ data = {} }) => {
        if (data) {
          this.setCardDataList(1, data.count5, data.count1, data.count2, data.count3)
        }
      }).catch(() => { })
    },
    getAssignPersonCount () {
      this.$api.statistical.getAssignPersonCount({ auditType: 1, projType: getType(), reportYear: this.reportYear }).then(({ data = {} }) => {
        if (data) {
          this.setCardDataList(2, data.count1, data.count2, data.count3, data.count4)
        }
      }).catch(() => { })
    },
    geLastAuditCount () {
      this.$api.statistical.geLastAuditCount({ auditType: 1, projType: getType(), reportYear: this.reportYear }).then(({ data = {} }) => {
        if (data) {
          this.setCardDataList(3, data.count5, data.count1, data.count2, data.count3)
        }
      }).catch(() => { })
    },
    // getLoginCount () {
    //   this.$api.statistical.getLoginCount().then(({ data = {} }) => {
    //     if (data) {
    //       this.setCardDataList(3, data.count1, 0, 0, data.count3)
    //     }
    //   }).catch(() => { })
    // },
    setCardDataList (index, c1, c2, c3, c4) {
      this.cardData[index].count = c1
      if (this.cardData[index].children.length > 0) {
        this.cardData[index].children[0].count = c2
        this.cardData[index].children[1].count = c3
      }
      this.cardData[index].foot.count = c4
    },
  },
  watch: {
    // projType: {
    //   handler (value) {
    //     if (!!value) {
    //       this.changeType()
    //     }
    //   }
    // },
    reportYear: {
      handler (value) {
        if (!!value) {
          this.changeType()
        }
      }
    }
  }
}
</script>
<style lang="less" scoped>
.card-shadow {
  box-shadow: 3px 3px 5px #d3d8dfc2;
}
.card-hover {
  transition: all 0.1s linear 0s;
}
.card-hover:hover {
  border: 1px solid rgb(205, 207, 207) !important;
  box-shadow: 0 10px 20px rgba(0, 0, 0, 0.1);
  transform: translate(0, -0.1px);
  background: #f8f9fa;
  // cursor: pointer;
}
.card_top_stc {
  .ant-row .ant-col {
    padding: 6px;
  }
  .ant-card {
    border-radius: 4px;
    background-color: #ffffff;
    overflow: hidden;
    margin: 0 auto;
    ::v-deep.ant-card-body {
      padding: 12px !important;
      zoom: 1;
    }
    .box-card {
      .box-card-title {
        position: relative;
        height: 20px;
        color: rgba(0, 0, 0, 0.45);
        font-size: 15px;
        line-height: 20px;
        .card-title-circle {
          display: block;
          position: absolute;
          right: 0px;
          top: 0px;
          cursor: pointer;
        }
      }
      .box-card-center {
        .box-count {
          height: 34px;
          line-height: 34px;
          overflow: hidden;
          color: rgba(0, 0, 0, 0.85);
          font-size: 28px;
          white-space: nowrap;
          text-overflow: ellipsis;
          word-break: break-all;
        }
        .box-nav {
          height: 36px;
          border-bottom: 1px solid #e6ebf5;
          padding-bottom: 6px;
          .center-msg {
            position: relative;
            width: 100%;
            height: 100%;
            display: flex;
            align-items: flex-end;
            .ant-tag {
              margin-right: 0px !important;
            }
          }
          .center-msg span {
            display: block;
          }
        }
      }
      .box-card-bottom {
        height: 25px;
        display: flex;
        align-items: flex-end;
      }
      .cont-title {
        padding: 0px;
      }
      .cont-count {
        font-size: 16px;
        padding: 0px 5px;
        // font-style: italic;
        font-weight: 400;
      }
    }
  }
}
</style>