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.

233 lines
6.6 KiB

var addfile = false;
var filename = "fuck";
const add_excel_file = () => {
return new Promise((resolve, reject) => {
wx.chooseMessageFile({
count: 1,
type: 'file',
success(res) {
wx.showLoading({
title: '上传中',
})
console.log(res);
const path = res.tempFiles[0].path;
var suffix = path.split('.').pop().toLowerCase();
// console.log(suffix);
if (suffix == "xlsx" || suffix == "xls") {
uploadfile(path).then(res => {
wx.showLoading({
title: '解析中',
})
analysis(res).then(res => {
resolve(res);
})
})
}
else {
wx.showToast({
title: '请检查文件',
icon: 'error',
duration: 1000
})
reject(res);
}
}
})
})
}
const analysis = fileID => {
return new Promise((resolve, reject) => {
wx.cloud.callFunction({
name: "analysis_excel",
data: {
filename: filename,
fileID: fileID,
},
success: res => {
wx.hideLoading()
console.log('解析成功', res);
if (res.result == "error") {
wx.showToast({
title: '错误',
icon: 'error',
duration: 1000
})
}
else {
addfile = true;
wx.showLoading({
title: '加载中',
})
generate_list().then(res => {
wx.showToast({
title: '完成',
icon: 'success',
duration: 1000
})
resolve(res);
})
}
},
fail: err => {
wx.hideLoading()
console.log('解析失败', err);
wx.showToast({
title: '错误',
icon: 'error',
duration: 1000
})
reject(res);
}
})
})
}
const generate_list = () => {
return new Promise((resolve, reject) => {
wx.cloud.callFunction({
name: "get_database",
data: {
filename: filename,
type: 0
},
success: res => {
console.log(res);
var app = getApp();
app.globalData.array = res.result.data;
app.globalData.total = res.result.data.length;
resolve(res);
},
fail: err => {
console.log(err);
reject(err);
}
})
})
}
const uploadfile = (tempFile) => {
// console.log("要上传文件的临时路径", tempFile)
return new Promise((resolve, reject) => {
let timestamp = (new Date()).valueOf()
var app = getApp();
app.globalData.filename = timestamp;
filename = timestamp;
// console.log(filename);
wx.cloud.init();
wx.cloud.uploadFile({
cloudPath: + timestamp + '.xls', //云存储的路径,开发者自定义
filePath: tempFile, // 文件路径
}).then(res => {
console.log("上传成功", res)
app.globalData.fileID = res.fileID;
// console.log(app.globalData.fileID);
resolve(res.fileID)
})
})
}
var callnext = () => {
var app = getApp();
if (app.globalData.currentId + app.globalData.rcount > app.globalData.total - 1) {
app.globalData.rcount = 1;
return false;
} else {
app.globalData.currentId += app.globalData.rcount;
return true;
}
}
var setCurrentId = (_id) => {
var app = getApp();
app.globalData.currentId = _id;
}
const revoke = () => {
var app = getApp();
if (app.globalData.currentId == 0) {
return false;
} else {
app.globalData.currentId--;
return true;
}
}
const updatestate = (state) => {
var app = getApp();
var currentId = app.globalData.currentId;
var student_ID = app.globalData.array[currentId].student_ID;
var name = app.globalData.array[currentId].name;
var attendance_count = (app.globalData.array[currentId].attendance_count + 1);
var score = app.globalData.array[currentId].score;
app.globalData.array[currentId].state = state;
if(state == "cut"){
score-=1;
}else if(state == "present"){
score+=1;
}
wx.cloud.callFunction({
name: "get_database",
data: {
filename: filename,
type: 1,
student_ID: student_ID,
name: name,
state: state,
attendance_count: attendance_count,
score: score
},
success: res => {
console.log(res);
},
fail: err => {
console.log(err);
}
})
}
const updatescore = (deltaScore) => {
var app = getApp();
var currentId = app.globalData.currentId;
var student_ID = app.globalData.array[currentId].student_ID;
var name = app.globalData.array[currentId].name;
var attendance_count = app.globalData.array[currentId].attendance_count + 1;
var score = app.globalData.array[currentId].score;
// 将传入的 deltaScore 直接加到现有的 score 上
score += deltaScore;
// 更新全局数据中的 score 和 attendance_count
app.globalData.array[currentId].score = score;
app.globalData.array[currentId].attendance_count = attendance_count;
// 调用云函数更新数据库
wx.cloud.callFunction({
name: "get_database",
data: {
filename: filename,
type: 1,
student_ID: student_ID,
name: name,
score: score,
attendance_count: attendance_count
},
success: res => {
console.log("数据库更新成功: ", res);
},
fail: err => {
console.error("数据库更新失败: ", err);
}
});
}
module.exports = {
add_excel_file,
analysis,
generate_list,
uploadfile,
callnext,
setCurrentId,
revoke,
updatestate,
updatescore
}