user.vue 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  1. <template>
  2. <view class="box">
  3. <view class="fromData">
  4. <u-form :model="form" ref="uForm">
  5. <u-form-item label="姓名"><u-input placeholder="请输入姓名" v-model="form.name" /></u-form-item>
  6. <u-form-item label="电话"><u-input placeholder="请输入手机号码" v-model="form.phone" /></u-form-item>
  7. <u-form-item label="地址"><u-input placeholder="请输入详细地址" v-model="form.address" /></u-form-item>
  8. <u-form-item label="职业"><u-input v-model="form.occupation" type="select" :select-open="showOccupation" @click="showOccupation = !showOccupation" /></u-form-item>
  9. <u-form-item label="简介"><u-input placeholder="请输入简介" maxlength="200" type="textarea" v-model="form.detail" /></u-form-item>
  10. <u-form-item label="头像"><u-upload max-count="1" :action="upUrl" :header="upHeader" @on-uploaded="setImg"></u-upload></u-form-item>
  11. </u-form>
  12. </view>
  13. <csmess></csmess>
  14. <u-action-sheet :list="occupationList" v-model="showOccupation" @click="changeOccupation"></u-action-sheet>
  15. <view class="upButtom" @click="submit">提交申请</view>
  16. </view>
  17. </template>
  18. <script>
  19. import { pushJoin } from '@/api/tp.js';
  20. import { mapState } from 'vuex';
  21. import csmess from '@/components/csMessage.vue';
  22. export default {
  23. components: {
  24. csmess
  25. },
  26. data() {
  27. return {
  28. form: {
  29. name: '', //姓名
  30. phone: '', //联系方式
  31. address: '', //地址
  32. occupation: '产康师', //职业
  33. upImg: '', //上传头像
  34. detail: '' //简介
  35. },
  36. // 是否显示职业选择弹窗
  37. showOccupation: false,
  38. //职业类型选择
  39. occupationList: [
  40. {
  41. text: '产康师'
  42. },
  43. {
  44. text: '母乳喂养指导师'
  45. }
  46. ],
  47. fileList: [
  48. {
  49. url: 'http://pics.sc.chinaz.com/files/pic/pic9/201912/hpic1886.jpg'
  50. }
  51. ]
  52. };
  53. },
  54. computed: {
  55. ...mapState(['baseURL']),
  56. // 上传图片地址
  57. upUrl() {
  58. return this.baseURL + '/api/upload/image';
  59. },
  60. upHeader() {
  61. return {
  62. 'Authori-zation': 'Bearer ' + uni.getStorageSync('token') || ''
  63. };
  64. }
  65. },
  66. onLoad() {},
  67. onShow() {},
  68. methods: {
  69. // 选中切换
  70. changeOccupation(e) {
  71. console.log(this.occupationList[e].text);
  72. this.form.occupation = this.occupationList[e].text;
  73. console.log(e);
  74. },
  75. submit() {
  76. uni.showLoading({
  77. title: '提交报名中...',
  78. mask: true
  79. });
  80. const data = this.form;
  81. pushJoin({
  82. type: 1,
  83. job: data.occupation,
  84. name: data.name,
  85. phone: data.phone,
  86. address: data.address,
  87. avatar: data.upImg,
  88. detail: data.detail
  89. })
  90. .then(e => {
  91. uni.hideLoading();
  92. uni.showToast({
  93. title: '报名成功'
  94. });
  95. uni.showModal({
  96. title: '提示',
  97. content: '是否返回活动页?',
  98. success: res => {
  99. if (res.confirm) {
  100. uni.navigateBack();
  101. }
  102. }
  103. });
  104. console.log(e);
  105. })
  106. .catch(e => {
  107. uni.hideLoading();
  108. console.log(e);
  109. });
  110. },
  111. setImg(data, index, lists, name) {
  112. console.log(data);
  113. this.form.upImg = data[0].response.data.url;
  114. console.log(this.form.upImg);
  115. }
  116. }
  117. };
  118. </script>
  119. <style lang="scss">
  120. .box {
  121. padding-bottom: 70rpx;
  122. }
  123. .fromData {
  124. background-color: #ffffff;
  125. border-radius: 10rpx;
  126. margin: 30rpx;
  127. padding: 0 20rpx;
  128. }
  129. .upButtom {
  130. background: #d7272b;
  131. color: #ffffff;
  132. font-size: 32rpx;
  133. font-weight: bold;
  134. text-align: center;
  135. padding: 20rpx 0;
  136. position: fixed;
  137. bottom: 0;
  138. left: 0;
  139. right: 0;
  140. }
  141. </style>