From 90cf4906f4eb91d82aa08045f52c278dc0926eb5 Mon Sep 17 00:00:00 2001
From: Administrator <admin>
Date: Tue, 17 Aug 2021 21:19:45 +0800
Subject: [PATCH] 考试答一题提交一题,答过的题目无法修改

---
 src/components/Subjects/Choices/index.vue |   13 ++
 src/api/exam/subject.js                   |  113 +++++++++++++++-------------
 src/views/startexam/index.vue             |   98 ++++++++++++++++++++++--
 3 files changed, 160 insertions(+), 64 deletions(-)

diff --git a/src/api/exam/subject.js b/src/api/exam/subject.js
index 3eefe79..b64d756 100644
--- a/src/api/exam/subject.js
+++ b/src/api/exam/subject.js
@@ -2,73 +2,82 @@
 
 const baseSubjectUrl = '/api/exam/v1/subject/'
 
-export function subjectList () {
-  return request({
-    url: baseSubjectUrl + 'subjectList',
-    method: 'get'
-  })
+export function subjectList() {
+    return request({
+        url: baseSubjectUrl + 'subjectList',
+        method: 'get'
+    })
 }
 
-export function fetchSubjectList (query) {
-  return request({
-    url: baseSubjectUrl + 'subjectList',
-    method: 'get',
-    params: query
-  })
+export function fetchSubjectList(query) {
+    return request({
+        url: baseSubjectUrl + 'subjectList',
+        method: 'get',
+        params: query
+    })
 }
 
-export function getObj (id, query) {
-  return request({
-    url: baseSubjectUrl + id,
-    method: 'get',
-    params: query
-  })
+export function getObj(id, query) {
+    return request({
+        url: baseSubjectUrl + id,
+        method: 'get',
+        params: query
+    })
 }
 
-export function addSubject (obj) {
-  return request({
-    url: baseSubjectUrl,
-    method: 'post',
-    data: obj
-  })
+export function addSubject(obj) {
+    return request({
+        url: baseSubjectUrl,
+        method: 'post',
+        data: obj
+    })
 }
 
-export function putSubject (obj) {
-  return request({
-    url: baseSubjectUrl,
-    method: 'put',
-    data: obj
-  })
+export function putSubject(obj) {
+    return request({
+        url: baseSubjectUrl,
+        method: 'put',
+        data: obj
+    })
 }
 
-export function delSubject (id) {
-  return request({
-    url: baseSubjectUrl + id,
-    method: 'delete'
-  })
+export function delSubject(id) {
+    return request({
+        url: baseSubjectUrl + id,
+        method: 'delete'
+    })
 }
 
-export function delAllSubject (obj) {
-  return request({
-    url: baseSubjectUrl + 'deleteAll',
-    method: 'post',
-    data: obj
-  })
+export function delAllSubject(obj) {
+    return request({
+        url: baseSubjectUrl + 'deleteAll',
+        method: 'post',
+        data: obj
+    })
 }
 
-export function getSubjectAnswer (obj) {
-  return request({
-    url: '/api/examSubjectChoices/details',
-    method: 'get',
-    params: obj
-  })
+export function getSubjectAnswer(obj) {
+    return request({
+        url: '/api/examSubjectChoices/details',
+        method: 'get',
+        params: obj
+    })
 }
 
 
-export function anonymousUserGetSubjectAnswer (obj) {
-  return request({
-    url: baseSubjectUrl + 'anonymousUser/subjectAnswer',
-    method: 'get',
-    params: obj
-  })
+export function getSubjectResultInfo(obj) {
+    return request({
+        url: '/api/examSubjectChoices/getSubjectResultInfo',
+        method: 'get',
+        params: obj
+    })
 }
+
+
+export function anonymousUserGetSubjectAnswer(obj) {
+    return request({
+        url: baseSubjectUrl + 'anonymousUser/subjectAnswer',
+        method: 'get',
+        params: obj
+    })
+}
\ No newline at end of file
diff --git a/src/components/Subjects/Choices/index.vue b/src/components/Subjects/Choices/index.vue
index 52305d6..8d70da6 100644
--- a/src/components/Subjects/Choices/index.vue
+++ b/src/components/Subjects/Choices/index.vue
@@ -11,10 +11,13 @@
             </div>
 
             <ul class="subject-options"
+                id="subjectOptions"
                 v-for="option in options"
                 :key="option.id">
                 <li class="subject-option">
-                    <input class="toggle"
+                    <input 
+                            :disabled="currentAnswer"
+                            class="toggle"
                            type="checkbox"
                            :checked="userAnswer === option.optionName"
                            :id="'option' + option.id"
@@ -42,7 +45,8 @@
             },
             options: [],
             userAnswer: '',
-            index: ''
+            index: '',
+            currentAnswer: false,
         }
     },
     methods: {
@@ -53,6 +57,7 @@
             this.userAnswer = answer
         },
         setSubjectInfo (subject, subjectCount, index) {
+            this.currentAnswer = false
             this.subjectCount = subjectCount
             this.subjectInfo = subject
             if (subject.hasOwnProperty('examSubjectOptions')) {
@@ -61,7 +66,9 @@
                 console.log(this.options)
             }
             if (subject.hasOwnProperty('answer')) {
-                console.log(subject.answer);
+                if (subject.answer) {
+                    this.currentAnswer = true
+                }
                 this.setAnswer(subject.answer)
             }
             this.index = index + '.'
diff --git a/src/views/startexam/index.vue b/src/views/startexam/index.vue
index 136df5f..41a7c6c 100644
--- a/src/views/startexam/index.vue
+++ b/src/views/startexam/index.vue
@@ -90,6 +90,7 @@
                                 <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-row>
@@ -109,7 +110,7 @@
 import { saveAndNext } from '@/api/exam/answer'
 import { getSubjectIds } from '@/api/exam/exam'
 import { getCurrentTime } from '@/api/exam/examRecord'
-import { getSubjectAnswer } from '@/api/exam/subject'
+import { getSubjectResultInfo } from '@/api/exam/subject'
 
 import moment from 'moment'
 import { messageSuccess, messageFail, messageWarn, isNotEmpty } from '@/util/util'
@@ -141,7 +142,8 @@
         return {
             loadingLast: false,
             loadingNext: false,
-
+            //1:绿色 2:红色  3:无色
+            result:3,
             currentTime: 0,
             startTime: 0,
             endTime: 0,
@@ -254,7 +256,8 @@
                             index: i + 1,
                             answered: false,
                             answer: '',
-                            score: subjectData[i].score
+                            score: subjectData[i].score,
+                            color: '#fff'
                         })
                     }
 
@@ -265,7 +268,7 @@
 
                     this.updateSubjectIndex()
                     // 获取当前题目信息
-                    getSubjectAnswer({
+                    getSubjectResultInfo({
                         id: this.subjectIds[0].everyID,
                     }).then(response => {
                         if (isNotEmpty(response.data.data)) {
@@ -303,7 +306,7 @@
 
                     this.subjectIndex = index
 
-                    this.saveCurrentSubjectAndGetNextSubject(nextSubjectType.last, everyID, type)
+                    this.saveCurrentSubjectAndGetNextSubjectLast(nextSubjectType.last, everyID, type)
 
                     break
 
@@ -319,7 +322,7 @@
                 if (this.subjectIds[i].everyID == this.query.subjectId) {
 
                     this.subjectIds[i].answer = this.getAnswer()
-
+                    
                     this.markAnswered(this.subjectIds[i].answer, i)
 
                     if (i === this.subjectIds.length - 1) {
@@ -331,7 +334,7 @@
 
                     this.subjectIndex = index
 
-                    this.saveCurrentSubjectAndGetNextSubject(nextSubjectType.next, everyID)
+                    this.saveCurrentSubjectAndGetNextSubject(nextSubjectType.next, everyID,this.subjectIds[i-1])
 
                     break
 
@@ -341,17 +344,94 @@
 
         },
         // 保存当前题目,同时根据序号加载下一题
-        saveCurrentSubjectAndGetNextSubject (nextType, nextSubjectId) {
+        saveCurrentSubjectAndGetNextSubject (nextType, nextSubjectId,subjectIds) {
 
 
             this.startLoading(nextType)
 
-            getSubjectAnswer({ id: nextSubjectId }).then(response => {
+            var data  = {
+                id:nextSubjectId,
+                preSubJectId:this.query.subjectId,
+                preResult:this.getAnswer()
+            }
+            getSubjectResultInfo(data).then(response => {
 
                 if (response.data.data !== null) {
 
                     // 保存成功后更新答题卡状态
                     const subject = response.data.data
+
+                    //结果
+                    this.result = response.data.data.result;
+
+                    if(this.result==1){
+                         subjectIds.color = "#67C23A"
+                    }
+                    if(this.result==2){
+                        subjectIds.color = "red"
+                    }
+
+                    const { id, choicesType } = subject
+
+                    this.query.subjectId = id
+
+                    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
+
+                            break
+
+                        }
+
+                    }
+
+
+
+                    this.setSubjectInfo(subject)
+
+                    // store.dispatch('SetSubjectInfo', subject).then(() => { })
+
+                }
+                // 更新时间
+                getCurrentTime().then(response => {
+                    this.subjectStartTime = moment(response.data.data)
+                })
+                this.endLoading(nextType)
+            }).catch((error) => {
+                console.log(error)
+                messageFail(this, '获取题目失败')
+                this.endLoading(nextType)
+            })
+        },
+        // 保存当前题目,同时根据序号加载上一题
+        saveCurrentSubjectAndGetNextSubjectLast (nextType, nextSubjectId) {
+
+            this.startLoading(nextType)
+
+            var data  = {
+                id:nextSubjectId
+            }
+            getSubjectResultInfo(data).then(response => {
+
+                if (response.data.data !== null) {
+
+                    // 保存成功后更新答题卡状态
+                    const subject = response.data.data
+
+                    //结果
+                    this.result = response.data.data.result;
+
+                    // if(this.result==1){
+                    //      subjectIds.color = "#67C23A"
+                    // }
+                    // if(this.result==2){
+                    //     subjectIds.color = "red"
+                    // }
+
                     const { id, choicesType } = subject
 
                     this.query.subjectId = id

--
Gitblit v1.9.3