app.js 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. require('./utils/mixins_core')
  2. import fetchutil from './utils/http'
  3. // app.ts
  4. App({
  5. globalData: {
  6. userInfo: '',
  7. hasAvatar: ''
  8. },
  9. watch(key, method) {
  10. var obj = this.globalData;
  11. //加个前缀生成隐藏变量,防止死循环发生
  12. let ori = obj[key]; //obj[key]这个不能放在Object.defineProperty里
  13. if (ori) { //处理已经声明的变量,绑定处理
  14. method(ori);
  15. }
  16. Object.defineProperty(obj, key, {
  17. configurable: true,
  18. enumerable: true,
  19. set: function (value) {
  20. this['_' + key] = value;
  21. method(value);
  22. },
  23. get: function () {
  24. // 在其他界面调用key值的时候,这里就会执行。
  25. if (typeof this['_' + key] == 'undefined') {
  26. if (ori) {
  27. //这里读取数据的时候隐藏变量和 globalData设置不一样,所以要做同步处理
  28. this['_' + key] = ori;
  29. return ori;
  30. } else {
  31. return undefined;
  32. }
  33. } else {
  34. return this['_' + key];
  35. }
  36. }
  37. })
  38. },
  39. login() {
  40. wx.login({
  41. success: res => {
  42. fetchutil.get(`api/wx/login/${res.code}`, {}, {}).then((response) => {
  43. wx.setStorageSync('token', response.data.token)
  44. this.globalData.userInfo = {
  45. ...this.globalData.userInfo,
  46. ...response.data.wxUser
  47. }
  48. this.globalData.hasAvatar = response.data.wxUser.avatarUrl
  49. console.log(response);
  50. })
  51. },
  52. })
  53. },
  54. onLaunch() {
  55. let token = wx.getStorageSync('token')
  56. if (token) {
  57. fetchutil.get(`api/wx/checkToken`, {}, {}).then((response) => {
  58. if (!response.data) {
  59. this.login()
  60. }
  61. }).catch(() => {
  62. // @ts-ignore
  63. this.login()
  64. })
  65. } else {
  66. // @ts-ignore
  67. this.login()
  68. }
  69. },
  70. })