// miniprogram/pages/answer/index.js const app = getApp(); Page({ /** * 页面的初始数据 */ interval: undefined, actTime: undefined, answer: [], data: { imgLi:[], countDown: "", list: [], height: [], data: { current: 0, total: 0 } }, /** * 生命周期函数--监听页面加载 */ onLoad: function (options) { let reset = options.reset wx.setNavigationBarTitle({ title: app.globalData.selectQuestion.name }) let height = wx.getSystemInfoSync().windowHeight; let li = app.globalData.selectQuestion.list || {}; if(reset != 1){ for (let i = 0; i < li.length; i++) { const item = li[i]; let l = [] for (let key in item.options) { l.push({ name: key, option: item.options[key], checked: false }) } li[i].options = l; } } this.answer = new Array(li.length).fill([]); this.setData({ list: li, imgLi: new Array(li.length).fill({}), height: [ height * 0.07, height * 0.86, ], data: { current: 1, total: app.globalData.selectQuestion.list.length } }) this.actTime = new Date(); this.interval = setInterval(() => { let d = new Date(); let c = d - this.actTime; let Q = app.globalData.selectQuestion; if (c >= Q.duration) { wx.showModal({ title: "提示", content: '时间到请点击确认后交卷', showCancel: false, success: this.isSubmit }) return clearInterval(this.interval); } let longTime = Q.duration - c; let h = Math.floor(longTime / 3600000); let m = Math.floor(longTime % 3600000 / 60000); let s = Math.floor(longTime % 3600000 % 60000 / 1000); let time = ""; if (h) { time += h > 9 ? h : '0' + h; time += ":" } time += m > 9 ? m : '0' + m; time += ":" time += s > 9 ? s : '0' + s; this.setData({ countDown: time }) }, 500) }, loadimage(e){ const li = this.data.imgLi || []; const sys = wx.getSystemInfoSync(); li[e.currentTarget.dataset.index] = { width: sys.windowWidth, height: e.detail.height/e.detail.width * sys.windowWidth } this.setData({ imgLi: li }) }, prov() { let data = this.data.data; data.current--; this.setData({ data: data }) }, next() { let data = this.data.data; data.current++; this.setData({ data: data }) }, changeSwiper(r) { let data = this.data.data; data.current = r.detail.current + 1; this.setData({ data: data }) }, changeGroup(e) { let answer = this.answer; if (typeof e.detail.value === 'string') { // 单选 answer[this.data.data.current - 1] = [e.detail.value] } else { // 复选 answer[this.data.data.current - 1] = e.detail.value } this.answer = answer }, submit() { console.log(this.answer); let queNum = []; for (let i = 0; i < this.answer.length; i++) { const v = this.answer[i]; if (!v.length) queNum.push(i + 1) } const modal = { title: "提示", content: '确认提交', success: this.isSubmit } if (queNum.length) modal.content = '第' + queNum.join(",") + '题未作答,是否确认提交' wx.showModal(modal) }, isSubmit() { let p = { queId: app.globalData.selectQuestion._id, userId: app.globalData.userInfo._openid, startTime: this.actTime, istrue: [], endTime: new Date(), answer: this.answer }; p.duration = p.endTime - p.startTime; let score = 0; for (let i = 0; i < app.globalData.selectQuestion.list.length; i++) { let an = this.answer[i].join(",") const v = app.globalData.selectQuestion.list[i]; let isAdd = true; v.answer.map(r => { isAdd = (new RegExp(r.select)).test(an) }) p.istrue.push(isAdd); if (v.answer.length === this.answer[i].length && isAdd) score++; } p.score = score; wx.showLoading(); wx.cloud.callFunction({ name: "quickstartFunctions", data: { type: "createQuestionRecord", data: p } }).then(res => { wx.hideLoading() if(res.result.code !== 0) return wx.showToast({ title: '网络繁忙' }) wx.reLaunch({ url: '/pages/result/index?data=' + JSON.stringify(res.result.data || {}), }) }).catch(err => { console.log(err) wx.hideLoading() }) }, /** * 生命周期函数--监听页面初次渲染完成 */ onReady: function () { }, /** * 生命周期函数--监听页面显示 */ onShow: function () { }, /** * 生命周期函数--监听页面隐藏 */ onHide: function () { }, /** * 生命周期函数--监听页面卸载 */ onUnload: function () { if (this.interval) clearInterval(this.interval); console.log() }, /** * 页面相关事件处理函数--监听用户下拉动作 */ onPullDownRefresh: function () { }, /** * 页面上拉触底事件的处理函数 */ onReachBottom: function () { }, /** * 用户点击右上角分享 */ onShareAppMessage: function () { } })