gaoluyang
3 天以前 92230c9a97dc9ce9df3313d11d26999c04bb6b26
src/pages_template/pages/login/code.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,110 @@
<script setup>
import { ref, onMounted } from 'vue';
const maxlength = ref(4);
const value = ref('');
const second = ref(3);
const show = ref(false);
const error = ref(false);
onMounted(() => {
   let interval = setInterval(() => {
      second.value--;
      if (second.value <= 0) {
         show.value = true;
         if (value.value.length !== 4) {
            error.value = true;
         }
         clearInterval(interval);
      }
   }, 1000);
});
const noCaptcha = () => {
   uni.showActionSheet({
      itemList: ['重新获取验证码', '接听语音验证码'],
      success: function (res) {
         // å¤„理成功逻辑
      },
      fail: function (res) {
         // å¤„理失败逻辑
      }
   });
};
const change = (value) => {
   // console.log('change', value);
};
const finish = (value) => {
   // console.log('finish', value);
};
</script>
<template>
   <view class="wrap">
      <view class="key-input">
         <view class="title">输入验证码</view>
         <view class="tips">验证码已发送至 +150****9320</view>
         <u-message-input :focus="true" :value="value" @change="change" @finish="finish" mode="bottomLine"
            :maxlength="maxlength"></u-message-input>
         <text :class="{ error: error }">验证码错误,请重新输入</text>
         <view class="captcha">
            <text :class="{ noCaptcha: show }" @tap="noCaptcha">收不到验证码点这里</text>
            <text :class="{ regain: !show }">{{ second }}秒后重新获取验证码</text>
         </view>
      </view>
   </view>
</template>
<style lang="scss" scoped>
.wrap {
   padding: 80rpx;
}
.box {
   margin: 30rpx 0;
   font-size: 30rpx;
   color: 555;
}
.key-input {
   padding: 30rpx 0;
   text {
      display: none;
   }
   .error {
      display: block;
      color: red;
      font-size: 30rpx;
      margin: 20rpx 0;
   }
}
.title {
   font-size: 50rpx;
   color: #333;
}
.key-input .tips {
   font-size: 30rpx;
   color: #333;
   margin-top: 20rpx;
   margin-bottom: 60rpx;
}
.captcha {
   color: $u-warning;
   font-size: 30rpx;
   margin-top: 40rpx;
   .noCaptcha {
      display: block;
   }
   .regain {
      display: block;
   }
}
</style>