| | |
| | | </template> |
| | | |
| | | <script setup> |
| | | import { ref, watchEffect } from 'vue'; |
| | | import { ref, watchEffect, watch, onMounted } from 'vue'; |
| | | import { storeToRefs } from 'pinia'; |
| | | import { Close, Timer } from '@element-plus/icons-vue'; |
| | | import AnswerTag from './components/answer-tag/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 { useExamStore, useUserStore } from '@/store/index.js'; |
| | | import { useRouter } from 'vue-router'; |
| | | |
| | | import { submitExam } from '@/api/modules/exam.js'; |
| | | import useWebScoket from '@/hooks/useWebScoket.js'; |
| | | |
| | | |
| | | const router = useRouter(); |
| | | |
| | | const examStore = useExamStore(); |
| | | const userStore = useUserStore(); |
| | | |
| | | const { userInfo } = storeToRefs(userStore); |
| | | const { currentType, currentIndex, examDetail, examType, examInfo } = storeToRefs(examStore); |
| | | |
| | | const typeComponent = { |
| | |
| | | const submitDialog = ref(false); |
| | | const timeDialog = ref(false); |
| | | |
| | | const { status, message, error, connect, disconnect, sendMessage } = useWebScoket({ |
| | | url: 'ws://192.168.3.64:8000/websocket/' + userInfo.value.id, |
| | | heartBeatData: 'ping' |
| | | }); |
| | | |
| | | |
| | | // 上一题 |
| | | const prevQuestion = () => { |
| | | currentIndex.value--; |
| | | checkList(); |
| | | }; |
| | | |
| | | // 下一题 |
| | | const nextQuestion = () => { |
| | | currentIndex.value++; |
| | | checkList(); |
| | | }; |
| | | |
| | | // 查询题目 |
| | | const checkList = () => { |
| | | let tempIndex = 0; |
| | | const typeQuestion = examDetail.value.find((typeItem, index) => { |
| | |
| | | |
| | | }; |
| | | |
| | | |
| | | // 退出考试 |
| | | const closeClick = () => { |
| | | quitDialog.value = true; |
| | |
| | | |
| | | // 时间结束 |
| | | const timeOut = () => { |
| | | resetAllDialog(); |
| | | timeDialog.value = true; |
| | | const temp = { |
| | | ...examInfo.value, |
| | | titleList: examDetail.value |
| | | }; |
| | | timeDialog.value = true; |
| | | resetAllDialog(); |
| | | |
| | | disconnect(); |
| | | |
| | | submitExam(temp).then(res => { |
| | | returnBack(); |
| | | }).catch(() => { |
| | |
| | | }); |
| | | examStore.setProgress(progress); |
| | | }); |
| | | |
| | | watch(() => message.value, (msg) => { |
| | | console.log(msg); |
| | | }); |
| | | |
| | | |
| | | // -----------------------------------生命周期 |
| | | onMounted(() => { |
| | | // 连接webscoket |
| | | connect(); |
| | | }); |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |