This commit is contained in:
liuye
2023-02-15 10:20:58 +08:00
2 changed files with 102 additions and 27 deletions

View File

@@ -123,9 +123,24 @@ export default {
this.$u.toast(err.msg)
})
},
stop() {
this.$instance.post(`/app/appcourseinfo/stopLearnById`,null,{
params: {
id: this.data.id,
recordId: this.data.recordId
}
}).then(res=> {
if(res.code==0) {
console.log(res.msg);
}
}).catch(err=> this.$u.toast(err.msg))
},
keyboard(e) {
console.log(e.detail.height);
}
},
onUnload() {
this.stop()
}
}
</script>

View File

@@ -12,28 +12,21 @@
<div>
<div >
<!-- 题目 -->
<div>{{ item.title }}</div>
<!-- 单选 -->
<div class="answer_list" v-if="item.type==0">
<!-- 'succeed': clickIndex==inx && opt.checked == 1, 'item-error': clickIndex == inx && item.checked == 0 -->
<div class="answer_item" v-for="(opt,inx) in item.items" :key="inx"
:class="{'Checked': clickIndex == inx}">
{{ opt.sort }}: {{ opt.content}}
<div>{{ item.title }}{{score}}</div>
<!-- 单选,判断 -->
<div class="answer_list" v-if="item.type==0 || item.type==2">
<div class="answer_item" v-for="(opt,inx) in item.items" :key="inx"
:class="{'Checked': clickIndex === inx, 'Succeed': showAnalysis && opt.checked == 1, 'Error': showAnalysis && clickIndex === inx && opt.checked == 0}"
@click="itemClick(inx)">
{{ opt.sort }}: {{ opt.content}}
</div>
</div>
<!-- 多选 -->
<div class="answer_list" v-if="item.type==1">
<div class="answer_item" v-for="(opt,inx) in item.items" :key="inx"
:class="{'Checked': opt.isChecked,'Succeed': showAnalysis && opt.checked == 1, 'Error': showAnalysis && opt.isChecked && opt.checked == 0}"
@click="itemClick(inx)">
{{ opt.sort }}: {{ opt.content}}
</div>
</div>
<!-- 判断 -->
<div class="answer_list" v-if="item.type==2">
<div class="answer_item" v-for="(opt,inx) in item.items" :key="inx"
:class="{'Checked': clickIndex == inx, 'Succeed': showAnalysis && opt.checked == 1, 'Error': showAnalysis && clickIndex == inx && opt.checked == 0}"
@click="itemClick(inx)">
{{ opt.sort }}: {{ opt.content}}
{{ opt.sort }}: {{ opt.content}} {{opt.isChecked}}
</div>
</div>
</div>
@@ -52,11 +45,15 @@
<div class="btn" @click="nextTopic" v-if="activeIndex < list.length - 1 && showNext">下一题</div>
<div class="btn" v-show="showConfirm" @click="confirm">确定</div>
<div class="btn" v-show="showTiJiao" @click="submit">提交</div>
</div>
</div>
</template>
<script>
import dayjs from "dayjs"
export default {
customNavigation: true,
data() {
@@ -67,57 +64,120 @@ export default {
},
list: [],
activeIndex: 0, // 当前第几题
activeAnswer:undefined,
endTime: '', // 结束时间
id: '', // 题库id
showConfirm: false,
showNext: false,
showTiJiao: false,
clickIndex: '',
showAnalysis: false,
subjectConfigs: [],
score: 0,
assessments: [], // 不合格的分数段
status: 1, // 考试结果0未通过、1通过
startTime: '',
nowTime: '', // 时间戳
studyDuration: 0,
assessmentType: ''
}
},
methods: {
getList(id) {
this.$instance.post(`/app/appexaminationinfo/queryDetailById?id=${id}`).then(res=> {
if(res?.data) {
this.list = res.data.questions
res.data.questions.forEach(item => {
item.items.forEach(item1 =>{
item1.isChecked = false
})
});
this.list = res.data.questions
this.subjectConfigs = res.data.subjectConfigs
this.assessments = res.data.assessments
}
})
},
itemClick(i) {
if (this.showAnalysis) return
if(this.list[this.activeIndex].type==0) { // 单选
} else if(this.list[this.activeIndex].type==1) { // 多选
} else if(this.list[this.activeIndex].type==2) { // 判断
this.clickIndex = i
this.showConfirm = true
this.showConfirm = true
if(this.list[this.activeIndex].type==0 || this.list[this.activeIndex].type==2){ // 单选判断
this.clickIndex = i
}
if(this.list[this.activeIndex].type==1) { // 多选
this.list[this.activeIndex].items[i].isChecked=!this.list[this.activeIndex].items[i].isChecked
}
},
// 下一题
nextTopic() {
this.activeIndex ++;
this.clickIndex = ''
this.showAnalysis = false
this.showNext = false
},
// 确定
confirm() {
this.showAnalysis = true;
// 单选判断
if(this.list[this.activeIndex].type==0 || this.list[this.activeIndex].type==2){
if(this.list[this.activeIndex].items[this.clickIndex].checked==1) {
this.score=this.score + this.subjectConfigs[this.list[this.activeIndex].type].eachScore
}
}
if(this.list[this.activeIndex].type==1) { // 多选
if(this.list[this.activeIndex].items.every(item=>item.checked===item.isChecked)){
this.score=this.score + this.subjectConfigs[this.list[this.activeIndex].type].eachScore
}
}
if(this.activeIndex < this.list.length - 1) {
this.showNext = true;
this.showConfirm = false;
} else {
uni.navigateTo({url: './result'})
this.showTiJiao = true;
}
},
// 提交
submit() {
// 分数区间
switch(this.assessments) {
case this.assessments[0].: console.log(1);
break;
case 2:
}
// 用时
const endTime = new Date().getTime()
this.studyDuration = Math.ceil((endTime - this.nowTime) / 1000 / 60)
// 是否合格
const buhege = this.assessments.filter(e=> e.assessmentType == 3)
if(buhege.upCondition == 3) { // 3小于等于、4小于
if(this.score <= buhege.upScore) {
this.status = 0
}
} else if(buhege.upCondition == 4) {
if(this.score < buhege.upScore) {
this.status = 0
}
}
// this.$instance.post(`/app/appexaminationinfo/commit`,{
// assessmentType: this.assessmentType,
// examinationId: this.id,
// startTime: this.startTime,
// status: this.status,
// studyDuration: this.studyDuration,
// }).then(res=> {
// if(res?.code == 0) {
// uni.navigateTo({url: './result'})
// }
// })
},
},
onReachBottom() {
this.current ++;
},
onLoad(o) {
this.getList(o.id)
this.startTime = dayjs().format("YYYY-MM-DD HH:mm:ss")
this.nowTime = new Date().getTime()
}
}
</script>