<script>
import { GetSubjectType, GetPractice, getPracticeRecords } from "@/api/user";

export default {
  name: "index",
  data() {
    return {
      typeOptions: [],
      examIndex: 0,
      // 获取考试数据参数
      form: {
        PageIndex: 1,
        PageSize: 8,
        state: "",
        user_id: "",
        SubjectType: "",
      },
      // 考试场次
      testList: [],
      total: 0, //总数
      isVisible: false, //考试记录弹窗
      examRecordsTable: [], //考试记录表格
    };
  },
  methods: {
    //根据科目查询
    onQuery() {
      this.getTestList();
    },
    getTestList() {
      GetPractice(this.form).then((res) => {
        this.testList = res.data.data;
        this.total = parseInt(res.data.message);
      });
    },
    // 进入考试
    enterExam(item) {
      this.$router.push(
        `/examPage?id=${item.batch_id}&totalScore=${item.total_score}&minute=${item.ks_minute}&passScore=${item.pass_score}`
      );
      let data = {
        user_id: this.form.user_id,
        batch_id: item.batch_id,
        list_item_answer: [],
      };
      let testMsg = {
        testTitle: item.subject, //考试名称
        endTime: item.ks_minute, //考试结束时间
      };
      // 存储考试数据
      sessionStorage.setItem("testMsg", JSON.stringify(testMsg));
      sessionStorage.setItem("params", JSON.stringify(data));
    },
    //练习记录
    enterExamRecords(row) {
      let dataMap = {
        batch_id: row.batch_id,
        user_id: this.form.user_id,
      };
      getPracticeRecords(dataMap)
        .then((res) => {
          this.examRecordsTable = res.data.data;
          this.isVisible = true;
        })
        .catch((err) => {
          console.log(err);
        });
    },
    //查看考试详情
    goDetails(row) {
      console.log(row, "行");
      this.$router.push(
        `/examDetails?id=${row.result_id}&score=${row.score}&user_id=${this.form.user_id}&examine_time=${row.examine_time}&exam_name=${row.exam_name}&pass_score=${row.pass_score}`
      );
      let data = {
        user_id: this.form.user_id,
        batch_id: row.result_id,
        list_item_answer: [],
      };
      sessionStorage.setItem("params", JSON.stringify(data));
    },
    //关闭练习记录
    closeExamRecords() {
      this.isVisible = false;
    },
    currentChange(current) {
      this.form.PageIndex = current;
      this.getTestList();
    },
    getCountdown(time) {
      let endTime = new Date(time).getTime();
      let startTime = new Date().getTime();
      let remainder = endTime - startTime;
      let d = parseInt(remainder / 1000 / 60 / 60 / 24); //算出天数
      let h = parseInt((remainder / 1000 / 60 / 60) % 24); //算出小时数
      let m = parseInt((remainder / 1000 / 60) % 60); //算出分钟数
      let s = parseInt((remainder / 1000) % 60); //算出秒数
      h = d * 24 + h;
      if (h < 10) {
        h = "0" + h;
      }
      if (m < 10) {
        m = "0" + m;
      }
      if (s < 10) {
        s = "0" + s;
      }

      return h + "小时" + m + "分" + s + "秒后开始";
      // return h+':'+m+':'+s
    },
    //获取科目类别
    getSubjectTypeList() {
      GetSubjectType()
        .then((res) => {
          this.typeOptions = res.data.data;
        })
        .catch((err) => {
          console.log(err);
        });
    },
    //表格样式
    tableRowClassName({ row, rowIndex }) {
      if (rowIndex % 2 == 1) {
        return "warning-row";
      } else {
        return "success-row";
      }
      return "";
    },
  },
  mounted() {
    // 用户id赋值
    this.form.user_id = window.location.href.split("?")[1];
    // this.form.user_id = "USER202311172256420502";
    this.getSubjectTypeList();
    this.getTestList();
  },
  computed: {},
};
</script>

<template>
  <div class="test-box">
    <div class="test-box-title">考试场次选择</div>
    <div class="test-box-status">
      <el-form v-model="form" :inline="true">
        <el-form-item label="科目类别:">
          <el-select
            v-model="form.SubjectType"
            placeholder="请选择科目类别"
            :popper-append-to-body="false"
            clearable
          >
            <el-option
              v-for="(item, index) in typeOptions"
              :key="index"
              :label="item"
              :value="item"
            >
            </el-option>
          </el-select>
        </el-form-item>
        <el-form-item>
          <el-button type="primary" @click="onQuery">查询</el-button>
        </el-form-item>
      </el-form>
    </div>
    <div class="test-box-site">
      <div v-for="item in testList" class="test-box-site-item">
        <div class="test-box-site-item-name">
          {{ item.subject }}
        </div>
        <div class="test-box-site-item-time">
          <span>考试时长：{{ item.ks_minute }}分钟</span>
        </div>
        <div class="test-box-site-item-score">
          <span>满分：{{ item.total_score }}分</span>
        </div>
        <div class="test-box-site-item-score">
          <span>及格分：{{ item.pass_score }}分</span>
        </div>
        <div class="test-box-site-item-btn">
          <!-- <span> 考试记录 </span> -->
          <span>
            <img
              src="@/assets/image/ksjl.png"
              v-show="item.ks_count > 0"
              @click="enterExamRecords(item)"
            />
          </span>
          <!-- <div class="time" v-if="item.batch_state.trim() === '未开始'">
            {{ getCountdown(item.start_time) }}
          </div> -->
          <!-- <span @click="enterExam(item)"> 进入考试 </span> -->
          <span>
            <img src="@/assets/image/jrks.png" @click="enterExam(item)" />
          </span>
        </div>
      </div>
    </div>
    <div class="test-no-data" v-if="!testList.length"></div>
    <div class="test-box-pagination">
      <span>共{{ total }}条</span>
      <el-pagination
        @current-change="currentChange"
        :current-page="form.PageIndex"
        layout="prev, pager, next"
        :page-size="form.PageSize"
        :total="total"
      >
      </el-pagination>
    </div>
    <!-- 考试记录弹窗 -->
    <div class="examRecords" v-if="isVisible">
      <div class="examRecords-title">
        <span>考试记录</span>
        <img src="@/assets/image/close.png" @click="closeExamRecords" />
      </div>
      <div class="diyTable">
        <el-table
          class="my-el-table"
          :data="examRecordsTable"
          height="320"
          :header-cell-style="{
            background: 'rgba(131, 129, 177, 0.5) !important',
            color: '#ededed  !important',
          }"
          :row-class-name="tableRowClassName"
        >
          <el-table-column type="index" label="序号" align="center" />
          <el-table-column prop="examine_time" label="考试时间" align="center" />
          <el-table-column prop="score" label="考试成绩" align="center" />
          <el-table-column label="操作" align="center">
            <template slot-scope="scope">
              <el-button type="primary" size="small" @click="goDetails(scope.row)"
                >查看详情</el-button
              >
            </template>
          </el-table-column>
        </el-table>
      </div>
    </div>
  </div>
</template>

<style lang="less" scoped>
.test-no-data {
  background-image: url("../../assets/image/examSelect/not_data.png");
  width: 228px;
  height: 244px;
  background-size: 100% 100%;
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  margin: auto;
}
::v-deep .el-pager li {
  background-image: none;
  background-color: transparent;
  font-size: 14px;
  font-weight: normal;
  width: 34px;
  height: 34px;
  line-height: 34px;
}
::v-deep .el-pagination .btn-next,
::v-deep .el-pagination .btn-prev {
  background-color: transparent;
  width: 34px;
  color: #ffffff;
  height: 34px;
  line-height: 34px;
}
::v-deep .el-pagination button:disabled {
  color: rgba(255, 255, 255, 0.3);
  background-color: transparent;
}
::v-deep .el-pager li:hover {
  color: #ffffff;
}
::v-deep .el-pager li.active {
  background-color: rgba(255, 255, 255, 0.12);
  color: #ffffff;
}

.test-box {
  width: 1773px;
  height: 858px;
  background-image: url("../../assets/image/examSelect/test-box.png");
  background-size: 100% 100%;
  position: absolute;
  padding: 0 68px;
  box-sizing: border-box;
  top: 0;
  right: 0;
  left: 0;
  bottom: 0;
  margin: auto;
  //
  &-pagination {
    position: absolute;
    display: flex;
    bottom: 40px;
    left: 50%;
    transform: translateX(-50%);
    align-items: center;
    span {
      color: #ffffff;
      font-size: 14px;
    }
  }
  &-title {
    position: absolute;
    top: 14px;
    left: 50%;
    font-size: 24px;
    margin-left: -72px;

    color: rgba(255, 255, 255, 1);
  }

  //  状态的tab栏

  &-status {
    margin-top: 42px;
    margin-bottom: 26px;
    display: flex;
    list-style: none;
    ::v-deep .el-input__inner {
      background: rgba(0, 0, 0, 0.4);
      border-color: rgba(255, 255, 255, 0.5);
      color: #fff;
    }
    ::v-deep .el-input.is-focus .el-input__inner {
      border-color: rgba(255, 255, 255, 0.5);
    }
    ::v-deep .el-select-dropdown {
      left: 0 !important;
    }
    ::v-deep .el-select-dropdown__item {
      color: #fff;
    }
    ::v-deep .el-select-dropdown__item.hover {
      background: rgba(0, 0, 0, 0.7);
    }
    ::v-deep .el-select-dropdown__list {
      background: rgba(57, 57, 67);
      border-color: rgba(255, 255, 255, 0.3);
    }
    .select {
      background-image: url("../../assets/image/examSelect/select-status.png");
      color: rgba(255, 255, 255, 1);
    }

    // li {
    //   background-image: url("../../assets/image/examSelect/default-status.png");
    //   color: rgba(255, 255, 255, 0.6);
    //   width: 136px;
    //   height: 40px;
    //   margin-right: 14px;
    //   text-align: center;
    //   line-height: 40px;
    // }
  }

  //  考试场次选择
  &-site {
    height: 552px;
    &-item {
      float: left;
      width: 372px;
      margin-right: 49px;
      margin-bottom: 49px;
      height: 232px;
      box-sizing: border-box;
      padding: 0 18px;
      background-image: url("../../assets/image/examSelect/exam-plate.png");
      background-size: 100% 100%;
      display: flex;
      flex-direction: column;
      justify-content: flex-start;
      padding-bottom: 20px;
      //  理论考试名字
      &-name {
        font-size: 18px;
        margin-top: 10px !important;
      }

      div {
        color: rgba(255, 255, 255, 1);
        font-size: 16px;
        margin-top: 20px;
      }

      //开始时间
      &-start {
        display: flex;
        justify-content: space-between;
        margin-top: 23px !important;
        span:nth-child(2) {
          text-align: center;
          line-height: 22px;
          width: 62px;
          height: 22px;
          background-size: 100% 100%;
        }
        .end {
          background-image: url("../../assets/image/examSelect/end.png");
        }
        .not-started {
          background-image: url("../../assets/image/examSelect/not-started.png");
        }
        .started {
          background-image: url("../../assets/image/examSelect/started.png");
        }
      }

      //  进入考场
      &-btn {
        display: flex;
        justify-content: flex-end;
        position: relative;
        margin-top: 30px !important;
        padding: 0 40px;
        .time {
          color: rgba(101, 140, 246, 1);
          font-size: 14px;
          position: absolute;
          top: -30px;
          right: 0;
          margin: 0;
        }
        span:nth-child(1) {
          margin-right: 45px;
        }
        span {
          // background-image: url("../../assets/image/examSelect/enter-not.png");
          font-size: 14px;
          width: 101px;
          line-height: 28px;
          color: rgba(255, 255, 255, 0.5);
          text-align: center;
          background-size: 100% 100%;
          cursor: pointer;
        }
        .starting {
          background-image: url("../../assets/image/examSelect/enter.png");
          color: rgba(255, 255, 255, 1);
        }
      }
    }

    &-item:nth-child(4n) {
      margin-right: 0;
    }
  }
  .examRecords {
    position: fixed; /* Stay in place */
    // z-index: 1; /* Sit on top */
    left: 28%;
    top: 30%;
    transform: translate(-50%, -50%);
    width: 807px; /* Could be more or less, depending on screen size */
    height: 391px;
    background: #fff;
    border-radius: 5px;
    padding: 0 20px;
    background: url("@/assets/image/examRecords.png") no-repeat;
    background-size: 100% 100%;
    animation: popup-enter 0.7s ease-out forwards;
    &-title {
      height: 40px;
      font-size: 24px;
      display: flex;
      justify-content: center;
      align-items: center;
      color: #fff;
      span {
        left: 42%;
        position: relative;
      }

      img {
        cursor: pointer;
        margin-left: auto;
        margin-top: 20px;
      }
    }
  }
  @keyframes popup-enter {
    from {
      opacity: 0;
      transform: translateY(-20px);
    }
    to {
      opacity: 1;
      transform: translateY(0);
    }
  }
  .diyTable {
    margin-top: 20px;
  }
  ::v-deep .my-el-table {
    overflow-x: hidden;
    .el-table__header-wrapper {
      .el-table__header {
        width: calc(100% + 32px) !important;
      }
    }
    .el-table__body-wrapper {
      width: calc(100% + 20px) !important;
      .el-table__body {
        width: calc(100% + 20px) !important;
      }
    }
    .el-table__body tr:hover > td {
      background-color: transparent;
    }
  }
  // 去掉table表格底部白色线条
  ::v-deep .el-table::before {
    background-color: transparent;
  }
  ::v-deep .el-table td.el-table__cell,
  ::v-deep .el-table th.el-table__cell.is-leaf {
    border: none;
  }
  ::v-deep .el-table__row.warning-row {
    background: rgba(60, 58, 74, 0.15) !important;
  }

  ::v-deep .el-table__row.success-row {
    background: rgba(131, 129, 177, 0.2) !important;
  }
  ::v-deep .el-table tr {
    color: #fff;
    background-color: transparent;
  }
}
</style>
