<template>
  <div class="top_list">
    <ul>
      <li class="item_list" v-for="(option, index) in options" :key="index">
        <div class="item_index">
          <span v-text="'TOP' + (index + 1)"></span>
        </div>
        <div class="item_logo">
          <el-avatar shape="square" :size="28" fit="cover" :src="option.logo" />
        </div>
        <div class="item_detail">
          <p class="item_info">
            <span class="text_clip">
              {{ option.name }}
              <i class="el-icon-arrow-right"></i>
            </span>
            <span v-text="option.value + (option.unit || '次')"></span>
          </p>
          <el-progress
            class="item_progress"
            :percentage="getPercent(option.value)"
            :show-text="false"
            color="#e56600"
          ></el-progress>
        </div>
      </li>
    </ul>
  </div>
</template>

<script>
export default {
  props: {
    options: {
      type: Array,
      default: () => [
        {
          name: "报警服务",
          value: 2031,
          logo:
            "https://fuss10.elemecdn.com/e/5d/4a731a90594a4af544c0c25941171jpeg.jpeg",
          unit: "次",
        },
        {
          name: "数据服务",
          value: 2201,
          logo:
            "https://fuss10.elemecdn.com/e/5d/4a731a90594a4af544c0c25941171jpeg.jpeg",
          unit: "次",
        },
        {
          name: "消息队列服务",
          value: 1901,
          logo:
            "https://fuss10.elemecdn.com/e/5d/4a731a90594a4af544c0c25941171jpeg.jpeg",
          unit: "次",
        },
        {
          name: "档案中心服务",
          value: 1400,
          logo:
            "https://fuss10.elemecdn.com/e/5d/4a731a90594a4af544c0c25941171jpeg.jpeg",
          unit: "次",
        },
        {
          name: "哈哈服务",
          value: 1280,
          logo:
            "https://fuss10.elemecdn.com/e/5d/4a731a90594a4af544c0c25941171jpeg.jpeg",
          unit: "次",
        },
      ],
    },
    targetValue: {
      type: Number,
      default: () => 2400,
    },
  },
  methods: {
    getPercent(value) {
      return Math.min((value / this.targetValue) * 100, 100);
    },
  },
};
</script>

<style scoped>
.top_list {
  height: 100%;
  overflow-x: hidden;
  overflow-y: auto;
}
.item_list {
  display: flex;
  justify-content: flex-start;
  align-items: center;
  margin-right: 10px;
  margin-bottom: 18px;
}
.item_index {
  width: 35px;
  flex-shrink: 0;
  margin-right: 10px;
  font-size: 12px;
  color: #58617a;
}
.item_logo {
  margin-right: 10px;
  flex-shrink: 0;
  font-size: 0;
  border: 2px solid #e3e5ef;
  border-radius: 6px;
  overflow: hidden;
}
.item_info {
  flex-grow: 1;
  display: flex;
  justify-content: flex-start;
  align-items: center;
  font-size: 14px;
  line-height: 20px;
  color: #58617a;
}
.item_detail {
  flex-grow: 1;
}
.item_info > span:first-child {
  flex-grow: 1;
  margin-right: 10px;
}
.item_info > span:first-child > i {
  font-weight: bold;
  font-size: 12px;
  color: #8e96ab;
}
.item_info > span:nth-child(2) {
  color: #0d1847;
}
.item_progress {
  margin-top: 6px;
}
</style>
