pwlogin.vue 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. <template>
  2. <div class="login">
  3. <div class="login-icon"></div>
  4. <van-form @submit="submitLogin">
  5. <van-field
  6. v-model="form.phone"
  7. name="validator"
  8. placeholder="请输入手机号"
  9. :rules="[{ validator: validatorPhone, message: '请输入正确的手机号' }]"
  10. label=""
  11. type="digit"
  12. maxlength="11"
  13. left-icon="smile-o"
  14. />
  15. <van-field
  16. v-model="form.password"
  17. name="validator"
  18. placeholder="请输入密码"
  19. :rules="[{ validator: validatorVerification, message: '请输入密码' }]"
  20. type="digit"
  21. left-icon="smile-o"
  22. maxlength="8"
  23. />
  24. <div class="pwLogin">
  25. <div @click="$ApiRouter('/login')">验证码登录</div>
  26. </div>
  27. <van-button :class="disabled ? 'login-btn-disable' : 'login-btn'" :disabled="disabled" native-type="submit">登录</van-button>
  28. <div class="forgotPW" @click="$ApiRouter('/forgotPW')">忘记密码?</div>
  29. </van-form>
  30. </div>
  31. </template>
  32. <script>
  33. import { Toast } from 'vant'
  34. export default {
  35. name: 'login-index',
  36. data () {
  37. return {
  38. form: {
  39. phone: '',
  40. password: ''
  41. },
  42. disabled: false
  43. }
  44. },
  45. mounted () {
  46. },
  47. methods: {
  48. validatorPhone (val) {
  49. return /1\d{10}/.test(val)
  50. },
  51. validatorVerification (val) {
  52. return /\d{6}/.test(val)
  53. },
  54. onFailed (errorInfo) {
  55. console.log('failed', errorInfo)
  56. },
  57. fetchVerification () {
  58. Toast.loading('验证码已发送')
  59. setTimeout(() => {
  60. Toast.clear()
  61. }, 1000)
  62. },
  63. submitLogin ($event) {
  64. console.log($event)
  65. }
  66. }
  67. }
  68. </script>
  69. <style lang="scss" scoped>
  70. .login {
  71. height: 100vh;
  72. width: 100%;
  73. display: flex;
  74. flex-direction: column;
  75. align-items: center;
  76. background: #fff;
  77. .login-icon {
  78. margin: 24.1vw 0 16vw 0;
  79. width: 37.1vw;
  80. height: 7vw;
  81. }
  82. .van-form {
  83. width: 80vw;
  84. .van-cell {
  85. border-bottom: 1px solid #E1E1E1;
  86. }
  87. }
  88. .pwLogin {
  89. display: flex;
  90. flex-direction: row-reverse;
  91. font-size: 3.2vw;
  92. color: #FF5B00;
  93. margin-top: 2.3vw;
  94. width: 80vw;
  95. }
  96. .login-btn-disable {
  97. margin-top: 16vw;
  98. width: 80vw;
  99. background: #FFDCC8;
  100. color: #fff;
  101. }
  102. .login-btn {
  103. margin-top: 16vw;
  104. width: 80vw;
  105. background: #FF5B00;
  106. color: #fff;
  107. }
  108. .forgotPW {
  109. color: #666666;
  110. font-size: 3.2vw;
  111. margin-top: 4.3vw;
  112. text-align: center;
  113. }
  114. }
  115. </style>