//"navigationStyle": "custom", //index.js //获取应用实例 const app = getApp() import api from './../../utils/api.js'; Page({ data: { motto: 'Hello', levels:[ '没有高反', '轻度高反', '中度高反', '重度高反' ], userInfo: { avatarUrl: '/assets/head.svg', realname: '张二娃', lastEvaluation: '2019-06-23 09:43' }, hasUserInfo: false, canIUse: wx.canIUse('button.open-type.getUserInfo') }, //事件处理函数 bindViewTap: function() { wx.showModal({ title: '测试', content: '', }) }, onLoad: function() { console.log('index load data',app.globalData) // 加载 if (app.globalData.openId) { // 已经获取了用户数据 this.processGetUserInfo(); } else if (this.data.canIUse) { // 可以获取用户信息 // 由于 getUserInfo 是网络请求,可能会在 Page.onLoad 之后才返回 // 所以此处加入 callback 以防止这种情况 // app.userInfoReadyCallback = res => { // this.processGetUserInfo(res.userInfo) // } // 获取用户信息 wx.getSetting({ success: res => { console.log('getSetting==>', res); if (res.authSetting['scope.userInfo']) { // 已经授权,可以直接调用 getUserInfo 获取头像昵称,不会弹框 wx.getUserInfo({ success: res => { this.processGetUserInfo(res.userInfo) // // 可以将 res 发送给后台解码出 unionId // this.globalData.wxuserInfo = res.userInfo // // 由于 getUserInfo 是网络请求,可能会在 Page.onLoad 之后才返回 // // 所以此处加入 callback 以防止这种情况 // if (this.userInfoReadyCallback) { // this.userInfoReadyCallback(res) // } } }) } } }) } else { // 在没有 open-type=getUserInfo 版本的兼容处理 wx.getUserInfo({ success: res => { this.processGetUserInfo(res.userInfo) } }) } }, getUserInfo: function(e) { // 获取草用户数据 this.processGetUserInfo(e.detail.userInfo) }, // 初始化用户数据 async initUserInfo() { try { let openid = await app.getOpenId(); let userInfo = await api.userInfo(openid, false); console.log('init user info data', userInfo); this.globalData.userInfo = userInfo; this.processGetUserInfo(userInfo); } catch (e) { console.log('init user info error', e); } }, // 处理获取到用户数据的逻辑 async processGetUserInfo(userInfo) { // if (app.globalData.userInfo) { // 已经存在数据则直接跳过 let userInfo = app.globalData.userInfo; this.setData({ userInfo: userInfo, hasUserInfo: true }); return; }else{ // 尝试创建该用户 let openid = app.globalData.openId; let userInfo = null; try{ userInfo = await api.userInfo(openid, false); if (userInfo.detail){ userInfo['realname'] = userInfo.detail.realname; } app.globalData.userInfo = userInfo; this.setData({ userInfo: userInfo, hasUserInfo: true }); return; }catch(e){ if (e['errMsg'] && e.errMsg.trim() == 'request:fail'){ wx.showModal({ title: '获取数据失败', showCancel:false }) return; } console.log('get user info error',e); } try { let data = await api.createUserInfo({ open_id: app.globalData.openId, nickname: userInfo.nickName, username: app.globalData.openId, avatarUrl: userInfo.avatarUrl, }); wx.setStorageSync('userinfo', data) // 保存数据 app.globalData.userInfo = data; this.setData({ userInfo: data, hasUserInfo: true }); } catch (e) { console.log('create user error', e); } } // 判断是否需要跳转 if (this.data.userInfo.detail) { return; } }, gotoAgreementPage() { wx.navigateTo({ url: '../init/agreement' }) }, gotoUserIndex() { if (this.data.userInfo.detail) { // 判断是否已经存在用户数据 wx.navigateTo({ url: '../user/index' }) }else{ this.gotoAgreementPage() } }, gotoEvaluation() { if (this.data.userInfo.detail) { // 判断是否已经存在用户数据 wx.navigateTo({ url: './../user/evaluation', }) } else { this.gotoAgreementPage() } }, async onShow(){ if (wx.getStorageSync('refresh-userinfo')) { wx.removeStorageSync('refresh-userinfo'); let userInfo = await api.userInfo(null, false); app.globalData.userInfo = userInfo; wx.setStorageSync('userinfo', userInfo) this.setData({ userInfo: userInfo, hasUserInfo: true }); } } })