| | |
| | | <div class="exam-wrapper container mx-auto h-full flex flex-col"> |
| | | <div class="exam-header flex items-center mt-12 mb-10"> |
| | | <div class="title-container text-3xl font-semibold text-white mr-8"> |
| | | 测试测试测试 |
| | | {{ examInfo.examName }} |
| | | </div> |
| | | <AnswerTime></AnswerTime> |
| | | <AnswerTime @timeOut="timeOut"></AnswerTime> |
| | | |
| | | <div class="return-container grow flex justify-end"> |
| | | <el-button type="danger" size="large" circle @click="closeClick"> |
| | |
| | | <div class="answer-wrapper answer-right grow shadow-xl p-4"> |
| | | <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}}分)</div> |
| | | <div class="title text-xl font-semibold ">{{ examType[currentType] }} ({{ |
| | | examStore.getActiveQuestion.score }}分) |
| | | </div> |
| | | </div> |
| | | |
| | | <div class="main-wrapper w-full grow relative my-5"> |
| | |
| | | </div> |
| | | </template> |
| | | </el-dialog> |
| | | |
| | | <!-- 考试时间弹窗 --> |
| | | <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> |
| | | </div> |
| | | <div class="dialog-info"> |
| | | 考试时间到,系统自动收卷中....... |
| | | </div> |
| | | </div> |
| | | </el-dialog> |
| | | </div> |
| | | </template> |
| | | |
| | | <script setup> |
| | | import { ref, watchEffect } from 'vue'; |
| | | import { storeToRefs } from 'pinia'; |
| | | import { Close } 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'; |
| | |
| | | const router = useRouter(); |
| | | |
| | | const examStore = useExamStore(); |
| | | const { currentType, currentIndex, examDetail, examType } = storeToRefs(examStore); |
| | | const { currentType, currentIndex, examDetail, examType, examInfo } = storeToRefs(examStore); |
| | | |
| | | const typeComponent = { |
| | | 1: AnswerSingle, |
| | |
| | | |
| | | const quitDialog = ref(false); |
| | | const submitDialog = ref(false); |
| | | const timeDialog = ref(false); |
| | | |
| | | const prevQuestion = () => { |
| | | currentIndex.value--; |
| | |
| | | // 交卷 |
| | | const submitExam = () => { |
| | | submitDialog.value = true; |
| | | } |
| | | }; |
| | | |
| | | const confirmSubmit = () => { |
| | | submitDialog.value = false; |
| | | router.back(); |
| | | }; |
| | | |
| | | const resetAllDialog = () => { |
| | | quitDialog.value = false; |
| | | submitDialog.value = false; |
| | | } |
| | | |
| | | // 时间结束 |
| | | const timeOut = () => { |
| | | resetAllDialog(); |
| | | timeDialog.value = true; |
| | | setTimeout(() => { |
| | | router.back(); |
| | | },2000); |
| | | }; |
| | | |
| | | watchEffect(() => { |
| | | let progress = 0; |
| | |
| | | .tool-button { |
| | | margin: 0 20px; |
| | | } |
| | | |
| | | .icon-container { |
| | | width: 70px; |
| | | height: 70px; |
| | | border-radius: 50%; |
| | | display: flex; |
| | | justify-content: center; |
| | | align-items: center; |
| | | background-color: rgba($color: #3680fa, $alpha: 0.2); |
| | | margin-bottom: 20px; |
| | | } |
| | | </style> |