SignUpBaseInfo.vue 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187
  1. <template>
  2. <div class="signupBaseInfo">
  3. <m-header />
  4. <m-step :number="2" />
  5. <!-- <van-form ref="form" :show-error="false" validate-first @submit="onSubmit" @failed="onFailed"> -->
  6. <div class="title">基本信息</div>
  7. <van-field v-model="form.phone" required name="phone" label="身份证号" placeholder="请输入身份证号" :rules="[{ pattern: patternCard, message: '身份证号输入有误' }]" >
  8. <template #button>
  9. <span class="codeText">上传</span>
  10. </template>
  11. </van-field>
  12. <!-- #2DC7AA -->
  13. <div class="cardTips">如有括号,请用英文括号()</div>
  14. <van-field required v-model="form.phone" name="phone" label="姓名" placeholder="请输入姓名" :rules="[{ required: true, message: '姓名输入有误' }]" />
  15. <van-field name="radio" label="性别">
  16. <template #input>
  17. <van-radio-group v-model="form.sex" direction="horizontal">
  18. <van-radio checked-color="var(--main-color)" :name="1">男</van-radio>
  19. <van-radio checked-color="var(--main-color)" :name="0">女</van-radio>
  20. </van-radio-group>
  21. </template>
  22. </van-field>
  23. <van-field readonly clickable name="birthday" v-model="form.birthday" label="生日" placeholder="请选择" @click="birthdayStatus = true" is-link />
  24. <van-field readonly clickable name="nation" v-model="form.nation" label="民族" placeholder="请选择" is-link />
  25. <div class="title">证件照上传</div>
  26. <div class="upload-img">
  27. <van-uploader v-model="fileList" multiple :max-count="1" :max-size="3 * 1024 * 1024" >
  28. <div class="upload-container">
  29. <i class="icon-upload-add"></i>
  30. <p>点击上传</p>
  31. </div>
  32. </van-uploader>
  33. <p class="upload-tips">须使用免冠证件照,纯底色<br/>(纯白、纯蓝或纯红)<br/>(图像预览可能会异常)</p>
  34. </div>
  35. <m-button class="step-btn" @click="onSubmit" text="下一步" native-type="submit" />
  36. <!-- </van-form> -->
  37. <van-popup v-model="birthdayStatus" position="bottom">
  38. <van-datetime-picker
  39. type="date"
  40. :formatter="formatter"
  41. @cancel="birthdayStatus = false"
  42. @confirm="onConfirm" />
  43. </van-popup>
  44. </div>
  45. </template>
  46. <script>
  47. import MHeader from '@/components/MHeader'
  48. import MStep from '@/components/MStep'
  49. import MButton from '@/components/MButton'
  50. import { getYMD } from '@/utils/common'
  51. export default {
  52. name: 'signupBaseInfo',
  53. components: { MHeader, MStep, MButton },
  54. data () {
  55. return {
  56. patternCard: /^1(3|4|5|6|7|8|9)\d{9}$/,
  57. birthdayStatus: false,
  58. form: {
  59. phone: null,
  60. sex: 1,
  61. birthday: null,
  62. nation: null
  63. },
  64. fileList: [],
  65. }
  66. },
  67. mounted() {
  68. // 插入token
  69. // let params = this.$route.query
  70. // if(params.Authorization) {
  71. // localStorage.setItem('Authorization', decodeURI(params.Authorization))
  72. // localStorage.setItem('userInfo', decodeURI(params.Authorization))
  73. // }
  74. },
  75. methods: {
  76. onSubmit() {
  77. // console.log('submit', values)
  78. this.$router.push({
  79. path: '/signUpLevel'
  80. })
  81. },
  82. onFailed() {
  83. // console.log('failed', errorInfo);
  84. // console.log(this.$refs['form'].scrollToField(errorInfo.errors[0].name))
  85. // this.$refs['form'].scrollToField(errorInfo.errors[0].name, false)
  86. },
  87. onConfirm(val) {
  88. this.form.birthday = getYMD(val, true)
  89. this.birthdayStatus = false
  90. },
  91. formatter(type, val) {
  92. if (type === 'year') {
  93. return `${val}年`
  94. } else if (type === 'month') {
  95. return `${val}月`
  96. } else if (type === 'day') {
  97. return `${val}日`
  98. }
  99. return val
  100. }
  101. }
  102. }
  103. </script>
  104. <style lang="less" scoped>
  105. .signupBaseInfo {
  106. height: 100vh;
  107. overflow-y: auto;
  108. overflow-x: hidden;
  109. background-color: var(--main-bg-color);
  110. .title {
  111. font-size: .16rem;
  112. color: var(--font-second-color);
  113. padding: .12rem .16rem;
  114. }
  115. /deep/.van-cell {
  116. padding: .13rem .16rem;
  117. }
  118. /deep/.van-field__label {
  119. font-size: .17rem;
  120. color: var(--font-main-color);
  121. width: 1.15rem;
  122. }
  123. /deep/.van-field__body {
  124. font-size: .16rem
  125. }
  126. .codeText {
  127. font-size: .16rem;
  128. color: var(--main-color);
  129. }
  130. }
  131. .upload-img {
  132. background: #ffffff;
  133. text-align: center;
  134. padding: .3rem 0 .2rem;
  135. .upload-container {
  136. width: 1rem;
  137. height: 1.4rem;
  138. background: url('../../assets/images/level/uploadBg.png') no-repeat center;
  139. background-size: contain;
  140. display: flex;
  141. flex-direction: column;
  142. justify-content: center;
  143. align-items: center;
  144. }
  145. .upload-tips {
  146. padding-top: .18rem;
  147. font-size: .14rem;
  148. color: var(--font-second-color);
  149. }
  150. .icon-upload-add {
  151. display: inline-block;
  152. width: .55rem;
  153. height: .55rem;
  154. background: url('../../assets/images/level/icon_upload_add.png') no-repeat center;
  155. background-size: contain;
  156. }
  157. p {
  158. margin-top: -.04rem;
  159. font-size: .16rem;
  160. color: var(--main-color);
  161. }
  162. }
  163. /deep/.van-uploader__preview {
  164. margin: 0;
  165. }
  166. /deep/.van-uploader__preview-image {
  167. width: 1rem;
  168. height: 1.4rem;
  169. }
  170. .cardTips {
  171. font-size: .14rem;
  172. color: #2DC7AA;
  173. padding-left: 1.28rem;
  174. padding-top: .03rem;
  175. padding-bottom: .15rem;
  176. }
  177. </style>