qa-education-exam-weapp/pages/exam/examination/examination.js

268 lines
6.5 KiB
JavaScript

// 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() {
}
})