const db = wx.cloud.database(); const app = getApp(); Page({ data: { students: [], selectedStudent: null, score: '' }, onLoad: function() { this.getStudents(); }, // 获取学生列表 getStudents: function() { db.collection('students').get().then(res => { console.log('Students retrieved:', res.data); if (res.data && res.data.length > 0) { this.setData({ students: res.data }); // 将学生列表存储到全局数据中 app.globalData.students = res.data; } else { console.warn('No students found in the database.'); wx.showToast({ title: '没有学生信息', icon: 'none' }); } }).catch(err => { console.error('Failed to get students:', err); wx.showToast({ title: '获取学生信息失败', icon: 'none' }); }); }, // 随机点名 randomRollCall: function() { const students = this.data.students; if (students.length === 0) { wx.showToast({ title: '没有学生信息', icon: 'none' }); return; } const totalPoints = students.reduce((sum, student) => sum + Math.max(0, 10 - student.points), 0); let randomPoint = Math.random() * totalPoints; let cumulativePoint = 0; let selectedStudent = null; for (const student of students) { cumulativePoint += Math.max(0, 10 - student.points); if (randomPoint <= cumulativePoint) { selectedStudent = student; break; } } if (selectedStudent) { this.setData({ selectedStudent: selectedStudent }); wx.showToast({ title: `点名成功: ${selectedStudent.name} (${selectedStudent.id})`, icon: 'success' }); } else { wx.showToast({ title: '点名失败', icon: 'none' }); } }, // 输入评分 inputScore: function(e) { this.setData({ score: e.detail.value }); }, // 更新积分 updatePoints: function() { const student = this.data.selectedStudent; const score = parseFloat(this.data.score); if (isNaN(score)) { wx.showToast({ title: '请输入有效的评分', icon: 'none' }); return; } student.points += score; db.collection('students').doc(student._id).update({ data: { points: student.points } }).then(() => { this.getStudents(); wx.showToast({ title: '评分成功', icon: 'success' }); }).catch(err => { console.error('Failed to update student points:', err); wx.showToast({ title: '评分失败', icon: 'none' }); }); } });