268 lines
6.5 KiB
JavaScript
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() {
|
||
|
|
|
||
|
|
}
|
||
|
|
})
|