personal.ts 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200
  1. // pages/personal/personal.ts
  2. import ActionSheet, { ActionSheetTheme, ActionSheetShowOption } from 'tdesign-miniprogram/action-sheet/index';
  3. import { decrptPhone, getUserInfo, updateUserInfo, updateAvatar } from '../../api/user'
  4. let genderHandler: { close: () => void; } | null = null
  5. const sleep = (ms: number) => new Promise((r) => setTimeout(r, ms));
  6. Page({
  7. /**
  8. * 页面的初始数据
  9. */
  10. data: {
  11. avatar: 'https://4dkk.4dage.com/miniapp-source/daikan/avatar_default.png',
  12. },
  13. /**
  14. * 生命周期函数--监听页面加载
  15. */
  16. onLoad() {
  17. },
  18. updateUserInfo(data: GlobalUserInfo) {
  19. this.setData({
  20. userInfo: data
  21. })
  22. },
  23. /**
  24. * 生命周期函数--监听页面初次渲染完成
  25. */
  26. onReady() {
  27. const app = getApp<IAppOption>();
  28. app.watch('userInfo', this.updateUserInfo)
  29. },
  30. /**
  31. * 生命周期函数--监听页面显示
  32. */
  33. async onShow() {
  34. const isLogin = wx.getStorageSync('isLogin')
  35. const app = getApp<IAppOption>();
  36. this.setData({
  37. isLogin: isLogin
  38. })
  39. app.globalData.isLogin = isLogin
  40. await getUserInfo();
  41. },
  42. /**
  43. * 生命周期函数--监听页面隐藏
  44. */
  45. onHide() {
  46. },
  47. /**
  48. * 生命周期函数--监听页面卸载
  49. */
  50. onUnload() {
  51. const app = getApp<IAppOption>();
  52. app.unwatch('userInfo', this.updateUserInfo)
  53. },
  54. /**
  55. * 页面相关事件处理函数--监听用户下拉动作
  56. */
  57. onPullDownRefresh() {
  58. },
  59. /**
  60. * 页面上拉触底事件的处理函数
  61. */
  62. onReachBottom() {
  63. },
  64. /**
  65. * 用户点击右上角分享
  66. */
  67. onShareAppMessage() {
  68. },
  69. handleLogout() {
  70. const app = getApp<IAppOption>();
  71. this.setData({
  72. isLogin: false
  73. })
  74. wx.setStorageSync('isLogin', false)
  75. wx.setStorageSync('token', '')
  76. wx.showToast({
  77. title: '登出成功!'
  78. });
  79. app.setLogin(false)
  80. app.resetUserInfo();
  81. },
  82. async checkSession(): Promise<boolean> {
  83. let isExist = false
  84. wx.checkSession({
  85. success() {
  86. isExist = true
  87. },
  88. fail() {
  89. isExist = false
  90. }
  91. })
  92. await sleep(1000)
  93. return Promise.resolve(isExist)
  94. },
  95. async handleGetPhoneNumber(event: WechatMiniprogram.ButtonGetPhoneNumber) {
  96. // debugger
  97. console.log('event', event)
  98. const isValid = await this.checkSession();
  99. console.log('isValid', isValid)
  100. if (isValid) {
  101. const { code, iv, encryptedData } = event.detail
  102. if (code && iv && encryptedData) {
  103. const res = await decrptPhone({
  104. iv: iv,
  105. code: code,
  106. encryptedData: encryptedData
  107. })
  108. console.log('res', res.phoneNumber)
  109. if (res.phoneNumber) {
  110. const wxUserId = wx.getStorageSync('wxUserId');
  111. await updateUserInfo({
  112. wxUserId,
  113. phoneNumber: res.phoneNumber
  114. })
  115. await getUserInfo();
  116. }
  117. }
  118. }
  119. },
  120. handleSexSelectShow() {
  121. const basicListOption: ActionSheetShowOption = {
  122. theme: ActionSheetTheme.List,
  123. selector: '#t-action-sheet',
  124. items: [
  125. {
  126. label: '男性',
  127. },
  128. {
  129. label: '女性',
  130. },
  131. ],
  132. };
  133. genderHandler = ActionSheet.show(basicListOption);
  134. },
  135. async handleSelected(event: WechatMiniprogram.TouchEvent) {
  136. const { index } = event.detail
  137. if (index > -1) {
  138. // debugger
  139. console.log('index', index)
  140. const wxUserId = wx.getStorageSync('wxUserId');
  141. await updateUserInfo({
  142. wxUserId,
  143. gender: index + 1
  144. })
  145. await getUserInfo();
  146. }
  147. },
  148. async onChooseAvatar(e: WechatMiniprogram.TouchEvent) {
  149. const {
  150. avatarUrl
  151. } = e.detail
  152. const url = await updateAvatar(avatarUrl)
  153. console.log('url', url)
  154. const wxUserId = wx.getStorageSync('wxUserId');
  155. await updateUserInfo({
  156. wxUserId,
  157. avatarUrl: url
  158. })
  159. await getUserInfo();
  160. },
  161. async updateNickName(e: WechatMiniprogram.TouchEvent) {
  162. const { value } = e.detail
  163. console.log('value-1', value)
  164. if (value) {
  165. const wxUserId = wx.getStorageSync('wxUserId');
  166. await updateUserInfo({
  167. wxUserId,
  168. nickName: value
  169. })
  170. await getUserInfo();
  171. }
  172. },
  173. handleCancel() {
  174. genderHandler && genderHandler.close();
  175. }
  176. })