201 lines
5.2 KiB
Vue
201 lines
5.2 KiB
Vue
<template>
|
||
<div class="testForm">
|
||
<u-navbar title="法治学习" :background="backgroundNavbar"></u-navbar>
|
||
<div class="testForm_info">
|
||
<div class="type">
|
||
<div class="type_left">单选题</div>
|
||
<div><span class="col_blue">{{ activeIndex + 1 }}</span>/{{ list.length }}</div>
|
||
</div>
|
||
<div class="topic">
|
||
<div v-for="(item,index) in list" :key="index" >
|
||
<div v-if="activeIndex === index">
|
||
<!-- 题目 -->
|
||
<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>
|
||
</div>
|
||
<!-- 多选 -->
|
||
<div class="answer_list" v-if="item.type==1">
|
||
<div class="answer_item" v-for="(opt,inx) in item.items" :key="inx"
|
||
@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}"
|
||
@click="itemClick(inx)">
|
||
{{ opt.sort }}: {{ opt.content}}
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="type mar-top" v-if="showAnalysis">
|
||
<div class="type_left">答案解析</div>
|
||
</div>
|
||
<div class="topic mar-top" v-if="showAnalysis">
|
||
<div><span>正确答案:</span></div>
|
||
<div style="margin-top: 8px" v-html="list[activeIndex].analysis"></div>
|
||
</div>
|
||
|
||
<div class="btn" v-show="showNext" @click="nextTopic" v-if="activeIndex < list.length - 1">下一题</div>
|
||
<div class="btn" v-show="showConfirm" @click="confirm">确定</div>
|
||
</div>
|
||
|
||
</div>
|
||
</template>
|
||
|
||
<script>
|
||
export default {
|
||
customNavigation: true,
|
||
data() {
|
||
return {
|
||
backgroundNavbar: {
|
||
background: "url('https://cdn.cunwuyun.cn/qujing/navbar.png') no-repeat",
|
||
backgroundSize: '100% 100%',
|
||
},
|
||
list: [],
|
||
activeIndex: 0, // 当前第几题
|
||
createdTime: '', // 开始答题时间
|
||
endTime: '', // 结束时间
|
||
id: '', // 题库id
|
||
showConfirm: false,
|
||
showNext: false,
|
||
clickIndex: '',
|
||
showAnalysis: false,
|
||
}
|
||
},
|
||
methods: {
|
||
getList(id) {
|
||
this.$instance.post(`/app/appexaminationinfo/queryDetailById?id=${id}`).then(res=> {
|
||
if(res?.data) {
|
||
this.list = res.data.questions
|
||
}
|
||
})
|
||
},
|
||
itemClick(i) {
|
||
if(this.list[this.activeIndex].type==2) { // 判断
|
||
this.clickIndex = i
|
||
this.showConfirm = true
|
||
// this.list[this.activeIndex].items.myAnswer = this.list[this.activeIndex].i
|
||
}
|
||
},
|
||
nextTopic() {
|
||
this.activeIndex ++;
|
||
},
|
||
confirm() {
|
||
uni.navigateTo({url: './result'})
|
||
},
|
||
},
|
||
onReachBottom() {
|
||
this.current ++;
|
||
},
|
||
onLoad(o) {
|
||
this.getList(o.id)
|
||
// this.createdTime = Date.parse(new Date())
|
||
}
|
||
}
|
||
</script>
|
||
|
||
<style lang="scss" scoped>
|
||
.testForm {
|
||
.testForm_info {
|
||
background: url("https://cdn.cunwuyun.cn/qujing/bg.png") no-repeat;
|
||
background-size: 100% auto;
|
||
padding: 80px 32px 0 32px;
|
||
box-sizing: border-box;
|
||
|
||
.type {
|
||
display: flex;
|
||
justify-content: space-between;
|
||
font-size: 28px;
|
||
color: #333333;
|
||
|
||
.type_left {
|
||
font-weight: 600;
|
||
}
|
||
|
||
.col_blue {
|
||
color: #2D7DFF;
|
||
}
|
||
|
||
}
|
||
|
||
.topic {
|
||
background: #FFF;
|
||
margin-top: 32px;
|
||
padding: 24px;
|
||
margin-top: 80px;
|
||
border-radius: 16px;
|
||
box-shadow: 0 0 8px 0 rgba(0,0,0,0.02);
|
||
|
||
.answer_list {
|
||
margin-top: 32px;
|
||
|
||
.answer_item {
|
||
background: #FBFCFE;
|
||
border: 1px solid #CCCCCC;
|
||
border-radius: 16px;
|
||
padding: 28px 24px;
|
||
box-sizing: border-box;
|
||
margin-bottom: 24px;
|
||
|
||
.myChoice {
|
||
width: 136px;
|
||
height: 48px;
|
||
background: #FFFFFF;
|
||
border: 1px solid #E23C3C;
|
||
border-radius: 8px;
|
||
}
|
||
}
|
||
|
||
.Checked {
|
||
border: 2px solid #2D7EFE;
|
||
color: #2D7DFF;
|
||
background: #EAF2FF;
|
||
}
|
||
|
||
.Succeed {
|
||
border: 2px solid #3BBC37;
|
||
color: #3BBC37;
|
||
background: #F5FCF5;
|
||
}
|
||
|
||
.Error {
|
||
border: 2px solid #E23C3C;
|
||
color: #E23C3C;
|
||
background: #FDF4F4;
|
||
}
|
||
}
|
||
}
|
||
|
||
.mar-top {
|
||
margin-top: 32px;
|
||
}
|
||
|
||
.btn {
|
||
position: fixed;
|
||
left: 50%;
|
||
bottom: 0;
|
||
transform: translate(-50%, -50%);
|
||
width: 320px;
|
||
height: 88px;
|
||
line-height: 88px;
|
||
text-align: center;
|
||
background: #2D7DFF;
|
||
border-radius: 44px;
|
||
font-weight: 500;
|
||
font-size: 34px;
|
||
color: #FFFFFF;
|
||
}
|
||
}
|
||
}
|
||
</style> |