vue3 antv 静态登录页面

效果图

在这里插入图片描述

<template>
<!-- 内容区域 --><div class="main"><div class="from"><!-- 表单 model是antv里边的绑定表单数据 --><a-form :model="formState" ref="formRef"><!-- 切换 --><a-tabs :activeKey="data.customActiveKey" @change="handleTabClick"><a-tab-pane key="tab1" tab="账号密码登录"><a-form-item name="account" :rules="[{required:true,message:'请输入你的用户名'},{validator:handlUsernameOrEmail}]"><a-input size="large" type="text" placeholder="账户名邮箱地址" v-model:value="formState.account"><!-- prefix:是放在input前边 vue2 写插槽    <template slot="prefix"><user-outlined /></template> --><template #prefix><user-outlined /></template></a-input></a-form-item><a-form-item  name = "password" :rules="[{required:true,message:'请输入你的密码'},]"><a-input size="large" type="password" placeholder="密码" autocomplete="false" v-model:value="formState.password"><template #prefix><lock-outlined /></template></a-input></a-form-item></a-tab-pane><a-tab-pane key="tab2" tab="手机号登录"><a-form-item><a-input size="large" type="text" placeholder="手机号"><template #prefix><mobile-outlined/></template></a-input></a-form-item><a-row :gutter="16"><a-col :span = "16"><a-input size="large" type="text" placeholder="验证码"><template #prefix><mail-outlined /></template></a-input></a-col><a-col :span="8"><!-- blcok占据一行 --><a-button blcok type="primary">获取验证码</a-button></a-col></a-row></a-tab-pane></a-tabs><a-form-item class="autologin"><a-checkbox v-model:checked="formState.rememberMe">自动登录</a-checkbox><router-link to="/user/forget">忘记密码</router-link></a-form-item><a-form-item><a-button size="large" type="primary" htmlType="submit" block @click="submitFn">登录</a-button></a-form-item><div class="user-login-other"><span>其他登录方式</span><router-link :to="{ name:'register'}">注册账户</router-link></div></a-form></div></div>
</template>
<script setup>
import { UserOutlined,LockOutlined,MobileOutlined,MailOutlined } from '@ant-design/icons-vue';
import { reactive, ref, onMounted } from "vue";
const formState = reactive({account: "",password:'',rememberMe:true,
});
const data = reactive({
// 绑定tab的key值customActiveKey:"tab1",
})
const formRef = ref();
onMounted(()=>{console.log('ref',formRef.value);
})
// 登录事件
async function submitFn(){if(data.customActiveKey === 'tab1'){//根据tab1来效验不同的内容try{const values = await formRef.value.validateFields(["account","password",]);//效验账号和密码console.log('succes',values);// 根据tab切换的情况,执行不同的登录流程}catch(error){console.log('error',values);} }}
// 效验
function handlUsernameOrEmail(rules,value,){const regex = /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(\.[a-zA-Z0-9_-]+){1,2}$/;if(regex.test(value)){return Promise.resolve('成功');}else {return Promise.reject('账号是邮箱,请输入正确的邮箱');}
}
// 点击事件
function handleTabClick(key){data.customActiveKey = key;
}
</script>
<style lang="less" scoped>
.main{display: flex;justify-content: center;align-items: center;
}
.from{width: 450px;padding: 25px;border-radius: 10px;background-color:rgba(233,233,233,0.7) ;
}
:deep(.autologin .ant-form-item-control-input-content), .user-login-other{display: flex;justify-content: space-between;
}
</style>

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

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

相关文章

手写模拟SpringBoot核心流程

通过手写模拟实现一个Spring Boot&#xff0c;让大家能以非常简单的方式就能知道Spring Boot大概是如何工作的。 依赖 建一个工程&#xff0c;两个Module: 1.springboot模块&#xff0c;表示springboot框架的源码实现 2.user包&#xff0c;表示用户业务系统&#xff0c;用来写…

【刷题】只出现一次的数字(三种解法)

【刷题】只出现一次的数字 文章目录 【刷题】只出现一次的数字解法异或运算解法一 : 异或运算解法二:集合类Set集合Map集合 链接: https://www.nowcoder.com/share/jump/2008263481696810321082 https://leetcode.cn/problems/single-number/description/ 题目描述 给定一个整…

基于Java的民宿管理系统设计与实现(源码+lw+部署文档+讲解等)(民宿预约、民宿预订、民宿管理、酒店预约通用)

文章目录 前言具体实现截图论文参考详细视频演示代码参考源码获取 前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技…

运行软件找不到mfc140u.dll怎么解决,mfc140u.dll是什么文件

"找不到 mfc140u.dll"是一条错误信息&#xff0c;表示您的计算机上缺少一个名为 mfc140u.dll 的动态链接库&#xff08;DLL&#xff09;文件。这个文件通常与 Microsoft Visual C Redistributable 相关。Mfc140u.dll 是 Microsoft 基础类库&#xff08;MFC&#xff0…

Linux: 基础IO

学习目标 1.C接口与系统调用接口的差别 2.文件描述符, 重定向, 一切皆文件, 缓冲区 3.fd与FILE, 系统调用和库函数的关系 4.系统中的inode 5.软硬链接 6.动静态库 预备知识 1.文件 内容 属性 2.文件的所有操作: a. 对内容的操作 b.对属性的操作 3.文件在磁盘(硬件)上, 我…

Blender 导出 fbx 到虚幻引擎中丢失材质!!!(使用Blender导出内嵌材质的fbx即可解决)

目录 0 引言1 Blender导出内嵌纹理的fbx模型 0 引言 我在Blender处理了一些fbx模型后再次导出到UE中就经常出现&#xff0c;材质空白的情况&#xff08;如下图所示&#xff09;&#xff0c;今天终于找到问题原因&#xff0c;记录下来&#xff0c;让大家避免踩坑。 其实原因很简…

Pikachu靶场——跨站请求伪造(CSRF)

文章目录 1. 跨站请求伪造&#xff08;CSRF&#xff09;1.1 CSRF(get)1.2 CSRF(post)1.3 CSRF Token1.4 CSRF漏洞防御 1. 跨站请求伪造&#xff08;CSRF&#xff09; 还可以参考我的另一篇文章&#xff1a;跨站请求伪造(CSRF) 全称Cross-site request forgery&#xff0c;翻译…

c++day3

1> 思维导图 2> 设计一个Per类&#xff0c;类中包含私有成员:姓名、年龄、指针成员身高、体重&#xff0c;再设计一个Stu类&#xff0c;类中包含私有成员:成绩、Per类对象p1&#xff0c;设计这两个类的构造函数、析构函数和拷贝构造函数。 #include <iostream>us…

竞赛 机器视觉的试卷批改系统 - opencv python 视觉识别

文章目录 0 简介1 项目背景2 项目目的3 系统设计3.1 目标对象3.2 系统架构3.3 软件设计方案 4 图像预处理4.1 灰度二值化4.2 形态学处理4.3 算式提取4.4 倾斜校正4.5 字符分割 5 字符识别5.1 支持向量机原理5.2 基于SVM的字符识别5.3 SVM算法实现 6 算法测试7 系统实现8 最后 0…

Redis之主从复制,哨兵模式,集群

Redis之主从复制&#xff0c;哨兵模式&#xff0c;集群 1、主从复制1.1主从复制概述1.2Redis主从复制作用1.3Redis主从复制流程1.4部署Redis 主从复制 2、哨兵模式2.1哨兵模式原理2.2哨兵模式的作用2.3哨兵模式的结构2.4故障转移机制2.5搭建Redis 哨兵模式 3、Redis集群模式3.1…

监控搭建-Prometheus

监控搭建-Prometheus 1、背景2、目标3、选型4、Prometheus4.1、介绍4.2、架构4.3、构件4.4、运行机制4.5、环境介绍4.6、数据准备4.7、网络策略4.7.1、主机端口放行4.7.2、设备端口放行 4.8、部署4.9、验证4.10、配置 1、背景 随着项目信息化进程的推进&#xff0c;操作系统、…

如何从零开始系统的学习项目管理?

一、项目的概念 根据项目管理协会&#xff08;PMI&#xff09;的定义&#xff0c;项目是指为了创造独特的产品、服务或成果而进行的临时性工作。这意味着项目需要有明确的目标&#xff0c;且不是日常重复性工作。尽管项目是临时性工作&#xff0c;但它所交付的成果可能会持续存…