userEdit.vue 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258
  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="填写真实姓名" placeholderStyle="color: #555555" disabledColor="#fff" @blur="changeAll(1)"></u--input>
  7. </u-form-item>
  8. <u-form-item label="性别" labelWidth="200rpx" prop="userInfo.gender" borderBottom @click="showgender = true;" ref="item1">
  9. <picker @change="bindPickerChange" :value="index" :range="genderArray">
  10. <view class="" style="display: flex;">
  11. <u--input v-model="form.userInfo.gender" disabled disabledColor="#ffffff" placeholder="选择性别" placeholderStyle="color: #555555" border="none" ></u--input>
  12. <u-icon slot="right" name="arrow-right" size="28"></u-icon>
  13. </view>
  14. </picker>
  15. </u-form-item>
  16. <u-form-item label="出生日期" labelWidth="200rpx" borderBottom ref="item1">
  17. <picker  mode="date" :value="form.userInfo.birthday" start="1922-01-01" @change="bindDateChange" >
  18. <view class="" style="display: flex;">
  19. <u--input v-model="form.userInfo.birthday" disabled disabledColor="#ffffff" placeholder="选择出生日期" placeholderStyle="color: #555555" border="none"></u--input>
  20. <u-icon slot="right" name="arrow-right" size="28"></u-icon>
  21. </view>
  22. </picker>
  23. </u-form-item>
  24. <u-form-item label="邮箱" labelWidth="200rpx" borderBottom ref="item1" prop="userInfo.email">
  25. <u--input v-model="form.userInfo.email" border="none" placeholder="填写邮箱" placeholderStyle="color: #555555" disabledColor="#fff" @blur="changeAll(2)"></u--input>
  26. </u-form-item>
  27. <u-form-item label="证件类型" labelWidth="200rpx" borderBottom ref="item1" prop="userInfo.certificate_type">
  28. <picker @change="bindType" :value="index" :range="typeArray" >
  29. <view class="" style="display: flex;">
  30. <u--input v-model="form.userInfo.certificate_type" disabled disabledColor="#ffffff" placeholder="选择证件类型" placeholderStyle="color: #555555" border="none" ></u--input>
  31. <u-icon slot="right" name="arrow-right" size="28"></u-icon>
  32. </view>
  33. </picker>
  34. </u-form-item>
  35. <u-form-item label="证件号码" labelWidth="200rpx" prop="userInfo.certificate_no" borderBottom ref="item1" >
  36. <u--input v-model="form.userInfo.certificate_no" border="none" placeholder="填写证件号码" placeholderStyle="color: #555555" disabledColor="#fff" @blur="changeAll(3)"></u--input>
  37. </u-form-item>
  38. </u--form>
  39. </view>
  40. <!-- <view class="navbar" @click="save" v-if="!editbtn">
  41. 保存
  42. </view>
  43. <view class="navbar" @click="editMsg" v-if="editbtn">
  44. 修改
  45. </view> -->
  46. </view>
  47. </template>
  48. <script>
  49. export default {
  50. data() {
  51. return {
  52. // 性别选择
  53. genderArray: ['男', '女'],
  54. // 证件类型
  55. typeArray:["身份证"],
  56. // index:0,
  57. form: {
  58. userInfo: {
  59. name: '',
  60. gender: '',
  61. email:'',
  62. birthday:"",
  63. certificate_type:'',
  64. certificate_no:''
  65. },
  66. },
  67. actions: [
  68. {name: '男',},
  69. {name: '女',}
  70. ],
  71. rules: {
  72. 'userInfo.name': {
  73. type: 'string',
  74. required: true,
  75. message: '请填写姓名',
  76. trigger: ['blur', 'change']
  77. },
  78. 'userInfo.gender': {
  79. type: 'string',
  80. max: 1,
  81. required: true,
  82. message: '请选择男或女',
  83. trigger: ['blur', 'change']
  84. },
  85. 'userInfo.email': {
  86. type: 'string',
  87. required: true,
  88. message: '请填写邮箱',
  89. trigger: ['blur', 'change']
  90. },
  91. // "userInfo.certificate_no":{
  92. // type: 'string',
  93. // required: true,
  94. // message: '请填写正确的证件号',
  95. // trigger: ['blur']
  96. // },
  97. // "userInfo.certificatesType":{
  98. // type: 'string',
  99. // required: true,
  100. // message: '请填写证件类型',
  101. // trigger: ['blur', 'change']
  102. // },
  103. },
  104. radio: '',
  105. switchVal: false,
  106. editbtn:false
  107. };
  108. },
  109. onLoad() {
  110. this.init()
  111. },
  112. methods: {
  113. init(){
  114. this.$showLoadding("加载中")
  115. uni.$u.http.post('/api/user/show',{
  116. custom: {
  117. auth: true
  118. }
  119. }).then((res) => {
  120. uni.hideLoading()
  121. if(res){
  122. let form=res
  123. if(form.gender==1){
  124. form.gender="男"
  125. }else{
  126. form.gender="女"
  127. }
  128. if(form.certificate_type==1){
  129. form.certificate_type="身份证"
  130. }
  131. this.form.userInfo=form
  132. this.editbtn=true
  133. }
  134. }).catch((err) => {
  135. uni.hideLoading()
  136. console.log( err)
  137. })
  138. },
  139. changeAll(e){
  140. console.log(e)
  141. if(e==2){
  142. if(!this.$util.email(this.form.userInfo.email)){
  143. console.log(8888)
  144. this.$toast("请填写正确的邮箱")
  145. return
  146. }
  147. }
  148. if(e==3){
  149. if(!this.$util.idCard(this.form.userInfo.certificate_no)){
  150. console.log(8888)
  151. this.$toast("请填写正确的身份证号码")
  152. return
  153. }
  154. }
  155. this.save()
  156. },
  157. // 选择性别
  158. bindPickerChange(e) {
  159. this.form.userInfo.gender=this.genderArray[e.detail.value]
  160. this.save()
  161. },
  162. // 选择护照类型
  163. bindType(e) {
  164. this.form.userInfo.certificate_type=this.typeArray[e.detail.value]
  165. // this.save()
  166. },
  167. // 选择出生日期
  168. bindDateChange (e) {
  169. this.form.userInfo.birthday = e.detail.value
  170. this.save()
  171. },
  172. editMsg(){
  173. uni.navigateTo({
  174. url:"/pages/userCenter/editMsg?form="+JSON.stringify(this.form.userInfo)
  175. })
  176. },
  177. save(){
  178. this.$showLoadding("加载中")
  179. let form={
  180. name:this.form.userInfo.name,
  181. gender: this.form.userInfo.gender,
  182. email: this.form.userInfo.email,
  183. birthday: this.form.userInfo.birthday,
  184. certificate_type:this.form.userInfo.certificate_type,
  185. certificate_no: this.form.userInfo.certificate_no
  186. }
  187. if (this.form.userInfo.gender == "男") {
  188. form.gender = 1
  189. } else {
  190. form.gender = 2
  191. }
  192. if (this.form.userInfo.certificate_type== "身份证") {
  193. form.certificate_type = 1
  194. }
  195. // if(!this.$util.email(form.email)){
  196. // this.$toast("请填写正确的邮箱")
  197. // return
  198. // }
  199. setTimeout(()=>{
  200. uni.$u.http.post('/api/user/edit',form,{
  201. custom: {
  202. auth: true
  203. }
  204. }).then((res) => {
  205. uni.hideLoading()
  206. // this.init()
  207. this.$toast("保存成功")
  208. }).catch((err) => {
  209. uni.hideLoading()
  210. this.$toast(err.message)
  211. })
  212. },500)
  213. }
  214. }
  215. };
  216. </script>
  217. <style lang="less">
  218. .u-form-item__body.data-v-5e7216f1{
  219. padding: 18px 0 !important;
  220. }
  221. page{
  222. background-color: #F4F4F4;
  223. }
  224. .form{
  225. background-color: #ffffff;
  226. border-radius: 8rpx 32rpx 8rpx 32rpx;
  227. padding: 30rpx 30rpx 0;
  228. margin: 20rpx 30rpx 0;
  229. }
  230. .navbar{
  231. width: 100%;
  232. height: 104rpx;
  233. line-height: 104rpx;
  234. background: #1E9F6A;
  235. border-radius: 16rpx 16rpx 0px 0px;
  236. color: #FFFFFF;
  237. position: fixed;
  238. left: 0;
  239. bottom: 0;
  240. text-align: center;
  241. }
  242. </style>