Administrator
2021-08-17 90cf4906f4eb91d82aa08045f52c278dc0926eb5
考试答一题提交一题,答过的题目无法修改
3 files modified
224 ■■■■ changed files
src/api/exam/subject.js 113 ●●●● patch | view | raw | blame | history
src/components/Subjects/Choices/index.vue 13 ●●●● patch | view | raw | blame | history
src/views/startexam/index.vue 98 ●●●●● patch | view | raw | blame | history
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
    })
}
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 + '.'
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