index.js 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168
  1. import {
  2. createStoreBindings
  3. } from 'mobx-miniprogram-bindings'
  4. import {
  5. store
  6. } from '~/store/index'
  7. import {
  8. setUserInfo,
  9. exchangePhone,
  10. getMyInfo,
  11. bindPhone
  12. } from '~/api/user'
  13. import event from '~/mixins/event'
  14. let storeBindings
  15. Page({
  16. behaviors: [event],
  17. data: {
  18. gradeIndex: 0,
  19. gradeArray: [{
  20. value: 'PRESCHOOL',
  21. key: '学前班'
  22. }, {
  23. value: 'PRIMARY_FIRST_GRADE',
  24. key: '一年级'
  25. },
  26. {
  27. value: 'PRIMARY_SECOND_GRADE',
  28. key: '二年级'
  29. },
  30. {
  31. value: 'PRIMARY_THREE_GRADE',
  32. key: '三年级'
  33. },
  34. {
  35. value: 'PRIMARY_SENIOR_GRADE',
  36. key: '四年级'
  37. }, {
  38. value: 'PRIMARY_FIVE_GRADE',
  39. key: '五年级'
  40. }, {
  41. value: 'PRIMARY_SIX_GRADE',
  42. key: '六年级'
  43. },
  44. ],
  45. genderList: [{
  46. value: 0,
  47. key: '女'
  48. }, {
  49. value: 1,
  50. key: '男'
  51. }, ]
  52. },
  53. onLoad(options) {
  54. // 手工绑定
  55. this.storeBindings = createStoreBindings(this, {
  56. store,
  57. fields: {
  58. userInfo: 'userInfo'
  59. },
  60. actions: {
  61. setUser: 'setUser'
  62. }
  63. })
  64. // 立刻更新
  65. this.storeBindings.updateStoreBindings()
  66. let {
  67. grade
  68. } = this.data.userInfo
  69. let gradeIndex = this.data.gradeArray.findIndex(item => {
  70. return item.value == grade
  71. })
  72. this.setData({
  73. gradeIndex
  74. })
  75. },
  76. // 调用清理函数
  77. onUnload() {
  78. this.storeBindings.destroyStoreBindings()
  79. },
  80. changeAvatar(e) {
  81. const {
  82. avatarUrl
  83. } = e.detail
  84. wx.uploadFile({
  85. url: 'https://reader-api.ai160.com/file/upload',
  86. filePath: avatarUrl,
  87. name: '头像',
  88. header: {
  89. uid: wx.getStorageSync('uid')
  90. },
  91. success: (res) => {
  92. const newAvatar = JSON.parse(res.data).data;
  93. const str = 'userInfo.avatar'
  94. this.setData({
  95. [str]: newAvatar
  96. })
  97. this.setUserInfo({
  98. avatar: newAvatar
  99. })
  100. }
  101. })
  102. },
  103. saveNickName(e) {
  104. let nickName = e.detail.value;
  105. if (nickName == this.data.userInfo.nickName) {
  106. return
  107. } else if (!nickName) {
  108. return this.setData({
  109. ['userInfo.nickName']: this.data.userInfo.nickName
  110. })
  111. }
  112. this.setUserInfo({
  113. nickName
  114. })
  115. },
  116. selectGender(e) {
  117. this.setUserInfo({
  118. gender:e.detail.value
  119. })
  120. },
  121. bindDateChange(e) {
  122. this.setUserInfo({
  123. birthday: e.detail.value
  124. })
  125. },
  126. bindGradeChange(e) {
  127. let grade = this.data.gradeArray[e.detail.value].value
  128. this.setUserInfo({
  129. grade
  130. })
  131. },
  132. saveSchool(e) {
  133. let schoolName = e.detail.value;
  134. if (schoolName == this.data.userInfo.schoolName) {
  135. return
  136. }
  137. this.setUserInfo({
  138. schoolName
  139. })
  140. },
  141. async setUserInfo(data) {
  142. wx.showLoading({
  143. title: '提交中',
  144. })
  145. let res = await setUserInfo(data, 'put').finally(() => {
  146. wx.hideLoading()
  147. })
  148. this.setUser(res)
  149. },
  150. async getPhoneNumber({
  151. detail
  152. }) {
  153. let mobile = await exchangePhone({
  154. code: detail.code
  155. })
  156. await bindPhone({
  157. mobile
  158. })
  159. let userInfo = await getMyInfo()
  160. this.setUser(userInfo.user)
  161. wx.showToast({
  162. title: '绑定成功!',
  163. icon: "none",
  164. duration: 4000
  165. })
  166. },
  167. })