<template>
  <div class="person-table-container">
    <!-- 表头 -->
    <div class="table-header">
      <div class="header-item" style="width: 332px;padding-left: 78px;">人物</div>
      <div class="header-item" style="width: 197px;">涉华观点次数</div>
      <div class="header-item" style="width: 209px;">主流媒体引用次数</div>
    </div>

    <!-- 表格内容 -->
    <div class="table-body">
      <div class="table-row" v-for="(item, index) in personList" :key="index">
        <!-- 人物信息列 -->
        <div class="row-col col-person">
          <div style="margin: 7px 12px 7px 24px">
            <img :src="item.avatar" class="avatar" alt="avatar" />
            <div class="person-tags">
              <div class="person-tag-bg" v-for="(tag, tIdx) in item.tags" :key="tIdx">
                <img :src="'/public/icon/header-icon' + tag + '.png'" class="tag-icon" alt="tag" />
              </div>
            </div>
          </div>
          <div class="person-info">
            <div class="person-name">{{ item.name }}</div>
            <div class="person-position">{{ item.position }}</div>
          </div>
        </div>

        <!-- 涉华观点次数列 -->
        <div class="row-col col-count">
          <el-progress :percentage="getProgress(item.mediaQuoteCount)" :show-text="false"
            style="/* 矩形 244 */ width: 82px; height: 8px" :status="getStatus(getProgress(item.mediaQuoteCount))" />
          <span class="count-text">{{ item.mediaQuoteCount }}次</span>
        </div>

        <!-- 媒体引用次数列 -->
        <div class="row-col col-count">
          <el-progress :percentage="getProgress(item.mediaQuoteCount)" :show-text="false"
            style="/* 矩形 244 */ width: 82px; height: 8px" :status="getStatus(getProgress(item.mediaQuoteCount))" />

          <span class="count-text">{{ item.mediaQuoteCount }}次</span>
        </div>
      </div>
    </div>
  </div>
</template>

<script setup>
import { ref } from "vue";
import personData from "../json/personData.json"; // 引入JSON数据

const personList = ref(personData);
// 进度条状态
const getStatus = _percent => {
  const percent = _percent;
  if (percent >= 90) {
    return "exception";
  } else if (percent >= 50) {
    return "warning";
  } else {
    return "success";
  }
};
// 计算进度条宽度（基于最大值的百分比）
const getMaxCount = () => {
  const counts = personList.value.flatMap(item => [item.chinaRelatedCount, item.mediaQuoteCount]);
  return Math.max(...counts);
};
const getProgress = count => (count / getMaxCount()) * 100;
</script>

<style scoped>
.person-table-container {
  width: 738px;
  height: 360px;
  margin: 24px 27px;
  font-family: "Microsoft YaHei", sans-serif;
}

/* 表头样式 */
.table-header {
  /* 容器 47 */
  display: flex;
  width: 738px;
  height: 60px;
  box-sizing: border-box;
  border-top: 1px solid rgba(230, 231, 232, 1);
  color: rgba(59, 65, 75, 1);

  font-family: Microsoft YaHei;
  font-size: 16px;
  font-weight: 700;
  line-height: 22px;
  letter-spacing: 0px;
  align-items: center;
  text-align: center;
}

.header-item {
  /* flex: 1; */
  text-align: left;
}



/* 表格内容样式 */
.table-body {
  /* background-color: #fff; */
}

.table-row {
  display: flex;
  align-items: center;
  padding: 0;

  /* 容器 92 */
  width: 738px;
  height: 60px;
}

.table-body .table-row:nth-of-type(odd) {
  background-color: rgba(247, 248, 249, 1);
}

.table-body .table-row:nth-of-type(even) {
  background-color: #ffffff;
}

.row-col {
  flex: 1;
  display: flex;
  align-items: center;
}

/* 人物列样式 */
.col-person {
  align-items: flex-start;
}

.avatar {
  /* 椭圆形 */
  width: 42px;
  height: 42px;
  border-radius: 50%;
  object-fit: cover;
}

.person-info {
  display: flex;
  flex-direction: column;
}

.person-name {
  margin-top: 5px;
  color: rgba(59, 65, 75, 1);

  font-family: Microsoft YaHei;
  font-size: 16px;
  font-weight: 700;
  line-height: 24px;
  letter-spacing: 0px;
  text-align: left;
}

.person-position {
  width: 253px;
  color: rgba(95, 101, 108, 1);

  font-family: Microsoft YaHei;
  font-size: 16px;
  font-weight: 400;
  line-height: 24px;
  letter-spacing: 0px;
  text-align: left;
}

.person-tags {
  display: flex;
  margin-top: -20px;
  width: 42px;

  text-align: center;
}

.person-tag-bg {
  /* 椭圆 6 */
  width: 20px;
  height: 20px;
  background: rgba(255, 255, 255, 0.8);
  border-radius: 50%;
}

.tag-icon {
  width: 16px;
  height: 16px;
  object-fit: contain;
}

/* 次数列样式 */
.col-count {
  gap: 11px;
}

.progress-bar {
  height: 8px;
  border-radius: 4px;
  background-color: #ccc;
  min-width: 20px;
}

.count-text {
  font-size: 14px;
  color: #333;
  white-space: nowrap;
}
</style>
