init.js 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  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, safeArea, screenHeight } = wx.getSystemInfoSync(),
  20. capsule = wx.getMenuButtonBoundingClientRect();
  21. let Ios = screenHeight - safeArea.bottom;
  22. that.globalData = capsule ? { Ios, StatusBar, Custom: capsule, CustomBar: capsule.bottom + capsule.top - StatusBar } : { Ios, StatusBar, CustomBar: StatusBar + 50 };
  23. resolve();
  24. } catch (err) { reject(err) }
  25. })
  26. }
  27. // 全局请求封装
  28. static request = () => {
  29. function _request (data) {
  30. data["url"] = URL(data.url, requestUrl);
  31. data = instanceRequset(data);
  32. return new Promise((resolve, reject) => {
  33. wx.request({
  34. ...data,
  35. success: function (res) {
  36. try { let data = instanceResponse(res); resolve(data); } catch (err) { console.log(err); reject(err) }
  37. },
  38. fail: function (err) {
  39. reject(err)
  40. },
  41. })
  42. })
  43. }
  44. wx.$request = _request;
  45. }
  46. // 全局文件上传封装
  47. static uploadFile = () => {
  48. function uploadFile (data) {
  49. data["url"] = URL(data.url, requestUrl);
  50. data = instanceRequset(data);
  51. return new Promise((resolve, reject) => {
  52. wx.uploadFile({
  53. ...data,
  54. success: function (res) {
  55. try { let data = instanceResponse(res); resolve(data); } catch (err) { reject(err) }
  56. },
  57. fail: function (err) {
  58. reject(err)
  59. },
  60. })
  61. })
  62. }
  63. wx.$uploadFile = uploadFile;
  64. }
  65. // 小程序需要的参数
  66. static mustArg = () => {
  67. function login () { return new Promise((resolve, reject) => wx.login({ success: res => resolve(res), fail: () => reject("code获取失败!") })) };
  68. function getUserInfo () { return new Promise((resolve, reject) => wx.getUserInfo({ success: res => resolve(res), fail: () => reject("账号信息获取失败!") })) }
  69. return new Promise(async (resolve, reject) => {
  70. try {
  71. // appId
  72. const accountinfo = wx.getAccountInfoSync();
  73. let { appId } = accountinfo.miniProgram;
  74. // code
  75. let { code } = await login();
  76. // encryptedData, iv, userInfo
  77. let { encryptedData, iv, userInfo } = await getUserInfo();
  78. resolve({ appId, code, encryptedData, iv, userInfo })
  79. } catch (err) { reject(err) }
  80. })
  81. }
  82. }
  83. async function init () {
  84. try {
  85. await Index.system(this);
  86. Index.err();
  87. // 清空token
  88. wx.setStorageSync("token", '');
  89. Index.request();
  90. Index.uploadFile();
  91. // 小程序需要的参数
  92. let mustArg = await Index.mustArg();
  93. // 小程序首次请求
  94. let user = await wx.$request({ url: "/account/code2Session/", method: "post", data: { code: mustArg.code, appid: mustArg.appId } });
  95. wx.setStorageSync("token", user.data.token ? 'JWT ' + user.data.token : '');
  96. this.globalData = { ...this.globalData, mustArg, user: user.data, _initState: true, };
  97. console.log(this.globalData)
  98. } catch (err) {
  99. console.log(err)
  100. }
  101. }
  102. module.exports = init;