personal.js 4.9 KB

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