login.vue 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. <template>
  2. <view class="ezy-login-page">
  3. <view class="ezy-login-wrap" >
  4. <!-- 手机号 -->
  5. <template v-if="data.loginTel">
  6. <view class="login-body-box">
  7. <view class="login-title-img"></view>
  8. <view class="phone-input-box">
  9. <view class="phone-prefix">+86</view>
  10. <input class="phone-input" type="text" v-model="data.phoneNumber" placeholder="请输入手机号"
  11. maxlength="11" :value="data.phoneNumber" @input="clearTelInput" />
  12. <view class="close-btn" v-if="data.clearTelIcon" @click="clearTel"></view>
  13. </view>
  14. <!-- 协议勾选框和按钮 -->
  15. <view class="agreement-checkbox-box">
  16. <checkbox class="agreement-checkbox" color="#FFFFFF" :checked="isAgreed" @change="handleAgreementChange">
  17. 我已阅读并同意<view class="agreement-text">《用户协议》</view>和<view class="agreement-text">《隐私政策》</view>
  18. </checkbox>
  19. </view>
  20. <view class="yzm-btn-disabled" @click="getYzmBtn" :class="data.telStatus"></view>
  21. </view>
  22. <view class="wx-btn-img"></view>
  23. </template>
  24. <!-- 验证码 -->
  25. <template v-if="!data.loginTel">
  26. <view class="login-body-box">
  27. <view class="login-title-img"></view>
  28. <view class="phone-prefix">验证码已发送至:{{data.phoneNumber}}</view>
  29. <view class="phone-input-box">
  30. <input class="phone-input" type="text" v-model="data.yzmNumber" placeholder="请输入验证码"
  31. maxlength="6" :value="data.yzmNumber" @input="clearYzmInput" />
  32. <view class="close-btn" v-if="data.clearYzmIcon" @click="clearYzm"></view>
  33. </view>
  34. <view class="yzm-btn-disabled" @click="loginBtn" :class="data.yzmStatus"></view>
  35. </view>
  36. </template>
  37. </view>
  38. </view>
  39. </template>
  40. <script setup>
  41. import {
  42. ref,
  43. reactive
  44. } from "vue"
  45. const data = reactive({
  46. loginTel: true,
  47. phoneNumber: null,
  48. clearTelIcon: false,
  49. telStatus:'',
  50. isAgreed: false,
  51. yzmNumber: null,
  52. clearYzmIcon: false,
  53. yzmStatus:'',
  54. })
  55. /********* 手机号部分 *********/
  56. const getYzmBtn = () => {
  57. console.log('123');
  58. data.loginTel =false;
  59. }
  60. // 手机号校验规则
  61. const validatePhoneNumber = (value) => {
  62. const phoneRegex = /^1[3-9]\d{9}$/;
  63. if (phoneRegex.test(value)) {
  64. console.log('手机号格式正确');
  65. data.telStatus = 'yzm-btn-normal';
  66. } else {
  67. console.log('手机号格式不正确');
  68. }
  69. }
  70. const clearTelInput = (event) => {
  71. if (event.detail.value.length > 0) {
  72. data.clearTelIcon = true;
  73. validatePhoneNumber(event.detail.value);
  74. } else {
  75. data.clearTelIcon = false;
  76. }
  77. }
  78. const clearTel = () => {
  79. data.phoneNumber = '';
  80. data.clearTelIcon = false;
  81. }
  82. /********* 验证码 *********/
  83. const loginBtn = () => {
  84. uni.switchTab({
  85. url: '/pages/index/index'
  86. });
  87. /* uni.navigateTo({
  88. url: `/pages/study/index?gradeId=${options.grade}&termId=${options.term}&text=${text1}${text2}`
  89. }) */
  90. }
  91. const clearYzmInput = (event) => {
  92. if (event.detail.value.length > 0) {
  93. data.clearYzmIcon = true;
  94. } else {
  95. data.clearYzmIcon = false;
  96. }
  97. }
  98. const clearYzm = () => {
  99. data.yzmNumber = '';
  100. data.clearYzmIcon = false;
  101. }
  102. </script>