editMsg.vue 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222
  1. <template>
  2. <view class="edit">
  3. <view class="form">
  4. <u--form labelPosition="left" :model="form" :rules="rules" ref="form1">
  5. <u-form-item label="姓名" prop="userInfo.name" borderBottom ref="item1" labelWidth="200rpx">
  6. <u--input v-model="form.userInfo.name" border="none" placeholder="填写真实姓名"
  7. placeholderStyle="color: #555555"></u--input>
  8. </u-form-item>
  9. <u-form-item label="性别" labelWidth="200rpx" prop="userInfo.gender" borderBottom
  10. @click="showgender = true;" ref="item1">
  11. <picker @change="bindPickerChange" :value="index" :range="genderArray">
  12. <view class="" style="display: flex;">
  13. <u--input v-model="form.userInfo.gender" disabled disabledColor="#ffffff" placeholder="选择性别"
  14. placeholderStyle="color: #555555" border="none"></u--input>
  15. <u-icon slot="right" name="arrow-right" size="28"></u-icon>
  16. </view>
  17. </picker>
  18. </u-form-item>
  19. <u-form-item label="出生日期" labelWidth="200rpx" borderBottom ref="item1">
  20. <picker  mode="date"  :value="form.userInfo.birthday"  start="1922-01-01"  @change="bindDateChange">
  21. <view class="" style="display: flex;">
  22. <u--input v-model="form.userInfo.birthday" disabled disabledColor="#ffffff"
  23. placeholder="选择出生日期" placeholderStyle="color: #555555" border="none"></u--input>
  24. <u-icon slot="right" name="arrow-right" size="28"></u-icon>
  25. </view>
  26. </picker>
  27. </u-form-item>
  28. <u-form-item label="邮箱" labelWidth="200rpx" borderBottom ref="item1" prop="userInfo.email">
  29. <u--input v-model="form.userInfo.email" border="none" placeholder="填写邮箱"
  30. placeholderStyle="color: #555555"></u--input>
  31. </u-form-item>
  32. <u-form-item label="证件类型" labelWidth="200rpx" borderBottom ref="item1" prop="userInfo.certificate_type">
  33. <picker @change="bindType" :value="index" :range="typeArray">
  34. <view class="" style="display: flex;">
  35. <u--input v-model="form.userInfo.certificate_type" disabled disabledColor="#ffffff"
  36. placeholder="选择证件类型" placeholderStyle="color: #555555" border="none"></u--input>
  37. <u-icon slot="right" name="arrow-right" size="28"></u-icon>
  38. </view>
  39. </picker>
  40. </u-form-item>
  41. <u-form-item label="证件号码" labelWidth="200rpx" prop="userInfo.certificate_no" borderBottom ref="item1">
  42. <u--input v-model="form.userInfo.certificate_no" border="none" placeholder="填写证件号码"
  43. placeholderStyle="color: #555555"></u--input>
  44. </u-form-item>
  45. </u--form>
  46. </view>
  47. <view class="navbar" @click="save" v-if="!editbtn">
  48. 保存
  49. </view>
  50. <view class="navbar" @click="editMsg" v-if="editbtn">
  51. 修改
  52. </view>
  53. </view>
  54. </template>
  55. <script>
  56. export default {
  57. data() {
  58. return {
  59. // 性别选择
  60. genderArray: ['男', '女'],
  61. // 证件类型
  62. typeArray: ["身份证", "临时身份证", "士兵证", "暂住证", "外交护照", "普通护照", "台湾居民来往大陆通行证", "港澳居民来往内地通行证", "港澳同胞回乡证",
  63. "其他证件(包括联合国通行证 欧洲共同体护照等)"
  64. ],
  65. // index:0,
  66. form: {
  67. userInfo: {
  68. name: '',
  69. gender: '',
  70. email: '',
  71. birthday: "",
  72. certificate_type: '',
  73. certificate_no: ''
  74. },
  75. },
  76. actions: [{
  77. name: '男',
  78. },
  79. {
  80. name: '女',
  81. }
  82. ],
  83. rules: {
  84. 'userInfo.name': {
  85. type: 'string',
  86. required: true,
  87. message: '请填写姓名',
  88. trigger: ['blur', 'change']
  89. },
  90. 'userInfo.gender': {
  91. type: 'string',
  92. max: 1,
  93. required: true,
  94. message: '请选择男或女',
  95. trigger: ['blur', 'change']
  96. },
  97. 'userInfo.email': {
  98. type: 'string',
  99. required: true,
  100. message: '请填写邮箱',
  101. trigger: ['blur', 'change']
  102. },
  103. "userInfo.certificate_no": {
  104. type: 'string',
  105. len: 18,
  106. required: true,
  107. message: '请填写正确的证件号',
  108. trigger: ['blur']
  109. },
  110. "userInfo.certificatesType": {
  111. type: 'string',
  112. required: true,
  113. message: '请填写证件类型',
  114. trigger: ['blur', 'change']
  115. },
  116. },
  117. radio: '',
  118. switchVal: false,
  119. editbtn: false
  120. };
  121. },
  122. onLoad(o) {
  123. if (o.form) {
  124. let form = JSON.parse(o.form)
  125. this.form.userInfo = form
  126. }
  127. },
  128. methods: {
  129. // 选择性别
  130. bindPickerChange(e) {
  131. console.log('picker发送选择改变,携带值为', e.detail.value)
  132. console.log(this.genderArray[e.detail.value])
  133. this.form.userInfo.gender = this.genderArray[e.detail.value]
  134. },
  135. // 选择护照类型
  136. bindType(e) {
  137. this.form.userInfo.certificate_type = this.typeArray[e.detail.value]
  138. },
  139. // 选择出生日期
  140. bindDateChange(e) {
  141. console.log(e)
  142. this.form.userInfo.birthday = e.detail.value
  143. },
  144. editMsg() {
  145. },
  146. save() {
  147. this.$showLoadding("加载中")
  148. let form={
  149. name:this.form.userInfo.name,
  150. gender: this.form.userInfo.gender,
  151. email: this.form.userInfo.email,
  152. birthday: this.form.userInfo.birthday,
  153. certificate_type:this.form.userInfo.certificate_type,
  154. certificate_no: this.form.userInfo.certificate_no
  155. }
  156. if (this.form.userInfo.gender == "男") {
  157. form.gender = 1
  158. } else {
  159. form.gender = 2
  160. }
  161. if (this.form.userInfo.certificate_type== "身份证") {
  162. form.certificate_type = 1
  163. }
  164. uni.$u.http.post('/api/user/edit', form, {
  165. custom: {
  166. auth: true
  167. }
  168. }).then((res) => {
  169. uni.hideLoading()
  170. this.$toast("保存成功")
  171. uni.navigateTo({
  172. url: "/pages/userCenter/userEdit"
  173. })
  174. }).catch((err) => {
  175. uni.hideLoading()
  176. this.$toast(err.message)
  177. })
  178. }
  179. }
  180. };
  181. </script>
  182. <style lang="less">
  183. .u-form-item__body.data-v-5e7216f1 {
  184. padding: 18px 0 !important;
  185. }
  186. page {
  187. background-color: #F4F4F4;
  188. }
  189. .form {
  190. background-color: #ffffff;
  191. border-radius: 8rpx 32rpx 8rpx 32rpx;
  192. padding: 30rpx 30rpx 0;
  193. margin: 20rpx 30rpx 0;
  194. }
  195. .navbar {
  196. width: 100%;
  197. height: 104rpx;
  198. line-height: 104rpx;
  199. background: #1E9F6A;
  200. border-radius: 16rpx 16rpx 0px 0px;
  201. color: #FFFFFF;
  202. position: fixed;
  203. left: 0;
  204. bottom: 0;
  205. text-align: center;
  206. }
  207. </style>