You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

157 lines
4.9 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

// pages/addStudent/addStudent.js
Page({
data: {
className:"K班",
input: "",
students:[
]
},
onLoad: function(options) {
console.log(options);
// options 参数包含了从上一个页面传递过来的数据
const receivedClassName = options.className; // 获取传递过来的 className默认为空字符串
// 更新页面的数据
this.setData({
className: receivedClassName // 将接收到的 className 赋值给页面的 data 属性
});
console.log(this.data.className);
},
//获取输入框内容
onInput: function(e) {
console.log(e.detail.value)
this.setData({
input: e.detail.value//保存输入
});
},
// Excel文件导入
importExcel: function() {
const that = this;
wx.chooseMessageFile({
count: 1, // 默认为1设置选择文件的数量
type: 'file',
extension: ['xlsx'], // 指定文件的后缀名
success(res) {
const tempFiles = res.tempFiles; // 临时文件路径
const filePath = tempFiles[0].path; // 获取文件的路径
console.log(tempFiles);
that.readExcel(filePath); // 读取文件内容
},
fail(err) {
console.error('选择文件失败:', err);
}
});
},
// 读取Excel文件内容
readExcel(filePath) {
// 可以使用微信小程序的API或将文件上传到服务器解析
const that = this;
wx.uploadFile({
url: 'http://192.168.152.1:8090/excel/import', // 你的服务器上传地址
filePath: filePath,
name: 'file',
success: uploadRes => {
// 假设服务器返回解析后的 JSON 数据
const data = JSON.parse(uploadRes.data);
that.addStudents(data.students);
},
fail: uploadErr => {
console.error('文件上传失败:', uploadErr);
}
});
},
// 将解析后的学生数据添加到现有数组中
addStudents(newStudents) {
const currentStudents = this.data.students;
const allStudents = currentStudents.concat(newStudents); // 合并数组
this.setData({
students: allStudents
});
},
//点击输入框提示可以输入
focus: function(){
wx.showToast({
title: '可以开始输入了',
icon: 'none',
duration: 2000
});
},
cantNull: function(){
wx.showToast({
title: '输入框不可为空',
icon: 'none',
duration: 2000
});
},
addProcess: function(){
if(this.data.input != ""){
//分割字符串为数组
let firstArray = this.data.input.split("|");
console.log(firstArray);
let secondArray = firstArray.map(str => str.split(" "));
console.log(secondArray)
//遍历secondArray
secondArray.forEach(subArray => {
// 结构法从子数组中提取id和name
//等同于 const id = subArray[0]; const name = subArray[1];
const { [0]: id, [1]: name } = subArray;
// 创建一个新的对象来存储这些信息
const newStu = {
id: id,
name: name,
point: 10,
clazz: this.data.className,
};
const isDuplicate = this.data.students.some(stu => stu.id === id);
if(!isDuplicate){
// 将新对象发送到后端服务器
const classstu = newStu;
//classstu.className = this.data.className;//此时 classstu = {id:"102201",name:"Jhon", className:`${this.data.className}` }
wx.request({
url: 'http://192.168.152.1:8090/student/set',
method: 'POST', // 请求方法通常是POST用于发送数据
header: {
'Content-Type': 'application/json' // 设置请求头指定数据格式为JSON
},
data: newStu, // 要发送的数据这里直接传入对象wx.request会自动将其转换为JSON字符串后端接收json字符串
success: function(res) {
// 处理后端返回的响应
console.log('请求成功', res.data);
// 根据需要更新小程序页面的数据或执行其他操作
},
fail: function(err) {
// 处理请求失败的情况
console.error('请求失败', err);
// 可以向用户显示错误信息或执行其他错误处理操作
}
});
// 将新对象添加到data.stu数组中
this.setData({
['students[' + this.data.students.length + ']']: newStu //直接将新对象加在数组后面
});
} else {
console.log('id重复:${id}');
}
})
console.log(this.data.students);
} else {
this.cantNull();
}
},
goToclass_manage: function(){
wx.navigateTo({
url: '/pages/class_manage/class_manage'
});
}
});