<template>
  <div id="ranking-board">
    <div class="ranking-board-title">巡检上报问题数量 TOP10</div>
    <dv-scroll-ranking-board :config="config" />
  </div>
</template>

<script>
import moment from "moment";
import {getworkFaultDesc} from "../../../api/kanban/equipment";

export default {
  name: 'RankingBoard',
  data () {
    return {
      config: {
        data: [],
        rowNum: 10
      }
    }
  },
  methods: {
    async getdatalist() {
      try {
        const response = await getworkFaultDesc({ poolName: "ds_1000" });

        // 成功获取数据时的处理
        if (response?.data?.length) {
          // 步骤1：数据格式转换
          const processedData = response.data.map(item => ({
            name: item.name || '未知分类',  // 处理空名称
            value: Number(item.value) || 0 // 确保数值类型
          })).filter(item => item.value > 0); // 过滤零值数据

          // 步骤2：触发响应式更新（关键！）
          this.config = {
            ...this.config, // 保留其他配置项
            data: processedData // 降序排列
          };
        } else {
          // 空数据兜底处理
          this.config.data = [{ name: '暂无数据', value: 0 }];
        }
      } catch (error) {
        console.error('数据获取失败:', error);
        // 错误状态显示（保持数据结构一致）
        this.config.data = [{ name: '数据异常', value: 0 }];
      } finally {

      }
    }
  },
  mounted() {
    this.getdatalist();
    // 添加定时刷新（可选）
    this.timer = setInterval(() => {
      this.getdatalist();
    }, 60000); // 60秒刷新
  },
  beforeDestroy() {
    clearInterval(this.timer); // 清除定时器
  }
}
</script>

<style lang="less">
#ranking-board {
  width: 20%;
  box-shadow: 0 0 3px blue;
  display: flex;
  flex-direction: column;
  background-color: rgba(6, 30, 93, 0.5);
  border-top: 2px solid rgba(1, 153, 209, .5);
  box-sizing: border-box;
  padding: 0px 30px;

  .ranking-board-title {
    font-weight: bold;
    height: 50px;
    display: flex;
    align-items: center;
    font-size: 20px;
  }

  .dv-scroll-ranking-board {
    flex: 1;
  }
}
</style>
