<template>
  <div class="header-back">
    <m-nav-bar :transparent="true" title="模拟考试" style="color: #ffffff" />
    <div class="user-data">
      <div class="left">
        <m-user-avatar />
        <div class="name">
          <m-user-name />
          <span
            >最高成绩<span class="grade">{{ testScoresInfo.maxScore }}</span
            >分</span
          >
        </div>
      </div>
      <m-button
        @click="goMockTest"
        class="continue"
        width="90px"
        height="30px"
        text="继续考试"
      />
    </div>
  </div>
  <div class="summary content-box">
    <div class="item">
      <div>
        <span class="number">{{ testScoresList.length }}</span
        >次
      </div>
      <div>考试次数</div>
    </div>
    <div class="item">
      <div>
        <span class="number">{{ testScoresInfo.avgScore }}</span
        >分
      </div>
      <div>平均成绩</div>
    </div>
    <div class="item">
      <div>
        <span class="number">{{ testScoresInfo.forecastScore }}</span
        >分
      </div>
      <div>成绩预测</div>
    </div>
  </div>
  <div class="test-scores content-box">
    <table class="table">
      <tr>
        <th>车型</th>
        <th>科目</th>
        <th>分数</th>
        <th>时间</th>
      </tr>
      <tr v-for="(item, index) in testScoresList" :key="index">
        <td>{{ item.type }}</td>
        <td>{{ item.kskm }}</td>
        <td>{{ item.score }}</td>
        <td>{{ item.createTime }}</td>
      </tr>
    </table>
  </div>
</template>

<script lang="ts">
import { getTestScoresList, getTestScoresInfo } from "@/api";
import { ref, onBeforeMount } from "vue";
import { RouterBus } from "@/hooks";
/**
 * 考试成绩数据结构
 */
interface TestScores {
  createTime: string; //考试时间
  kskm: string; //科目
  score: number; //分数
  type: string; //车型
}
/**
 * 模拟考成绩列表
 */
const useTestScoresList = () => {
  const testScoresList = ref<TestScores[]>([]);
  onBeforeMount(async () => {
    let res = await getTestScoresList();
    testScoresList.value = res.rows;
  });
  return {
    testScoresList,
  };
};
/**
 * 成绩信息数据结构
 */
interface TestScoresInfo {
  avgScore: number; //平均成绩
  forecastScore: number; //预测成绩
  maxScore: number; //最大成绩
}
/**
 * 最大成绩，平均成绩，预测成绩
 */
const useTestScoresInfo = () => {
  const testScoresInfo = ref<TestScoresInfo>({
    avgScore: 0,
    forecastScore: 0,
    maxScore: 0,
  });
  onBeforeMount(async () => {
    let res = await getTestScoresInfo();
    testScoresInfo.value = res.data;
  });
  return {
    testScoresInfo,
  };
};
</script>

<script lang="ts" setup>
const { testScoresList } = useTestScoresList();
const { testScoresInfo } = useTestScoresInfo();
const { goMockTest } = new RouterBus();
</script>

<style scoped lang="scss">
.header-back {
  width: 375px;
  padding-bottom: 82px;
  background: linear-gradient(180deg, #498ef5 0%, #4da8e6 100%);
  border-radius: 0px 0px 82px 82px;
  .user-data {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 19px 17px 24px;
    .left {
      display: flex;
      justify-content: space-between;
      align-items: center;
      .name {
        display: flex;
        flex-direction: column;
        font-size: 13px;
        color: #ffffff;
        justify-content: space-between;
        margin-left: 6px;
        .grade {
          font-size: 24px;
          padding: 4px;
        }
      }
    }
    .continue {
      font-size: 13px;
      font-family: PingFang SC;
      font-weight: 400;
      line-height: 19px;
      color: #ffffff;
      background: #01c18d;
    }
  }
}
.content-box {
  width: 345px;
  background: #ffffff;
  box-shadow: 0px 0px 8px rgba(124, 129, 136, 0.2);
  border-radius: 10px;
  position: relative;
  left: 50%;
  transform: translateX(-50%);
  top: -82px;
  margin-top: 10px;
}
.summary {
  display: flex;
  justify-content: space-around;
  padding: 25px 30px;
  box-sizing: border-box;
  .item {
    font-size: 13px;
    font-family: PingFang SC;
    font-weight: 400;
    line-height: 19px;
    color: #8a9099;
    display: flex;
    flex-direction: column;
    align-items: center;
    .number {
      font-size: 24px;
      color: #0a1a33;
      padding: 4px;
    }
  }
}
.test-scores {
  font-size: 13px;
  font-family: PingFang SC;
  font-weight: 400;
  line-height: 19px;
  color: #0a1a33;
  padding: 15px;
  box-sizing: border-box;
  .table {
    width: 100%;
    border-collapse: collapse;
    font-size: 13px;
    th {
      padding: 5px;
      color: #0a1a33;
    }
    td {
      text-align: center;
      padding: 5px;
      color: #8a9099;
    }
    tr {
      &:nth-of-type(n) {
        background: #ffffff;
      }
      &:nth-of-type(2n) {
        background: rgba(73, 142, 245, 0.15);
      }
    }
  }
}
</style>
