From c7735db135f9c3c99224d8b5d2157926efde0977 Mon Sep 17 00:00:00 2001
From: Administrator <admin>
Date: Mon, 09 May 2022 09:56:10 +0800
Subject: [PATCH] 登录用户名提示修改为姓名
---
src/views/startexam/index.vue | 492 ++++++++++++++++++++++++++++++++++++++++++-----------
1 files changed, 386 insertions(+), 106 deletions(-)
diff --git a/src/views/startexam/index.vue b/src/views/startexam/index.vue
index cb39537..449d999 100644
--- a/src/views/startexam/index.vue
+++ b/src/views/startexam/index.vue
@@ -39,13 +39,13 @@
>答题卡</el-button
>
</div>
- <el-button
+ <!-- <el-button
type="success"
icon="el-icon-date"
@click="submitExam"
v-bind:disabled="disableSubmit"
>提交</el-button
- >
+ > -->
</div>
</el-col>
<el-col :span="18">
@@ -55,44 +55,58 @@
subjectIds.length
}}题,合计100分)
</div>
- <!-- 题目内容 -->
- <choices ref="choices" v-show="this.query.type === 0" />
+ <div class="subject_main">
+ <!-- 题目内容 -->
+ <choices ref="choices" v-show="this.query.type === 0" />
- <multiple-choices
- ref="multipleChoices"
- v-show="this.query.type === 1"
- />
+ <multiple-choices
+ ref="multipleChoices"
+ v-show="this.query.type === 1"
+ />
- <judgement ref="judgement" v-show="this.query.type === 2" />
+ <judgement ref="judgement" v-show="this.query.type === 2" />
- <practical-operation
- ref="practicalOperation"
- v-show="this.query.type === 3"
- />
+ <practical-operation
+ ref="practicalOperation"
+ v-show="this.query.type === 3"
+ />
- <short-answer
- ref="shortAnswer"
- v-show="this.query.type === 4"
- />
+ <short-answer
+ ref="shortAnswer"
+ v-show="this.query.type === 4"
+ />
- <div class="subject-buttons" v-if="query.subjectId !== ''">
- <!-- <el-button plain @click="last" :loading="loadingLast"
+ <div class="subject-buttons" v-if="query.subjectId !== ''">
+ <!-- <el-button plain @click="last" :loading="loadingLast"
>上一题</el-button
> -->
- <el-button
- @click="next"
- class="buttons"
- :loading="loadingNext"
- type="primary"
- >下一题</el-button
- >
- <el-button
+ <el-button
+ @click="next"
+ class="buttons"
+ :loading="loadingNext"
+ type="primary"
+ >下一题</el-button
+ >
+ <!-- <el-button
+ :disabled="timesIT"
type="success"
- style="display: none"
@click="submitExam"
- v-bind:disabled="disableSubmit"
- >提交</el-button
- >
+ :title="
+ timesIT
+ ? '根据国家考试要求,30分钟内不可提交! 剩(' +
+ timesITValue +
+ ')分钟'
+ : '点击完成考试'
+ "
+ >完成考试 {{ time }}</el-button
+ > -->
+ <el-button
+ type="success"
+ @click="submitExam"
+ :disabled="subjectIndex != 60"
+ >完成考试 {{ time }}
+ </el-button>
+ </div>
</div>
</div>
</el-col>
@@ -104,6 +118,7 @@
top="10vh"
:modal="false"
center
+ class="datika"
>
<div class="answer-card-title">
{{ exam.examinationName }}(共{{
@@ -127,6 +142,7 @@
:key="index"
> {{ index + 1 }} </el-button
>
+ <!-- @click="toSubject(value.everyID, value.type, index)" -->
</el-row>
</el-dialog>
</div>
@@ -139,7 +155,7 @@
import { mapState } from "vuex";
import CountDown from "vue2-countdown";
import { saveAndNext } from "@/api/exam/answer";
-import { getSubjectIds } from "@/api/exam/exam";
+import { getSubjectIds, getSubjectRefresh } from "@/api/exam/exam";
import { getCurrentTime } from "@/api/exam/examRecord";
import { getSubjectResultInfo } from "@/api/exam/subject";
@@ -148,7 +164,7 @@
messageSuccess,
messageFail,
messageWarn,
- isNotEmpty,
+ isNotEmpty
} from "@/util/util";
import Tinymce from "@/components/Tinymce";
import Choices from "@/components/Subjects/Choices";
@@ -168,7 +184,7 @@
Choices,
MultipleChoices,
PracticalOperation,
- Judgement,
+ Judgement
// ShortAnswer,
},
data() {
@@ -187,7 +203,7 @@
examRecordId: undefined,
subjectId: undefined,
userId: undefined,
- type: 0,
+ type: 0
},
subject: {},
answer: "",
@@ -214,17 +230,46 @@
remark: "全国计算机统考练习题10道",
- newRecord: false,
+ newRecord: false
},
firstFlag: true,
+ times: ["30", "00"],
+ timeOut: null,
+ timeOTiv: null,
+ timesIT: true,
+ timesITValue: 0,
+ first: true
};
},
computed: {
...mapState({
- userInfo: (state) => state.user.userInfo,
+ userInfo: state => state.user.userInfo,
+ scoreId: state =>
+ state.exam.scoreId
+ ? state.exam.scoreId
+ : window.localStorage.getItem("scoreId")
}),
+ time() {
+ var d = [+this.times[0], +this.times[1]];
+ }
},
created() {
+ 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;
if (isNotEmpty(examInfo)) {
@@ -244,45 +289,107 @@
// 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 () {
+ 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) {
+ //倒计时循环
+ let times = time * 60;
+ var setTime = function(time) {
+ let a, b, d;
+ a = parseInt(time / 60);
+ b = time - a * 60;
+ d = a + ":" + b;
+ return d;
+ };
+ if (this.timeOTiv == null) {
+ this.timeOTiv = setInterval(res => {
+ times--;
+ this.timesITValue = setTime(times);
+ }, 1000);
+ } else {
+ clearTimeout(this.timeOTiv);
+ this.timeOTiv = null;
+ this.timeOTiv = setInterval(res => {
+ times--;
+ this.timesITValue = setTime(times);
+ }, 1000);
+ }
+ //倒计时定时
+ if (this.timeOut == null) {
+ this.timeOut = setTimeout(res => {
+ this.timesIT = false;
+ this.timesITValue--;
+ }, time * 3600);
+ } else {
+ clearTimeout(this.timeOut);
+ this.timeOut = null;
+ this.timeOut = setTimeout(res => {
+ this.timesIT = false;
+ }, time * 3600);
+ }
+ },
validateExamTime() {
getCurrentTime()
- .then((response) => {
+ .then(response => {
+ // console.log(response, 7777);
const currentTime = moment(response.data.data);
if (currentTime.isAfter(this.exam.endTime)) {
messageWarn(this, "考试已结束");
} else if (currentTime.isBefore(this.exam.startTime)) {
messageWarn(this, "考试未开始");
} else {
- this.startExam();
- const current = currentTime.valueOf();
- this.currentTime = current;
- this.startTime = current;
- this.subjectStartTime = current;
- // this.endTime = moment(this.exam.endTime).valueOf()
- this.endTime = current + 60 * 60 * 1000;
- // this.endTime = current + 1 * 60 * 1000;
- this.disableSubmit = false;
+ //判断是否是答过题
+ this.startExam(currentTime);
+ //判断是否是答过题
+ if (this.first) {
+ const current = currentTime.valueOf();
+ // console.log(current, "首次");
+ this.currentTime = current;
+ this.startTime = current;
+ this.subjectStartTime = current;
+ // // this.endTime = moment(this.exam.endTime).valueOf()
+ this.endTime = current + 60 * 60 * 1000;
+ this.bottonControl(60);
+ }
+ // this.disableSubmit = false;
}
})
.catch(() => {
messageFail(this, "开始考试失败!15");
});
},
- startExam() {
- // 获取题目ID列表
- getSubjectIds()
- .then((subjectResponse) => {
- const subjectData = subjectResponse.data.data;
+ startExam(currentTime) {
+ var scoreId = window.localStorage.getItem("scoreId");
+ // console.log(scoreId, this.first, "scoreIdscoreIdscoreIdscoreId");
+ this.subjectIds = [];
+ // if (this.first) {
+ // const current = currentTime.valueOf();
+ // console.log(current, "首次");
+ // this.currentTime = current;
+ // this.startTime = current;
+ // this.subjectStartTime = current;
+ // // // this.endTime = moment(this.exam.endTime).valueOf()
+ // this.endTime = current + 60 * 60 * 1000;
+ // }
+ if (!this.first) {
+ getSubjectRefresh(scoreId).then(obj => {
+ const objs = obj.data.data;
+ // console.log(objs, "objobjobjobjobjobj");
+ const subjectData = objs.examSubjectChoicesVOSList;
if (subjectData.length > 0) {
+ //重载题目
for (let i = 0; i < subjectData.length; i++) {
this.subjectIds.push({
subjectId: 1,
@@ -294,6 +401,136 @@
score: subjectData[i].score,
color: "#fff",
fontColor: "#000",
+ title: subjectData[i].subjectName
+ });
+ }
+
+ //重载到当前题目
+ let nowObj = objs.examSubjectChoicesVO;
+ nowObj.answer = ""; //清除答案
+ // console.log(nowObj, "nowObj");
+ for (var i = 0; i < this.subjectIds.length; i++) {
+ if (nowObj.id == this.subjectIds[i].everyID) {
+ //定位显示题目
+ this.subjectIndex = i + 1;
+ //题目类型
+ this.query.type = parseInt(this.subjectIds[i].type);
+ // 题目id
+ this.query.subjectId = this.subjectIds[i].everyID;
+ this.setSubjectInfo(nowObj);
+ }
+ }
+ // 添加到答题卡
+ const anSwer = objs.examAnswerRecordList;
+ for (var i = 0; i < this.subjectIds.length; i++) {
+ for (var n = 0; n < anSwer.length; n++) {
+ // console.log(anSwer[i].subjectChoicesId);
+ if (anSwer[n].subjectChoicesId == this.subjectIds[i].everyID) {
+ if (anSwer[n].answerResult == 1) {
+ this.subjectIds[i].color = "#67C23A";
+ this.subjectIds[i].fontColor = "#fff";
+ }
+ if (anSwer[n].answerResult == 2) {
+ this.subjectIds[i].color = "red";
+ this.subjectIds[i].fontColor = "#fff";
+ }
+ var test = /,/g;
+ if (test.test(anSwer[n].answerOption)) {
+ let ans = anSwer[n].answerOption.split(","),
+ anw = [];
+ for (var k = 0; k < ans.length; k++) {
+ anw.push({
+ key: k + 1,
+ value: ans[k]
+ });
+ }
+ this.subjectIds[i].answer = anw;
+ } else {
+ this.subjectIds[i].answer = anSwer[n].answerOption;
+ }
+ // console.log(anSwer[n].answerOption, 1);
+ // console.log(this.subjectIds[i].answer, 2);
+ }
+ }
+ }
+ //适应时间
+ const datyTime = objs.examScore.examTime;
+ // console.log(objs, "datyTimedatyTimedatyTime");
+ 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;
+ };
+ var listTime = duibiTime(currentTime._i, datyTime);
+ const current = currentTime.valueOf();
+ this.currentTime = current;
+ this.startTime = current;
+ this.subjectStartTime = current;
+ // // this.endTime = moment(this.exam.endTime).valueOf()
+ if (listTime) {
+ this.endTime = current + listTime * 60 * 1000;
+ this.bottonControl(listTime - 30);
+ } else {
+ this.endTime = current + 0 * 60 * 1000;
+ this.bottonControl(0);
+ }
+ // console.log(datyTime, currentTime, "刷新");
+ }
+ });
+ // this.first = true;
+ return;
+ }
+ // console.log(this.subjectIds);
+ // 获取题目ID列表
+ // console.log("subjectResponsesubjectResponsesubjectResponse");
+ getSubjectIds(scoreId)
+ .then(subjectResponse => {
+ const subjectData = subjectResponse.data.data;
+ // console.log(
+ // subjectResponse,
+ // "subjectResponsesubjectResponsesubjectResponse"
+ // );
+ // console.log(subjectData, "subjectDatasubjectDatasubjectData");
+ if (subjectData.length > 0) {
+ for (let i = 0; i < subjectData.length; i++) {
+ this.subjectIds.push({
+ subjectId: 1,
+ everyID: subjectData[i].id,
+ type: subjectData[i].choicesType,
+ index: i + 1,
+ answered: false,
+ answer: "",
+ score: subjectData[i].score,
+ color: "#fff",
+ fontColor: "#000"
});
}
@@ -305,9 +542,9 @@
this.updateSubjectIndex();
// 获取当前题目信息
getSubjectResultInfo({
- id: this.subjectIds[0].everyID,
+ id: this.subjectIds[0].everyID
})
- .then((response) => {
+ .then(response => {
if (isNotEmpty(response.data.data)) {
response.data.data.answer = "";
this.setSubjectInfo(response.data.data);
@@ -322,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) {
@@ -357,8 +590,35 @@
for (let i = 0; i < this.subjectIds.length; i++) {
if (this.subjectIds[i].everyID == this.query.subjectId) {
if (this.getAnswer() == "") {
- messageSuccess(this, "请选择答案");
+ this.$message({
+ message: "请选择答案",
+ type: "warning"
+ });
return;
+ }
+ // if (this.getAnswer() == "") {
+ // this.$message({
+ // message: "请选择答案",
+ // type: "warning",
+ // });
+ // return;
+ // }
+ // console.log(this.getAnswer(), this.query.type);
+ if (this.query.type == 3) {
+ let goShiCao = true;
+ const answer = this.getAnswer();
+ for (let k in answer) {
+ if (answer[k].value == "") {
+ goShiCao = false;
+ }
+ }
+ if (!goShiCao) {
+ this.$message({
+ message: "实操题目请选择完整顺序!",
+ type: "warning"
+ });
+ return;
+ }
}
this.subjectIds[i].answer = this.getAnswer();
@@ -388,35 +648,34 @@
saveCurrentSubjectAndGetNextSubject(nextType, nextSubjectId, subjectIds) {
this.startLoading(nextType);
-
- console.log()
+ // console.log();
var answerData = this.getAnswer();
- var str = '';
+ var str = "";
if (Array.isArray(answerData)) {
answerData.forEach(item => {
- str += item.value + ','
- })
+ str += item.value + ",";
+ });
str = str.substr(0, str.length - 1);
- answerData = str
+ answerData = str;
}
-
var data = {
id: nextSubjectId,
preSubJectId: this.query.subjectId,
preResult: answerData,
+ scoreId: this.scoreId
};
getSubjectResultInfo(data)
- .then((response) => {
+ .then(response => {
if (response.data.data !== null) {
// 保存成功后更新答题卡状态
const subject = response.data.data;
-
+ // console.log(subject.answer, 123456);
//结果
this.result = response.data.data.result;
@@ -444,17 +703,20 @@
}
this.setSubjectInfo(subject);
+ console.log(subject);
+ this.$store.commit("setWindowSizeHeightAdd");
// store.dispatch('SetSubjectInfo', subject).then(() => { })
}
// 更新时间
- getCurrentTime().then((response) => {
+ getCurrentTime().then(response => {
this.subjectStartTime = moment(response.data.data);
});
this.endLoading(nextType);
})
- .catch((error) => {
+ .catch(error => {
console.log(error);
+ this.$store.commit("setWindowSizeHeightAdd");
messageFail(this, "获取题目失败");
this.endLoading(nextType);
});
@@ -464,10 +726,10 @@
this.startLoading(nextType);
var data = {
- id: nextSubjectId,
+ id: nextSubjectId
};
getSubjectResultInfo(data)
- .then((response) => {
+ .then(response => {
if (response.data.data !== null) {
// 保存成功后更新答题卡状态
const subject = response.data.data;
@@ -501,12 +763,12 @@
// store.dispatch('SetSubjectInfo', subject).then(() => { })
}
// 更新时间
- getCurrentTime().then((response) => {
+ getCurrentTime().then(response => {
this.subjectStartTime = moment(response.data.data);
});
this.endLoading(nextType);
})
- .catch((error) => {
+ .catch(error => {
console.log(error);
messageFail(this, "获取题目失败");
this.endLoading(nextType);
@@ -538,9 +800,9 @@
this.subjectIndex = index + 1;
this.firstFlag = true;
// 保存当前题目,同时加载下一题
- console.log(nextSubjectType.next,111);
- console.log(everyID,222);
- console.log(type,333);
+ // console.log(nextSubjectType.next, 111);
+ // console.log(everyID, 222);
+ // console.log(type, 333);
this.saveCurrentSubjectAndGetNextSubject(
nextSubjectType.next,
everyID,
@@ -551,6 +813,7 @@
},
// 提交
submitExam(val) {
+ // console.log(val);
var ind = this.subjectIndex;
if (this.firstFlag == false) {
@@ -573,7 +836,7 @@
this.$confirm("确定要提交吗?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
- type: "warning",
+ type: "warning"
})
.then(() => {
this.disableSubmit = true;
@@ -593,51 +856,67 @@
examTime: this.startTime,
papersId: this.$route.query.id,
examEndTime: this.getCurrentTimes(),
- examResultVOS: null,
+ examResultVOS: null
};
var arr = [];
- this.subjectIds.forEach((item) => {
- if (item.type == 3) {
+ console.log(this.subjectIds);
+ // debugger;
+ console.log(this.subjectIds.length, 111);
+ for (var i = 0; i < this.subjectIds.length; i++) {
+ let item = this.subjectIds[i];
+ // console.log(item.answer, i);
+ if (item.type == 3 || item.type == 1) {
var str = "";
-
if (item.answer.length > 0) {
- item.answer.forEach((it) => {
- if (it.value != "") {
- str += it.value + ",";
- }
- });
+ //如果是数组
+ if (item.answer instanceof Array) {
+ item.answer.forEach(it => {
+ if (it.value != "") {
+ str += it.value + ",";
+ }
+ });
- var a = str.substr(0, str.length - 1);
+ var a = str.substr(0, str.length - 1);
- arr.push({
- subjectChoicesId: item.everyID,
- value: a,
- grade: item.score,
- });
+ arr.push({
+ subjectChoicesId: item.everyID,
+ value: a,
+ grade: item.score
+ });
+ } else {
+ arr.push({
+ subjectChoicesId: item.everyID,
+ value: item.answer,
+ grade: item.score
+ });
+ }
}
} else {
arr.push({
subjectChoicesId: item.everyID,
value: item.answer,
- grade: item.score,
+ grade: item.score
});
}
- });
-
+ }
+ // console.log(arr, 123);
+ // return;
obj.examResultVOS = arr;
+ // console.log(this.subjectIds, 456);
+ // console.log(obj.examResultVOS, 789);
saveAndNext(obj)
- .then((response) => {
+ .then(response => {
messageSuccess(this, "提交成功");
if (response) {
this.$store.commit("DEL_TAG", this.$store.state.tags.tag);
var obj = {
userId: this.userInfo.user_id,
- examId: this.$route.query.id,
+ examId: this.$route.query.id
};
this.$router.push({
path: `/singleperformance/index`,
- query: obj,
+ query: obj
});
}
})
@@ -760,7 +1039,7 @@
},
setSubjectInfo(subject) {
const ref = this.getSubjectRef();
-
+ // console.log(subject, "subject");
if (isNotEmpty(ref)) {
try {
ref.setSubjectInfo(
@@ -772,8 +1051,8 @@
console.error(error);
}
}
- },
- },
+ }
+ }
};
</script>
@@ -783,8 +1062,9 @@
$fontSize2: 20px;
$fontSize3: 40px;
.subject-box {
- margin-top: 50px;
+ margin-top: 25px;
margin-left: 20px;
+ height: 100%;
}
.subject-box-card {
font-size: 28px;
--
Gitblit v1.9.3