| 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    });  }})
 |