编写后台登录滑动成功获取验证码 人机验证

news2024/10/6 22:24:18

vue-puzzle-vcode

Vue 纯前端的拼图人机验证、右滑拼图验证

安装vue-puzzle-vcode

 npm install vue-puzzle-vcode --save

使用vue-puzzle-vcode

import Vcode from "vue-puzzle-vcode";

<Vcode :show="isShow" @success="onSuccess" @close="onClose" />

自己使用插件的dom

<template>
  <div class="login-container">
    <div class="login-card">
        <div class="fonz">手机验证码</div>
        <div class="flex" style="padding-right: ">
          <input
            type="text"
            placeholder="请输入手机验证码"
            style="padding-left: 0px !important"
          />
          <span
            style="color: rgba(90, 181, 242, 1); font-size: 14px"
            @click="sendCode"
            >{{ codeButtonText }}</span
          >
        </div>
      </div>
      <Vcode :show="isShow" @success="onSuccess" @close="isShow = false" />
  </div>
</template>

<script>
import Vcode from "vue-puzzle-vcode";
export default {
  components: {
    Vcode,
  },
  data() {
    return {
      isShow: false,
    };
  },
  methods: {
 
    // 发送验证码
    sendCode() {
      console.log(this.codeSending);
      if (!this.codeSending) {
        this.isShow = true;
      }
    },
    onSuccess(msg) {
      this.isShow = false; // 通过验证后,需要手动关闭模态框
      // 实现发送验证码的逻辑
      // 可以使用定时器模拟发送过程
      this.codeSending = true;
      let count = 60;
      const timer = setInterval(() => {
        count--;
        if (count === 0) {
          clearInterval(timer);
          this.codeSending = false;
          this.codeButtonText = "重新获取";
        } else {
          this.codeButtonText = `重新获取 ${count}s`;
        }
      }, 1000);
    },
  },
};
</script>

<style lang="scss" scoped>
.hh {
  font-size: 20px;
  font-weight: 700;
  line-height: 23px;
  color: rgba(51, 51, 51, 1);
  text-align: center;
  vertical-align: top;
  margin-bottom: 20px;
  height: 30px;
}
input {
  border: none;
  background: none;
  font: inherit;
  color: inherit;
  padding: 0;
  margin: 0;
  border-radius: 0;
  outline: none;
  flex: 1;
  padding-left: 20px !important;
}
.flex {
  display: flex;
  align-items: center;
  height: 30px;
  justify-content: space-between;
  margin-bottom: 30px;
  border-bottom: 2px solid rgba(227, 227, 227, 1);
}
.fonz {
  font-size: 14px;
  font-weight: 400;
  letter-spacing: 0px;
  line-height: 19.21px;
  color: rgba(31, 32, 38, 1);
  text-align: left;
  vertical-align: top;
  margin-bottom: 17px;
}
::v-deep {
  .el-checkbox__inner::after {
    left: 5px;
    top: 2px;
  }
  .el-checkbox__inner {
    width: 17px;
    height: 17px;
    border-radius: 8px;
  }
  .el-checkbox__inner:hover {
    border-color: #dcdfe6 !important;
  }
  .el-checkbox__input.is-checked + .el-checkbox__label {
    color: #28b0a6 !important;
  }

  .el-checkbox__input.is-checked .el-checkbox__inner {
    background-color: #28b0a6;
  }
  .el-menu-item:hover {
    background-color: #f6f6f6 !important;
  }
  .el-tabs__nav-wrap::after {
    display: none !important;
  }
  .el-tabs__item:hover {
    color: #28b0a6 !important;
    cursor: pointer;
  }

  .el-tabs__item.is-active {
    color: #28b0a6;
  }

  .el-tabs__active-bar {
    position: absolute;
    bottom: 0;
    left: 0;
    height: 2px;
    background-color: #28b0a6 !important;
    z-index: 1;
    transition: transform 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);
    list-style: none;
  }
}
.login-container {
  background-color: #f6f6f6;
  display: flex;
  width: 100vw;
  justify-content: center;
  align-items: center;
  height: 100vh;
  background-image: url("../.././assets/backc.png");
  // background-size: cover;
  background-repeat: no-repeat;
}

.login-card {
  position: fixed;
  left: 1297px;
  top: 204px;
  width: 385px;
  padding: 47px;
  background-color: #fff;
  border-radius: 8px;
  box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
}

.login-title {
  margin-bottom: 20px;
  font-size: 24px;
  font-weight: bold;
  text-align: center;
}
.login-button {
  width: 100%;
  margin-bottom: 20px;
  background-color: #28b0a6;
}

.login-links {
  display: flex;
  justify-content: flex-end;
  align-items: center;
  margin-top: 8px;
  margin-bottom: 48px;
  font-size: 14px;
  font-weight: 400;

  a {
    color: rgba(90, 181, 242, 1);
    text-align: center;
    vertical-align: middle;
    text-decoration: none;
  }
}

.register-link,
.forgot-password-link {
  color: #666;
}
.agreement {
  font-size: 14px;
  span {
    margin-left: 10px;
  }
  a {
    font-size: 14px;
    font-weight: 400;
    color: rgba(90, 181, 242, 1);
    text-align: center;
    text-decoration: none;
  }
}
</style>


在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1117564.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ZooKeeper+HBase分布式集群环境搭建

安装版本&#xff1a;hadoop-2.10.1、zookeeper-3.4.12、hbase-2.3.1 一、zookeeper集群搭建与配置 1.下载zookeeper安装包 2.解压移动zookeeper 3.修改配置文件&#xff08;创建文件夹&#xff09; 4.进入conf/ 5.修改zoo.cfg文件 6.进入/usr/local/zookeeper-3.4.12/zkdat…

虚拟机与主机(win10之间的通信)

(201条消息) Ubuntu虚拟机不显示ip地址【已解决】_ubuntu没有ip_不爱赖床的懒虫的博客-CSDN博客 sudo /sbin/dhclient VMTool安装与卸载 (201条消息) ubuntu中vmtools的安装与彻底卸载_卸载vmtools_林麦安的博客-CSDN博客 (202条消息) 解决虚拟机安装 VMware Tools 灰色无法…

聊聊RocketMQ中的broker的TPS和QPS为何相差巨大,是如何统计的

这里是weihubeats,觉得文章不错可以关注公众号小奏技术&#xff0c;文章首发。拒绝营销号&#xff0c;拒绝标题党 最近在看RocketMQ的一些监控指标的时候&#xff0c;总觉得一些监控指标不太对&#xff0c;好像对不上。 所以打算研究下看看RocketMQ中的 broker TPS、broker QP…

嵌入式学习笔记(60)内存管理之堆

1.7.1.什么是堆&#xff08;heap&#xff09; 内存管理对OS来说是一件非常复杂的事&#xff0c;因为首先内存容量大&#xff0c;其次内存需求在时间和大小块上没有规律&#xff08;OS上运行着几十、几百、几千个进程随时都会申请或者释放内存&#xff0c;申请或者释放的内存块…

JavaWeb从入门到起飞笔记——导学课程

学完这一节&#xff0c;我不知道学Web开发究竟能干什么&#xff1f;你知道吗&#xff1f; 以下是黑马程序员Java从入门到起飞的笔记 一、学完Javaweb能干什么&#xff1f; 学完Java后我们可以独立开发一些后台管理系统&#xff0c;例如CRMER器&#xff0c;京东和淘宝&#x…

tuxera ntfs2024破解版mac电脑磁盘读写软件

大家都知道由于操作系统的原因&#xff0c;在苹果电脑上不能够读写NTFS磁盘&#xff0c;但是&#xff0c;今天小编带来的这款tuxera ntfs 2024 mac版&#xff0c;完美的解决了这个问题。这是一款在macOS平台上使用的磁盘读写软件&#xff0c;能够实现苹果Mac OS X系统读写Micro…

C++ 字符串编码转换封装函数,UTF-8编码与本地编码互转

简介 字符串编码转换封装函数&#xff0c;UTF-8编码与本地编码互转。 中文乱码的解决方法 有时候我们会遇到乱码的字符串&#xff0c;比如&#xff1a; 古文码 可能是用GBK方式读取UTF-8编码的中文导致的&#xff0c;用下面的Utf8ToLocal(string str)函数转换一下就可以了。…

RFID解决光伏难题

RFID解决光伏难题 RFID是无线射频识别&#xff08;Radio Frequency Identification&#xff09;的缩写&#xff0c;是一种通过无线电信号识别物体的技术。RFID系统由标签、读写器和主机系统组成。标签内置有微型芯片和天线&#xff0c;能够储存和传输数据。读写器通过射频信号…

EasyCVR视频智能分析系统如何助力广场流动摊贩监管手段升级

在很多公园广场地带&#xff0c;经常会有流动摊贩进行售卖&#xff0c;虽然国家大力支持“地摊经济”&#xff0c;但很多摊贩并未按照规定进行摆摊&#xff0c;甚至有一些摊贩为了位置、客源大打出手&#xff0c;大大增添了城市管理难度。为让广场摊贩更加规范地进行作业&#…

mybatisplus开启sql打印的三种方式

1、在application.yml文件中添加mybatisplus的配置文件 使用mybatisplus自带的log-impl配置&#xff0c;可以在控制台打印出sql语句、执行结果的数据集、数据结果条数等详细信息&#xff0c;这种方法适合再调试的时候使用&#xff0c;因为这个展示的信息详细&#xff0c;更便于…

Windows11系统安装WSL教程

WSL&#xff0c;全称Windows Subsystem for Linux&#xff0c;是微软官方提供的可以在Windows上直接运行的Linux环境&#xff0c;包括大多数命令行工具、程序和应用&#xff0c;由系统底层虚拟机平台支持。 开启相关服务 1、控制面板-启用或关闭Windows功能 2、勾选以下两个…

Dataspell快捷键更改为eclipse后,在.py文件中shift+回车自动换行冲突问题解决

1.问题描述 已经将Dataspell快捷键切换快捷键为eclipse&#xff0c;在.py文件中shiftenter没有自动换行&#xff0c;出现如下结果。 2.问题解决 进去keymap配置界面 搜索python 将如下快捷键删除。 测试后问题已经解决。

Yakit工具篇:中间人攻击(平替Burp)的相关技巧-01

简介(来自官方文档) 背景 “MITM” 是 “Man-in-the-Middle” 的缩写&#xff0c;意思是中间人攻击。 MITM攻击是一种网络攻击技术&#xff0c;攻击者通过欺骗的手段&#xff0c;让自己成为通信双方之间的中间人&#xff0c;从而可以窃取双方之间的通信内容、修改通信内容、…

ntfs读写工具Tuxera NTFS2023激活码

Tuxera NTFS for Mac是一款mac系统读写工具,Tuxera让Mac OS支持NTFS 格式文件读写,支持所有移动硬盘、U盘等外接设备,同时Tuxera用户可以简单直观的在Mac机上随意对NTFS文件修改、 在 Mac 上打开、编辑、复制、移动或删除存储在 Windows NTFS 格式 USB 驱动器上的文件。当您获…

关于硬件原理图

很多纯软工程师开始做嵌入式时觉得门槛很高&#xff0c;基本的硬件原理图也看不懂&#xff0c;没有学过电路、数电、模电、电路原理&#xff0c;对电子元器件&#xff0c;对电阻、电压、电流、电容、电感等没有很扎实的概念&#xff0c;觉得老虎吃天无从下嘴。打开硬件原理图&a…

在Qt中怎么操作MySQL数据库

一、安装驱动 &#xff08;1&#xff09;安装 在Qt中操作MySQL数据库首先要安装mysql的驱动文件&#xff0c;将MySQL下的libmusql.dll文件复制到Qt的安装路径下的bin文件夹下即可。 本文福利&#xff0c;莬费领取Qt开发学习资料包、技术视频&#xff0c;内容包括&#xff08;…

使用Chrome浏览器进行网页截图

在需要截图的网页上&#xff0c;按F12打开开发调试页面&#xff0c;再按下ShiftCtrlP&#xff0c;打开命令输入框&#xff0c;输入Capture&#xff0c; 此时会弹出4中截图模式&#xff0c;我个人比较喜欢用Capture full size screenshot Capture area screenshot&#xff0c;…

YB6502是一款5V输入支持两节串联磷酸铁锂电池的升压充电管理应用

5V输入、双节串联磷酸铁锂电池升压充电芯片 描述&#xff1a; YB6502是一款5V输入支持两节串联磷酸铁锂电池的升压充电管理应用。采用了开 关升压结构&#xff0c;带有散热片的S0P8封装与较少的外部元件数日使得YB6502成为便携式 应用的理想选择。YB6502输入电压为5V,内置自适应…

Hadoop3教程(二十九):(生产调优篇)集群扩容及缩容(白名单与黑名单)

文章目录 &#xff08;150&#xff09;添加白名单&#xff08;151&#xff09;服役新服务器&#xff08;152&#xff09;服务器间数据均衡&#xff08;153&#xff09;黑名单退役服务器参考文献 这一章还算是比较重要的。 &#xff08;150&#xff09;添加白名单 白名单&#…

Kotlin(七) 接口

接口是用于实现多态编程的重要组成部分。我们都知道&#xff0c;Java是单继承结构的语言&#xff0c;任何一个类最多只能继承一个父类&#xff0c;但是却可以实现任意多个接口&#xff0c;Kotlin也是如此。 首先创建一个Study接口&#xff0c;在创建文件窗口选择“Interface…