app.js 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  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. // fetchutil.get(`api/wx/getPhone/${res.code}`, {}, {}).then((res) => {
  53. // console.log('获取用户手机号', res);
  54. // })
  55. },
  56. })
  57. },
  58. onLaunch() {
  59. let token = wx.getStorageSync('token')
  60. if (token) {
  61. fetchutil.get(`api/wx/checkToken`, {}, {}).then((response) => {
  62. if (!response.data) {
  63. this.login()
  64. }
  65. }).catch(() => {
  66. // @ts-ignore
  67. this.login()
  68. })
  69. } else {
  70. // @ts-ignore
  71. this.login()
  72. }
  73. },
  74. })