personal.ts 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207
  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. app.setLogin(false)
  77. app.resetUserInfo();
  78. wx.showToast({
  79. title: '登出成功!',
  80. });
  81. setTimeout(()=>{
  82. wx.redirectTo({
  83. url:"/pages/my/my"
  84. })
  85. },1000)
  86. },
  87. async checkSession(): Promise<boolean> {
  88. let isExist = false
  89. wx.checkSession({
  90. success() {
  91. isExist = true
  92. },
  93. fail() {
  94. isExist = false
  95. }
  96. })
  97. await sleep(1000)
  98. return Promise.resolve(isExist)
  99. },
  100. async handleGetPhoneNumber(event: WechatMiniprogram.ButtonGetPhoneNumber) {
  101. // debugger
  102. console.log('event', event)
  103. const isValid = await this.checkSession();
  104. console.log('isValid', isValid)
  105. if (isValid) {
  106. const { code, iv, encryptedData } = event.detail
  107. if (code && iv && encryptedData) {
  108. const res = await decrptPhone({
  109. iv: iv,
  110. code: code,
  111. encryptedData: encryptedData
  112. })
  113. console.log('res', res.phoneNumber)
  114. if (res.phoneNumber) {
  115. const wxUserId = wx.getStorageSync('wxUserId');
  116. await updateUserInfo({
  117. wxUserId,
  118. phoneNumber: res.phoneNumber
  119. })
  120. await getUserInfo();
  121. }
  122. }
  123. }
  124. },
  125. handleSexSelectShow() {
  126. const basicListOption: ActionSheetShowOption = {
  127. theme: ActionSheetTheme.List,
  128. selector: '#t-action-sheet',
  129. items: [
  130. {
  131. label: '男性',
  132. },
  133. {
  134. label: '女性',
  135. },
  136. ],
  137. };
  138. genderHandler = ActionSheet.show(basicListOption);
  139. },
  140. async handleSelected(event: WechatMiniprogram.TouchEvent) {
  141. const { index } = event.detail
  142. if (index > -1) {
  143. // debugger
  144. console.log('index', index)
  145. const wxUserId = wx.getStorageSync('wxUserId');
  146. await updateUserInfo({
  147. wxUserId,
  148. gender: index + 1
  149. })
  150. await getUserInfo();
  151. }
  152. },
  153. async onChooseAvatar(e: WechatMiniprogram.TouchEvent) {
  154. const {
  155. avatarUrl
  156. } = e.detail
  157. const url = await updateAvatar(avatarUrl)
  158. console.log('url', url)
  159. const wxUserId = wx.getStorageSync('wxUserId');
  160. await updateUserInfo({
  161. wxUserId,
  162. avatarUrl: url
  163. })
  164. await getUserInfo();
  165. },
  166. async updateNickName(e: WechatMiniprogram.TouchEvent) {
  167. const { value } = e.detail
  168. console.log('value-1', value)
  169. if (value) {
  170. const wxUserId = wx.getStorageSync('wxUserId');
  171. await updateUserInfo({
  172. wxUserId,
  173. nickName: value
  174. })
  175. await getUserInfo();
  176. }
  177. },
  178. handleCancel() {
  179. genderHandler && genderHandler.close();
  180. }
  181. })