vue实现验证码验证登录

先看效果:

代码如下:

<template><div class="container"><div style="width: 400px; padding: 30px; background-color: white; border-radius: 5px;"><div style="text-align: center; font-size: 20px; margin-bottom: 20px; color: #333">欢迎登录智慧医疗管理系统</div><el-form :model="form" :rules="rules" ref="formRef"><el-form-item prop="username"><el-input prefix-icon="el-icon-user" placeholder="请输入账号" v-model="form.username"></el-input></el-form-item><el-form-item prop="password"><el-input prefix-icon="el-icon-lock" placeholder="请输入密码" show-password  v-model="form.password"></el-input></el-form-item><div class="box"><el-form-item prop="seccode"class="inputbar"><el-inputclass="log-input"v-model="form.seccode"placeholder="验证码"prefix-icon="icon-login_auth"@keydown.enter.native="login('form')"></el-input></el-form-item><div class="checkCode" @click="createCode">{{ checkCode}}</div></div><el-form-item><el-select v-model="form.role" placeholder="请选择角色" style="width: 100%;"><el-option label="管理员" value="ADMIN"></el-option><el-option label="医生" value="DOCTOR"></el-option><el-option label="患者" value="USER"></el-option></el-select></el-form-item><el-form-item><el-button style="width: 100%; background-color: #7eb488; border-color: #7eb488; color: #ffffff" @click="login">登 录</el-button></el-form-item><div style="display: flex; align-items: center"><div style="flex: 1"></div><div style="flex: 1; text-align: right"><a href="/register">注册</a></div></div></el-form></div></div>
</template><script>
export default {name: "Login",data() {return {form: {username: "",password: "",seccode: ""},checkCode:'',dialogVisible: true,rules: {username: [{ required: true, message: '请输入账号', trigger: 'blur' },],password: [{ required: true, message: '请输入密码', trigger: 'blur' },]}}},created() {},mounted () {this.createCode();},methods: {createCode() {this.code = '';const codeLength = 4; //验证码的长度const random = new Array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R','S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'); //随机数for(let i = 0; i < codeLength; i++) { //循环操作let index = Math.floor(Math.random() * 36); //取得随机数的索引(0~35)this.code += random[index]; //根据索引取得随机数加到code上}this.checkCode = this.code; //把code值赋给验证码},login() {if(this.form.seccode != this.checkCode) {this.$message({message: "验证码错误,注意大写字母",type: "warning"});this.createCode();return false;}this.$refs['formRef'].validate((valid) => {if (valid) {// 验证通过this.$request.post('/login', this.form).then(res => {if (res.code === '200') {localStorage.setItem("xm-user", JSON.stringify(res.data))  // 存储用户数据this.$router.push('/')  // 跳转主页this.$message.success('登录成功')} else {this.$message.error(res.msg)}})}})}}
}
</script><style scoped>.box{display: flex;justify-content: space-between;}.checkCode{background:pink ;width: 100px;height: 40px;line-height: 40px;text-align: center;border-radius: 5px;letter-spacing: 5px;}.btn{width: 100%;}.container {height: 100vh;overflow: hidden;background-image: url("@/assets/imgs/bg.jpg");background-size: 100%;display: flex;align-items: center;justify-content: center;color: #666;
}
a {color: #2a60c9;
}
</style>

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据结构面试题报错调试方法记录

栈和队列报错调试 1.用栈实现队列 232. 用栈实现队列 - 力扣&#xff08;LeetCode&#xff09; 此题解题思路如下&#xff1a; 先将数据放在pushst栈里面&#xff0c;popst栈为空再把pushst栈里面的数据放进popst栈里面去&#xff0c;不为空则不执行。不为空时候直接拿取栈…

测试框架pytest学习与实践

pytest是一个专业的测试框架&#xff0c;可以帮助我们对python项目进行测试&#xff0c;提高测试的效率。 pytest官网手册&#xff1a;pytest: helps you write better programs — pytest documentation 中文手册&#xff1a;Pytest 教程 入门学习 安装pytest pip install…

机器人开启私聊配置自定义接口的方式

大家好&#xff0c;我是雄雄&#xff0c;欢迎关注微信公众号&#xff1a;雄雄的小课堂。 今天给大家介绍一下&#xff0c;如何在机器人中开启私聊回复。 前提条件&#xff1a;机器人已经启动好了&#xff0c;且功能也都可以正常使用&#xff0c;如果没有启动&#xff0c;可以联…

《QT实用小工具·十八》高亮发光按钮控件

1、概述 源码放在文章末尾 该项目实现了高亮发光按钮控件 可设置文本&#xff0c;居中显示。可设置文本颜色。可设置外边框渐变颜色。可设置里边框渐变颜色。可设置背景色。可直接调用内置的设置 绿色、红色、黄色、黑色、蓝色 等公有槽函数。可设置是否在容器中可移动&#…

生成式AI产品汇总网站

在 AIHungry.com&#xff0c;我们处于人工智能发展的最前沿&#xff0c;为您带来最新的人工智能。深入了解我们对最佳人工智能工具的全面评论&#xff0c;并随时了解我们对人工智能新闻的报道。 人工智能新闻&#xff1a;随时了解人工智能领域的最新发展和突破。工具评论&…

国内估值最高的大模型公司,“国产大模型五虎”系列之——智谱AI

前言&#xff1a; 上次我们介绍了同为“国产大模型五虎”的MiniMax&#xff0c;今天就继续来盘点一下国内估值最高的大模型企业智谱AI&#xff0c;同时也是五虎中的另外一虎。 “国产大模型五虎”指的是由阿里投资的五家大模型独角兽&#xff1a;智谱 AI、百川智能、月之暗面…

人工智能大模型+智能算力,企商在线以新质生产力赋能数字化转型

2024 年3月28 日&#xff0c;由中国互联网协会主办、中国信通院泰尔终端实验室特别支持的 2024 高质量数字化转型创新发展大会暨铸基计划年度会议在京召开。作为新质生产力代表性企业、数算融合领导企业&#xff0c;企商在线受邀出席大会主论坛圆桌对话&#xff0c;与行业专家共…

C++初级----string类(STL)

1、标准库中的string 1.1、sring介绍 字符串是表示字符序列的类&#xff0c;标准的字符串类提供了对此类对象的支&#xff0c;其接口类似于标准字符容器的接口&#xff0c;但是添加了专门用于操作的单字节字符字符串的设计特性。 string类是使用char&#xff0c;即作为他的字符…

【蓝桥杯嵌入式】12届程序题刷题记录及反思

一、题目解析 按键短按LCD显示两个界面LED指示灯PWM脉冲输出 二、led控制 控制两个led灯&#xff0c;两种状态 //led void led_set(uint8_t led_dis) {HAL_GPIO_WritePin(GPIOC,GPIO_PIN_All,GPIO_PIN_SET);HAL_GPIO_WritePin(GPIOC,led_dis << 8,GPIO_PIN_RESET);HAL…

高度不同的流体瀑布css实现方法

商城商品列表 实现瀑布流展示&#xff0c;通过flex或grid实现会导致每行中的列高度一致&#xff0c;无法达到错落有致的感觉&#xff1b; 为此需要用到&#xff1a; CSS columns 属性 columns 属性是一个简写属性&#xff0c;用于设置列宽和列数。 CSS 语法 columns: column-wi…

一些增强生产力的 AI 工具

engshell 支持自然语言交互的 shell engshell 是一个适用于任何操作系统的英语 shell&#xff0c;由 LLM 提供自然语言交互支持 Paints Chainer 漫画线稿上色 AI Paints Chainer 是一款用于为漫画上色的工具&#xff0c;只需上传一张黑白线稿&#xff0c;点击按钮&#xff0…

JQuery(二)---【使用JQuery对HTML、CSS进行操作】

零.前言 JQuery(一)---【JQuery简介、安装、初步使用、各种事件】-CSDN博客 一.使用JQuery对HTML操作 1.1获取元素内容、属性 使用JQ可以操作元素的“内容” text()&#xff1a;设置或返回元素的文本内容html()&#xff1a;设置或返回元素的内容(包括HTML标记)val()&#…