移动端
25'ten fazla konu seçemezsiniz Konular bir harf veya rakamla başlamalı, kısa çizgiler ('-') içerebilir ve en fazla 35 karakter uzunluğunda olabilir.
 
 

191 satır
5.7 KiB

  1. <template>
  2. <div class="app-container">
  3. <div class="focus-logo">
  4. <img src="@/assets/images/login-logo.png" />
  5. <p class="describe">注册页</p>
  6. </div>
  7. <div class="login-main">
  8. <van-form @submit="handleRegister">
  9. <van-field
  10. v-model="formData.memberName"
  11. name="memberName"
  12. label="真实姓名"
  13. placeholder="真实姓名"
  14. />
  15. <van-field
  16. v-model="formData.idcard"
  17. name="idcard"
  18. label="身份证号"
  19. placeholder="身份证号"
  20. />
  21. <van-field
  22. v-model="formData.mobile"
  23. name="mobile"
  24. label="手机号"
  25. placeholder="手机号"
  26. />
  27. <van-field
  28. v-model="formData.smsCode"
  29. center
  30. clearable
  31. label="短信验证码"
  32. placeholder="请输入短信验证码"
  33. >
  34. <template #button>
  35. <van-button
  36. size="small"
  37. type="primary"
  38. @click.native.prevent="getSmsCode"
  39. >{{
  40. computeTime > 0 ? `(${computeTime}s)已发送` : "获取验证码"
  41. }}</van-button
  42. >
  43. </template>
  44. </van-field>
  45. <div class="form-submit">
  46. <van-button
  47. round
  48. block
  49. type="info"
  50. native-type="submit"
  51. :loading="loading"
  52. >立即注册</van-button
  53. >
  54. </div>
  55. </van-form>
  56. </div>
  57. <div class="reveal-modal-con">
  58. <div class="dd_txt">
  59. <router-link to="/login">跳转登录页</router-link>
  60. </div>
  61. </div>
  62. </div>
  63. </template>
  64. <script>
  65. import { registerCheck,registerOn } from "@/api/register";
  66. export default {
  67. name: "register",
  68. data() {
  69. return {
  70. formData: {
  71. memberName: '张月旺', //姓名
  72. idcard: '14022619700803051X', //身份证号码
  73. // uuid: null, //识别uuid
  74. mobile: '15254587248', //手机号
  75. // smsCode: null, //短信验证码
  76. },
  77. loading: false,
  78. computeTime: 0,
  79. };
  80. },
  81. methods: {
  82. handleRegister(){
  83. if(this.checkFun()){
  84. let oData = this.formData;
  85. if(oData.smsCode==''){
  86. this.$dialog.alert({
  87. message: '请输入短信验证码',
  88. });
  89. return false;
  90. }
  91. registerOn(this.formData).then((res) => {
  92. console.log(res)
  93. })
  94. }
  95. },
  96. getSmsCode() {
  97. if (!this.computeTime) {
  98. if(this.checkFun()){
  99. registerCheck(this.formData).then((res) => {
  100. if (res.code === 200) {
  101. this.$dialog.alert({
  102. message: '验证码已发送',
  103. });
  104. this.loginForm.uuid = res.uuid;
  105. this.computeTime = 60;
  106. this.timer = setInterval(() => {
  107. this.computeTime--;
  108. if (this.computeTime <= 0) {
  109. clearInterval(this.timer);
  110. }
  111. }, 1000);
  112. }
  113. });
  114. }
  115. }
  116. },
  117. checkFun(){
  118. let oData = this.formData;
  119. let memberName_Regexp=/^[\u4e00-\u9fa5]{1,6}(·[\u4e00-\u9fa5]{1,6}){0,2}$/; //校验姓名
  120. let idcard_Regexp = /^[1-9][0-9]{5}([1][9][0-9]{2}|[2][0][0|1][0-9])([0][1-9]|[1][0|1|2])([0][1-9]|[1|2][0-9]|[3][0|1])[0-9]{3}([0-9]|[X])$/; //身份证
  121. let mobile_Regexp=/^1[3|4|5|7|8]\d{9}$/;
  122. console.log(oData.mobile)
  123. if (!memberName_Regexp.test(oData.memberName)) {
  124. this.$dialog.alert({
  125. message: '姓名格式不正确',
  126. });
  127. return false;
  128. }else if(!idcard_Regexp.test(oData.idcard)){
  129. this.$dialog.alert({
  130. message: '身份证号码格式不正确',
  131. });
  132. return false;
  133. }else if(!mobile_Regexp.test(oData.mobile)){
  134. this.$dialog.alert({
  135. message: '手机号码格式不正确',
  136. });
  137. return false;
  138. }
  139. return true;
  140. }
  141. },
  142. }
  143. </script>
  144. <style scoped lang="scss">
  145. .app-container {
  146. .focus-logo {
  147. width: 310px;
  148. margin: 0 auto 40px;
  149. padding-top: 60px;
  150. img {
  151. width: 100%;
  152. }
  153. .describe{
  154. text-align: center;
  155. font-size: 34px;
  156. padding:10px 0 0;
  157. color: #666;
  158. }
  159. }
  160. .login-main{
  161. width: 95%;
  162. margin: 0 auto;
  163. background: #fff;
  164. border-radius: 20px;
  165. overflow: hidden;
  166. border: 1px solid #ddd;
  167. padding-bottom:40px;
  168. .form-submit {
  169. margin: 40px 40px 0;
  170. }
  171. }
  172. .reveal-modal-con {
  173. margin: 30px 40px 0;
  174. .dd_txt {
  175. text-align: center;
  176. font-size: 28px;
  177. a {
  178. color: #666;
  179. }
  180. }
  181. }
  182. }
  183. </style>