// 导入TDesign弹窗 import Toast from 'tdesign-miniprogram/toast/index'; const app = getApp();//新建页面时 默认引入 const req = app.simpleReq();//初始化一个的request() 实例 // 导入RSA加密包 import WxmpRsa from 'wxmp-rsa' Page({ data: { showFail: false }, // 此处为周期事件 /** * 生命周期函数--监听页面加载 */ closeShowFail(){ this.setData({ showFail: false }) }, onLoad(options) { // 绑定情侣时为未登入状态 if (options.loveMac) { this.setData({ showFail: true }) } if(options&&options.sn&&options.sn!=null&&options.sn!=''){ console.log('有数据'+options.sn) wx.showToast({ title:options.sn, icon: 'none', duration: 5000 }) this.login('nfc',options.sn) }else{ console.log('无数据') } }, /** * 生命周期函数--监听页面初次渲染完成 */ onReady() { }, /** * 生命周期函数--监听页面显示 */ onShow() { }, /*---------------------------------------------*/ //以下为自定义事件 /**跳转到获取晶石页面 */ go2Get(){ // wx.navigateTo({ // url: '/pages/index/out/out' // }) console.log('跳转获取晶石页面'); }, /** * 登录失败提示 */ loginErrorToast(mode) { Toast({ context: this, selector: '#t-toast', message: mode=='scan'?'扫码登录失败\n 二维码有误':'精灵链接失败\n 请再试一次', theme: 'error', direction: 'column', }); }, /**扫码事件 */ scanCodeEvent(){ //扫码代码 wx.scanCode({ onlyFromCamera: true,// 只允许从相机扫码 success: (res) => { this.login('scan',res.result) }, }) }, /** * 登录事件, * mode为模式参数,scan为扫码,nfc为nfc模式 * code为用户码参数,用户码为空则代表为扫码登录 */ login(mode,code){ let DEV_CODE = code let PUBLIC_KEY = "" req.getRequest('/api/dict/value/login-public-key',{}).then((res)=>{ if(res.data.code === 200){ //获取公钥成功 PUBLIC_KEY = res.data.data // 实例化rsa const rsa = new WxmpRsa() // 设置公钥 rsa.setPublicKey(PUBLIC_KEY) // 加密 const mac = rsa.encryptLong(DEV_CODE) wx.setStorageSync('mac-key', mac) // 此处执行登录获取token操作 req.postRequest('/api/user/login',{'mac':mac}).then((res)=>{ if(res.data.code === 200){ wx.setStorageSync('token', res.data.data.token) wx.setStorageSync('isFirst', res.data.data.isFirst) // 设置当前设备码 wx.setStorageSync('code', DEV_CODE) // 设置为初次识别NFC wx.setStorageSync('nfc', false) // 判断用户是否有未读信札 this.getLetter() }else if(res.data.code==500){ this.loginErrorToast(mode) }else{ this.loginErrorToast(mode) } } ) }else{ wx.showToast({ title:'扫码失败,请确认您的二维码是否正确!', icon: 'none', duration: 1000 }) } }).catch((err)=>{ console.log(err); }) }, // 判断是否用未读信札 getLetter(){ wx.request({ url: 'https://xzjl-api.windymuse.cn/api/user/curt', header: {'Authorization': wx.getStorageSync('token')}, method: 'GET', success: res => { const letterStatus = res.data.data.letterStatus // 这里可以判断是否有未读信札 if (letterStatus === 'sending') { wx.redirectTo({ url: '/pages/xz/index' }) }else { wx.switchTab({ url: '/pages/home/xy/index' }) } } }) } })