<template>
  <!-- 导航栏 -->
  <van-nav-bar
    title="标题"
    left-arrow
    @click-left="onClickLeft"
    fixed
    placeholder
  >
    <template #right>
      <m-icon type="shezhi" @click="setShow = true" />
    </template>
  </van-nav-bar>
  <!-- 导航栏end -->
  <!-- 考试倒计时 -->
  <div class="dowm-box">
    <van-count-down :time="45 * 60 * 1000" format="剩余答题时间: mm分ss秒" />
  </div>
  <!-- 考试倒计时end -->
  <!-- 分割线 -->
  <div class="divider" />
  <!-- 题目模块 -->
  <!-- 题目预加载 -->
  <m-empty v-if="!currentSubject" />
  <!-- 题目预加载end -->
  <div class="problem-box" v-else>
    <!-- 题目内容 -->
    <div class="problem">
      <span class="type">{{ currentSubject.type }}</span>
      <span class="text">{{ currentSubject.explain }}</span>
      <van-image
        v-if="currentSubject.image"
        :src="currentSubject.image"
        class="img"
      >
        <template v-slot:loading>
          <van-loading type="spinner" size="20" />
        </template>
      </van-image>
    </div>
    <!-- 选择内容 -->
    <div v-if="true">
      <!-- 单选 -->
      <van-radio-group
        v-model="currentSubject.userAnswer"
        v-if="currentSubject.type != '多选题'"
        icon-size="35px"
      >
        <van-radio
          v-for="(item, index) in currentSubject.opts"
          :key="Number(index)"
          :name="item"
          class="answer"
          >{{ item }}
          <template #icon="props">
            <div class="choose-icon" :class="{ selected: props.checked }">
              {{ String.fromCharCode(65 + Number(index)) }}
            </div>
          </template>
        </van-radio>
      </van-radio-group>
      <!-- 多选 -->
      <div v-else>
        <van-checkbox-group
          v-model="currentSubject.userAnswer"
          icon-size="35px"
        >
          <van-checkbox
            v-for="(item, index) in currentSubject.opts"
            :key="Number(index)"
            :name="item"
            class="answer"
            >{{ item }}
            <template #icon="props">
              <div class="choose-icon" :class="{ selected: props.checked }">
                {{ String.fromCharCode(65 + Number(index)) }}
              </div>
            </template>
          </van-checkbox>
        </van-checkbox-group>
      </div>
    </div>
    <!-- 展示答题后选择内容 -->
    <div v-else-if="false">
      <div>
        <div
          v-for="(item, index) in currentSubject.optsBack"
          :key="Number(index)"
          class="answer-box"
        >
          <div
            class="choose-icon"
            :class="{ iconTrue: item.status % 2 !== 0 }"
            v-if="item.status < 2"
          >
            {{ String.fromCharCode(65 + Number(index)) }}
          </div>
          <m-icon
            v-else-if="item.status == 3"
            type="dui"
            size="30px"
            style="margin-left: 5px"
          />
          <m-icon
            v-else-if="item.status == 2"
            size="30px"
            type="cuo"
            style="margin-left: 5px"
          />
          <span
            class="answer-text"
            :class="{ true: item.status % 2 !== 0, false: item.status == 2 }"
          >
            {{ item.opt }}
          </span>
        </div>
      </div>
      <div class="checkbox-answer">
        答案: {{ currentSubject.answer.toString() }}
      </div>
    </div>
    <!-- 展示答题后选择内容end -->
  </div>
  <!-- 选择内容End -->
  <!-- 分割线 -->
  <van-divider />
  <!-- 功能选择列表 -->
  <div class="function-list">
    <div class="function-item">
      <m-icon type="shoucanghui" size="25px" />
      <span>收藏</span>
    </div>
    <!-- <div class="function-item" @click="answerAudioPlay">
      <m-icon type="a-dtda" size="25px" />
      <span>读题+答案</span>
    </div> -->
    <div class="function-item" @click="subjectAudioPlay('读题')">
      <m-icon type="duti" size="25px" />
      <span>读题</span>
    </div>
    <!-- <div class="function-item" @click="currentAnswerIndexBack">
      <m-icon type="shangyiti" size="25px" />
      <span>上一题</span>
    </div>
    <div class="function-item" @click="skillsShow = true">
      <m-icon type="zongtishu" size="25px" />
      <span>1/100</span>
    </div>
    <div class="function-item" @click="currentAnswerIndexGo">
      <m-icon type="xiayiti" size="25px" />
      <span>下一题</span>
    </div> -->
  </div>
  <!-- 功能选择列表End -->
  <!-- 题目模块end -->
  <!-- 设置操作栏 -->
  <van-popup v-model:show="setShow" position="bottom">
    <van-cell center title="答题音效提示">
      <template #right-icon>
        <van-switch v-model="isSoundEffect" size="24" />
      </template>
    </van-cell>
  </van-popup>
  <!-- 设置操作栏end -->
  <!-- 底部操作栏 -->
  <!-- <div style="height: 40px"></div> -->
  <!-- <m-button class="submitButton" text="交卷" /> -->
  <van-tabbar placeholder route>
    <van-tabbar-item @click="lastSubject"
      >上一题
      <template #icon>
        <m-icon type="shangyiti" />
      </template>
    </van-tabbar-item>
    <van-tabbar-item
      >{{ currentSubjectIndex + 1 }}/{{ subjectTotal }}
      <template #icon>
        <m-icon type="zongtishu" />
      </template>
    </van-tabbar-item>
    <van-tabbar-item @click="gotoTest"
      >交卷
      <template #icon>
        <m-icon type="jiaojuan" />
      </template>
    </van-tabbar-item>
    <van-tabbar-item @click="nextSubject"
      >下一题
      <template #icon>
        <m-icon type="xiayiti" />
      </template>
    </van-tabbar-item>
  </van-tabbar>
  <!-- 底部操作栏end -->
</template>

<script lang="ts" setup>
import { useRoute, useRouter } from "vue-router";
import { ref, defineEmits } from "vue";
import { Dialog } from "vant";
import { useSubjectShowLogic, useTopicMode, useAudioSet } from "./hooks";
const router = useRouter();
const route = useRoute();
const onClickLeft = () => {
  router.back();
};

//父级传参
const emits = defineEmits(["next"]);
const gotoTest = () => {
  Dialog.confirm({
    message: "确认交卷吗?",
  })
    .then(() => {
      emits("next");
    })
    .catch(() => {});
};

//题目展示逻辑
const {
  currentSubject,
  currentSubjectIndex,
  subjectTotal,
  nextSubject,
  lastSubject,
  trueNum,
  falseNum,
  isJumpNext,
  userAnswerChange,
} = useSubjectShowLogic();

//设置操作栏
const setShow = ref(false); //显示设置栏
const isSoundEffect = ref(true); //答题音效
//设置操作栏end

//音频模块
const { subjectAudioPlay } = useAudioSet(currentSubject);
//音频模块end
</script>

<style lang="scss" scoped>
.dowm-box {
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 10px;
  position: sticky;
  top: 45px;
  font-size: 30px;
  background-color: #ffffff;
}
.parsing-img {
  width: 100%;
  margin-top: 10px;
}
.function-list {
  width: 100%;
  font-size: 13px;
  display: flex;
  justify-content: space-around;
  flex-wrap: wrap;
  padding: 15px;
  box-sizing: border-box;
  .function-item {
    margin-bottom: 20px;
    width: 30%;
    display: flex;
    flex-direction: column;
    align-items: center;
    font-size: 13px;
    font-weight: 400;
    color: #8a9099;
    span {
      margin-top: 5px;
    }
  }
}
.answerType {
  width: 100%;
  font-size: 13px;
  display: flex;
  justify-content: space-around;
  padding: 15px;
  box-sizing: border-box;
  span {
    border-radius: 20px;
    padding: 3px 10px;
    background-color: #b8c0cc;
    color: #ffffff;
  }
  .selected {
    background-color: #498ef5;
  }
}
.divider {
  width: 100%;
  height: 10px;
  background-color: #f2f3f5;
}
.problem-box {
  font-size: 17px;
  padding: 15px;
  .problem {
    .type {
      width: 47px;
      height: 24px;
      background: #498ef5;
      border-radius: 10px 10px 0px 10px;
      font-size: 11px;
      padding: 2px 7px;
      margin-right: 5px;
    }
    .text {
      font-family: PingFang SC;
      font-weight: 400;
      color: #0a1a33;
      letter-spacing: 0.3px;
    }
    .img {
      width: 100%;
      margin-top: 10px;
    }
  }
  .answer {
    margin-top: 25px;
  }
  .answer-box {
    display: flex;
    margin-top: 25px;
    align-items: center;
    .iconTrue {
      background-color: #01c18d;
    }
    .answer-text {
      margin-left: 10px;
    }
    .true {
      color: #01c18d;
    }
    .false {
      color: #ff4d53;
    }
  }

  .choose-icon {
    width: 30px;
    height: 30px;
    border-radius: 50%;
    display: flex;
    justify-content: center;
    align-items: center;
    font-size: 17px;
    box-shadow: 0px 2px 6px rgba(0, 0, 0, 0.16);
    box-sizing: border-box;
    margin-left: 5px;
    margin-top: 1px;
  }
  .selected {
    background-color: #498ef5;
  }
  .checkbox-btn {
    width: 266px;
    height: 40px;
    margin: auto;
    margin-top: 25px;
    left: 50%;
    transform: translateX(-50%);
  }
  .checkbox-answer {
    padding: 8px 10px;
    background-color: #f2f3f5;
    margin-top: 25px;
  }
}
.skills-box {
  display: flex;
  align-items: center;
  justify-content: center;
  height: 100%;
  .skills {
    width: 290px;
    background: #ffffff;
    box-shadow: 0px 0px 8px rgba(124, 129, 136, 0.16);
    border-radius: 10px;
    display: flex;
    flex-direction: column;
    align-items: center;
    padding: 20px 16px;
    box-sizing: border-box;
    .title {
      font-size: 15px;
      font-family: PingFang SC;
      font-weight: bold;
      line-height: 21px;
      color: #0a1a33;
    }
    .img {
      width: 258px;
      height: 129px;
      border: 1px solid #e8e8e8;
      margin-top: 16px;
    }
    .divider {
      margin-top: 20px;
      color: #0a1a33;
      background: #ffffff;
    }
    .text {
      font-size: 13px;
      font-family: PingFang SC;
      font-weight: 400;
      line-height: 19px;
      color: #5c6066;
      margin-top: 10px;
    }
    .btn {
      width: 100%;
      display: flex;
      justify-content: space-between;
      padding: 0 40px;
      box-sizing: border-box;
      margin-top: 20px;
      span {
        width: 76px;
        height: 30px;
        border-radius: 15px;
        font-size: 13px;
        display: flex;
        justify-content: center;
        align-items: center;
        &:active {
          background-color: #afaaaa;
          filter: brightness(50%);
        }
        &:nth-of-type(1) {
          border: 1px solid #707070;
          color: #5c6066;
        }
        &:nth-of-type(2) {
          background: #498ef5;
          border: 1px solid #498ef5;
          color: #ffffff;
        }
      }
    }
  }
}

.submitButton {
  background-color: #498ef5;
  position: fixed;
  left: 50%;
  transform: translateX(-50%);
  bottom: 0;
  width: 80%;
  color: #ffffff;
  font-size: 16px;
}
</style>
