app.ts 2.2 KB

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