init.js 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. import { requestUrl, instanceRequset, instanceResponse } from '../config'
  2. class Index {
  3. // 全局报错提示
  4. static err = () => wx.$err = data => {
  5. console.log(data);
  6. wx.showModal({ showCancel: false, title: "报错提示", confirmText: "了解", content: JSON.stringify(data) })
  7. }
  8. // 获取系统信息
  9. static system = that => {
  10. return new Promise((resolve, reject) => {
  11. // color ui使用
  12. try {
  13. let { statusBarHeight: StatusBar } = wx.getSystemInfoSync(),
  14. capsule = wx.getMenuButtonBoundingClientRect();
  15. that.globalData = capsule ? { StatusBar, Custom: capsule, CustomBar: capsule.bottom + capsule.top - StatusBar } : { StatusBar, CustomBar: StatusBar + 50 };
  16. resolve();
  17. } catch (err) { reject(err) }
  18. })
  19. }
  20. // 全局请求封装
  21. static request = () => {
  22. function URL (argA, argB) {
  23. let reg1 = /^http:[?=.a-zA-Z0-9_\/\\-]+$/i,
  24. reg2 = /^https:[?=.a-zA-Z0-9_\/\\-]+$/i;
  25. if (argB.length == 0 || reg1.test(argA) || reg2.test(argA)) return argA;
  26. return argB + argA;
  27. }
  28. function _request (data) {
  29. data["url"] = URL(data.url, requestUrl);
  30. data = instanceRequset(data);
  31. return new Promise((resolve, reject) => {
  32. wx.request({
  33. ...data,
  34. success: function (res) {
  35. try { let data = instanceResponse(res); resolve(data); } catch (err) { console.log(err); reject(err) }
  36. },
  37. fail: function (err) {
  38. reject(err)
  39. },
  40. })
  41. })
  42. }
  43. wx.$request = _request;
  44. }
  45. // 小程序需要的参数
  46. static mustArg = () => {
  47. function login () { return new Promise((resolve, reject) => wx.login({ success: res => resolve(res), fail: () => reject("code获取失败!") })) };
  48. function getUserInfo () { return new Promise((resolve, reject) => wx.getUserInfo({ success: res => resolve(res), fail: () => reject("账号信息获取失败!") })) }
  49. return new Promise(async (resolve, reject) => {
  50. try {
  51. // appId
  52. const accountinfo = wx.getAccountInfoSync();
  53. let { appId } = accountinfo.miniProgram;
  54. // code
  55. let { code } = await login();
  56. // encryptedData, iv, userInfo
  57. let { encryptedData, iv, userInfo } = await getUserInfo();
  58. resolve({ appId, code, encryptedData, iv, userInfo })
  59. } catch (err) { reject(err) }
  60. })
  61. }
  62. }
  63. async function init () {
  64. try {
  65. await Index.system(this);
  66. Index.err();
  67. // 清空token
  68. wx.setStorageSync("token", '');
  69. Index.request();
  70. // 小程序需要的参数
  71. let mustArg = await Index.mustArg();
  72. // 小程序首次请求
  73. let user = await wx.$request({ url: "/account/code2Session/", method: "post", data: { code: mustArg.code, appid: mustArg.appId } });
  74. wx.setStorageSync("token", user.data.token ? 'JWT ' + user.data.token : '');
  75. this.globalData = { ...this.globalData, mustArg, user: user.data, _initState: true, };
  76. console.log(this.globalData)
  77. } catch (err) {
  78. console.log(err)
  79. }
  80. }
  81. module.exports = init;