打分小程序断网提交分数失败后将分数缓存
前言
在打分做题类型的小程序中,可能存在中途断网的可能,所以就需要有缓存功能,此次进入后获取当时的分数
一、思路:每选择一次分数,就往setStorageSync中存入分数和关键数据,如评委id,考场id,考生id,分数,题目index等,然后进入提交当前题目的分数,提交成功就清除缓存数据,失败就return,提示检查网络等,然后下次进入时,判断Storage有没有数据,有就获取,没有就是{},在数据初始化后判断Storage是否存在数据,存在就判断评委id,考场id,如果相同就证明是同一场考试,循环考生列表,根据考生id,获取考生index,直接显示当前考生,根据题目index获取当前题目,然后将分数赋值就完成了.
二、使用步骤
1.点击分数保存到缓存
let data = {
judgeId: this.judgeId,
venueId: this.id,
questionIndex: this.examInfo.paper.currentIndex,
examineeId: this.examInfo.examinee.list[this.examInfo.examinee.currentIndex].examineeId,
score: row.score,
remark: this.examInfo.paper.list[this.examInfo.paper.currentIndex].comment
}
uni.setStorageSync('scoreFailData', data)
2.提交成功请除缓存
if (response.code === '0000000') {
uni.clearStorageSync('scoreFailData')
}
3 .下次进入页面获取缓存数据
onLoad(e) {
this.scoreFailData = uni.getStorageSync('scoreFailData') || {}
},
4 . 数据准备完成获取分数
// 根据提交分数失败的评委id和考场 id获取考生的试题分数
if (this.scoreFailData) {
if (this.scoreFailData.judgeId == this.judgeId && this.scoreFailData.venueId == this
.id) {
this.examInfo.examinee.list.forEach((item, index) => {
if (item.examineeId == this.scoreFailData.examineeId) {
this.examInfo.examinee.currentIndex = index
this.examInfo.paper.currentIndex = this.scoreFailData.questionIndex
this.examInfo.paper.list[this.examInfo.paper.currentIndex].score =
this.scoreFailData.score
this.examInfo.paper.list[this.examInfo.paper.currentIndex]
.comment = this.scoreFailData.remark
}
})
}
}