Files
dvcp_v2_wechat_app/src/project/qujing/AppLegalLearning/testForm.vue
shijingjing a319b5decc 考试题
2023-02-14 14:06:46 +08:00

201 lines
5.2 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<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>