index.vue 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. <template>
  2. <view class="container">
  3. <uni-section title="基础信息" type="line">
  4. <uni-forms ref="infoForm" :rules="rules" :modelValue="formData" :label-width="90">
  5. <uni-forms-item required label="姓名" name="name">
  6. <uni-easyinput type="text" v-model="formData.name" placeholder="请输入姓名" />
  7. </uni-forms-item>
  8. <uni-forms-item required label="性别" name="sex">
  9. <uni-data-checkbox v-model="formData.sex" :localdata="sexs" />
  10. </uni-forms-item>
  11. <uni-forms-item required label="手机号" name="phone">
  12. <view class="phoneBox">
  13. <uni-easyinput disabled type="text" v-model="formData.phone" placeholder="手机号" />
  14. <button type="primary" :plain="true" style="border: none;" size="mini" open-type="getPhoneNumber" @getphonenumber="decryptPhoneNumber">获取手机号</button>
  15. </view>
  16. </uni-forms-item>
  17. <uni-forms-item name="birthday" label="出生日期">
  18. <uni-datetime-picker type="date" v-model="formData.birthday" />
  19. </uni-forms-item>
  20. </uni-forms>
  21. </uni-section>
  22. <button class="btn" type="primary" @click="submit('infoForm')">提交</button>
  23. </view>
  24. </template>
  25. <script>
  26. import request from '../../api/user.js';
  27. import requestLogin from '../../api/login.js';
  28. const appid = uni.getAccountInfoSync().miniProgram.appId;
  29. export default {
  30. data() {
  31. return {
  32. role: '',
  33. path: null,
  34. formData: {},
  35. sexs: [
  36. { text: '男', value: 1 },
  37. { text: '女', value: 0 },
  38. ],
  39. // 校验规则
  40. rules: {
  41. name: {
  42. rules: [{
  43. required: true,
  44. errorMessage: '姓名不能为空'
  45. }]
  46. },
  47. sex: {
  48. rules: [{
  49. required: true,
  50. errorMessage: '性别不能为空'
  51. }]
  52. },
  53. phone: {
  54. rules: [{
  55. required: true,
  56. errorMessage: '电话不能为空'
  57. }]
  58. },
  59. },
  60. }
  61. },
  62. async mounted() {
  63. this.role = uni.getStorageSync('role');
  64. if (this.role !== 'guest') this.queryInfo();
  65. },
  66. methods: {
  67. async queryInfo() {
  68. const userinfo = await request.getUser();
  69. // const userinfo = uni.getStorageSync('userinfo');
  70. this.formData = userinfo.data;
  71. },
  72. // 获取手机号
  73. async decryptPhoneNumber(e) {
  74. const res = await requestLogin.getPhone({ code: e.detail.code, appid: appid });
  75. this.$set(this.formData, 'phone', res.phone_info.phoneNumber);
  76. },
  77. // 提交
  78. async submit(ref) {
  79. this.$refs[ref].validate(async (err, formdata) => {
  80. if (!err) {
  81. // 修改用户
  82. const res = await request.updateUser(this.formData);
  83. uni.showToast({
  84. title: '修改成功',
  85. duration: 2000,
  86. });
  87. uni.navigateBack()
  88. }
  89. })
  90. },
  91. },
  92. onLoad(option) {
  93. this.path == option.path;
  94. }
  95. }
  96. </script>
  97. <style>
  98. .uni-section {
  99. padding-bottom: 10px;
  100. margin-bottom: 10px;
  101. }
  102. .uni-forms, .btn {
  103. width: 90%;
  104. margin: 10px auto;
  105. }
  106. .phoneBox {
  107. display: flex;
  108. }
  109. </style>