|
|
import { toast } from '../../utils/extendApi'
|
|
|
import { getStorage, setStorage } from '../../utils/storage'
|
|
|
//导入ComponentWithStore方法
|
|
|
import { ComponentWithStore } from 'mobx-miniprogram-bindings'
|
|
|
import { userStore } from '../../stores/userstore'
|
|
|
import { configure } from 'mobx-miniprogram'
|
|
|
|
|
|
// pages/upteach/upteach.js
|
|
|
ComponentWithStore({
|
|
|
storeBindings: {
|
|
|
store: userStore,
|
|
|
fields: ['id', 'identify'],//从Store中获取id和identify,存放在页面的data里
|
|
|
actions: []
|
|
|
},
|
|
|
|
|
|
data: {
|
|
|
LessonStatus: 0,
|
|
|
Roll_Method: 0,
|
|
|
Pick_Rule: [
|
|
|
'',
|
|
|
'积分低者概率up',
|
|
|
'与日期奇偶相同学号者概率up'
|
|
|
],
|
|
|
score: 0,
|
|
|
stu_no: '',
|
|
|
status_roll:0,//点名状态初始化为0
|
|
|
status_roll_string:'',//将status_roll转为文本
|
|
|
texts: [], // 存储从后端获取的数组
|
|
|
displayText: '', // 当前显示的文本(滚动时显示随机文本,停止时显示最终结果)
|
|
|
// finalResult: '', // 最终要显示的点名结果
|
|
|
animation: {}, // 动画数据
|
|
|
animationData: {}, // 动画实例
|
|
|
intervalId: null, // 动画定时器ID,后面在轮询函数StartPolling函数中设置了另外一个定时器intervalId2
|
|
|
timeoutId: null, // 超时ID
|
|
|
LessonName:''
|
|
|
|
|
|
},
|
|
|
|
|
|
methods: {
|
|
|
onLoad:function(){
|
|
|
this.setData({
|
|
|
LessonName:getStorage('LessonName'),
|
|
|
status_roll:0
|
|
|
})
|
|
|
|
|
|
this.fetchTexts();
|
|
|
},
|
|
|
// <!-- 点击按钮触发事件,向服务器发送请求更新该课程的上下课状态,并变更LessionStatus值
|
|
|
OnLession() {
|
|
|
// 请求开始上课,只发送LessionId,让服务器去更新该课程的状态为上课中。调用函数成功则将本地的LessionStatus更新成1,让按钮显示条件改变
|
|
|
wx.request({
|
|
|
url: `http://172.20.10.2:8600/teacher-api/teacher/classstart/${getStorage('LessonId')}`, // 请替换成
|
|
|
success: (res) => {
|
|
|
if (res.data != null && res.data.code === 200) {
|
|
|
toast({ title: '开始上课', icon: 'success' });
|
|
|
this.setData({
|
|
|
LessonStatus: 1,
|
|
|
})
|
|
|
|
|
|
} else {
|
|
|
console.error('上课失败,系统出错:', res.data);
|
|
|
toast({ title: '系统出错', icon: 'error' });
|
|
|
}
|
|
|
},
|
|
|
fail(err) {
|
|
|
console.error('上课请求失败:', err);
|
|
|
}
|
|
|
});
|
|
|
},
|
|
|
|
|
|
OffLession() {
|
|
|
// 请求结束上课,只发送LessionId,让服务器去更新该课程的状态为未上课。调用函数成功则将本地的LessionStatus更新成0,让按钮显示条件改变
|
|
|
wx.request({
|
|
|
url: `http://172.20.10.2:8600/teacher-api/teacher/classend/${getStorage('LessonId')}`, // 请替换成实际的接口地址
|
|
|
method: 'GET',
|
|
|
success: (res) => {
|
|
|
if (res.data != null && res.data.code === 200) {
|
|
|
console.log('结束上课:', res.data);//'true' or 'false'
|
|
|
toast({ title: '结束上课', icon: 'success' });
|
|
|
this.setData({
|
|
|
LessonStatus: 0,
|
|
|
});
|
|
|
wx.switchTab({
|
|
|
url: '/pages/home/home',
|
|
|
})
|
|
|
//如果显示有问题的话,使用set
|
|
|
} else {
|
|
|
console.error('结束上课请求失败,系统出错:', res.data);
|
|
|
toast({ title: '系统出错', icon: 'error' });
|
|
|
}
|
|
|
},
|
|
|
fail(err) {
|
|
|
console.error('上课请求失败:', err);
|
|
|
}
|
|
|
});
|
|
|
},
|
|
|
PickStudent() {
|
|
|
//进行抽点
|
|
|
|
|
|
this.setData({
|
|
|
Roll_Method: this.getRandomInt(1, 2) // 生成1到5之间的随机整数
|
|
|
});
|
|
|
console.log(this.data.Roll_Method); // 注意使用 this.data 来访问已设置的数据
|
|
|
|
|
|
wx.request({
|
|
|
url: `http://172.20.10.2:8600/student-api/student/classroll/${getStorage('LessonId')}/${this.data.Roll_Method}`, // 请替换成实际的接口地址
|
|
|
method: 'GET',
|
|
|
success: (res) => {
|
|
|
if (res.data != null && res.data.code === 200) {
|
|
|
console.log('抽点请求发送成功:', res.data);//'true' or 'false'
|
|
|
toast({ title: '抽点成功', icon: 'success' });
|
|
|
|
|
|
//点名结束,保留点名规则
|
|
|
this.setData({
|
|
|
stu_no: res.data.data,
|
|
|
status_roll: res.data.data
|
|
|
//保留学生学号
|
|
|
})
|
|
|
this.startScrolling()
|
|
|
// this.setData({
|
|
|
// LessionStatus: 0
|
|
|
// })
|
|
|
//如果显示有问题的话,使用set
|
|
|
} else {
|
|
|
console.error('抽点请求发送失败,系统出错:', res.data);
|
|
|
toast({ title: '系统出错', icon: 'error' });
|
|
|
}
|
|
|
},
|
|
|
fail(err) {
|
|
|
console.error('抽点失败:', err);
|
|
|
}
|
|
|
});
|
|
|
},
|
|
|
//加分函数
|
|
|
AddScore() {
|
|
|
wx.request({
|
|
|
url: `http://172.20.10.2:8600/student-api/student/comment/${getStorage('LessonId')}/${this.data.stu_no}/${this.data.score}`, // 请替换成
|
|
|
success: (res) => {
|
|
|
if (res.data.code === 200) {
|
|
|
toast({ title: '加分成功', icon: 'success' });
|
|
|
this.setData({
|
|
|
stu_no: '' //置零
|
|
|
})
|
|
|
|
|
|
} else {
|
|
|
console.error('加分失败,系统出错:', res.data);
|
|
|
toast({ title: '加分失败,系统出错', icon: 'error' });
|
|
|
}
|
|
|
},
|
|
|
fail(err) {
|
|
|
console.error('请求失败:', err);
|
|
|
}
|
|
|
});
|
|
|
},
|
|
|
// 在页面的JS文件中定义函数
|
|
|
getRandomInt(min, max) {
|
|
|
return Math.floor(Math.random() * (max - min + 1)) + min;
|
|
|
},
|
|
|
handleInput: function (e) {
|
|
|
this.setData({
|
|
|
score: e.detail.value
|
|
|
})
|
|
|
},
|
|
|
fetchTexts: function () {
|
|
|
const self = this;
|
|
|
wx.request({
|
|
|
url: `http://172.20.10.2:8600/student-api/student/getnolist/${getStorage('LessonId')}`, // 替换为实际的后端API地址
|
|
|
method: 'GET',
|
|
|
success: function (res) {
|
|
|
if (res.data && res.data.code === 200 && Array.isArray(res.data.data)) {
|
|
|
self.setData({ texts: res.data.data });
|
|
|
} else {
|
|
|
console.error('从后端获取文本数组失败:', res);
|
|
|
}
|
|
|
},
|
|
|
fail: function (err) {
|
|
|
console.error('函数调用失败:', err);
|
|
|
}
|
|
|
});
|
|
|
},
|
|
|
startScrolling: function () {
|
|
|
const self = this;
|
|
|
const texts = this.data.texts;
|
|
|
if (texts.length === 0) return;
|
|
|
|
|
|
let currentIndex = Math.floor(Math.random() * texts.length); // 随机初始化当前索引
|
|
|
self.setData({ displayText: texts[currentIndex] });
|
|
|
|
|
|
this.data.intervalId = setInterval(function () {
|
|
|
currentIndex = (currentIndex + 1) % texts.length; // 更新索引
|
|
|
self.setData({ displayText: texts[currentIndex] }); // 更新显示的文本
|
|
|
}, 300); // 假设每300ms切换一次文本,可以根据需要调整速度
|
|
|
|
|
|
// 设置一个超时,在指定时间后停止滚动
|
|
|
const autoStopTime = 3000; // 例如,5秒后停止
|
|
|
this.data.timeoutId = setTimeout(function () {
|
|
|
self.stopScrollingAndShowResult();
|
|
|
}, autoStopTime);
|
|
|
},
|
|
|
//停止滚动
|
|
|
stopScrollingAndShowResult: function () {
|
|
|
clearInterval(this.data.intervalId); // 停止定时器
|
|
|
clearTimeout(this.data.timeoutId); // 清除超时设置,以防多次触发
|
|
|
|
|
|
const texts = this.data.texts;
|
|
|
const finalIndex = this.data.status_roll // 本地的roll值代表被抽中的学号
|
|
|
this.setData({
|
|
|
|
|
|
status_roll_string : this.data.status_roll.toString() ,
|
|
|
|
|
|
// finalResult: texts[finalIndex] // 存储最终结果(如果需要后续使用)和data{}配合使用
|
|
|
});
|
|
|
this.setData({
|
|
|
displayText: this.data.status_roll_string, // 更新显示文本为最终结果
|
|
|
})
|
|
|
},
|
|
|
}
|
|
|
}) |