profilePatch.ts 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. import { decrptPhone, getUserInfo, updateUserInfo, updateAvatar } from '../../api/user'
  2. const sleep = (ms: number) => new Promise((r) => setTimeout(r, ms));
  3. Component({
  4. /**
  5. * 组件的属性列表
  6. */
  7. properties: {
  8. show: { // 属性名
  9. type: Boolean,
  10. value: false,
  11. },
  12. showPhone: { // 属性名
  13. type: Boolean,
  14. value: false,
  15. },
  16. },
  17. /**
  18. * 组件的初始数据
  19. */
  20. observers: {
  21. show: function (val) {
  22. console.log('gemer', val)
  23. this.setData({
  24. ifShow: val
  25. })
  26. }
  27. },
  28. data: {
  29. ifShow: true,
  30. bottom: 0,
  31. defaultAvatarUrl: 'https://4dkk.4dage.com/miniapp-source/daikan/avatar_default.png',
  32. avatar: '',
  33. nickname: '',
  34. phoneNumber: ''
  35. },
  36. attached() {
  37. // this.setData({
  38. // bottom: 0
  39. // })
  40. // debugger
  41. },
  42. /**
  43. * 组件的方法列表
  44. */
  45. methods: {
  46. updateNickName(ev) {
  47. this.setData({
  48. nickname: ev.detail.value
  49. })
  50. },
  51. quitHandle: function () {
  52. // getApp().setLoginProps(true)
  53. },
  54. async onChooseAvatar(e: WechatMiniprogram.TouchEvent) {
  55. const {
  56. avatarUrl
  57. } = e.detail
  58. const url = await updateAvatar(avatarUrl)
  59. console.log('url', url)
  60. this.setData({
  61. avatar: url
  62. })
  63. },
  64. async updateUserInfo() {
  65. const wxUserId = wx.getStorageSync('wxUserId');
  66. const res = await updateUserInfo({
  67. wxUserId,
  68. nickName: this.data.nickname,
  69. avatarUrl: this.data.avatar,
  70. phoneNumber: this.data.phoneNumber,
  71. })
  72. if (res.code === 0) {
  73. await getUserInfo();
  74. this.setData({
  75. ifShow: false
  76. });
  77. this.triggerEvent('update')
  78. } else {
  79. wx.showToast({
  80. title: res.message
  81. });
  82. }
  83. console.log('updateUserInfo-结果', res);
  84. },
  85. async checkSession(): Promise<boolean> {
  86. let isExist = false
  87. wx.checkSession({
  88. success() {
  89. isExist = true
  90. },
  91. fail() {
  92. isExist = false
  93. }
  94. })
  95. await sleep(1000)
  96. return Promise.resolve(isExist)
  97. },
  98. async handleGetPhoneNumber(event: WechatMiniprogram.ButtonGetPhoneNumber) {
  99. console.log('event', event)
  100. const isValid = await this.checkSession();
  101. console.log('isValid', isValid)
  102. if (isValid) {
  103. const { code, iv, encryptedData } = event.detail
  104. if (code && iv && encryptedData) {
  105. const res = await decrptPhone({
  106. iv: iv,
  107. code: code,
  108. encryptedData: encryptedData
  109. })
  110. console.log('res', res)
  111. if (res && res.phoneNumber) {
  112. this.setData({
  113. phoneNumber: res.phoneNumber
  114. })
  115. }
  116. }
  117. }
  118. }
  119. }
  120. })