init.js 3.5 KB

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