466 lines
15 KiB
Vue
466 lines
15 KiB
Vue
<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
|
||
},
|
||
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,
|
||
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>
|