index.vue 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216
  1. <template>
  2. <view class="page">
  3. <view class="outView">
  4. <form @submit="inputValue">
  5. <view class="flex-row justify-between bordBot" >
  6. <view class="key flex-col justify-center ">
  7. <text>头像</text>
  8. </view>
  9. <button class="photoView" open-type="chooseAvatar" @chooseavatar="chooseavatar">
  10. <image class="photoImage" :src="userInfo.selfPhotoUrl || '/static/me/ud4.png'"></image>
  11. </button>
  12. </view>
  13. <view class="flex-row justify-between bordBot" >
  14. <view class="key flex-col justify-center ">
  15. <text>昵称</text>
  16. </view>
  17. <view class="nikeName flex-col justify-center">
  18. <input type="nickname" name="nickname" v-model="userInfo.ncikName" placeholder="请输入昵称"/>
  19. </view>
  20. </view>
  21. <view class="flex-row justify-between bordBot" >
  22. <view class="key flex-col justify-center ">
  23. <text>会员编号</text>
  24. </view>
  25. <view class="flex-row justify-end groupItemContent">
  26. <text>{{userInfo.no}}</text>
  27. </view>
  28. </view>
  29. <view class="flex-row justify-between bordBot" >
  30. <view class="key flex-col justify-center ">
  31. <text>性别</text>
  32. </view>
  33. <picker class="picker" @change="genderChange" mode='selector' range-key="gender" :value="genderIndex" :range="genderList">
  34. <view class="flex-row justify-end groupItemContent">
  35. <text v-if="userInfo.sex == 0">男</text>
  36. <text v-else-if="userInfo.sex == 1">女</text>
  37. <text v-else-if="userInfo.sex == 2">未知</text>
  38. <text v-else>请选择性别</text>
  39. <u-icon name="arrow-right" color="#666" size="18"></u-icon>
  40. </view>
  41. </picker>
  42. </view>
  43. <view class="flex-row justify-between bordBot" >
  44. <view class="key flex-col justify-center ">
  45. <text>生日</text>
  46. </view>
  47. <picker class="picker" @change="birthdayChange" mode='date' range-key="label" >
  48. <view class="flex-row justify-end groupItemContent">
  49. <text>{{userInfo.birthday || '请选择出生日期' }}</text>
  50. <u-icon name="arrow-right" color="#666" size="18"></u-icon>
  51. </view>
  52. </picker>
  53. </view>
  54. <view class="flex-row justify-between bordBot" >
  55. <view class="key flex-col justify-center ">
  56. <text>手机号</text>
  57. </view>
  58. <view class="flex-row justify-end groupItemContent" @click="settingTelphone">
  59. <text>{{userInfo.phone? userInfo.phone : '绑定手机号' }}</text>
  60. <u-icon name="arrow-right" color="#666" size="18"></u-icon>
  61. </view>
  62. </view>
  63. <!-- <view class="flex-row justify-between bordBot" >-->
  64. <!-- <view class="key flex-col justify-center ">-->
  65. <!-- <text>实名认证</text>-->
  66. <!-- </view>-->
  67. <!-- <view class="flex-row justify-end groupItemContent" @click="gotoRealNameAuth">-->
  68. <!-- <text>{{userInfo.isAttestation? '已认证' : '未实名认证,去认证' }}</text>-->
  69. <!-- <u-icon name="arrow-right" color="#666" size="18"></u-icon>-->
  70. <!-- </view>-->
  71. <!-- </view>-->
  72. <button class="updateButton" formType="submit">
  73. <text>保存</text>
  74. </button>
  75. </form>
  76. </view>
  77. </view>
  78. </template>
  79. <script>
  80. export default {
  81. data() {
  82. return {
  83. photoUrl:'',
  84. userInfo: {},
  85. genderIndex:0,
  86. genderList: [{gender:'男',id:'0'},
  87. {gender:'女',id:'1'},
  88. {gender:'未知',id:'2'}],
  89. };
  90. },
  91. mounted() {
  92. },
  93. onShow() {
  94. // 用户信息
  95. this.userInfo = uni.getStorageSync('userInfo')
  96. if (this.userInfo.selfPhoto){
  97. this.getImgUrlByOssId(this.userInfo.selfPhoto)
  98. }
  99. },
  100. methods: {
  101. settingTelphone(){
  102. uni.navigateTo({
  103. url:'/myPages/setting/setting-telphone'
  104. })
  105. },
  106. inputValue(e){
  107. console.log('+++++++++++++inputValue+++++++++++',e)
  108. this.userInfo.ncikName = e.detail.value.nickname
  109. this.saveUserInfo()
  110. },
  111. // 选择性别
  112. genderChange(e){
  113. console.log(e.detail.value)
  114. this.userInfo.sex = e.detail.value
  115. },
  116. //选择的日期
  117. birthdayChange(e){
  118. console.log(e.detail.value)
  119. this.userInfo.birthday = e.detail.value
  120. },
  121. // 去实名认证
  122. gotoRealNameAuth(){
  123. uni.navigateTo({
  124. url: '/myPages/realNameAuth/index',
  125. })
  126. },
  127. // 保存用户信息
  128. saveUserInfo(){
  129. // 保存数据
  130. this.$api.saveUserInfo(this.userInfo).then((res)=>{
  131. console.log(res)
  132. // 刷新用户信息
  133. this.getUserInfo();
  134. uni.showToast({
  135. title: "操作成功"
  136. })
  137. // setTimeout(res=>{
  138. // uni.switchTab({
  139. // url: '/pages/index/index',
  140. // },2000)
  141. // })
  142. }).catch(() =>{
  143. uni.showToast({
  144. title: "操作失败"
  145. })
  146. });
  147. },
  148. getUserInfo(){
  149. this.$api.getUserInfo().then(res=>{
  150. console.log('++++++++++++获取用户信息++++++++++++++++++',res)
  151. uni.setStorageSync('userInfo',res.data.data)
  152. this.userInfo = res.data.data
  153. if (this.userInfo.selfPhoto){
  154. this.getImgUrlByOssId(this.userInfo.selfPhoto)
  155. }
  156. })
  157. },
  158. getImgUrlByOssId(Id){
  159. this.$api.getImage(Id).then(res=>{
  160. this.userInfo.selfPhotoUrl = res.data.data[0].url.replace(/^http:/, "https:")
  161. this.$set(this.userInfo)
  162. });
  163. },
  164. //头像上传
  165. chooseavatar(e){
  166. let that = this
  167. let avatarUrl =e.detail.avatarUrl
  168. console.log(e.detail.avatarUrl)
  169. uni.uploadFile({
  170. url: that.$baseUrl + '/resource/oss/upload', //仅为示例,非真实的接口地址
  171. filePath:avatarUrl,
  172. name: 'file',
  173. header: {
  174. // "Content-Type": "multipart/form-data",
  175. // 'X-Access-Token': uni.getStorageSync('token'),
  176. 'Authorization': 'Bearer ' + uni.getStorageSync('accessToken'),
  177. },
  178. success: (uploadFileRes) => {
  179. let res = JSON.parse(uploadFileRes.data)
  180. console.log('+++++++++++++++++chooseavatar+++++++++++++++++++++++',uploadFileRes.data)
  181. that.userInfo.selfPhoto=res.data.ossId
  182. that.userInfo.selfPhotoUrl = res.data.url.replace(/^http:/, "https:")
  183. }
  184. });
  185. },
  186. }
  187. };
  188. </script>
  189. <style lang="scss">
  190. @import '/common/css/common.css';
  191. @import './index.rpx.css';
  192. </style>