index.js 3.6 KB

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