// pages/exam/examination/examination.js import debounce from '../../../utils/debounce' import Dialog from '@vant/weapp/dialog/dialog' import { formatTime, getNowDate } from "../../../utils/util"; import { getPaperListByCidAndUser, submitExamByUser } from "../../../api/index"; Page({ /** * 页面的初始数据 */ data: { EXAMNAME: '', time: 0, EXAMSCORE: '', count: 0, // 当前题数 current: 0, CLASS_ID: '', STUDENT_ID: '', SIMULATION: '', STAGEEXAMPAPERINPUT_ID: '', timeData: {}, type: '', current: 0, topic: [], testStartTime: formatTime(new Date()), }, chooseTopic(e) { const { type, check } = e.currentTarget.dataset let topic = this.data.topic let current = this.data.current if (type === 'judge' || type === 'radio') { if (topic[current].CHECK === check) { topic[current].CHECK = '' } else { topic[current].CHECK = check } this.setData({ topic: [...topic] }) } if (type === 'multiple') { if (topic[current].CHECK) { let checkedArr = topic[current].CHECK.split(',') if (checkedArr.includes(check)) { checkedArr.splice(checkedArr.indexOf(check), 1) topic[current].CHECK = checkedArr.join(',') } else { checkedArr.push(check) checkedArr.sort() topic[current].CHECK = checkedArr.join(',') } } else { topic[current].CHECK = check } this.setData({ topic: [...topic] }) } }, viewAnswers() { let topic = this.data.topic let current = this.data.current topic[current].ANSWER = topic[current].CHECK || '没有作答' this.setData({ topic: [...topic] }) }, countDownChange(e) { this.setData({ timeData: e.detail, }); }, previousQuestion() { this.setData({ current: --this.data.current }) }, nextQuestion() { this.setData({ current: ++this.data.current }) }, async getData() { let resData = {} resData = await getPaperListByCidAndUser({ CLASS_ID: this.data.CLASS_ID, SIMULATION: this.data.SIMULATION, STUDENT_ID: this.data.STUDENT_ID, STAGEEXAMPAPERINPUT_ID: this.data.STAGEEXAMPAPERINPUT_ID }) for (let i = 0; i < resData.varList.length; i++) { resData.varList[i].CHECK = '' resData.varList[i].ANSWERRIGHT = resData.varList[i].ANSWER resData.varList[i].ANSWER = '' } this.setData({ topic: resData.varList }) }, submitPapers() { Dialog.confirm({ title: '确定要交卷吗?', selector: '#nation', }) .then(() => { debounce(async () => { let varList = this.data.topic for (let i = 0; i < varList.length; i++) { varList[i].ANSWER = varList[i].CHECK } let resData = await submitExamByUser({ options: JSON.stringify(varList), CLASS_ID: this.data.CLASS_ID, STUDENT_ID: this.data.STUDENT_ID, PASSSCORE: this.data.PASSSCORE, EXAMSCORE: this.data.EXAMSCORE, NUMBEROFEXAMS:this.data.NUMBEROFEXAMS, EXAMTIMEBEGIN: this.data.EXAMTIMEBEGIN, STAGEEXAMPAPERINPUT_ID: this.data.STAGEEXAMPAPERINPUT_ID }) wx.showToast({ title: '交卷成功', mask: true }) setTimeout(() => { wx.redirectTo({ url: '/pages/exam/results/results?STAGEEXAM_ID=' + resData.STAGEEXAM_ID + '&EXAMRESULT=' + resData.examResult + '&EXAMSCORE=' + resData.examScore + '&PASSSCORE=' + resData.PASSSCORE + '&PAPER_EXAMSCORE=' + resData.PAPER_EXAMSCORE, }) }, 1500) }) }).catch((e) =>{ }) }, fnCountDownFinish() { Dialog.alert({ title: '考试时间到了', selector: '#nation', }) .then(() => { debounce(async () => { let varList = this.data.topic for (let i = 0; i < varList.length; i++) { varList[i].ANSWER = varList[i].CHECK } let resData = await submitExamByUser({ options: JSON.stringify(varList), CLASS_ID: this.data.CLASS_ID, STUDENT_ID: this.data.STUDENT_ID, PASSSCORE: this.data.PASSSCORE, EXAMSCORE: this.data.EXAMSCORE, EXAMTIMEBEGIN: this.data.EXAMTIMEBEGIN, STAGEEXAMPAPERINPUT_ID: this.data.STAGEEXAMPAPERINPUT_ID }) wx.showToast({ title: '交卷成功', mask: true }) setTimeout(() => { wx.redirectTo({ url: '/pages/exam/results/results?STAGEEXAM_ID=' + resData.STAGEEXAM_ID + '&EXAMRESULT=' + resData.examResult + '&EXAMSCORE=' + resData.examScore + '&PASSSCORE=' + resData.PASSSCORE + '&PAPER_EXAMSCORE=' + resData.PAPER_EXAMSCORE, }) }, 1500) }) }); }, /** * 生命周期函数--监听页面加载 */ onChange(event) { let topic = this.data.topic let current = this.data.current topic[current].CHECK = event.detail this.setData({ topic: [...topic] }) }, onLoad(options) { this.setData({ CLASS_ID: options.CLASS_ID, SIMULATION: options.SIMULATION, STAGEEXAMPAPERINPUT_ID: options.STAGEEXAMPAPERINPUT_ID, EXAMNAME: options.EXAMNAME, STUDENT_ID: options.STUDENT_ID, PASSSCORE: options.PASSSCORE, NUMBEROFEXAMS: options.NUMBEROFEXAMS, EXAMSCORE: options.EXAMSCORE, EXAMTIMEBEGIN: getNowDate(), type: options.type, time: options.ANSWERSHEETTIME * 60 * 1000 }) // 模拟考 if (this.data.SIMULATION == 1) { this.setData({ time: 60 * 60 * 24 * 1000 }) } this.getData() }, /** * 生命周期函数--监听页面初次渲染完成 */ onReady() { }, /** * 生命周期函数--监听页面显示 */ onShow() { }, /** * 生命周期函数--监听页面隐藏 */ onHide() { }, /** * 生命周期函数--监听页面卸载 */ onUnload() { }, /** * 页面相关事件处理函数--监听用户下拉动作 */ onPullDownRefresh() { }, /** * 页面上拉触底事件的处理函数 */ onReachBottom() { }, /** * 用户点击右上角分享 */ onShareAppMessage() { } })