const app = getApp(); Component({ properties: { hidden:{ type:Boolean, value: true, observer:function(hidden){ if(!hidden){ wx.getClipboardData({ success:res=>{ if(!res.data||res.data==this.clipboardData) return; this.clipboardData = res.data; var match = res.data.match(/[A-Z0-9]{5,6}/); if(match) this.setData({invite_code: match[0]}); } }) } } }, show_code:{ type:Number, value:1 }, invite_code: String, auto_navigate:{ type:Number, value:1 }, opentype:{ type:String, value:"navigateTo" } }, data: { identities:[], hidden:true }, methods: { scan(){ wx.scanCode({ success:res=>{ console.log(res); var fail = false; if(res.scanType=="QR_CODE") this.setData({invite_code: res.result}); else if(res.scanType=="WX_CODE"&&res.path){ var match = res.path.match(/course_invite\?(.*)$/) console.log("match",match); if(match){ 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}) console.log("options",options); if(options.scene){ var scene = {}; for (var i of decodeURIComponent(options.scene).split("&")) { var index = i.indexOf("="); var k = i.slice(0,index); var v = i.slice(index+1); scene[k] = v; } console.log(scene); if(scene.course_id){ var {course_id} = scene; app.api("weapps.courses.basic_info")({ course_id }) .then(({ course:{invite_code=""}}) => { console.log(invite_code); this.setData({invite_code}); }).catch(app.showError); }else fail = true; }else fail = true; }else fail= true; }else fail = true; if(fail) wx.showToast({ title:"识别失败",icon:"none" }) } }) }, cancel: function (event) { this.setData({ hidden: true }); }, update_invite_code: function ({ detail: { value } }) { console.log(value); this.setData({ invite_code: value }); }, update_identities: function ({ detail: { value } }) { var data = {assistant_professor:"", professor:"",student:""} console.log(value); for(var identity of value) data[identity] = 1 console.log(data); this.setData(data) }, join_course: function (event) { if(this.disabled) return; let { invite_code="", assistant_professor="", professor,student=""} = this.data; this.disabled = true; app.api("courses.apply_to_join_course")({ invite_code, assistant_professor, professor, student,complete: res=>{this.disabled=false}}) .then(res => { app.showMsg(res,800); if (res.course_id&&this.data.auto_navigate&&res.message.indexOf("助教申请")==-1){ setTimeout(()=>{ app[this.data.opentype]({ url: `{course}?course_id=${res.course_id}` }); },640); } this.triggerEvent("success"); this.cancel(); }) .catch(app.showError) } } })