profile.vue 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. <template>
  2. <view>
  3. <!-- 顶部导航 -->
  4. <fa-navbar title="个人资料"></fa-navbar>
  5. <!-- 内容 -->
  6. <view class="u-p-30">
  7. <u-form :model="form" ref="uForm">
  8. <u-form-item :label-position="labelPosition" label="头像:" prop="avatar" label-width="150">
  9. <u-image width="100" height="100" :src="url || userInfo.avatar" @click="chooseAvatar"></u-image>
  10. </u-form-item>
  11. <u-form-item label="用户名:" prop="username" label-width="150"><u-input v-model="form.username" /></u-form-item>
  12. <u-form-item label="昵称:" prop="nickname" label-width="150"><u-input v-model="form.nickname" /></u-form-item>
  13. <u-form-item label="个人介绍:" prop="bio" label-width="150"><u-input v-model="form.bio" type="textarea" /></u-form-item>
  14. </u-form>
  15. <view class="u-p-30"><u-button type="primary" hover-class="none" :custom-style="{ backgroundColor: theme.bgColor, color: theme.color }" @click="submit">提交</u-button></view>
  16. </view>
  17. <!-- 底部导航 -->
  18. <fa-tabbar></fa-tabbar>
  19. </view>
  20. </template>
  21. <script>
  22. import { avatar } from '@/common/fa.mixin.js';
  23. export default {
  24. mixins: [avatar],
  25. computed: {
  26. userInfo() {
  27. if (this.vuex_user.avatar && this.vuex_user.avatar.indexOf('data:image/svg+xml;base64') == -1) {
  28. this.form.avatar = this.vuex_user.avatar;
  29. }
  30. this.form.username = this.vuex_user.username;
  31. this.form.nickname = this.vuex_user.nickname;
  32. this.form.bio = this.vuex_user.bio;
  33. return this.vuex_user;
  34. }
  35. },
  36. onShow() {
  37. //移除事件监听
  38. uni.$off('uAvatarCropper', this.upload);
  39. },
  40. onReady() {
  41. this.$refs.uForm.setRules(this.rules);
  42. },
  43. data() {
  44. return {
  45. labelPosition: 'left',
  46. url: '',
  47. form: {
  48. username: '',
  49. nickname: '',
  50. bio: ''
  51. },
  52. rules: {
  53. username: [
  54. {
  55. required: true,
  56. message: '请输入用户名',
  57. trigger: 'blur'
  58. }
  59. ],
  60. nickname: [
  61. {
  62. required: true,
  63. message: '请输入昵称',
  64. trigger: 'blur'
  65. }
  66. ]
  67. }
  68. };
  69. },
  70. methods: {
  71. submit() {
  72. this.$refs.uForm.validate(async valid => {
  73. if (valid) {
  74. let res = await this.$api.getUserProfile(this.form);
  75. this.$u.toast(res.msg);
  76. if(res.code){
  77. setTimeout(()=>{
  78. this.$Router.back(1)
  79. },800)
  80. }
  81. } else {
  82. console.log('验证失败');
  83. }
  84. });
  85. }
  86. }
  87. };
  88. </script>
  89. <style lang="scss"></style>