GrowCard.vue 4.45 KB
<template>
  <div class="md:flex">
    <Card size="small" class="md:w-1/3 w-full !md:mt-0 !mt-4 !md:mr-4">
      <div class="flex" style="height: 100px">
        <div class="mr-4"
          ><img src="/src/assets/images/device-count.png" style="width: 5rem; height: 5rem"
        /></div>
        <div class="flex-auto">
          <div class="flex justify-between" style="align-items: center">
            <div style="font-size: 1.625rem; color: #333">{{
              growCardList?.deviceInfo?.sumCount
            }}</div>
            <img src="/src/assets/images/tip.png" style="width: 1.4rem; height: 1.4rem" />
          </div>
          <div> 设备数(个) </div>
          <div class="flex mt-2">
            <div class="flex mr-1" style="align-items: center; font-size: 0.75rem"
              ><img src="/src/assets/images/online.png" class="mr-1" />
              <span>在线{{ growCardList?.deviceInfo?.onLine }}</span>
            </div>
            <div class="flex mr-1" style="align-items: center; font-size: 0.75rem">
              <img src="/src/assets/images/offline.png" class="mr-1" />
              <span> 离线{{ growCardList?.deviceInfo?.offLine }} </span>
            </div>
            <div class="flex mr-1" style="align-items: center; font-size: 0.75rem">
              <img src="/src/assets/images/inactive.png" class="mr-1" />
              <span> 未激活{{ growCardList?.deviceInfo?.inActive }} </span>
            </div>
          </div>
        </div>
      </div>
      <div class="ml-2 pt-4" style="border-top: 2px solid #f0f2f5">
        今日新增 {{ growCardList?.deviceInfo?.todayAdd }}</div
      >
    </Card>
    <Card size="small" class="md:w-1/3 w-full !md:mt-0 !mt-4 !md:mr-4">
      <div class="flex" style="height: 100px">
        <div class="mr-4">
          <img
            v-if="!isAdmin(role)"
            src="/src/assets/images/alarm-count.png"
            style="width: 5rem; height: 5rem"
          />
          <img
            v-if="isAdmin(role)"
            src="/src/assets/images/zh.png"
            style="width: 5rem; height: 5rem"
          />
        </div>
        <div class="flex-auto">
          <div class="flex justify-between" style="align-items: center">
            <div style="font-size: 1.625rem; color: #333">{{
              growCardList?.tenantInfo?.sumCount
            }}</div>
            <img src="/src/assets/images/tip.png" style="width: 1.4rem; height: 1.4rem" />
          </div>
          <div> {{ !isAdmin(role) ? '11月告警数(条)' : '租户总量(个)' }}</div>
        </div>
      </div>
      <div class="ml-2 pt-4" style="border-top: 2px solid #f0f2f5">
        今日新增 {{ growCardList?.tenantInfo?.todayAdd }}</div
      >
    </Card>
    <Card size="small" class="md:w-1/3 w-full !md:mt-0 !mt-4">
      <div class="flex" style="height: 100px">
        <div class="mr-4"
          ><img
            v-if="!isAdmin(role)"
            src="/src/assets/images/msg-count.png"
            style="width: 5rem; height: 5rem"
          /><img
            v-if="isAdmin(role)"
            src="/src/assets/images/kf.png"
            style="width: 5rem; height: 5rem"
          />
        </div>
        <div class="flex-auto">
          <div class="flex justify-between" style="align-items: center">
            <div style="font-size: 1.625rem; color: #333">{{
              growCardList?.customerInfo?.sumCount
            }}</div>
            <img src="/src/assets/images/tip.png" style="width: 1.4rem; height: 1.4rem" />
          </div>
          <div> {{ !isAdmin(role) ? '11月消息量(条)' : '客户总量(个)' }} </div>
        </div>
      </div>
      <div class="ml-2 pt-4" style="border-top: 2px solid #f0f2f5">
        今日新增 {{ growCardList?.customerInfo?.todayAdd }}</div
      >
    </Card>
  </div>
</template>
<script lang="ts" setup>
  import { ref, onMounted } from 'vue';
  import { Card } from 'ant-design-vue';
  import { getHomeData } from '/@/api/dashboard';
  import { isAdmin } from '/@/enums/roleEnum';
  defineProps<{
    role: string;
  }>();
  defineExpose({
    isAdmin,
  });
  interface CardList {
    deviceInfo: {
      sumCount: number;
      onLine: number;
      offLine: number;
      inActive: number;
      todayAdd: number;
    };
    tenantInfo: { sumCount: number; todayAdd: number };
    customerInfo: { sumCount: number; todayAdd: number };
  }
  const growCardList = ref<CardList>();
  onMounted(async () => {
    const res = await getHomeData();
    growCardList.value = res;
  });
</script>