<template>
  <div class="company-home">
    <customHeader>{{ mainTitle }}</customHeader>
    <div class="company-content">
      <div class="content-item item-1">
        <infoBox class="infoBox1">
          <template #title> 设备数据量 </template>
          <template #container>
            <div class="content-wrapper wrapper-1 grid">
              <div class="data-item">
                <div class="item-icon icon1"></div>
                <div>
                  <div class="label">接入设备数量</div>
                  <div class="value">{{ deviceData.deviceCount }} </div>
                </div>
              </div>
              <div class="data-item">
                <div class="item-icon icon2"></div>
                <div>
                  <div class="label">接入点位数量</div>
                  <div class="value status-normal">{{ deviceData.monitorParamsCount }}</div>
                </div>
              </div>
              <div class="data-item">
                <div class="item-icon icon3"></div>
                <div>
                  <div class="label">数据存储量(GB)</div>
                  <div class="value status-normal">{{ deviceData.databaseDiskUsage }}</div>
                </div>
              </div>
              <div class="data-item">
                <div class="item-icon icon4"></div>
                <div>
                  <div class="label">消息总数量(条)</div>
                  <div class="value status-normal">{{ deviceData.collectTotalNum }}</div>
                </div>
              </div>
              <div class="data-item">
                <div class="item-icon icon5"></div>
                <div>
                  <div class="label">共享接口数量</div>
                  <div class="value status-normal">2</div>
                </div>
              </div>
            </div>
          </template>
        </infoBox>
      </div>
      <div class="content-item item-2 grid">
        <infoBox class="infoBox2">
          <template #title> 每日采集数据量 </template>
          <template #container>
            <div class="content-wrapper">
              <CustomChart :chart-config="dailyNumOption" :chart-data="deviceData" height="245px" />
            </div>
          </template>
        </infoBox>
        <infoBox class="infoBox3">
          <template #title> 系统数据量排名 </template>
          <template #container>
            <div class="content-wrapper">
              <a-table size="small" :dataSource="deviceData.collectDataByStationList" :columns="sysDataColumn" :pagination="false" />
            </div>
          </template>
        </infoBox>
      </div>
      <div class="content-item item-3">
        <infoBox class="infoBox4">
          <template #title> 设备接入情况 </template>
          <template #container>
            <div class="content-wrapper">
              <a-table size="small" :dataSource="accessStatusData" :columns="accessStatusColumn" :pagination="pagination" @change="pageChange">
                <template #action="{ record }">
                  <div class="option-cont">
                    <div class="view-icon"></div>
                    <a class="table-action-link" @click="viewData(record)">查看数据</a>
                  </div>
                </template>
              </a-table>
            </div>
          </template>
        </infoBox>
      </div>
    </div>
  </div>
</template>
<script lang="ts" setup>
  import { ref, onMounted, reactive } from 'vue';
  import customHeader from '/@/components/vent/customHeader.vue';
  import infoBox from './components/infoBox.vue';
  import { sysDataColumn, accessStatusColumn, dailyNumOption } from './infoCenter.data';
  import CustomChart from '@/views/vent/home/configurable/components/detail/CustomChart.vue';
  import { getDeviceAll, getHomepageSummaryIndexes } from './infoCenter.api';
  let mainTitle = ref('智能通风数据中心');
  //分页参数配置
  const pagination = reactive({
    current: 1, // 当前页码
    pageSize: 5, // 每页显示条数
    total: 0, // 总条目数，后端返回
    // showTotal: (total, range) => `${range[0]}-${range[1]} 条，总共 ${total} 条`, // 分页右下角显示信息
  });
  // 设备接入情况数据
  const accessStatusData = ref([]);
  // 数据中心首页设备数据
  const deviceData = ref({
    monitorParamsCount: 0,
    deviceCount: 0,
    databaseDiskUsage: 0,
    collectTotalNum: 0,
    collectDataByStationList: [],
    collectDataByDayList: [],
  });
  // 查看数据
  function viewData(record) {
    console.log(record);
  }
  //分页切换
  const pageChange = async (val) => {
    pagination.current = val.current;
    pagination.pageSize = val.pageSize;
    const res = await getDeviceAll({
      pageNo: pagination.current,
      pageSize: pagination.pageSize,
    });
    accessStatusData.value = res.records; // 赋值给响应式变量
    pagination.total = res.total; // 更新总条数
  };
  // 获取设备数据接口
  const fetchDeviceData = async () => {
    try {
      // 获取首页汇总指标数据
      deviceData.value = await getHomepageSummaryIndexes();
      // 获取设备接入情况数据
      const response = await getDeviceAll({
        pageNo: pagination.current,
        pageSize: pagination.pageSize,
      });
      accessStatusData.value = response.records; // 赋值给响应式变量
      pagination.total = response.total; // 更新总条数
    } catch (error) {
      console.error('获取设备数据失败:', error);
    }
  };

  // 页面挂载时调用接口获取数据
  onMounted(async () => {
    await fetchDeviceData();
  });
</script>
<style lang="less" scoped>
  @font-face {
    font-family: 'douyuFont';
    src: url('@/assets/font/douyuFont.otf');
  }

  .company-home {
    width: 100%;
    height: 100%;
    position: relative;

    :deep(.vent-home-header) {
      height: 50px;
      background: url('@/assets/images/vent/home/modal-top.png') no-repeat center;
      background-size: 100% 100%;
    }

    .company-content {
      position: absolute;
      left: 0;
      width: 100%;
      height: calc(100% - 50px);
      padding: 20px 20px 10px 20px;
      --image-border1: url('/@/assets/images/dataCenter/infoCenter/info-border1.png');
      --image-border2: url('/@/assets/images/dataCenter/infoCenter/info-border2.png');
      --image-border3: url('/@/assets/images/dataCenter/infoCenter/info-border3.png');
      --image-border4: url('/@/assets/images/dataCenter/infoCenter/info-border4.png');
      --image-split-line: url('/@/assets/images/dataCenter/infoCenter/split-line.png');
      --image-rank: url('/@/assets/images/dataCenter/infoCenter/rank-bg.png');
      .content-item {
        width: 100%;
        overflow: hidden;
        padding-bottom: 20px;
      }
      .item-1 {
        height: 20%;
      }
      .item-2 {
        height: 40%;
        grid-template-columns: 6fr 4fr;
        gap: 20px;
        :deep(table) {
          border-collapse: separate !important;
          border-spacing: 0 10px !important;
          .zxm-table-thead {
            height: 35px;
            background-color: unset !important;
            .zxm-table-cell {
              color: #66ffff !important;
            }
          }
          .zxm-table-tbody {
            background-color: unset !important;
          }
          .zxm-table-cell {
            border: none !important;
            background: none !important;
            padding: 0px;
          }
          tr {
            background: var(--image-rank) no-repeat !important;
            background-size: 100% 100% !important;
          }
        }
      }
      .item-3 {
        height: 40%;
        padding-bottom: 0;
        :deep(table) {
          border-collapse: collapse !important;
          // border-spacing: 0 10px !important;
          .zxm-table-thead {
            height: 35px;
            background-color: #0b2542 !important;
            border: 1px solid #1f7eb5;
            .zxm-table-cell {
              border: none !important;
              color: #37e0eb !important;
            }
          }
          .zxm-table-tbody {
            .zxm-table-row:nth-child(odd) {
              background-color: #0e3455;
            }

            /* 偶数行背景色 */
            .zxm-table-row:nth-child(even) {
              background-color: #114268 !important;
            }
            .zxm-table-cell {
              border: none !important;
              background: none !important;
            }
          }
        }
        .box-container {
          overflow: hidden;
        }
      }
      .infoBox1 {
        background-color: var(--image-border1) no-repeat;
      }
      .infoBox2 {
        background-color: var(--image-border2) no-repeat;
      }
      .infoBox3 {
        background-color: var(--image-border3) no-repeat;
      }
      .infoBox4 {
        background-color: var(--image-border4) no-repeat;
      }
    }
    .wrapper-1 {
      grid-template-columns: repeat(5, 1fr);
      .data-item {
        display: flex;
        align-items: center;
        justify-content: center;
        position: relative;
        &::after {
          position: absolute;
          right: 1px;
          top: 5px;
          display: block;
          width: 2px;
          height: 100%;
          background: var(--image-split-line);
          content: '';
        }
        &:last-child::after {
          display: none;
        }
        .value {
          font-family: 'douyuFont';
          color: #66ffff;
          margin-top: 20px;
        }
        .item-icon {
          width: 80px;
          height: 80px;
          background-size: 100% 100%;
          margin-right: 15px;
        }
        .icon1 {
          background-image: url('/@/assets/images/dataCenter/infoCenter/icon1.png');
        }
        .icon2 {
          background-image: url('/@/assets/images/dataCenter/infoCenter/icon2.png');
        }
        .icon3 {
          background-image: url('/@/assets/images/dataCenter/infoCenter/icon3.png');
        }
        .icon4 {
          background-image: url('/@/assets/images/dataCenter/infoCenter/icon4.png');
        }
        .icon5 {
          background-image: url('/@/assets/images/dataCenter/infoCenter/icon5.png');
        }
      }
    }
    .option-cont {
      display: flex;
      justify-content: center;
      align-items: center;
      .view-icon {
        width: 20px;
        height: 20px;
        background-image: url('/@/assets/images/dataCenter/infoCenter/view-icon.png');
        background-repeat: no-repeat;
        background-size: contain;
        background-position: center;
      }
    }
  }
</style>
