智慧保安考试系统
shuishen
2023-11-06 c2481e77ae13eb6db48847499381dde001a4921e
规则更改
3 files modified
685 ■■■■ changed files
.eslintrc.js 24 ●●●●● patch | view | raw | blame | history
src/views/singleperformance/index.vue 73 ●●●● patch | view | raw | blame | history
src/views/startexam/index.vue 588 ●●●● patch | view | raw | blame | history
.eslintrc.js
@@ -1,17 +1,25 @@
/*
 * @Author: shuishen 1109946754@qq.com
 * @Date: 2021-09-22 10:57:16
 * @LastEditors: shuishen 1109946754@qq.com
 * @LastEditTime: 2023-11-06 14:34:21
 * @FilePath: \zhba_exam\.eslintrc.js
 * @Description:
 *
 * Copyright (c) 2023 by shuishen, All Rights Reserved.
 */
module.exports = {
  root: true,
  env: {
    node: true
  },
  'extends': [
    'plugin:vue/essential',
    'eslint:recommended'
  ],
  extends: ["plugin:vue/essential", "eslint:recommended"],
  rules: {
    'no-console': process.env.NODE_ENV === 'production' ? 'error' : 'off',
    'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off'
    "no-console": process.env.NODE_ENV === "production" ? "error" : "off",
    "no-debugger": process.env.NODE_ENV === "production" ? "error" : "off",
    "no-unused-vars": "off"
  },
  parserOptions: {
    parser: 'babel-eslint'
    parser: "babel-eslint"
  }
}
};
src/views/singleperformance/index.vue
@@ -31,29 +31,19 @@
        <div>
          <span class="s_m_v_title" style="font-size: 24px">成绩 :</span>
          <span style="font-size: 24px; color: red">
            <span style="font-size: 32px">{{ score }}</span> &nbsp;分</span
          >
                        <span style="font-size: 32px">{{ score }}</span> &nbsp;分</span>
        </div>
        <div>
                <!-- <div>
          <el-button type="primary" round v-if="score <= 60" @click="reself"
            >重新考试</el-button
          >
        </div> -->
        </div>
      </div>
    </div>
    <el-dialog
      title="提示"
      :visible.sync="dialogVisible"
      width="90%"
      :modal-append-to-body="false"
    >
        <el-dialog title="提示" :visible.sync="dialogVisible" width="90%" :modal-append-to-body="false">
      <el-form ref="form" :model="form" label-width="400px">
        <el-form-item label="请联系管理员,输入重新考试密码:">
          <el-input
            v-model="paddWord"
            placeholder="请输入密码"
            show-password
          ></el-input>
                    <el-input v-model="paddWord" placeholder="请输入密码" show-password></el-input>
        </el-form-item>
      </el-form>
      <span slot="footer" class="dialog-footer">
@@ -65,8 +55,8 @@
</template>
<script>
import { getExamScore, reselfExamScore } from "@/api/exam/examscore";
import { mapState } from "vuex";
import { getExamScore, reselfExamScore } from "@/api/exam/examscore"
import { mapState } from "vuex"
export default {
  data() {
    return {
@@ -76,10 +66,10 @@
      UserData: window.localStorage.getItem("useInfo")
        ? JSON.parse(window.localStorage.getItem("useInfo"))
        : ""
    };
        }
  },
  created() {
    console.log(this.UserData, "UserDataUserDataUserData");
        console.log(this.UserData, "UserDataUserDataUserData")
  },
  computed: {
    ...mapState({
@@ -92,8 +82,8 @@
  },
  mounted() {
    //获取考试成绩
    this.getExamScore();
    console.log(this.examUserData);
        this.getExamScore()
        console.log(this.examUserData)
  },
  methods: {
    //退出登录
@@ -104,26 +94,26 @@
        type: "warning"
      }).then(() => {
        this.$store.dispatch("LogOut").then(() => {
          this.$router.push({ path: "/login" });
        });
      });
                    this.$router.push({ path: "/login" })
                })
            })
    },
    getExamScore() {
      var data = {
        // userId: this.$route.query.userId,
        // examId: this.$route.query.examId,
        id: this.scoreId
      };
            }
      getExamScore(data).then(res => {
        if (res.data.data.theoryGrade != undefined) {
          this.score = res.data.data.theoryGrade;
                    this.score = res.data.data.theoryGrade
        }
        // console.log(this.score);
      });
            })
    },
    reself(val) {
      //重新考试
      console.log(this.scoreId);
            console.log(this.scoreId)
      // return;
      if (val == 1) {
        if (this.paddWord != "zhba123") {
@@ -132,34 +122,34 @@
            showClose: true,
            message: "密码错误!请联系管理员",
            type: "warning"
          });
          return;
                    })
                    return
        }
        reselfExamScore(this.scoreId).then(res => {
          if ((res.data.success = true)) {
                    if ((res.data.success == true)) {
            this.$message({
              showClose: true,
              message: "重置成功,返回主页重新点击开始考试!",
              type: "success"
            });
            this.paddWord = "";
                        })
                        this.paddWord = ""
            this.$router.push({
              path: `/exam/startexam`
            });
                        })
          } else {
            this.$message({
              showClose: true,
              message: "重置错误!请联系管理员",
              type: "warning"
            });
                        })
          }
        });
                })
      } else {
        this.dialogVisible = true;
                this.dialogVisible = true
      }
    }
  }
};
}
</script>
<style lang="scss" scoped>
@@ -178,12 +168,14 @@
  align-items: center;
  justify-content: center;
  flex-direction: column;
  .startexam_heard {
    font-size: 34px;
    color: rgb(240, 114, 29);
    position: relative;
    top: -10%;
  }
  .startexam_main {
    width: 960px;
    height: 300px;
@@ -193,17 +185,20 @@
    align-items: center;
    justify-content: space-between;
    box-shadow: 0px 0px 5px 3px rgba($color: #797979, $alpha: 0.2);
    .s_m_img {
      width: 50%;
      height: 100%;
      display: flex;
      align-items: center;
      justify-content: center;
      img {
        width: 90%;
        height: 90%;
      }
    }
    .s_m_value {
      width: 50%;
      height: 100%;
@@ -211,10 +206,12 @@
      align-items: center;
      justify-content: center;
      flex-direction: column;
      div {
        width: 90%;
        height: 15%;
        font-size: 17px;
        .s_m_v_title {
          display: inline-block;
          width: 100px;
src/views/startexam/index.vue
@@ -11,9 +11,11 @@
                    <div class="time-remain_title">剩余时间 :</div>
                    <div class="time">
                      <count-down v-on:start_callback="countDownS_cb(1)" v-on:end_callback="countDownE_cb(1)"
                        :current-time="currentTime" :start-time="startTime" :end-time="endTime" :tip-text="'距离考试开始'"
                        :tip-text-end="'距离考试结束'" :end-text="'考试结束'" :hourTxt="':'" :minutesTxt="':'" :secondsTxt="''">
                                            <count-down v-on:start_callback="countDownS_cb(1)"
                                                v-on:end_callback="countDownE_cb(1)" :current-time="currentTime"
                                                :start-time="startTime" :end-time="endTime" :tip-text="'距离考试开始'"
                                                :tip-text-end="'距离考试结束'" :end-text="'考试结束'" :hourTxt="':'" :minutesTxt="':'"
                                                :secondsTxt="''">
                      </count-down>
                    </div>
                  </div>
@@ -53,10 +55,9 @@
                    <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"
                      >上一题</el-button
                    > -->
                      <el-button @click="next" class="buttons" :loading="loadingNext" type="primary">下一题</el-button>
                                            <el-button type="primary" @click="last" :loading="loadingLast">上一题</el-button>
                                            <el-button type="primary" @click="next" class="buttons"
                                                :loading="loadingNext">下一题</el-button>
                      <!-- <el-button
                      :disabled="timesIT"
                      type="success"
@@ -70,7 +71,8 @@
                      "
                      >完成考试 {{ time }}</el-button
                    > -->
                      <el-button type="success" @click="submitExam" :disabled="subjectIndex != 100">完成考试 {{ time }}
                                            <el-button type="success" @click="submitExam" :disabled="completeTest">完成考试 {{
                                                time }}
                      </el-button>
                    </div>
                  </div>
@@ -86,18 +88,17 @@
              </div>
              <div class="answer-card-split"></div>
              <el-row class="answer-card-content">
                <!-- <el-button
                  :class="{ answered: subjectIds[index].answered }"
                  circle
                  v-for="(value, index) in subjectIds"
                  :style="{ background: value.color }"
                  :key="index"
                  @click="toSubject(value.everyID, value.type, index)"
                  >&nbsp;{{ index + 1 }}&nbsp;</el-button> -->
                <el-button circle v-for="(value, index) in subjectIds"
                  :style="{ background: value.color, color: value.fontColor }" :key="index">&nbsp;{{ index + 1
                                <el-button :class="{ answered: subjectIds[index].answered }" circle
                                    v-for="(value, index) in subjectIds" :style="{ background: value.color }" :key="index"
                                    @click="toSubject(value.everyID, value.type, index)">&nbsp;{{ index + 1
                  }}&nbsp;</el-button>
                <!-- @click="toSubject(value.everyID, value.type, index)" -->
                                <!-- <el-button circle v-for="(value, index) in subjectIds"
                                    :style="{ background: value.color, color: value.fontColor }" :key="index">&nbsp;{{ index
                                        + 1
                                    }}&nbsp;</el-button> -->
              </el-row>
            </el-dialog>
          </div>
@@ -107,30 +108,30 @@
  </el-row>
</template>
<script>
import { mapState } from "vuex";
import CountDown from "vue2-countdown";
import { saveAndNext } from "@/api/exam/answer";
import { getSubjectIds, getSubjectRefresh } from "@/api/exam/exam";
import { getCurrentTime } from "@/api/exam/examRecord";
import { getSubjectResultInfo } from "@/api/exam/subject";
import { mapState } from "vuex"
import CountDown from "vue2-countdown"
import { saveAndNext } from "@/api/exam/answer"
import { getSubjectIds, getSubjectRefresh } from "@/api/exam/exam"
import { getCurrentTime } from "@/api/exam/examRecord"
import { getSubjectResultInfo } from "@/api/exam/subject"
import moment from "moment";
import moment from "moment"
import {
  messageSuccess,
  messageFail,
  messageWarn,
  isNotEmpty
} from "@/util/util";
import Tinymce from "@/components/Tinymce";
import Choices from "@/components/Subjects/Choices";
} from "@/util/util"
import Tinymce from "@/components/Tinymce"
import Choices from "@/components/Subjects/Choices"
import MultipleChoices from "@/components/Subjects/MultipleChoices";
import PracticalOperation from "@/components/Subjects/PracticalOperation";
import MultipleChoices from "@/components/Subjects/MultipleChoices"
import PracticalOperation from "@/components/Subjects/PracticalOperation"
// import ShortAnswer from '@/components/Subjects/ShortAnswer'
import Judgement from "@/components/Subjects/Judgement";
import Judgement from "@/components/Subjects/Judgement"
import { nextSubjectType } from "@/const/constant";
import { nextSubjectType } from "@/const/constant"
export default {
  components: {
@@ -194,7 +195,7 @@
      timesIT: true,
      timesITValue: 0,
      first: true
    };
        }
  },
  computed: {
    ...mapState({
@@ -204,136 +205,140 @@
          ? state.exam.scoreId
          : window.localStorage.getItem("scoreId")
    }),
    time() {
      var d = [+this.times[0], +this.times[1]];
        completeTest () {
            return this.subjectIds.find(item => item.answer == "")
    }
        // time() {
        //   var d = [+this.times[0], +this.times[1]];
        // }
  },
  created() {
    var useInfo = this.$store.state.exam.examUserData;
        var useInfo = this.$store.state.exam.examUserData
    var scoreType = this.$store.state.exam.scoreType
    if (useInfo.isExam == 3) {
      window.name = "first";
      this.first = false;
            window.name = "first"
            this.first = false
    } else {
      if (window.name == "") {
        // console.log("首次被加载");
        window.name = "first"; // 在首次进入页面时我们可以给window.name设置一个固定值
        this.first = true;
                window.name = "first" // 在首次进入页面时我们可以给window.name设置一个固定值
                this.first = true
      } else if (window.name == "first") {
        // console.log("页面被刷新");
        this.first = false;
                this.first = false
      }
    }
    if(scoreType==1){
      this.first = false;
            this.first = false
    }
    const examInfo = this.$route.params.id;
        const examInfo = this.$route.params.id
    if (isNotEmpty(examInfo)) {
      // 试卷ID
      this.query.examinationId = this.$route.params.id;
            this.query.examinationId = this.$route.params.id
      // 考场ID
      this.query.examRecordId = this.userInfo.user_id;
            this.query.examRecordId = this.userInfo.user_id
      this.query.userId = this.userInfo.user_id;
            this.query.userId = this.userInfo.user_id
      this.exam.id = this.userInfo.user_id + "" + this.$route.params.id;
            this.exam.id = this.userInfo.user_id + "" + this.$route.params.id
      this.exam.examinationName = this.$route.query.examName;
            this.exam.examinationName = this.$route.query.examName
      // this.exam.startTime = this.$route.query.startTime
      // this.exam.endTime = this.$route.query.endTime
      // this.exam.totalScore = this.$route.query.totalScore
      // this.exam.status = this.$route.query.examStatus
      // this.exam.remark = this.$route.query.remark
      this.validateExamTime();
            this.validateExamTime()
    }
  },
  methods: {
    countDownS_cb: function () {
      // console.log(12456);
      messageSuccess(this, "考试开始");
      this.startTime = this.getCurrentTimes();
            messageSuccess(this, "考试开始")
            this.startTime = this.getCurrentTimes()
    },
    countDownE_cb: function () {
      messageWarn(this, "考试结束");
            messageWarn(this, "考试结束")
      //   this.disableSubmit = true;
      this.submitExam("over");
            this.submitExam("over")
    },
    bottonControl(time) {
      //倒计时循环
      let times = time * 60;
            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;
      };
                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);
                    times--
                    this.timesITValue = setTime(times)
                }, 1000)
      } else {
        clearTimeout(this.timeOTiv);
        this.timeOTiv = null;
                clearTimeout(this.timeOTiv)
                this.timeOTiv = null
        this.timeOTiv = setInterval(res => {
          times--;
          this.timesITValue = setTime(times);
        }, 1000);
                    times--
                    this.timesITValue = setTime(times)
                }, 1000)
      }
      //倒计时定时
      if (this.timeOut == null) {
        this.timeOut = setTimeout(res => {
          this.timesIT = false;
          this.timesITValue--;
        }, time * 3600);
                    this.timesIT = false
                    this.timesITValue--
                }, time * 3600)
      } else {
        clearTimeout(this.timeOut);
        this.timeOut = null;
                clearTimeout(this.timeOut)
                this.timeOut = null
        this.timeOut = setTimeout(res => {
          this.timesIT = false;
        }, time * 3600);
                    this.timesIT = false
                }, time * 3600)
      }
    },
    validateExamTime() {
      getCurrentTime()
        .then(response => {
          const currentTime = moment(response.data.data);
                    const currentTime = moment(response.data.data)
          if (currentTime.isAfter(this.exam.endTime)) {
            messageWarn(this, "考试已结束");
                        messageWarn(this, "考试已结束")
          } else if (currentTime.isBefore(this.exam.startTime)) {
            messageWarn(this, "考试未开始");
                        messageWarn(this, "考试未开始")
          } else {
            //判断是否是答过题
            this.startExam(currentTime);
                        this.startExam(currentTime)
            //判断是否是答过题
            if (this.first) {
              const current = currentTime.valueOf();
                            const current = currentTime.valueOf()
              // console.log(current, "首次");
              this.currentTime = current;
              this.startTime = current;
              this.subjectStartTime = current;
                            this.currentTime = current
                            this.startTime = current
                            this.subjectStartTime = current
              //   // this.endTime = moment(this.exam.endTime).valueOf()
              this.endTime = current + 90 * 60 * 1000;
              this.bottonControl(90);
                            this.endTime = current + 90 * 60 * 1000
                            this.bottonControl(90)
            }
            // this.disableSubmit = false;
          }
        })
        .catch(() => {
          messageFail(this, "开始考试失败!15");
        });
                    messageFail(this, "开始考试失败!15")
                })
    },
    startExam(currentTime) {
      var scoreId = window.localStorage.getItem("scoreId");
      console.log(scoreId, this.first, "scoreIdscoreIdscoreIdscoreId");
      this.subjectIds = [];
            var scoreId = window.localStorage.getItem("scoreId")
            // console.log(scoreId, this.first, "scoreIdscoreIdscoreIdscoreId")
            this.subjectIds = []
      // if (this.first) {
      //   const current = currentTime.valueOf();
      //   console.log(current, "首次");
@@ -345,9 +350,9 @@
      // }
      if (!this.first) {
        getSubjectRefresh(scoreId).then(obj => {
          const objs = obj.data.data;
                    const objs = obj.data.data
          // console.log(objs, "objobjobjobjobjobj");
          const subjectData = objs.examSubjectChoicesVOSList;
                    const subjectData = objs.examSubjectChoicesVOSList
          if (subjectData.length > 0) {
            //重载题目
            for (let i = 0; i < subjectData.length; i++) {
@@ -362,51 +367,51 @@
                color: "#fff",
                fontColor: "#000",
                title: subjectData[i].subjectName
              });
                            })
            }
            //重载到当前题目
            let nowObj = objs.examSubjectChoicesVO;
            nowObj.answer = ""; //清除答案
                        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.subjectIndex = i + 1
                //题目类型
                this.query.type = parseInt(this.subjectIds[i].type);
                                this.query.type = parseInt(this.subjectIds[i].type)
                // 题目id
                this.query.subjectId = this.subjectIds[i].everyID;
                this.setSubjectInfo(nowObj);
                                this.query.subjectId = this.subjectIds[i].everyID
                                this.setSubjectInfo(nowObj)
              }
            }
            // 添加到答题卡
            const anSwer = objs.examAnswerRecordList;
            for (var i = 0; i < this.subjectIds.length; i++) {
                        const anSwer = objs.examAnswerRecordList
                        for (let 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";
                                        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";
                                        this.subjectIds[i].color = "red"
                                        this.subjectIds[i].fontColor = "#fff"
                  }
                  var test = /,/g;
                                    var test = /,/g
                  if (test.test(anSwer[n].answerOption)) {
                    let ans = anSwer[n].answerOption.split(","),
                      anw = [];
                                            anw = []
                    for (var k = 0; k < ans.length; k++) {
                      anw.push({
                        key: k + 1,
                        value: ans[k]
                      });
                                            })
                    }
                    this.subjectIds[i].answer = anw;
                                        this.subjectIds[i].answer = anw
                  } else {
                    this.subjectIds[i].answer = anSwer[n].answerOption;
                                        this.subjectIds[i].answer = anSwer[n].answerOption
                  }
                  // console.log(anSwer[n].answerOption, 1);
                  // console.log(this.subjectIds[i].answer, 2);
@@ -414,12 +419,12 @@
              }
            }
            //适应时间
            const datyTime = objs.examScore.examTime;
                        const datyTime = objs.examScore.examTime
            // console.log(objs, "datyTimedatyTimedatyTime");
            var duibiTime = function (newTime, oldTime) {
              var newtimes = new Date(newTime.replace(/-/g, '/')).getTime();
              var oldtimes = new Date(oldTime.replace(/-/g, '/')).getTime();
                            var newtimes = new Date(newTime.replace(/-/g, '/')).getTime()
                            var oldtimes = new Date(oldTime.replace(/-/g, '/')).getTime()
              var dif = Math.ceil((newtimes - oldtimes) / (1000 * 60))
              return 90 - dif
@@ -454,32 +459,32 @@
              //   return [newD, oldD];
              // }
              // return false;
            };
            var listTime = duibiTime(currentTime._i, datyTime);
            const current = currentTime.valueOf();
            this.currentTime = current;
            this.startTime = current;
            this.subjectStartTime = current;
                        }
                        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);
                            this.endTime = current + listTime * 60 * 1000
                            this.bottonControl(listTime - 30)
            } else {
              this.endTime = current + 0 * 60 * 1000;
              this.bottonControl(0);
                            this.endTime = current + 0 * 60 * 1000
                            this.bottonControl(0)
            }
            // console.log(datyTime, currentTime, "刷新");
          }
        });
                })
        // this.first = true;
        return;
                return
      }
      // console.log(this.subjectIds);
      // 获取题目ID列表
      // console.log("subjectResponsesubjectResponsesubjectResponse");
      getSubjectIds(scoreId)
        .then(subjectResponse => {
          const subjectData = subjectResponse.data.data;
                    const subjectData = subjectResponse.data.data
          // console.log(
          //   subjectResponse,
          //   "subjectResponsesubjectResponsesubjectResponse"
@@ -497,71 +502,64 @@
                score: subjectData[i].score,
                color: "#fff",
                fontColor: "#000"
              });
                            })
            }
            this.query.type = parseInt(this.subjectIds[0].type);
                        this.query.type = parseInt(this.subjectIds[0].type)
            // 准考证号
            this.query.subjectId = this.subjectIds[0].everyID;
                        this.query.subjectId = this.subjectIds[0].everyID
            this.updateSubjectIndex();
                        this.updateSubjectIndex()
            // 获取当前题目信息
            getSubjectResultInfo({
              id: this.subjectIds[0].everyID
            })
              .then(response => {
                if (isNotEmpty(response.data.data)) {
                  response.data.data.answer = "";
                  this.setSubjectInfo(response.data.data);
                                    response.data.data.answer = ""
                                    this.setSubjectInfo(response.data.data)
                }
              })
              .catch(() => {
                messageFail(this, "获取题目失败!");
              });
                                messageFail(this, "获取题目失败!")
                            })
          }
        })
        .catch(() => {
          messageFail(this, "开始考试失败!4646549888*8*");
        });
                    messageFail(this, "开始考试失败!4646549888*8*")
                })
    },
    last() {
      for (let i = 0; i < this.subjectIds.length; i++) {
        if (this.subjectIds[i].everyID == this.query.subjectId) {
          this.subjectIds[i].answer = this.getAnswer();
                    this.subjectIds[i].answer = this.getAnswer()
          this.markAnswered(this.subjectIds[i].answer, i);
                    this.markAnswered(this.subjectIds[i].answer, i)
          if (i === 0) {
            messageSuccess(this, "已经是第一题了");
            break;
                        messageSuccess(this, "已经是第一题了")
                        break
          }
          let { everyID, type, index } = this.subjectIds[--i];
                    let { everyID, type, index } = this.subjectIds[--i]
          this.subjectIndex = index;
                    this.subjectIndex = index
          this.saveCurrentSubjectAndGetNextSubjectLast(
            nextSubjectType.last,
            everyID,
            type
          );
                    )
          break;
                    break
        }
      }
    },
    next() {
      for (let i = 0; i < this.subjectIds.length; i++) {
        if (this.subjectIds[i].everyID == this.query.subjectId) {
          if (this.getAnswer() == "") {
            this.$message({
              message: "请选择答案",
              type: "warning"
            });
            return;
          }
          //  if (this.getAnswer() == "") {
          //   this.$message({
          //     message: "请选择答案",
@@ -571,63 +569,62 @@
          // }
          // console.log(this.getAnswer(), this.query.type);
          if (this.query.type == 3) {
            let goShiCao = true;
            const answer = this.getAnswer();
                        let goShiCao = true
                        const answer = this.getAnswer()
            for (let k in answer) {
              if (answer[k].value == "") {
                goShiCao = false;
                                goShiCao = false
              }
            }
            if (!goShiCao) {
              this.$message({
                message: "实操题目请选择完整顺序!",
                type: "warning"
              });
              return;
                            })
                            return
            }
          }
          this.subjectIds[i].answer = this.getAnswer();
                    this.subjectIds[i].answer = this.getAnswer()
          this.markAnswered(this.subjectIds[i].answer, i);
                    this.markAnswered(this.subjectIds[i].answer, i)
          if (i === this.subjectIds.length - 1) {
            messageSuccess(this, "已经是最后一题了");
            break;
                        messageSuccess(this, "已经是最后一题了")
                        break
          }
          let { everyID, index } = this.subjectIds[++i];
                    let { everyID, index } = this.subjectIds[++i]
          this.subjectIndex = index;
                    this.subjectIndex = index
          this.saveCurrentSubjectAndGetNextSubject(
            nextSubjectType.next,
            everyID,
            this.subjectIds[i - 1]
          );
                    )
          break;
                    break
        }
      }
    },
    // 保存当前题目,同时根据序号加载下一题
    saveCurrentSubjectAndGetNextSubject(nextType, nextSubjectId, subjectIds) {
      this.startLoading(nextType);
            // console.log(nextType, nextSubjectId, subjectIds, '2222222')
            this.startLoading(nextType)
      // console.log();
            var answerData = this.getAnswer()
      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);
                str = str.substr(0, str.length - 1)
        answerData = str;
                answerData = str
      }
      var data = {
@@ -635,73 +632,75 @@
        preSubJectId: this.query.subjectId,
        preResult: answerData,
        scoreId: this.scoreId
      };
            }
      getSubjectResultInfo(data)
        .then(response => {
          if (response.data.data !== null) {
            // 保存成功后更新答题卡状态
            const subject = response.data.data;
                        const subject = response.data.data
            // console.log(subject.answer, 123456);
            //结果
            this.result = response.data.data.result;
                        this.result = response.data.data.result
                        // console.log(response.data.data.result, subjectIds, '----1----1----')
            if (this.result == 1) {
              subjectIds.color = "#67C23A";
              subjectIds.fontColor = "#fff";
                            subjectIds.color = "#67C23A"
                            subjectIds.fontColor = "#fff"
            }
            if (this.result == 2) {
              subjectIds.color = "red";
              subjectIds.fontColor = "#fff";
                            subjectIds.color = "red"
                            subjectIds.fontColor = "#fff"
            }
            const { id, choicesType } = subject;
                        const { id, choicesType } = subject
            this.query.subjectId = id;
                        this.query.subjectId = id
            this.query.type = choicesType;
                        this.query.type = choicesType
            for (let i = 0; i < this.subjectIds.length; i++) {
              if (this.subjectIds[i].everyID == nextSubjectId) {
                subject.answer = this.subjectIds[i].answer;
                                subject.answer = this.subjectIds[i].answer
                break;
                                break
              }
            }
            this.setSubjectInfo(subject);
                        this.setSubjectInfo(subject)
            // console.log(subject);
            this.$store.commit("setWindowSizeHeightAdd");
                        this.$store.commit("setWindowSizeHeightAdd")
            // store.dispatch('SetSubjectInfo', subject).then(() => { })
          }
          // 更新时间
          getCurrentTime().then(response => {
            this.subjectStartTime = moment(response.data.data);
          });
          this.endLoading(nextType);
                        this.subjectStartTime = moment(response.data.data)
                    })
                    this.endLoading(nextType)
        })
        .catch(error => {
          console.log(error);
          this.$store.commit("setWindowSizeHeightAdd");
          messageFail(this, "获取题目失败");
          this.endLoading(nextType);
        });
                    console.log(error)
                    this.$store.commit("setWindowSizeHeightAdd")
                    messageFail(this, "获取题目失败!")
                    this.endLoading(nextType)
                })
    },
    // 保存当前题目,同时根据序号加载上一题
    saveCurrentSubjectAndGetNextSubjectLast(nextType, nextSubjectId) {
      this.startLoading(nextType);
            this.startLoading(nextType)
      var data = {
        id: nextSubjectId
      };
            }
      getSubjectResultInfo(data)
        .then(response => {
          if (response.data.data !== null) {
            // 保存成功后更新答题卡状态
            const subject = response.data.data;
                        const subject = response.data.data
            //结果
            this.result = response.data.data.result;
                        this.result = response.data.data.result
            // if(this.result==1){
            //      subjectIds.color = "#67C23A"
@@ -710,93 +709,94 @@
            //     subjectIds.color = "red"
            // }
            const { id, choicesType } = subject;
                        const { id, choicesType } = subject
            this.query.subjectId = id;
                        this.query.subjectId = id
            this.query.type = choicesType;
                        this.query.type = choicesType
            for (let i = 0; i < this.subjectIds.length; i++) {
              if (this.subjectIds[i].everyID == nextSubjectId) {
                subject.answer = this.subjectIds[i].answer;
                                subject.answer = this.subjectIds[i].answer
                break;
                                break
              }
            }
            this.setSubjectInfo(subject);
                        this.setSubjectInfo(subject)
            // store.dispatch('SetSubjectInfo', subject).then(() => { })
          }
          // 更新时间
          getCurrentTime().then(response => {
            this.subjectStartTime = moment(response.data.data);
          });
          this.endLoading(nextType);
                        this.subjectStartTime = moment(response.data.data)
                    })
                    this.endLoading(nextType)
        })
        .catch(error => {
          console.log(error);
          messageFail(this, "获取题目失败");
          this.endLoading(nextType);
        });
                    console.log(error)
                    messageFail(this, "获取题目失败!")
                    this.endLoading(nextType)
                })
    },
    markAnswered(answer, index) {
      if (answer && answer !== null) {
        this.subjectIds[index].answered = true;
                this.subjectIds[index].answered = true
      }
    },
    // 答题卡
    answerCard() {
      this.dialogVisible = true;
            this.dialogVisible = true
    },
    // 跳转题目
    toSubject(everyID, type, index) {
      var ind = this.subjectIndex;
            var ind = this.subjectIndex
      if (this.firstFlag == false) {
        ind = this.subjectIndex;
                ind = this.subjectIndex
      } else {
        ind = this.subjectIndex - 1;
                ind = this.subjectIndex - 1
      }
      this.subjectIds[ind].answer = this.getAnswer();
            this.subjectIds[ind].answer = this.getAnswer()
      this.markAnswered(this.subjectIds[ind].answer, ind);
            this.markAnswered(this.subjectIds[ind].answer, ind)
      this.subjectIndex = index + 1;
      this.firstFlag = true;
            this.subjectIndex = index + 1
            this.firstFlag = true
      // 保存当前题目,同时加载下一题
      // console.log(nextSubjectType.next, 111);
      // console.log(everyID, 222);
      // console.log(type, 333);
      this.saveCurrentSubjectAndGetNextSubject(
        nextSubjectType.next,
        everyID,
        type
      );
                this.subjectIds[ind]
            )
      this.dialogVisible = false;
            this.dialogVisible = false
    },
    // 提交
    submitExam(val) {
      // console.log(val);
      var ind = this.subjectIndex;
            var ind = this.subjectIndex
      if (this.firstFlag == false) {
        ind = this.subjectIndex;
                ind = this.subjectIndex
      } else {
        ind = this.subjectIndex - 1;
                ind = this.subjectIndex - 1
      }
      this.subjectIds[ind].answer = this.getAnswer();
            this.subjectIds[ind].answer = this.getAnswer()
      this.markAnswered(this.subjectIds[ind].answer, ind);
            this.markAnswered(this.subjectIds[ind].answer, ind)
      if (val == "over") {
        //时间到了情况  自动提交
        this.disableSubmit = true;
        this.doSubmitExam();
        return;
                this.disableSubmit = true
                this.doSubmitExam()
                return
      }
      this.$confirm("确定要提交吗?", "提示", {
@@ -805,10 +805,10 @@
        type: "warning"
      })
        .then(() => {
          this.disableSubmit = true;
          this.doSubmitExam();
                    this.disableSubmit = true
                    this.doSubmitExam()
        })
        .catch(() => { });
                .catch(() => { })
    },
    doSubmitExam() {
      var obj = {
@@ -823,38 +823,38 @@
        papersId: this.$route.query.id,
        examEndTime: this.getCurrentTimes(),
        examResultVOS: null
      };
      var arr = [];
            }
            var arr = []
      // 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];
                let item = this.subjectIds[i]
        // console.log(item.answer, i);
        if (item.type == 3 || item.type == 1) {
          var str = "";
                    var str = ""
          if (item.answer.length > 0) {
            //如果是数组
            if (item.answer instanceof Array) {
              item.answer.forEach(it => {
                if (it.value != "") {
                  str += 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
              });
                            })
            } else {
              arr.push({
                subjectChoicesId: item.everyID,
                value: item.answer,
                grade: item.score
              });
                            })
            }
          }
        } else {
@@ -862,46 +862,46 @@
            subjectChoicesId: item.everyID,
            value: item.answer,
            grade: item.score
          });
                    })
        }
      }
      // console.log(arr, 123);
      // return;
      obj.examResultVOS = arr;
            obj.examResultVOS = arr
      // console.log(this.subjectIds, 456);
      // console.log(obj.examResultVOS, 789);
      saveAndNext(obj)
        .then(response => {
          messageSuccess(this, "提交成功");
                    messageSuccess(this, "提交成功")
          if (response) {
            this.$store.commit("DEL_TAG", this.$store.state.tags.tag);
                        this.$store.commit("DEL_TAG", this.$store.state.tags.tag)
            var obj = {
              userId: this.userInfo.user_id,
              examId: this.$route.query.id
            };
                        }
            this.$router.push({
              path: `/singleperformance/index`,
              query: obj
            });
                        })
          }
        })
        .catch(() => {
          this.disableSubmit = false;
          messageFail(this, "提交题目失败");
        });
                    this.disableSubmit = false
                    messageFail(this, "提交题目失败")
                })
    },
    // 选中选项
    toggleOption(answer) {
      this.answer = answer;
            this.answer = answer
    },
    // 根据题目类型返回填写的答案
    getAnswer() {
      const ref = this.getSubjectRef();
            const ref = this.getSubjectRef()
      if (isNotEmpty(ref)) {
        const answer = ref.getAnswer();
        this.answer = answer;
        return answer;
                const answer = ref.getAnswer()
                this.answer = answer
                return answer
        // {
        //     id: answerId,
        //     userId: this.userInfo.id,
@@ -913,57 +913,57 @@
        //     startTime: this.subjectStartTime
        // }
      }
      return {};
            return {}
    },
    // 获取题目索引
    getSubjectIndex(targetId) {
      for (let subject of this.subjectIds) {
        let { subjectId, index } = subject;
                let { subjectId, index } = subject
        if (subjectId === targetId) {
          return index;
                    return index
        }
      }
      return 1;
            return 1
    },
    // 更新题目索引
    updateSubjectIndex() {
      this.subjectIndex = this.getSubjectIndex(this.query.subjectId);
            this.subjectIndex = this.getSubjectIndex(this.query.subjectId)
    },
    startLoading(nextType) {
      if (nextType === nextSubjectType.next) {
        this.loadingNext = true;
                this.loadingNext = true
      } else if (nextType === nextSubjectType.last) {
        this.loadingLast = true;
                this.loadingLast = true
      } else {
        this.loadingNext = true;
                this.loadingNext = true
      }
    },
    endLoading(nextType) {
      if (nextType === nextSubjectType.next) {
        this.loadingNext = false;
                this.loadingNext = false
      } else if (nextType === nextSubjectType.last) {
        this.loadingLast = false;
                this.loadingLast = false
      } else {
        this.loadingNext = false;
                this.loadingNext = false
      }
    },
    //获取当前时间
    getCurrentTimes() {
      let date = new Date();
      let dateYear = date.getFullYear(); //获取年
            let date = new Date()
            let dateYear = date.getFullYear() //获取年
      let dateMonth =
        date.getMonth() + 1 < 10
          ? "0" + (date.getMonth() + 1)
          : date.getMonth() + 1; //获取月
                    : date.getMonth() + 1 //获取月
      let dateDate =
        date.getDate() < 10 ? "0" + date.getDate() : date.getDate(); //获取当日
      let dateDay = date.getDay(); //获取当日星期数
                date.getDate() < 10 ? "0" + date.getDate() : date.getDate() //获取当日
            let dateDay = date.getDay() //获取当日星期数
      let dateHours =
        date.getHours() < 10 ? "0" + date.getHours() : date.getHours(); //获取小时
                date.getHours() < 10 ? "0" + date.getHours() : date.getHours() //获取小时
      let dateMinutes =
        date.getMinutes() < 10 ? "0" + date.getMinutes() : date.getMinutes(); //获取分钟
                date.getMinutes() < 10 ? "0" + date.getMinutes() : date.getMinutes() //获取分钟
      let dateSeconds =
        date.getSeconds() < 10 ? "0" + date.getSeconds() : date.getSeconds(); //获取秒
                date.getSeconds() < 10 ? "0" + date.getSeconds() : date.getSeconds() //获取秒
      return (
        dateYear +
@@ -977,34 +977,34 @@
        dateMinutes +
        ":" +
        dateSeconds
      );
            )
    },
    getSubjectRef() {
      let ref;
            let ref
      switch (this.query.type) {
        case 0:
          ref = this.$refs.choices;
          break;
                    ref = this.$refs.choices
                    break
        case 1:
          ref = this.$refs.multipleChoices;
                    ref = this.$refs.multipleChoices
          break;
                    break
        case 2:
          ref = this.$refs.judgement;
          break;
                    ref = this.$refs.judgement
                    break
        case 3:
          ref = this.$refs.practicalOperation;
          break;
                    ref = this.$refs.practicalOperation
                    break
        case 4:
          ref = this.$refs.shortAnswer;
          break;
                    ref = this.$refs.shortAnswer
                    break
      }
      return ref;
            return ref
    },
    setSubjectInfo(subject) {
      const ref = this.getSubjectRef();
            const ref = this.getSubjectRef()
      // console.log(subject, "subject");
      if (isNotEmpty(ref)) {
        try {
@@ -1012,14 +1012,14 @@
            subject,
            this.subjectIds.length,
            this.subjectIndex
          );
                    )
        } catch (error) {
          console.error(error);
                    console.error(error)
        }
      }
    }
  }
};
}
</script>
<!-- Add "scoped" attribute to limit CSS to this component only -->