ZhangXianQiang
2024-07-01 c2ca81f5bff6642e3728d60f6e7a836e447de6b5
src/views/exam/index.vue
@@ -40,7 +40,7 @@
              </div>
              <div class="submit-wrapper">
                <el-button type="primary" class="submit-button" @click="submitExam">提交试卷</el-button>
                <el-button type="primary" class="submit-button" @click="submitExamHandle">提交试卷</el-button>
              </div>
            </div>
@@ -51,7 +51,7 @@
            <div class="wrapper h-full flex flex-col">
              <div class="title-wrapper w-full flex mb-5">
                <div class="title text-xl font-semibold ">{{ examType[currentType] }} ({{
                  examStore.getActiveQuestion.score }}分)
                  examStore.getActiveQuestion.questionScore }}分)
                </div>
              </div>
@@ -113,16 +113,13 @@
    </el-dialog>
    <!-- 考试时间弹窗 -->
    <el-dialog
    v-model="timeDialog"
    align-center width="500"
    :close-on-click-modal="false"
    :close-on-press-escape="false"
    :show-close="false"
    >
    <el-dialog v-model="timeDialog" align-center width="500" :close-on-click-modal="false"
      :close-on-press-escape="false" :show-close="false">
      <div class="dialog-container flex flex-col items-center">
        <div class="icon-container">
          <el-icon :size="50" color="#3680fa"><Timer /></el-icon>
          <el-icon :size="50" color="#3680fa">
            <Timer />
          </el-icon>
        </div>
        <div class="dialog-info">
          考试结束,系统自动收卷中.......
@@ -135,7 +132,7 @@
<script setup>
import { ref, watchEffect } from 'vue';
import { storeToRefs } from 'pinia';
import { Close,Timer } from '@element-plus/icons-vue';
import { Close, Timer } from '@element-plus/icons-vue';
import AnswerTag from './components/answer-tag/index.vue';
import AnswerProgress from './components/answer-progress/index.vue';
import AnswerSheet from './components/answer-sheet/index.vue';
@@ -144,9 +141,16 @@
import AnswerSingle from './components/answer-main/answer-single/index.vue';
import AnswerMultiple from './components/answer-main/answer-multiple/index.vue';
import AnswerAudio from './components/answer-main/answer-audio/index.vue';
import AnswerFill from './components/answer-main/answer-fill/index.vue';
import AnswerDetermine from './components/answer-main/answer-determine/index.vue';
import AnswerShort from './components/answer-main/answer-short/index.vue';
import AnswerCount from './components/answer-main/answer-count/index.vue';
import { useExamStore } from '@/store/index.js';
import { useRouter } from 'vue-router';
import { submitExam } from '@/api/modules/exam.js';
const router = useRouter();
@@ -156,7 +160,11 @@
const typeComponent = {
  1: AnswerSingle,
  2: AnswerMultiple,
  3: AnswerAudio,
  3: AnswerDetermine,
  4: AnswerFill,
  5: AnswerShort,
  6: AnswerAudio,
  7: AnswerCount,
};
const quitDialog = ref(false);
@@ -220,7 +228,7 @@
};
// 交卷
const submitExam = () => {
const submitExamHandle = () => {
  submitDialog.value = true;
};
@@ -231,22 +239,34 @@
const resetAllDialog = () => {
  quitDialog.value = false;
  submitDialog.value = false;
}
};
// 时间结束
const timeOut = () => {
  resetAllDialog();
  timeDialog.value = true;
  const temp = {
    ...examInfo.value,
    titleList: examDetail.value
  };
  submitExam(temp).then(res => {
    returnBack();
  }).catch(() => {
    returnBack();
  });
};
const returnBack = () => {
  setTimeout(() => {
    router.back();
  },2000);
  }, 2000);
};
watchEffect(() => {
  let progress = 0;
  examDetail.value.forEach(item => {
    item.questionList.forEach(question => {
      if (question.correct) {
      if (question.answer || (Array.isArray(question.answerList) && question.answerList.length)) {
        progress += 1;
      }
    });
@@ -292,7 +312,7 @@
}
.answer-left {
  width: 340px;
  width: 370px;
}
.submit-button,