<template> <view> <view class="ext-bg"> <!-- <view class="extin-bg"> <cu-custom bgColor="bg-gradual-no" :isBack="true" :isRingt="true" :backUrl="backUrl"> <block slot="backText">返回</block> <block slot="content">习题练习</block> </cu-custom> </view> --> <view class="extin-bg"> <view class="cu-bar fixed bg-gradual-no"> <view class="action" @tap="BackPage"> <text class="cuIcon-back"></text> <slot name="backText">返回</slot> </view> <view class="content" :style="[{top:StatusBar + 'px'}]"> <slot name="content">习题练习</slot> </view> <view class="right"> <slot name="right"></slot> </view> <!-- <slot name="right"></slot> --> </view> </view> <view class="ext-box"> <view class="ext-topic"> <view class="ext-title"> 第{{sindex+1}}题 </view> <view class="ext-content"> <view class="ext-text"> <text v-if="form.QUESTIONTYPE[sindex] === '1'" class="mark">(单选题)</text> <text v-if="form.QUESTIONTYPE[sindex] === '2'" class="mark">(多选题)</text> <text v-if="form.QUESTIONTYPE[sindex] === '3'" class="mark">(判断题)</text> {{ form.QUESTIONLIST[sindex].QUESTIONDRY }} </view> <view class="ext-select"> <radio-group v-if="form.QUESTIONTYPE[sindex] == '1'" class="ext-group" v-model="form.ANSWER[sindex]" @change="radioQuestionChange($event,sindex)"> <label class="answer-lable"> <radio class="blue" :class="(form.ANSWER[sindex]=='A'?'checked':'')+' '+((isShowAnswer && form.ANSWER[sindex] == form.ANSWERRIGHT[sindex])?'blue':'red')" :checked="form.ANSWER[sindex]=='A'?true:false" :disabled="isDisabled" value="A"></radio> <text class="title">A.{{ form.QUESTIONLIST[sindex].OPTIONA }}</text> </label> <label class="answer-lable"> <radio class="blue" :class="(form.ANSWER[sindex]=='B'?'checked':'')+' '+((isShowAnswer && form.ANSWER[sindex] == form.ANSWERRIGHT[sindex])?'blue':'red')" :checked="form.ANSWER[sindex]=='B'?true:false" :disabled="isDisabled" value="B"></radio> <text class="title">B.{{ form.QUESTIONLIST[sindex].OPTIONB }}</text> </label> <label class="answer-lable"> <radio class="blue" :class="(form.ANSWER[sindex]=='C'?'checked':'')+' '+((isShowAnswer && form.ANSWER[sindex] == form.ANSWERRIGHT[sindex])?'blue':'red')" :checked="form.ANSWER[sindex]=='C'?true:false" :disabled="isDisabled" value="C"></radio> <text class="title">C.{{ form.QUESTIONLIST[sindex].OPTIONC }}</text> </label> <label class="answer-lable"> <radio class="blue" :class="(form.ANSWER[sindex]=='D'?'checked':'')+' '+((isShowAnswer && form.ANSWER[sindex] == form.ANSWERRIGHT[sindex])?'blue':'red')" :checked="form.ANSWER[sindex]=='D'?true:false" :disabled="isDisabled" value="D"></radio> <text class="title">D.{{ form.QUESTIONLIST[sindex].OPTIOND }}</text> </label> </radio-group> <checkbox-group v-if="form.QUESTIONTYPE[sindex] == '2'" class="ext-group checkbox" @change="checkQuestionChange($event,sindex)"> <label class="answer-lable"> <checkbox :disabled="isDisabled" value="A" :class="form.ANSWER[sindex].includes('A')?'checked':''" :checked="(form.ANSWER[sindex].includes('A') ? true : false)"></checkbox> <text class="title">A.{{ form.QUESTIONLIST[sindex].OPTIONA }}</text> </label> <label class="answer-lable"> <checkbox :disabled="isDisabled" value="B" :class="form.ANSWER[sindex].includes('B')?'checked':''" :checked="(form.ANSWER[sindex].includes('B') ? true : false)"></checkbox> <text class="title">B.{{ form.QUESTIONLIST[sindex].OPTIONB }}</text> </label> <label class="answer-lable"> <checkbox :disabled="isDisabled" value="C" :class="form.ANSWER[sindex].includes('C')?'checked':''" :checked="(form.ANSWER[sindex].includes('C') ? true : false)"></checkbox> <text class="title">C.{{ form.QUESTIONLIST[sindex].OPTIONC }}</text> </label> <label class="answer-lable"> <checkbox :disabled="isDisabled" value="D" :class="form.ANSWER[sindex].includes('D')?'checked':''" :checked="(form.ANSWER[sindex].includes('D') ? true : false)"></checkbox> <text class="title">D.{{ form.QUESTIONLIST[sindex].OPTIOND }}</text> </label> </checkbox-group> <radio-group v-if="form.QUESTIONTYPE[sindex] == '3'" class="ext-group" v-model="form.ANSWER[sindex]" @change="radioQuestionChange($event,sindex)"> <label class="answer-lable"> <radio :class="(form.ANSWER[sindex]=='A'?'checked':'')+' '+((isShowAnswer && form.ANSWER[sindex] == form.ANSWERRIGHT[sindex])?'blue':'red')" :checked="form.ANSWER[sindex]=='A'?true:false" :disabled="isDisabled" value="A"></radio> <text class="title">A.{{ form.QUESTIONLIST[sindex].OPTIONA }}</text> </label> <label class="answer-lable"> <radio :class="(form.ANSWER[sindex]=='B'?'checked':'')+' '+((isShowAnswer && form.ANSWER[sindex] == form.ANSWERRIGHT[sindex])?'blue':'red')" :checked="form.ANSWER[sindex]=='B'?true:false" :disabled="isDisabled" value="B"></radio> <text class="title">B.{{ form.QUESTIONLIST[sindex].OPTIONB }}</text> </label> </radio-group> </view> </view> </view> <view v-if="isShowAnswer" class="ext-answer"> <view class="title"> 正确答案 </view> <view class="content"> <view class="mb12"> 正确答案:{{ form.ANSWERRIGHT[sindex] }} </view> <!-- <view class=""> 题目解析:A </view> --> </view> </view> <view class="ext-btns" :class="(sindex!=-1 && sindex!=0 && sindex != (form.QUESTIONLIST.length-1)) ? 'ext-between' : 'ext-center'"> <button v-if="sindex!=-1 && sindex!=0" :disabled="isCheckDisabled" class="cu-btn bg-yellow" @click="questionPrevious" >上一题</button> <button v-if="form.QUESTIONTYPE[sindex] == '2' && form.ANSWER[sindex]" class="cu-btn bg-green" @click="$noMultipleClicks(confirmCheck)" >查看结果</button> <button v-if="sindex != (form.QUESTIONLIST.length-1)" :disabled="isCheckDisabled" class="cu-btn bg-yellow" @click="questionNext" >下一题</button> </view> </view> </view> </view> </template> <script> import { basePath, corpinfoId, deptId, loginSession, formatDate, loginUser } from '@/common/tool.js'; export default { components: {}, data() { return { backUrl: '/pages/application/onlinexxks/my-study', showRight: false, dataFlag: 'noData', isDisabled: false, isShowAnswer: false, isAnswered: false, isCheckDisabled: false, form: { STUDYTASK_ID: '', CURRICULUMID: '', // 课程ID COURSEWAREID: '', //课件ID COURSEWARETYPE: '', //课件分类 STAGESTUDENTRELATION_ID: '', //课程学员关系ID CURRICULUMNAME: '', // 课程名称 CURRICULUMINTRODUCE: '', // 课程介绍 CURRICULUMAIM: '', // 课程目的 STARTTIME: '', // 开始时间 ENDTIME: '', // 结束时间 CURRICULUMUSERS: '', // 适用人员 QUESTION_ID: [], // 试题ID数组 QUESTIONTYPE: [], // 试题类型数组 ANSWER: [], // 学员答案 ANSWERRIGHT: [], // 正确答案 QUESTIONLIST: [{ QUESTIONTYPE: '', // 试题类型(单选题、多选题、判断题) QUESTIONDRY: '', // 题干 OPTIONA: '', // 选项A OPTIONB: '', // 选项B OPTIONC: '', // 选项C OPTIOND: '', // 选项D ANSWER: '' ,// 答案 }] //考题List }, subForm: {}, noClick: true, sindex: 0 } }, onLoad(event) { //页面第一次加载时触发,从跳转页面返回时不能触发,可以传递参 this.form.STUDYTASK_ID = event.STUDYTASK_ID this.form.COURSEWAREID = event.COURSEWAREID this.form.COURSEWARETYPE = event.COURSEWARETYPE this.form.CURRICULUMID = event.CURRICULUM_ID this.form.STAGESTUDENTRELATION_ID = event.STAGESTUDENTRELATION_ID // console.info('页面加载') console.info(this.form) this.backUrl = '/pages/application/onlinexxks/my-study?STAGESTUDENTRELATION_ID=' + event.STAGESTUDENTRELATION_ID this.getData() loginSession() }, onBackPress(options) { this.BackPage() return true }, methods: { getData() { var _this = this; uni.showLoading({ title: '请稍候...' }) uni.request({ url: basePath + '/app/mycurriculum/findForStudyByCoursewareId', method: 'POST', dataType: 'json', header: { 'Content-type': 'application/x-www-form-urlencoded' }, data: { CURRICULUMID: _this.form.CURRICULUMID, COURSEWAREID: _this.form.COURSEWAREID, COURSEWARETYPE: _this.form.COURSEWARETYPE, CORPINFO_ID:loginUser.CORPINFO_ID, USER_ID:loginUser.USER_ID, }, success: (res) => { uni.hideLoading(); //结束加载中动画 if ("success" == res.data.result) { // _this.pd = res.data.pd; _this.form = Object.assign(_this.form, res.data.pd) // console.info('getData取值') // console.info(this.form) if(_this.form.QUESTIONLIST.length>0) { _this.sindex = 0 } } else { uni.showToast({ title: res.data.message, duration: 2000 }); } } }) }, radioQuestionChange(e,i) { this.form.ANSWER[i] = e.detail.value this.isDisabled = true this.isShowAnswer = true this.isAnswered = true console.info(this.form.ANSWER[i]) console.info(this.form.ANSWERRIGHT[i]) console.info(this.form.ANSWER[i] == this.form.ANSWERRIGHT[i]) }, checkQuestionChange(e,i) { this.form.ANSWER[i] = e.detail.value if (this.trimSpace(this.form.ANSWER[i]).length>0) { this.isCheckDisabled = true } else { this.isCheckDisabled = false } this.$forceUpdate() }, confirmCheck() { this.isDisabled = true this.isShowAnswer = true this.isAnswered = true this.isCheckDisabled = false }, questionPrevious() { this.isCheckDisabled = false this.sindex = this.sindex - 1 var ANSWER_STR = '' if (this.form.QUESTIONTYPE[this.sindex] == '2') { ANSWER_STR = this.trimSpace(this.form.ANSWER[this.sindex]).length } else { ANSWER_STR = this.form.ANSWER[this.sindex] } console.log('ANSWER_STR:'+ANSWER_STR) console.log(this.form.ANSWER[this.sindex]) console.log('ANSWER.includes(\'A\'):'+this.form.ANSWER[this.sindex].includes('A')) console.log('ANSWER.includes(\'B\'):'+this.form.ANSWER[this.sindex].includes('B')) if(ANSWER_STR) { this.isDisabled = true this.isShowAnswer = true } else { this.isDisabled = false this.isShowAnswer = false } }, questionNext() { this.isCheckDisabled = false this.sindex = this.sindex + 1 var ANSWER_STR = '' if (this.form.QUESTIONTYPE[this.sindex] == '2') { ANSWER_STR = this.trimSpace(this.form.ANSWER[this.sindex]).length } else { ANSWER_STR = this.form.ANSWER[this.sindex] } // console.log('ANSWER_STR:'+ANSWER_STR) // console.log(this.form.ANSWER[this.sindex]) // console.log('ANSWER.includes(\'A\'):'+this.form.ANSWER[this.sindex].includes('A')) // console.log('ANSWER.includes(\'B\'):'+this.form.ANSWER[this.sindex].includes('B')) if(ANSWER_STR) { this.isDisabled = true this.isShowAnswer = true } else { this.isDisabled = false this.isShowAnswer = false } }, assignSubFormData() { var ANSWER_STR = '' for (let i = 0; i < this.subForm.ANSWER.length; i++) { if (this.subForm.QUESTIONTYPE[i] == '2') { ANSWER_STR += (this.subForm.ANSWER[i] == '-' ? '-' : this.subForm.ANSWER[i].join('')) + ',' } else { ANSWER_STR += this.subForm.ANSWER[i] + ',' } } this.subForm.ANSWER = ANSWER_STR.length > 0 ? ANSWER_STR.slice(0, ANSWER_STR.length - 1) : '' this.subForm.QUESTION_ID = this.subForm.QUESTION_ID.join(',') this.subForm.QUESTIONTYPE = this.subForm.QUESTIONTYPE.join(',') this.subForm.COURSEWAREID = this.subForm.COURSEWAREID.join(',') this.subForm.COURSEWARETYPE = this.subForm.COURSEWARETYPE.join(',') this.subForm.ANSWERRIGHT = this.subForm.ANSWERRIGHT.join(',') this.subForm.QUESTIONLIST = '' this.subForm.CORPINFO_ID = corpinfoId this.subForm.USER_ID = loginUser.USER_ID this.subForm.USERNAME=loginUser.USERNAME }, submitForm() { uni.showLoading({ title: '处理中' }) uni.request({ url: basePath+'/app/coursestudy/submit', method: 'POST', dataType: 'json', header: { 'Content-type':'application/x-www-form-urlencoded' }, data: { ...this.subForm, CORPINFO_ID:loginUser.CORPINFO_ID, USER_ID:loginUser.USER_ID, }, success: (res) => { uni.hideLoading(); uni.redirectTo({ url: this.backUrl, }) } }) }, trimSpace(array) { for (var i = 0; i < array.length; i++) { if (array[i] == '' || array[i] == null || typeof (array[i]) == 'undefined') { array.splice(i, 1) i = i - 1 } } return array }, BackPage() { if (this.isAnswered) { this.subForm = Object.assign({}, this.form) // console.info('this.subForm转换') // console.info(this.form) for (let i = 0; i < this.subForm.ANSWER.length; i++) { if (this.subForm.QUESTIONTYPE[i] == '2') { this.subForm.ANSWER[i] = this.trimSpace(this.subForm.ANSWER[i]) this.subForm.ANSWER[i] = this.subForm.ANSWER[i].length > 0 ? this.subForm.ANSWER[i].sort() : [] if (this.subForm.ANSWER[i].length == 0) { this.subForm.ANSWER[i] = '-' } } else { if (this.subForm.ANSWER[i].length == 0) { this.subForm.ANSWER[i] = '-' } } } this.assignSubFormData() this.submitForm() } else { uni.redirectTo({ url: this.backUrl, }) } } } } </script> <style> .ext-bg { background-image: linear-gradient(180deg, #0006ff, #0078ff); height: 100vh; width: 750upx; background-size: 100% 100%; position: relative; } .extin-bg { background: url(../../../static/ksbgx.png) no-repeat; height: 368upx; background-size: 100% 100%; } .ext-box { position: absolute; top: 440upx; width: 100%; padding: 0 50upx; } .ext-topic { border-radius: 10upx; background-color: #fff; width: 100%; } .ext-topic .ext-title { padding: 20upx 0; text-align: center; font-weight: bold; border-bottom: 1upx dashed #ccc; } .ext-topic .ext-content { padding: 30upx 30upx; } .ext-topic .ext-content .ext-text { margin-bottom: 20upx; line-height: 1.6; } .ext-group { display: flex; flex-direction: column; } .ext-group .answer-lable { display: flex; align-items: center; margin-bottom: 20upx; } .ext-group .answer-lable .title { margin-left: 14upx; } .ext-group .answer-lable:last-child { margin-bottom: 0; } .ext-answer { border-radius: 10upx; background-color: #fff; width: 100%; margin-top: 20upx; } .ext-answer .title { padding: 20upx 0; text-align: center; font-weight: bold; border-bottom: 1upx dashed #ccc; color: #008000; } .ext-answer .content { padding: 30upx 30upx; } .ext-btns{ display: flex; align-items: center; padding: 50upx 30upx; } .ext-btns button{ margin-left: 20upx; } .ext-btns button:first-child{ margin-left: 0; } .ext-between{ justify-content: space-between; } .ext-center{ justify-content: center; } </style>