import { requestUrl, instanceRequset, instanceResponse } from '../config' class Index { // 全局报错提示 static err = () => wx.$err = () => wx.showModal({ showCancel: false, title: "报错提示", confirmText: "了解", content: JSON.stringify(data) }) // 获取系统信息 static system = that => { return new Promise((resolve, reject) => { // color ui使用 try { let { statusBarHeight: StatusBar } = wx.getSystemInfoSync(), capsule = wx.getMenuButtonBoundingClientRect(); that.globalData = capsule ? { StatusBar, Custom: capsule, CustomBar: capsule.bottom + capsule.top - StatusBar } : { StatusBar, CustomBar: StatusBar + 50 }; resolve(); } catch (err) { reject(err) } }) } // 全局请求封装 static request = () => { function URL (argA, argB) { let reg1 = /^http:[?=.a-zA-Z0-9_\/\\-]+$/i, reg2 = /^https:[?=.a-zA-Z0-9_\/\\-]+$/i; if (argB.length == 0 || reg1.test(argA) || reg2.test(argA)) return argA; return argB + argA; } function _request (data) { data["url"] = URL(data.url, requestUrl); data = instanceRequset(data); return new Promise((resolve, reject) => { wx.request({ ...data, success: function (res) { try { resolve(instanceResponse(res)) } catch (err) { reject(err) } }, fail: function (err) { reject(err) }, }) }) } wx.$request = _request; } // 小程序需要的参数 static mustArg = () => { function login () { return new Promise((resolve, reject) => wx.login({ success: res => resolve(res), fail: () => reject("code获取失败!") })) }; function getUserInfo () { return new Promise((resolve, reject) => wx.getUserInfo({ success: res => resolve(res), fail: () => reject("账号信息获取失败!") })) } return new Promise(async (resolve, reject) => { try { // appId const accountinfo = wx.getAccountInfoSync(); let { appId } = accountinfo.miniProgram; // code let { code } = await login(); // encryptedData, iv, userInfo let { encryptedData, iv, userInfo } = await getUserInfo(); resolve({ appId, code, encryptedData, iv, userInfo }) } catch (err) { reject(err) } }) } } async function init () { try { await Index.system(this); Index.err(); // 清空token wx.setStorageSync("token", ''); Index.request(); // 小程序需要的参数 let mustArg = await Index.mustArg(); // 小程序首次请求 let user = await wx.$request({ url: "/account/code2Session/", method: "post", data: { code: mustArg.code, appid: mustArg.appId } }); wx.setStorageSync("token", user.data.token ? 'JWT ' + user.data.token : ''); this.globalData = { ...this.globalData, mustArg, user: user.data, _initState: true, }; console.log(this.globalData) } catch (err) { console.log(err) } } module.exports = init;