123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141 |
- import {formatSeconds} from '../../../utils/util.js'
- let app = getApp()
- Page({
- data: {
- preList:["A","B","C", "D", "E", "F"],
- userInfo: {},
- modalShow: false,
- timeOutShow: false,
- remainTime: 0,
- remainTimeStr: '',
- index:0,
- score:0,
- useTime:0,
- item: {index:0},
- info: {},
- list: [],
- },
- onLoad: function(options) {
- let courseId = +options.courseId||36
- app.checkLogin( userInfo =>{
- this.setData({userInfo})
- this.loadData( courseId )
- })
- },
- loadData( courseId ){
- let info = wx.getStorageSync('@examinfo')||{};
- if( info && info.courseId == courseId){
- let index = info.index||0;
- this.setData({info})
- this.loadQuestion( index )
- this.timeReduce()
- return;
- }
- app.formPost('Course.startExam', {courseId}).then(res => {
- if (res.code ==200) {
- this.setData({info:res.data })
- this.loadQuestion( 0 )
- this.timeReduce()
- }
- })
- },
- selectquestion( e ){
- let index = e.currentTarget.dataset.index
- this.loadQuestion( index )
- },
- checkAnswer( e ){
- let item = this.data.item;
- let examId = this.data.index.examId;
- if( !item.select ){
- util.message("还未作答", 'error')
- return;
- }
- let select = item.select;
- if( item.type == 3) select = +select.join("");
- let param = {id: item.id, examId, select}
- app.formPost('Course.SubmitAnswer', param).then(res => {
- this.nextAnswer( )
- })
- },
- radioChange( e ){
- let item = this.data.item
- item.select = +e.detail.value;
- console.log( "radioChange", item)
- this.setData({item})
- this.checkAnswer()
- },
- loadQuestion( index ) {
- let item = this.data.info.answers[index];
- item.index = index;
- if( !item.title ){
- app.formPost("course.loadAnswer", {id:item.id} ).then(res => {
- if( res.code != 200) return;
- Object.assign( item, res.data)
- this.saveItem( item )
- })
- }else{
- this.saveItem( item )
- }
- },
- saveItem( item ){
- let info = this.data.info;
- info.index = item.index;
- info.answers[ item.index] = item;
- wx.setStorageSync('@examinfo', info)
- console.log("item", item)
- this.setData({item, info})
- },
- checkboxChange( e ){
- let item = this.data.item
- item.select = parseInt(e.detail.value.sort().join(''))
- console.log( "radioChange", item)
- this.setData({item})
- },
- nextAnswer( ){
- console.log( "next")
- this.loadQuestion( this.data.info.index+1)
- },
- returnRecord(){
- wx.navigateBack({
- delta: 1,
- })
- },
- dosubmit(e){
- let examId = this.data.info.examId
- app.formPost("course.FinishExam", {examId}).then(res => {
- if (res.code == 200) {
- let { score, useTime } = res.data;
- this.setData({score, useTime, modalShow:true})
- wx.setStorageSync('@examinfo', {})
- if( this.data.timer) clearInterval(this.data.timer)
- }
- });
- },
- timeOut() {
- clearInterval(this.data.timer)
- this.setData({
- timeOutShow: true
- });
- },
- timeReduce() {
- let _this = this
- let remainTime = this.data.info.duration + this.data.info.startTime - parseInt(Date.now()/1000)
- this.setData({remainTime})
- let timer = setInterval(function() {
- let remainTime = _this.data.remainTime
- if (remainTime <= 0) {
- _this.timeOut()
- } else {
- _this.setData({
- remainTime: remainTime - 1,
- remainTimeStr: formatSeconds(remainTime),
- doTime: _this.data.doTime + 1
- });
- }
- }, 1000)
- _this.setData({
- timer: timer
- });
- }
- })
|