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.

180 lines
5.3 KiB

import { getWXACodeUrl} from "../../../js/utils";
const app = getApp();
Component({
properties: {
course_id:Number,
course_identity:Number,
attendance_id:Number,
mode:String,
code:String
},
data:{
attachDir:global.config.attachDir
},
methods:{
onShow(){
if(this.data.status!=200)
this.refresh();
},
onLoad(options){
if(options.scene){
5 years ago
;
let scene = decodeURIComponent(options.scene);
let [attendance_id, mode, code] = scene.split("-");
this.setData({attendance_id, mode, code,course_identity:5});
}
this.refresh();
},
previewQrCode(){
let {code_url} = this.data;
wx.previewImage({
urls: [code_url]
});
},
copyCode(){
let {name, start_time,end_time, code} = this.data;
let data = `签到名称:${name}\n签到时间:${start_time}-${end_time}\n签到码:${code}`;
wx.setClipboardData({data});
},
onCodeLoadError(e) {
5 years ago
;
let page = this.route;
let scene = this.getScene();
5 years ago
;
wx.cloud.callFunction({ name: "openapi", data: { action: "getWXACodeUnlimited", name:"wxacode.getUnlimited", page, scene , data:{page, scene}} })
.then(res => {
this.setData({ code_url: "" });
this.setData({ code_url: res.result.fileID||res.result });
});
},
navBack(){
if(getCurrentPages().length<=1){
let {course_identity, course_id} = this.data;
let {code,message} = this.data;
if(code!=200&&message)
return app.reLaunch({url:"{main}"});//@todo
app.redirectTo({
url: `{attendance}?course_identity=${course_identity}&course_id=${course_id}`
});
}else
wx.navigateBack({
delta:1
});
},
onSubmit(e){
let { detail: { value } } = e;
let { scaned_code, mode } = this.data;
5 years ago
;
if(!value.code&&mode!="QUICK") return;
value.attendance_mode = mode;
if(mode=='QRCODE'){
if(value.code!=scaned_code){
value.attendance_mode="NUMBER";
return wx.showToast({
title: '只支持扫二维码签到',icon:"none"
});
}
}
if(mode=="QUICK")
delete value.code;
if(this.data.code&&this.data.code!='undefined'&&value.code!=this.data.code&&mode!="QUICK")
return wx.showToast({
title: '签到码不正确', icon: "none"
});
app.api("weapps.course_member_attendances")(value)
.then(res => {
res.message = "签到成功";
app.showMsg(res);
setTimeout(()=>{
this.navBack();
},800);
}).catch(e => {
app.showError(e);
});
},
scanCode(){
wx.scanCode({
success:res=>{
var fail = false;
if (res.scanType == "QR_CODE")
this.setData({ scaned_code: res.result});
else if (res.scanType == "WX_CODE" && res.path) {
var match = res.path.match(/attendance_detail\?(.*)$/)
5 years ago
;
var options = {}
match[1].split("&").map(i => {
var index = i.indexOf("=");
var k = i.slice(0, index);
var v = i.slice(index + 1);
options[k] = v
})
5 years ago
;
if(options.scene){
let [attendance_id, mode, scaned_code] = decodeURIComponent(options.scene).split("-");
if(scaned_code)
this.setData({scaned_code});
else
fail = false;
}else{
fail = true;
}
}else{
fail = true;
}
if (fail)
wx.showToast({title: "识别失败", icon: "none"})
}
})
},
refresh(){
let {course_identity} = this.data;
if(course_identity){
let {attendance_id} = this.data;
app.api("weapps.attendances")({attendance_id})
.then(res=>{
this.setData(res);
this.setData({status:200, message:""});
if(course_identity<5&&res.mode=="QRCODE"){
let code_url = getWXACodeUrl({url: this.route, scene: this.getScene()});
this.setData({code_url});
}
}).catch(e=>{
if(e.code==402)
e.message = "你没有访问权限";
app.showError(e);
this.setData({status: e.code, message:e.message});
})
}else{
this.refreshIdentity()
.then(res=>{
if(this.data.course_identity)
this.refresh();
})
}
},
getScene(){
let {mode, code, attendance_id} = this.data;
return attendance_id+"-"+mode+"-"+code;
},
refreshIdentity(){
let {course_id} = this.data;
return app.api("courses.top_banner")({course_id})
.then(res=>{
5 years ago
;
let {course_identity} = res;
this.setData({course_identity});
})
},
analyseWxaCode(){
},
onShareAppMessage(){
let {attendance_id, mode, code, course_id} = this.data;
return app.shareApp({
imageUrl: global.config.attachDir + "753481",
path:"/" + this.route+`?course_identity=5&attendance_id=${attendance_id}&code=${code||''}&mode=${mode}&course_id=${course_id}`,
title:"课堂签到-"+this.data.name
})
}
}
})