user.vue 3.9 KB

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