From a3cc0d240ee750fa23d6a7772346cc6bc1023bae Mon Sep 17 00:00:00 2001
From: 黄何裕 <1053952480@qq.com>
Date: 星期五, 12 七月 2024 11:51:55 +0800
Subject: [PATCH] 考试操作加时和交卷
---
src/views/exam/components/answer-time/index.vue | 28 ++++++++++++++++------------
src/views/train/data-list/index.vue | 6 +++---
src/views/exam/index.vue | 17 +++++++++++++----
3 files changed, 32 insertions(+), 19 deletions(-)
diff --git a/src/views/exam/components/answer-time/index.vue b/src/views/exam/components/answer-time/index.vue
index 9aa8742..67ac431 100644
--- a/src/views/exam/components/answer-time/index.vue
+++ b/src/views/exam/components/answer-time/index.vue
@@ -1,5 +1,7 @@
<template>
- <div class="time-container flex justify-center text-white items-center shadow-md">
+ <div
+ class="time-container flex justify-center text-white items-center shadow-md"
+ >
<el-icon class="mr-1 text-xl" size="24"><Timer /></el-icon>
<div class="label mr-1">鍓╀綑鏃堕棿:</div>
<el-countdown :value="time" @finish="timeFinish" />
@@ -7,23 +9,26 @@
</template>
<script setup>
-import {ref} from 'vue';
-import dayjs from 'dayjs';
-import { storeToRefs } from 'pinia';
-import { Timer } from '@element-plus/icons-vue';
-import { useExamStore } from '@/store/index.js';
+import { ref, defineExpose } from "vue";
+import dayjs from "dayjs";
+import { storeToRefs } from "pinia";
+import { Timer } from "@element-plus/icons-vue";
+import { useExamStore } from "@/store/index.js";
const examStore = useExamStore();
const { examInfo } = storeToRefs(examStore);
-const emit = defineEmits(['timeOut']);
+const emit = defineEmits(["timeOut"]);
const time = ref(dayjs().valueOf() + examInfo.value.suggestTime * 1000 * 60);
const timeFinish = () => {
- emit('timeOut');
-}
-
+ emit("timeOut");
+};
+const addTime = (data) => {
+ time.value = time.value + data * 1000;
+};
+defineExpose({ addTime });
</script>
<style lang="scss" scoped>
@@ -32,10 +37,9 @@
border-radius: 100px;
padding: 10px 0;
background-color: rgba($color: #86d7f7, $alpha: 0.3);
-
}
:deep(.el-statistic__number) {
color: #ffffff;
}
-</style>
\ No newline at end of file
+</style>
diff --git a/src/views/exam/index.vue b/src/views/exam/index.vue
index 2b3ea60..bd858ed 100644
--- a/src/views/exam/index.vue
+++ b/src/views/exam/index.vue
@@ -7,7 +7,7 @@
<div class="title-container text-3xl font-semibold text-white mr-8">
{{ examInfo.examName }}
</div>
- <AnswerTime @timeOut="timeOut"></AnswerTime>
+ <AnswerTime @timeOut="timeOut" ref="answerTime"></AnswerTime>
<div class="return-container grow flex justify-end">
<el-button type="danger" size="large" circle @click="closeClick">
@@ -176,8 +176,13 @@
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 { status, message, error, connect, disconnect, sendMessage } = useWebScoket({
- url: 'wss://42.193.1.25:8000/websocket/' + userInfo.value.id,
+ url: '//192.168.3.64:8000/websocket/' + userInfo.value.id,
heartBeatData: 'ping'
});
@@ -288,9 +293,13 @@
});
examStore.setProgress(progress);
});
-
+const answerTime = ref()
watch(() => message.value, (msg) => {
- console.log(msg);
+ if(msg.commend=="delayed"){
+ answerTime.value.addTime(msg.data.addTimeM)
+ }else if(msg.commend=="forceSubmit"){
+ confirmSubmit()
+ }
});
diff --git a/src/views/train/data-list/index.vue b/src/views/train/data-list/index.vue
index 0c53999..977a7bc 100644
--- a/src/views/train/data-list/index.vue
+++ b/src/views/train/data-list/index.vue
@@ -51,7 +51,7 @@
default: () => [],
},
});
-
+const userId = JSON.parse(localStorage.getItem('user')).userInfo.id
const itemClick = (item) => {
classMeet(item.id)
.then((res) => {
@@ -63,8 +63,8 @@
query: {
meetName: item.meetName,
id: item.id,
- userName: userInfo.value?.realName + "_" + item.id || "",
- userCode: userInfo.value?.phone + "_" + item.id || "",
+ userName: userInfo.value?.realName + "_" + userId || "",
+ userCode: userInfo.value?.phone + "_" + userId || "",
},
});
window.open(path.href, "_blank");
--
Gitblit v1.8.0