From 8768efaf973cb6d59a15e8bc60b6af9e68a232c8 Mon Sep 17 00:00:00 2001
From: liuyg <376836862@qq.com>
Date: Mon, 13 Dec 2021 11:49:16 +0800
Subject: [PATCH] +加入退出后继续考试
---
src/store/modules/exam.js | 4
src/views/exam/startexam.vue | 266 +++++++++++++++++++++++++++++++++++++------
src/views/qiandao/index.vue | 2
src/api/examapi/examination.js | 10 +
src/views/startexam/index.vue | 35 +++--
5 files changed, 261 insertions(+), 56 deletions(-)
diff --git a/src/api/examapi/examination.js b/src/api/examapi/examination.js
index b6df4fc..d5ee7bd 100644
--- a/src/api/examapi/examination.js
+++ b/src/api/examapi/examination.js
@@ -56,3 +56,13 @@
method: 'get',
})
}
+//首页到时间计算成绩
+export const calculations = (id) => {
+ return request({
+ url: '/api/examScore/getExamScore/',
+ method: 'get',
+ params: {
+ id
+ }
+ })
+}
diff --git a/src/store/modules/exam.js b/src/store/modules/exam.js
index e88579f..541d81c 100644
--- a/src/store/modules/exam.js
+++ b/src/store/modules/exam.js
@@ -19,7 +19,9 @@
incorrectRecord: getStore({
name: 'incorrectRecord'
}) || {},
- examUserData: {},
+ examUserData: getStore({
+ name: 'useInfo'
+ }) || {},
// 签到
scoreId: '',
isClears: false,
diff --git a/src/views/exam/startexam.vue b/src/views/exam/startexam.vue
index 23803fa..825dc53 100644
--- a/src/views/exam/startexam.vue
+++ b/src/views/exam/startexam.vue
@@ -2,7 +2,7 @@
* @Author: Morpheus
* @Date: 2021-07-31 16:31:54
* @Last Modified by: liu
- * @Last Modified time: 2021-11-22 11:59:02
+ * @Last Modified time: 2021-12-13 11:48:44
* menu-name 考试管理
*/
<template>
@@ -29,10 +29,32 @@
<span class="s_m_v_title">{{ item.title }}</span>
<span>{{ item.value }}</span>
</div>
- <div>
- <el-button type="primary" round @click="startExam"
- >开始考试</el-button
- >
+ <div class="startButs">
+ <el-button :type="option.data[0].color" round @click="startExam">{{
+ option.data[0].subtext
+ }}</el-button>
+ <div class="time-remain startButsdown">
+ <div class="time-remain_title" v-show="option.data[0].isExam == 3">
+ 剩余时间 :
+ </div>
+
+ <div class="time" v-show="option.data[0].isExam == 3">
+ <count-down
+ v-on:start_callback="countDownS_c(1)"
+ v-on:end_callback="countDownE_c(1)"
+ :current-time="currentTime"
+ :start-time="startTime"
+ :end-time="endTime"
+ :tip-text="'距离考试开始'"
+ :tip-text-end="'距离考试结束'"
+ :end-text="'考试结束'"
+ :hourTxt="':'"
+ :minutesTxt="':'"
+ :secondsTxt="''"
+ >
+ </count-down>
+ </div>
+ </div>
</div>
</div>
<div class="s_m_value" v-else>没有找到相应的考试信息</div>
@@ -42,12 +64,33 @@
<script>
+import CountDown from "vue2-countdown";
+import { getCurrentTime } from "@/api/exam/examRecord";
import { mapState } from "vuex";
-import { getExamDetail, getNowTime } from "@/api/examapi/examination";
+import {
+ getExamDetail,
+ getNowTime,
+ calculations,
+} from "@/api/examapi/examination";
import { updateApplyStatus } from "@/api/examapi/applyexam";
+import moment from "moment";
+import {
+ messageSuccess,
+ messageFail,
+ messageWarn,
+ isNotEmpty,
+} from "@/util/util";
export default {
+ components: {
+ CountDown,
+ },
data() {
return {
+ //继续考试时间
+ currentTime: 0,
+ startTime: 0,
+ endTime: 0,
+ //继续考试时间
resData: null,
sex: "",
pageDisable: false,
@@ -73,6 +116,18 @@
window.startExam = this.startExam;
},
methods: {
+ //继续考试时间
+ countDownS_c: function () {
+ // console.log(12112);
+ messageSuccess(this, "请继续考试");
+ // this.startTime = this.getCurrentTimes();
+ },
+ countDownE_c: function () {
+ messageWarn(this, "考试结束123");
+ this.overExam();
+ // this.disableSubmit = true;
+ // this.submitExam("over");
+ },
//退出登录
handleLogout() {
this.$confirm("是否退出系统, 是否继续?", "提示", {
@@ -87,6 +142,15 @@
},
//开始考试跳转
startExam() {
+ var that = this;
+ if (that.option.data[0].isExam == 3) {
+ // console.log(that.resData);
+ that.$router.push({
+ path: `/startexam/${that.resData.scoreId}`,
+ query: that.resData,
+ });
+ return;
+ }
//判断是否到了考试时间
if (this.isTime == 3) {
this.$message({
@@ -103,7 +167,7 @@
});
return;
}
- var that = this;
+
//去修改考试状态
var data = {
id: that.resData.applyId,
@@ -124,7 +188,7 @@
updateApplyStatus(data).then((res) => {
that.resData["examScoreId"] = res.data.id;
this.$store.commit("SetScoreId", res.data.id);
- console.log(res.data.id, "ididididiidididididid");
+ // console.log(res.data.id, "ididididiidididididid");
window.name = "";
this.$notify({
message:
@@ -142,6 +206,77 @@
},
getUserInfoBYExam() {
var that = this;
+ let setData = ({ color, subtext, isExam }) => {
+ that.option.data = [
+ {
+ title: that.resData.examName,
+ color: color,
+ isExam: isExam,
+ subtext: subtext,
+ click: function () {
+ window.parent.startExam();
+ },
+ list: [
+ {
+ title: "姓名: ",
+ value: that.resData.realName,
+ check: true,
+ },
+ {
+ title: "准考证号: ",
+ value: that.resData.candidateNo,
+ check: true,
+ },
+ {
+ title: "身份证号: ",
+ value: that.resData.idCardNo,
+ check: true,
+ },
+ {
+ title: "性别: ",
+ value: that.sex,
+ check: true,
+ },
+ ],
+ },
+ ];
+ that.$store.commit("SetexamUserData", that.option.data[0]);
+ };
+ var duibiTime = function (newTime, oldTime) {
+ var newYear = newTime.split(" ")[0],
+ newDat = newTime.split(" ")[1],
+ oldYear = oldTime.split(" ")[0],
+ oldDat = oldTime.split(" ")[1];
+ if (newYear !== oldYear) {
+ return false;
+ } else {
+ let newD = {
+ s: +newDat.split(":")[0],
+ f: +newDat.split(":")[1],
+ m: +newDat.split(":")[2],
+ };
+ let oldD = {
+ s: +oldDat.split(":")[0],
+ f: +oldDat.split(":")[1],
+ m: +oldDat.split(":")[2],
+ };
+ if (newD.s - oldD.s > 1) {
+ return false;
+ } else if (newD.s - oldD.s == 1) {
+ if (newD.f < oldD.f) {
+ return oldD.f - newD.f;
+ } else {
+ return false;
+ }
+ } else if (newD.s == oldD.s) {
+ return 60 - (newD.f - oldD.f);
+ }
+ // return [newD, oldD];
+ return false;
+ }
+ // return false;
+ };
+
getExamDetail(this.userInfo.user_id).then(
(res) => {
that.resData = res.data.data[0];
@@ -174,39 +309,35 @@
if (data.sex == 2) {
that.sex = "女";
}
- that.option.data = [
- {
- title: that.resData.examName,
- color: "#ffa820",
- subtext: "开始考试",
- click: function () {
- window.parent.startExam();
- },
- list: [
- {
- title: "姓名: ",
- value: that.resData.realName,
- check: true,
- },
- {
- title: "准考证号: ",
- value: that.resData.candidateNo,
- check: true,
- },
- {
- title: "身份证号: ",
- value: that.resData.idCardNo,
- check: true,
- },
- {
- title: "性别: ",
- value: that.sex,
- check: true,
- },
- ],
- },
- ];
- that.$store.commit("SetexamUserData", that.option.data[0]);
+ }
+ // console.log(data, 123456);
+ if (data.isExam == 3) {
+ setData({ color: "success", subtext: "继续考试", isExam: 3 });
+ const currentTimeSTART = moment(data.examStartTime);
+ const currentSTART = currentTimeSTART.valueOf();
+ getCurrentTime().then((response) => {
+ that.currentTime = currentSTART;
+ that.startTime = currentSTART;
+ var listTime = duibiTime(
+ response.data.data,
+ currentTimeSTART._i
+ );
+ // console.log(listTime, 4564444);
+ if (listTime) {
+ that.endTime = currentSTART + listTime * 60 * 1000;
+ } else {
+ that.overExam();
+ }
+ return;
+ });
+
+ // if (FZtime(data.examStartTime) > 60) {
+ // that.overExam();
+ // }
+ // that.endTime =
+ // current + (60 - FZtime(data.examStartTime)) * 60 * 1000;
+ } else {
+ setData({ color: "primary", subtext: "开始考试" });
}
});
},
@@ -216,10 +347,63 @@
}
);
},
+ overExam() {
+ let that = this;
+ let scoreId = window.localStorage.getItem("scoreId");
+ this.$alert("该考试已结束!", "提示", {
+ confirmButtonText: "确定",
+ callback: () => {
+ calculations(scoreId)
+ .then((response) => {
+ messageSuccess(that, "提交成功");
+ if (response) {
+ that.$store.commit("DEL_TAG", that.$store.state.tags.tag);
+ var obj = {
+ userId: that.userInfo.user_id,
+ examId: that.$route.query.id,
+ };
+ that.$router.push({
+ path: `/singleperformance/index`,
+ query: obj,
+ });
+ }
+ })
+ .catch(() => {
+ that.disableSubmit = false;
+ messageFail(that, "提交题目失败");
+ });
+ },
+ });
+ },
},
};
</script>
<style lang="scss">
+.startButs {
+ width: 100%;
+ display: flex;
+ align-items: center;
+ justify-content: space-around;
+}
+.startButsdown {
+ position: relative;
+ top: -25px;
+ left: 45px;
+}
+$fontSize3: 40px;
+$fontSize2: 20px;
+.time-remain_title {
+ font-size: $fontSize2;
+}
+.time-remain .time {
+ display: block;
+ font-size: $fontSize3;
+ line-height: $fontSize3;
+ color: #ff0000;
+ font-weight: 400;
+ position: relative;
+ // top: -20px;
+}
//最终
.startexam {
// width: 100%;
diff --git a/src/views/qiandao/index.vue b/src/views/qiandao/index.vue
index d05f1f0..af8de04 100644
--- a/src/views/qiandao/index.vue
+++ b/src/views/qiandao/index.vue
@@ -64,7 +64,7 @@
},
methods: {
handleClick(tab, event) {
- console.log(tab.name, 77777);
+ // console.log(tab.name, 77777);
},
logout() {
this.$confirm(this.$t("logoutTip"), this.$t("tip"), {
diff --git a/src/views/startexam/index.vue b/src/views/startexam/index.vue
index d4e2dbf..3ed2ac3 100644
--- a/src/views/startexam/index.vue
+++ b/src/views/startexam/index.vue
@@ -254,13 +254,20 @@
},
},
created() {
- if (window.name == "") {
- // console.log("首次被加载");
- window.name = "first"; // 在首次进入页面时我们可以给window.name设置一个固定值
- this.first = true;
- } else if (window.name == "first") {
- // console.log("页面被刷新");
+ var useInfo = this.$store.state.exam.examUserData;
+
+ if (useInfo.isExam == 3) {
+ window.name = "first";
this.first = false;
+ } else {
+ if (window.name == "") {
+ // console.log("首次被加载");
+ window.name = "first"; // 在首次进入页面时我们可以给window.name设置一个固定值
+ this.first = true;
+ } else if (window.name == "first") {
+ // console.log("页面被刷新");
+ this.first = false;
+ }
}
const examInfo = this.$route.params.id;
@@ -282,14 +289,19 @@
// this.exam.totalScore = this.$route.query.totalScore
// this.exam.status = this.$route.query.examStatus
// this.exam.remark = this.$route.query.remark
-
this.validateExamTime();
}
},
methods: {
countDownS_cb: function () {
+ // console.log(12456);
messageSuccess(this, "考试开始");
this.startTime = this.getCurrentTimes();
+ },
+ countDownE_cb: function () {
+ messageWarn(this, "考试结束");
+ // this.disableSubmit = true;
+ // this.submitExam("over");
},
bottonControl(time) {
//倒计时循环
@@ -331,6 +343,7 @@
validateExamTime() {
getCurrentTime()
.then((response) => {
+ // console.log(response, 7777);
const currentTime = moment(response.data.data);
if (currentTime.isAfter(this.exam.endTime)) {
messageWarn(this, "考试已结束");
@@ -442,6 +455,7 @@
}
//适应时间
const datyTime = objs.examScore.examTime;
+ // console.log(objs, "datyTimedatyTimedatyTime");
var duibiTime = function (newTime, oldTime) {
var newYear = newTime.split(" ")[0],
newDat = newTime.split(" ")[1],
@@ -476,7 +490,6 @@
// return false;
};
var listTime = duibiTime(currentTime._i, datyTime);
- // console.log(listTime, "listTimelistTimelistTime");
const current = currentTime.valueOf();
this.currentTime = current;
this.startTime = current;
@@ -546,11 +559,7 @@
messageFail(this, "开始考试失败!4646549888*8*");
});
},
- countDownE_cb: function () {
- messageWarn(this, "考试结束");
- // this.disableSubmit = true;
- this.submitExam("over");
- },
+
last() {
for (let i = 0; i < this.subjectIds.length; i++) {
if (this.subjectIds[i].everyID == this.query.subjectId) {
--
Gitblit v1.9.3