提交 bd0561e9 authored 作者: lihuihui's avatar lihuihui

修改bug

上级 b7692483
<template>
<div>
<div class="order-num">
<!-- stu1已答 stu2当前 stu3标记 -->
<div class="order-num" v-if="questionParams.card">
<template v-for="(item, index) in questionParams.card">
<div :key="index">
<div :key="index" v-if="item">
<div class="tit">{{ item.find(tit => { return tit.question_item_title }).question_item_title }}</div>
<ul>
<template v-for="(cItem, cIndex) in item">
<!-- stu1已答 stu2当前 stu3标记 -->
<li
:key="cItem.q_order + '-' + cIndex"
@click="goQuestion(cItem.q_order)"
......@@ -30,13 +30,13 @@
<div class="circle3"></div>
<div class="txt">当前</div>
</li>
<!-- <li>
<li>
<div class="circle4"></div>
<div class="txt">标记</div>
</li> -->
</li>
</ul>
<ul class="tips-box" v-else>
<li>
<li v-if="this.$route.query.id !== 'err'">
<div class="circle1"></div>
<div class="txt">答对</div>
</li>
......@@ -70,10 +70,14 @@ export default {
return this.questionParams.questionIndex + 1 === cItem.q_order
? currentAnswer
? currentAnswer[cItem.id]
? currentAnswer[cItem.id].answer.length !== 0
? currentAnswer[cItem.id].sign
? 'stu1 stu2 stu3'
: 'stu1 stu2'
? currentAnswer[cItem.id].answer
? currentAnswer[cItem.id].answer.length !== 0
? currentAnswer[cItem.id].sign
? 'stu1 stu2 stu3'
: 'stu1 stu2'
: currentAnswer[cItem.id].sign
? 'stu2 stu3'
: 'stu2'
: currentAnswer[cItem.id].sign
? 'stu2 stu3'
: 'stu2'
......@@ -81,10 +85,14 @@ export default {
: 'stu2'
: currentAnswer
? currentAnswer[cItem.id]
? currentAnswer[cItem.id].answer.length !== 0
? currentAnswer[cItem.id].sign
? 'stu1 stu3'
: 'stu1'
? currentAnswer[cItem.id].answer
? currentAnswer[cItem.id].answer.length !== 0
? currentAnswer[cItem.id].sign
? 'stu1 stu3'
: 'stu1'
: currentAnswer[cItem.id].sign
? 'stu3'
: ''
: currentAnswer[cItem.id].sign
? 'stu3'
: ''
......@@ -98,10 +106,12 @@ export default {
const scoreItems = this.questionParams.beforeData.score_items[cItem.question_item_id][cItem.id]
return findItems
? findItems[cItem.id]
? findItems[cItem.id].answer.length
? scoreItems.is_right
? 'stu1'
: 'stu2'
? findItems[cItem.id].answer
? findItems[cItem.id].answer.length
? scoreItems.is_right
? 'stu1'
: 'stu2'
: 'stu3'
: 'stu3'
: 'stu3'
: 'stu3'
......@@ -109,6 +119,19 @@ export default {
}
},
methods: {
onSignHandle(stu) {
const id = this.questionParams.question
this.questionParams.answerRecord[id.question_item_id]
? this.questionParams.answerRecord[id.question_item_id][id.id]
? this.questionParams.answerRecord[id.question_item_id][id.id].sign = stu
: this.questionParams.answerRecord[id.question_item_id][id.id] = {
sign: stu
}
: this.questionParams.answerRecord[id.question_item_id] = {
[id.id]: { sign: stu }
}
this.$forceUpdate()
},
monitoringChanges() {
this.$forceUpdate()
},
......@@ -370,7 +393,7 @@ export default {
list-style: none;
li{
&:nth-child(2){
margin: 0 50px;
// margin: 0 50px;
}
.circle1{
width: 24px;
......
......@@ -16,10 +16,14 @@
@click="changeOptions(questionData.question_item_type, questionData.question_item_id, questionData.id, item.id)"
:class="questionParams.answerRecord[questionData.question_item_id]
? questionParams.answerRecord[questionData.question_item_id][questionData.id]
? questionParams.answerRecord[questionData.question_item_id][questionData.id].answer.find(id => { return id === item.id })
? 'active'
? questionParams.answerRecord[questionData.question_item_id][questionData.id].answer
? questionParams.answerRecord[questionData.question_item_id][questionData.id].answer.length
? questionParams.answerRecord[questionData.question_item_id][questionData.id].answer.find(id => { return id === item.id })
? 'active'
: ''
: ''
: ''
: ''
: ''
: ''"
>
<div class="icon"></div>
......@@ -130,10 +134,12 @@ export default {
? selectAnswer[currentData.question_item_id][currentData.id]
? (() => {
const arr = []
selectAnswer[currentData.question_item_id][currentData.id].answer.map(i => {
const findIndex = currentData.options.findIndex(d => { return i === d.id })
arr.push(this.A_Z()[findIndex])
})
if (selectAnswer[currentData.question_item_id][currentData.id].answer) {
selectAnswer[currentData.question_item_id][currentData.id].answer.map(i => {
const findIndex = currentData.options.findIndex(d => { return i === d.id })
arr.push(this.A_Z()[findIndex])
})
}
return arr.sort().toString().replace(new RegExp(',', 'g'), '')
})()
: ''
......
......@@ -51,10 +51,12 @@ export default {
const scoreItems = this.data.score_items[id][cId]
return findItems
? findItems[cId]
? findItems[cId].answer.length
? scoreItems.is_right
? 'stu1'
: 'stu2'
? findItems[cId].answer
? findItems[cId].answer.length
? scoreItems.is_right
? 'stu1'
: 'stu2'
: 'stu3'
: 'stu3'
: 'stu3'
: 'stu3'
......
......@@ -13,15 +13,12 @@
v-if="Object.keys(questionParams.question).length"
:contentHeight="contentHeight"
:questionParams="questionParams"
ref="signHandle"
@isSign="isSign"
></question>
</div>
<div class="right">
<answer-card
:questionParams="questionParams"
ref="signHandle"
@isSign="isSign"
></answer-card>
</div>
</div>
......@@ -36,11 +33,15 @@
@click="changeIndex('next')"
>下一题</div>
</div>
<div class="rigth-btn" @click="signHandle">
<div class="rigth-btn">
<div class="sign" @click="collectQuestion">
<div :class="questionParams.question.isCollection ? 'icon active' : 'icon'"></div>
<div class="txt">{{ questionParams.question.isCollection ? '已收藏' : '收藏' }}</div>
</div>
<div class="sign2" @click="setSign" v-if="!$route.query.id">
<div :class="questionParams.question.sign ? 'icon active' : 'icon'"></div>
<div class="txt">{{ questionParams.question.sign ? '已标记' : '标记' }}</div>
</div>
<div class="end-exam-btn" v-if="!$route.query.id">
<div class="btn" @click="endExam">交卷</div>
</div>
......@@ -86,10 +87,19 @@ export default {
question: {},
card: {},
beforeData: {}
}
},
handleTime: null
}
},
beforeDestroy() {
this.handlePapers()
clearInterval(this.handleTime)
clearInterval(this.time.clearTime)
},
mounted() {
this.handleTime = setInterval(() => {
this.handlePapers()
}, 3000)
// 赋值页面高度
this.contentHeight = parseInt(document.documentElement.clientHeight - (this.getDom('head-h').offsetHeight + this.getDom('foot-h').offsetHeight))
this.getTopic()
......@@ -125,17 +135,18 @@ export default {
.finally(() => {
})
},
// 标记
signHandle() {
this.$refs.signHandle.onSignHandle()
},
isSign(value) {
this.itemSign = value
setSign() {
const data = this.questionParams.question
data.sign
? data.sign = false
: data.sign = true
this.$refs.signHandle.onSignHandle(data.sign)
},
// 提交考试
endExam() {
this.handlePapers(1)
},
// 倒计时考试
setClock(time) {
let sec = parseInt(time)
clearInterval(this.time.clearTime)
......@@ -147,6 +158,7 @@ export default {
sec--
if (sec === 0) {
clearInterval(this.time.clearTime)
this.time.examTimeText = '00:00:00'
this.$alert('考试时间结束,自动提交试卷', '', {
confirmButtonText: '确定',
callback: action => {
......@@ -184,7 +196,6 @@ export default {
this.questionParams.questionIndex + 1 !== this.questionParams.question.total_question_count && (this.questionParams.questionIndex++)
}
this.changeData()
this.handlePapers()
},
// 获取考卷
getTopic() {
......@@ -198,8 +209,18 @@ export default {
const data = JSON.parse(response.data)
this.beforeChangeData = data.sheet
this.questionParams.beforeData = data.sheet
this.afterChangeData = this.setData(data.sheet.questions.question_items)
this.questionParams.card = this.setData(data.sheet.questions.question_items)
let countData = this.filterData(data)
if (this.$route.query.id === 'err') {
const Num = this.countErrNum(countData)
this.questionParams.question.total_question_count = Num
countData = countData.filter(item => {
return item.map(cItem => {
cItem.total_question_count = Num
})
})
}
this.afterChangeData = countData
this.questionParams.card = countData
data.sheet.answers !== null && (this.questionParams.answerRecord = data.sheet.answers)
this.$route.query.id && this.$route.query.id.length > 5
? this.analysisInit()
......@@ -210,6 +231,21 @@ export default {
.finally(() => {
})
},
// 计算错题总数
countErrNum(data) {
let countNum = 0
data.map(item => {
item.map(cItem => {
countNum++
})
})
return countNum
},
filterData(data) {
return this.setData(data.sheet.questions.question_items).map(item => {
return item.filter(is => is)
})
},
// 重组数据
setData(data) {
let countNum = 0
......@@ -252,7 +288,17 @@ export default {
data.list = this.mergeData(item.question_list, 'group_id')
data.answer_count = cItem.answer_count
}
return data
// 错题
if (this.$route.query.id === 'err') {
const isRight = this.beforeChangeData.score_items[data.question_item_id][data.id].is_right
if (!isRight) {
return data
} else {
countNum--
}
} else {
return data
}
})
})
},
......@@ -458,6 +504,26 @@ export default {
text-align: center;
}
}
.sign2{
margin-right: 20px;
.icon{
margin: 0 auto;
width: 24px;
height: 24px;
background: url(@/assets/images/sign.png);
background-size:100% 100%;
&.active{
background: url(@/assets/images/sign2.png);
background-size:100% 100%;
}
}
.txt{
font-size: 14px;
color: #CCCCCC;
line-height: 20px;
margin-top: 2px;
}
}
.sign{
margin-right: 20px;
.icon{
......
......@@ -27,7 +27,7 @@
<template v-slot:btnBox>
<div class="btn-box">
<div class="btn" @click="goPage('all')">全部解析</div>
<!-- <div class="btn" @click="goPage('err')">错误解析</div> -->
<div class="btn" @click="goPage('err')">错误解析</div>
</div>
</template>
</card>
......
......@@ -31,10 +31,8 @@ export default {
props: {
questionParams: { type: Object, default: () => {} }
},
created() {
console.log(this.questionParams, '====123')
},
mounted() {
console.log(this.questionParams.card, '====123')
this.msgCenter.$on('monitoringChanges', this.monitoringChanges)
},
computed: {
......
......@@ -86,10 +86,13 @@ export default {
},
mounted() {
// 赋值页面高度
this.contentHeight = parseInt(document.documentElement.clientHeight - (this.getDom('head-h').offsetHeight + this.getDom('foot-h').offsetHeight))
this.setPageHeight()
this.initData()
},
methods: {
setPageHeight() {
this.contentHeight = parseInt(document.documentElement.clientHeight - (this.getDom('head-h').offsetHeight + this.getDom('foot-h').offsetHeight))
},
// 删除试题
deleteQuestion() {
this.$loading({
......@@ -291,6 +294,7 @@ export default {
}
}
},
// 加载部分试题
supplyRequest(n) {
const loading = this.$loading({
lock: true,
......@@ -341,6 +345,7 @@ export default {
this.questionParams.questionIndex = 0
window.localStorage.removeItem('answerRecord')
this.initData()
this.$router.go(0)
})
},
chcheReq(param, call) {
......@@ -363,7 +368,6 @@ export default {
changeQuestionIndex(newV, oldV) {
this.changeData()
parseInt(this.$route.query.type) !== 3 && (this.handlePapers())
console.log(this.questionParams.question)
}
}
}
......@@ -438,7 +442,7 @@ export default {
}
}
.foot{
position: absolute;
position: fixed;
bottom: 0;
left: 0;
width: 100%;
......
......@@ -13,15 +13,12 @@
v-if="Object.keys(questionParams.question).length"
:contentHeight="contentHeight"
:questionParams="questionParams"
ref="signHandle"
@isSign="isSign"
></question>
</div>
<div class="right">
<answer-card
:questionParams="questionParams"
ref="signHandle"
@isSign="isSign"
></answer-card>
</div>
</div>
......@@ -36,11 +33,15 @@
@click="changeIndex('next')"
>下一题</div>
</div>
<div class="rigth-btn" @click="signHandle">
<div class="rigth-btn">
<div class="sign" @click="collectQuestion">
<div :class="questionParams.question.isCollection ? 'icon active' : 'icon'"></div>
<div class="txt">{{ questionParams.question.isCollection ? '已收藏' : '收藏' }}</div>
</div>
<div class="sign2" @click="setSign" v-if="!$route.query.id">
<div :class="questionParams.question.sign ? 'icon active' : 'icon'"></div>
<div class="txt">{{ questionParams.question.sign ? '已标记' : '标记' }}</div>
</div>
<div class="end-exam-btn" v-if="!$route.query.id">
<div class="btn" @click="endExam">交卷</div>
</div>
......@@ -86,23 +87,35 @@ export default {
question: {},
card: {},
beforeData: {}
}
},
handleTime: null
}
},
beforeDestroy() {
this.handlePapers()
clearInterval(this.handleTime)
clearInterval(this.time.clearTime)
},
mounted() {
this.handleTime = setInterval(() => {
this.handlePapers()
}, 3000)
// 赋值页面高度
this.contentHeight = parseInt(document.documentElement.clientHeight - (this.getDom('head-h').offsetHeight + this.getDom('foot-h').offsetHeight))
this.getTopic()
},
methods: {
// 标记
setSign() {
const data = this.questionParams.question
data.sign
? data.sign = false
: data.sign = true
this.$refs.signHandle.onSignHandle(data.sign)
},
// 收藏试题
collectQuestion() {
const data = this.questionParams.question
console.log(data)
data.isCollection
? this.removeCall(data.id, () => {
data.isCollection = false
......@@ -129,13 +142,6 @@ export default {
.finally(() => {
})
},
// 标记
signHandle() {
this.$refs.signHandle.onSignHandle()
},
isSign(value) {
this.itemSign = value
},
// 提交考试
endExam() {
this.handlePapers(1)
......@@ -144,18 +150,14 @@ export default {
let sec = parseInt(time)
clearInterval(this.time.clearTime)
this.time.clearTime = setInterval(() => {
// if (this.requestParam.course_id) {
// this.time.examTimeText = this.secondToDate(sec)
// sec++
// } else {
// }
if (this.$route.query.id) {
this.time.examTimeText = '00:00:00'
this.time.examTimeText = ''
return false
}
sec--
if (sec === 0) {
clearInterval(this.time.clearTime)
this.time.examTimeText = '00:00:00'
this.$alert('考试时间结束,自动提交试卷', '', {
confirmButtonText: '确定',
callback: action => {
......@@ -193,7 +195,6 @@ export default {
this.questionParams.questionIndex + 1 !== this.questionParams.question.total_question_count && (this.questionParams.questionIndex++)
}
this.changeData()
this.handlePapers()
},
// 获取考卷
getTopic() {
......@@ -207,8 +208,19 @@ export default {
const data = JSON.parse(response.data)
this.beforeChangeData = data.sheet
this.questionParams.beforeData = data.sheet
this.afterChangeData = this.setData(data.sheet.questions.question_items)
this.questionParams.card = this.setData(data.sheet.questions.question_items)
let countData = this.filterData(data)
if (this.$route.query.id === 'err') {
const Num = this.countErrNum(countData)
this.questionParams.question.total_question_count = Num
countData = countData.filter(item => {
return item.map(cItem => {
cItem.total_question_count = Num
})
})
}
console.log(countData)
this.afterChangeData = countData
this.questionParams.card = countData
data.sheet.answers !== null && (this.questionParams.answerRecord = data.sheet.answers)
this.$route.query.id && this.$route.query.id.length > 5
? this.analysisInit()
......@@ -219,6 +231,16 @@ export default {
.finally(() => {
})
},
// 计算错题总数
countErrNum(data) {
let countNum = 0
data.map(item => {
item.map(cItem => {
countNum++
})
})
return countNum
},
// 重组数据
setData(data) {
let countNum = 0
......@@ -242,6 +264,7 @@ export default {
total_question_count: this.beforeChangeData.questions.total_question_count,
isCollection: cItem.isCollection
}
// 解析
if (this.$route.query.id) {
if (this.$route.query.id.length > 5 || this.$route.query.id === 'all' || this.$route.query.id === 'err') {
const qAnswer = Array.isArray(cItem.question_answer) ? cItem.question_answer : cItem.question_answer = [cItem.question_answer]
......@@ -255,13 +278,24 @@ export default {
data.question_answer = optGroup
}
}
// 案例题
if (parseInt(item.question_type) === 5) {
data.common_content = cItem.common_content
data.group_id = cItem.group_id
data.list = this.mergeData(item.question_list, 'group_id')
data.answer_count = cItem.answer_count
}
return data
// 错题
if (this.$route.query.id === 'err') {
const isRight = this.beforeChangeData.score_items[data.question_item_id][data.id].is_right
if (!isRight) {
return data
} else {
countNum--
}
} else {
return data
}
})
})
},
......@@ -331,6 +365,11 @@ export default {
.finally(() => {
})
}
},
filterData(data) {
return this.setData(data.sheet.questions.question_items).map(item => {
return item.filter(is => is)
})
}
},
computed: {
......@@ -467,6 +506,8 @@ export default {
text-align: center;
}
}
.sign-box{
}
.sign{
margin-right: 20px;
.icon{
......@@ -487,6 +528,26 @@ export default {
margin-top: 2px;
}
}
.sign2{
margin-right: 20px;
.icon{
margin: 0 auto;
width: 24px;
height: 24px;
background: url(@/assets/images/sign.png);
background-size:100% 100%;
&.active{
background: url(@/assets/images/sign2.png);
background-size:100% 100%;
}
}
.txt{
font-size: 14px;
color: #CCCCCC;
line-height: 20px;
margin-top: 2px;
}
}
}
}
}
......
<template>
<div class="result-box">
<div class="result-box" v-if="data.sheet">
<div class="card-left">
<div class="title">成绩报告</div>
<div class="chart-box">
<chart :accuracy="accuracy" :accuracScore="accuracScore" v-if="data.sheet">
<chart :accuracy="accuracy" :accuracScore="accuracScore">
<template v-slot:tips>
<div class="num">{{ accuracy }}%</div>
<div class="t">正确率</div>
......@@ -19,7 +19,7 @@
<div class="icon"></div>
</div>
<div class="text">{{ accuracy !== 100 ? '您离成功还有一段距离,继续努力!' : '成功近在眼前,再接再厉!' }}</div>
<div class="btn">全部考试服务</div>
<!-- <div class="btn">全部考试服务</div> -->
</div>
</div>
<div class="card-right">
......@@ -27,7 +27,7 @@
<template v-slot:btnBox>
<div class="btn-box">
<div class="btn" @click="goPage('all')">全部解析</div>
<!-- <div class="btn" @click="goPage('err')">错误解析</div> -->
<div class="btn" @click="goPage('err')">错误解析</div>
</div>
</template>
</card>
......@@ -78,8 +78,8 @@ export default {
.getExamQuestion(param)
.then(response => {
const data = JSON.parse(response.data)
this.data = data
this.accuracy = parseInt(data.sheet.score)
this.data = data
this.accuracScore = parseInt(data.sheet.questions.total_score)
})
.finally(() => {
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论