// pages/test3/test3.js const db = wx.cloud.database(); Page({ data: { students: [], // 存储所有学生信息 currentStudent: null, // 当前选中的学生信息 score: '', // 用户输入的分数 effects: [ // 特殊效果数组 { name: '+0分', value: 0 }, { name: '+1分', value: 1 }, { name: '+2分', value: 2 }, { name: '+3分', value: 3 }, { name: '+4分', value: 4 }, { name: '+5分', value: 5 }, ] }, onLoad: function() { this.loadStudents(); }, // 加载学生数据 loadStudents: function() { const studentsCollection = db.collection('users'); studentsCollection.get({ success: res => { if (res.data.length === 0) { wx.showToast({ title: '没有学生数据', icon: 'none', duration: 2000 }); return; } this.setData({ students: res.data }); }, fail: err => { console.error('学生数据加载失败:', err); } }); }, // 按积分加权随机点名 weightedRandomRollCall: function() { const students = this.data.students; if (students.length === 0) { wx.showToast({ title: '没有可点名的学生', icon: 'none', duration: 2000 }); return; } const weights = students.map(student => 1 / (student.score + 1)); const totalWeight = weights.reduce((sum, weight) => sum + weight, 0); const randomWeight = Math.random() * totalWeight; let cumulativeWeight = 0; let selectedStudent = null; for (let i = 0; i < weights.length; i++) { cumulativeWeight += weights[i]; if (cumulativeWeight >= randomWeight) { selectedStudent = students[i]; break; } } if (selectedStudent) { this.setData({ currentStudent: selectedStudent }); console.log(this.data.currentStudent) wx.showToast({ title: `点到:${selectedStudent.name}`, icon: 'none', duration: 2000 }); } else { wx.showToast({ title: '未抽到学生', icon: 'none', duration: 2000 }); } }, // 用户输入分数 inputScore: function(e) { this.setData({ score: e.detail.value }); }, // 更新分数 updatescore: function() { let db = wx.cloud.database() let userCollection = db.collection('users') const xuehao = this.data.currentStudent.num; const inputScore = this.data.score; if (!xuehao || inputScore === '') { wx.showToast({ title: '信息不完整', icon: 'none', duration: 2000 }); return; } const newScore = parseFloat(this.data.currentStudent.score) + parseFloat(inputScore); userCollection.where({ num: xuehao }).update({ data: { score: newScore } }).then(res => { console.log('更新成功'); wx.showToast({ title: '分数更新成功', icon: 'success', duration: 2000 }); }).catch(err => { console.log('更新失败', err); // 失败提示错误信息 }) }, addHalfScore: function() { if (this.data.currentStudent) { this.updateStudentScore(0.5); } else { wx.showToast({ title: '请先随机点名一个学生', icon: 'none', duration: 2000 }); } }, addoneScore: function() { if (this.data.currentStudent) { this.updateStudentScore(1); } else { wx.showToast({ title: '请先随机点名一个学生', icon: 'none', duration: 2000 }); } }, addoneandhalfScore: function() { if (this.data.currentStudent) { this.updateStudentScore(1.5); } else { wx.showToast({ title: '请先随机点名一个学生', icon: 'none', duration: 2000 }); } }, addtwoScore: function() { if (this.data.currentStudent) { this.updateStudentScore(2); } else { wx.showToast({ title: '请先随机点名一个学生', icon: 'none', duration: 2000 }); } }, addtwoandhalfScore: function() { if (this.data.currentStudent) { this.updateStudentScore(2.5); } else { wx.showToast({ title: '请先随机点名一个学生', icon: 'none', duration: 2000 }); } }, addthreeScore: function() { if (this.data.currentStudent) { this.updateStudentScore(3); } else { wx.showToast({ title: '请先随机点名一个学生', icon: 'none', duration: 2000 }); } }, // 减少1分 subtractOneScore: function() { if (this.data.currentStudent) { this.updateStudentScore(-1); } else { wx.showToast({ title: '请先随机点名一个学生', icon: 'none', duration: 2000 }); } }, // 更新选中学生的分数 updateStudentScore: function(amount) { const newScore = parseFloat(this.data.currentStudent.score) + amount; const studentId = this.data.currentStudent._id; const userCollection = db.collection('users'); userCollection.doc(studentId).update({ data: { score: newScore } }).then(res => { console.log('分数更新成功'); wx.showToast({ title: '分数更新成功', icon: 'success', duration: 2000 }); this.setData({ currentStudent: {...this.data.currentStudent, score: newScore.toString()} }); }).catch(err => { console.error('分数更新失败', err); wx.showToast({ title: '分数更新失败', icon: 'none', duration: 2000 }); }); }, applyEffect: function() { if (!this.data.currentStudent) { wx.showToast({ title: '请先随机点名一个学生', icon: 'none', duration: 2000 }); return; } // 随机选择一个效果 const effect = this.data.effects[Math.floor(Math.random() * this.data.effects.length)]; this.setData({ effect: effect // 设置抽取的效果以便显示 }); // 更新选中学生的分数 this.updateStudentScore(effect.value); wx.showToast({ title: `应用效果:${effect.name}`, icon: 'success', duration: 2000 }); }, //刷新 refreshData: function() { this.loadStudents1(); }, // 加载学生数据 loadStudents1: function() { const studentsCollection = db.collection('users'); studentsCollection.get({ success: res => { if (res.data.length === 0) { wx.showToast({ title: '没有学生数据', icon: 'none', duration: 2000 }); return; } this.setData({ students: res.data, currentStudent: null, // 清空当前选中的学生信息 effect: null // 清空效果信息 }); }, fail: err => { console.error('学生数据加载失败:', err); } }); }, goBack: function() { wx.navigateTo({ url: '/pages/teacherHomePage/teacherHomePage' }); } });