首页 > 其他分享 >今天依然是写前端的一天--前端页面的搭建

今天依然是写前端的一天--前端页面的搭建

时间:2024-04-18 23:55:59浏览次数:22  
标签:flex const 16 -- 前端 trigger blur message 页面

<!--Login.vue-->

<script setup>
import { User, Lock } from '@element-plus/icons-vue'
import { ref } from 'vue'
//控制注册与登录表单的显示, 默认显示注册
const isRegister = ref(false)

//定义数据模型
const registerData = ref({
    username:'',
    password:'',
    rePassword:''
})

//校验密码的函数
const checkRePassword =(rule,value,callback)=>{
   if(value ===''){
    callback(new Error('请再次输入密码'))
    }else if(value !== registerData.value.password){
        callback(new Error('请确保两次输入的密码一致'))
    }else{
        callback()
    }

}
//定义表单校验规则
const rules = {
    username:[
        {required:true,message:'请输入用户名',trigger:'blur'},
        {min:5,max:16,message:'长度为5~16位非空字符',trigger:'blur'}
    ],
    password:[
        {required:true,message:'请输入密码',trigger:'blur'},
        {min:5,max:16,message:'长度为5~16位非空字符',trigger:'blur'}
    ],
    rePassword:[
        {validator:checkRePassword,trigger:'blur'}
    ]
    }
</script>

<template>
    <el-row class="login-page">
        <el-col :span="12" class="bg"></el-col>
        <el-col :span="6" :offset="3" class="form">
            <!-- 注册表单 -->
            <el-form ref="form" size="large" autocomplete="off" v-if="isRegister" :model="registerData" :rules="rules">
                <el-form-item>
                    <h1>注册</h1>
                </el-form-item>
                <el-form-item prop = "username">
                    <el-input :prefix-icon="User" placeholder="请输入用户名" v-model="registerData.username"></el-input>
                </el-form-item>
                <el-form-item prop = "password">
                    <el-input :prefix-icon="Lock" type="password" placeholder="请输入密码" v-model="registerData.password"></el-input>
                </el-form-item>
                <el-form-item prop = "rePassword">
                    <el-input :prefix-icon="Lock" type="password" placeholder="请输入再次密码" v-model="registerData.rePassword"></el-input>
                </el-form-item>
                <!-- 注册按钮 -->
                <el-form-item>
                    <el-button class="button" type="primary" auto-insert-space>
                        注册
                    </el-button>
                </el-form-item>
                <el-form-item class="flex">
                    <el-link type="info" :underline="false" @click="isRegister = false">
                        ← 返回
                    </el-link>
                </el-form-item>
            </el-form>
            <!-- 登录表单 -->
            <el-form ref="form" size="large" autocomplete="off" v-else>
                <el-form-item>
                    <h1>登录</h1>
                </el-form-item>
                <el-form-item>
                    <el-input :prefix-icon="User" placeholder="请输入用户名"></el-input>
                </el-form-item>
                <el-form-item>
                    <el-input name="password" :prefix-icon="Lock" type="password" placeholder="请输入密码"></el-input>
                </el-form-item>
                <el-form-item class="flex">
                    <div class="flex">
                        <el-checkbox>记住我</el-checkbox>
                        <el-link type="primary" :underline="false">忘记密码?</el-link>
                    </div>
                </el-form-item>
                <!-- 登录按钮 -->
                <el-form-item>
                    <el-button class="button" type="primary" auto-insert-space>登录</el-button>
                </el-form-item>
                <el-form-item class="flex">
                    <el-link type="info" :underline="false" @click="isRegister = true">
                        注册 →
                    </el-link>
                </el-form-item>
            </el-form>
        </el-col>
    </el-row>
</template>

<style lang="scss" scoped>
/* 样式 */
.login-page {
    height: 100vh;
    background-color: #fff;

    .bg {
        background: url('@/assets/logo2.png') no-repeat 60% center / 240px auto,
            url('@/assets/login_bg.jpg') no-repeat center / cover;
        border-radius: 0 20px 20px 0;
    }

    .form {
        display: flex;
        flex-direction: column;
        justify-content: center;
        user-select: none;

        .title {
            margin: 0 auto;
        }

        .button {
            width: 100%;
        }

        .flex {
            width: 100%;
            display: flex;
            justify-content: space-between;
        }
    }
}
</style>

标签:flex,const,16,--,前端,trigger,blur,message,页面
From: https://www.cnblogs.com/muzhaodi/p/18144792

相关文章

  • fluent AI的常用方法
    FluentAPI是EntityFrameworkCore的一个功能,它提供了一组可以以流式、链式调用的方法来配置EF的模型。它给予你对模型的完全控制权,高于数据注解(DataAnnotations)的优先级。它通常用于DbContext中的OnModelCreating方法里。以下是一些常用的FluentAPI配置方法的例子:配置主键cs......
  • LeetCode三则
    三道动态规划62.不同路径一个机器人位于一个mxn网格的左上角(起始点在下图中标记为“Start”)。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。问总共有多少条不同的路径?输入:m=3,n=7输出:28输入:m=3,n=2输出:3解释:......
  • memory-cnblog
    linux虚拟内存系统进程的虚拟内存用户区分段:代码段、数据段、堆、共享库、栈内核区:存放进程信息,PID\程序计数器、打开文件列表、task和mm(描述虚拟内存)结构等Linux加载进程时(exec系列系统调用)会为该地址空间每个段分配VMA,VMA数据结构(vm_area_struct)会描述该段的虚拟空间......
  • REACT小练习
    react组件间props传递functionDetail({content,active}){return(<div><p>{content}</p><p>{active?'已激活':'未激活'}</p></div>)}functionArticle({title,de......
  • springBoot 多数据源配置
    常规数据源#应用端口server:port:5555spring:datasource:username:rootpassword:ffjy1101url:jdbc:mysql://localhost:3306/mybatis?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8&useSSL=falsedriver-class-name:com.......
  • 53. 最大子数组和
    题目链接:53.最大子数组和这个和560.和为K的子数组类似,这种求子数组和用前缀和解决较为简单,前缀和的核心思想是用pre[i]表示[0,i]的子数组和,则[i,j]的子数组和为pre[j]-pre[i-1]。在560中,遍历到j时找pre[j]-pre[i-1]=K的子数组就是找在j之前等于pre[j]-K的前缀和,所以要存储每......
  • mysql
    sql语法单行或多行书写,分号结尾sql语句不区分大小写DDL数据定义语言数据库操作CREATEDATABASE[IFNOTEXISTS]name[DEFAULTCHARSET=name]DROPDATABASEnameUSEnameSHOWDATABASESSELECTDATABASE()表操作SHOWTABLESDESCname//显示表结构SHOWCRE......
  • ICPC2023沈阳站(B C D E I J K M)
    本场金牌线为六题前一半,这里提供难度前八题的题解。本场真是个细节场,银牌金牌题细节都相当地多。ICPC2023沈阳站C:作为签到题,对这种赛制熟悉不熟悉直接区分了一血时间。谔谔。#include<algorithm>#include<iostream>#include<cstring>#include<cstdio>#include<cmat......
  • Causal Inference理论学习篇-Tree Based-From Uplift Tree to Uplift Forest
    upliftTree和causaltree一样,uplifttree[8]作为一种以分类任务为主的,同样是将因果效应apply到节点分割的标准中。区别是:causaltree:1)使用honest的方法;2)从effect的偏差和方差的角度切入指导树的构建,把分类问题转化为回归问题去做。3)逻辑上只支持两个treatment而uplifttree......
  • 如何实现数据库数据到Abp vnext实体对象的同步?以及代码生成工具
    在采用了EFCore的CodeFirst方式下,如果你在数据库中直接添加了新表或存储过程,你需要在项目代码中手动反向工程这些数据库的更改,以保持CodeFirst的代码与数据库同步。这种情况可以通过如下两个步骤来实现:从现有数据库创建模型:使用EntityFrameworkCore的Scaffold-DbContext......