From eee0af098e5acf66d729fbeb0e440e96208053f8 Mon Sep 17 00:00:00 2001
From: 消逝 <1425768167@qq.com>
Date: 星期四, 11 七月 2024 13:46:31 +0800
Subject: [PATCH] 学生退出登录
---
src/views/exam/index.vue | 44 +++++++++++++++++++++++++++++++++++++-------
1 files changed, 37 insertions(+), 7 deletions(-)
diff --git a/src/views/exam/index.vue b/src/views/exam/index.vue
index 94232f8..2b3ea60 100644
--- a/src/views/exam/index.vue
+++ b/src/views/exam/index.vue
@@ -130,7 +130,7 @@
</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';
@@ -143,16 +143,22 @@
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 { 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 = {
@@ -160,24 +166,35 @@
2: AnswerMultiple,
3: AnswerDetermine,
4: AnswerFill,
- 6: AnswerAudio
+ 5: AnswerShort,
+ 6: AnswerAudio,
+ 7: AnswerCount,
+ 8: AnswerShort,
};
const quitDialog = ref(false);
const submitDialog = ref(false);
const timeDialog = ref(false);
+const { status, message, error, connect, disconnect, sendMessage } = useWebScoket({
+ url: 'wss://42.193.1.25: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) => {
@@ -213,7 +230,6 @@
};
-
// 閫�鍑鸿�冭瘯
const closeClick = () => {
quitDialog.value = true;
@@ -239,12 +255,15 @@
// 鏃堕棿缁撴潫
const timeOut = () => {
- resetAllDialog();
- timeDialog.value = true;
const temp = {
...examInfo.value,
titleList: examDetail.value
};
+ timeDialog.value = true;
+ resetAllDialog();
+
+ disconnect();
+
submitExam(temp).then(res => {
returnBack();
}).catch(() => {
@@ -268,6 +287,17 @@
});
});
examStore.setProgress(progress);
+});
+
+watch(() => message.value, (msg) => {
+ console.log(msg);
+});
+
+
+// -----------------------------------鐢熷懡鍛ㄦ湡
+onMounted(() => {
+ // 杩炴帴webscoket
+ connect();
});
</script>
@@ -331,4 +361,4 @@
background-color: rgba($color: #3680fa, $alpha: 0.2);
margin-bottom: 20px;
}
-</style>
\ No newline at end of file
+</style>
--
Gitblit v1.8.0