vite基础学习笔记:13.Dialog 对话框 (用户注册与登录)

说明:自学做的笔记和记录,如有错误请指正

1. Dialog 对话框组件

目标效果:点击“登录/注册”,弹框

(1)创建全局组件,在官网中查询代码粘贴

(2) 注册和使用全局组件

(3) 设置Visiable控制对话框的显示与隐藏

 

 (4)点击“登录/注册”按钮,修改Visiable的值

2. 对话框显示内容修改

(样式调整完毕)

<template>
  <div class="login">
    <el-dialog v-model="userStore.Visiable" width="40%">
      <el-row>
        <el-col :span="12">
          <div class="left">
            <h1>用户登录</h1>
            <div class="input">
              <el-form label-width="50px" style="width: 350px">
                <el-form-item label="账号">
                  <el-input placeholder="请输入11位手机号" />
                </el-form-item>
                <el-form-item label="密码">
                  <el-input placeholder="请输入6位密码" />
                </el-form-item>
                <el-form-item>
                  <el-checkbox label="记住账号"></el-checkbox>
                </el-form-item>
              </el-form>
            </div>
            <div class="button">
              <el-button
                style="width: 75%"
                type="primary"
                size="default"
                @click="Login"
                >用户登录</el-button
              >
            </div>
            <div class="wechat">
              <p>微信扫码登录</p>
              <svg
                      t="1698804524149"
                      class="icon"
                      viewBox="0 0 1024 1024"
                      version="1.1"
                      xmlns="http://www.w3.org/2000/svg"
                      p-id="4117"
                      width="16"
                      height="16"
                    >
                      <path
                        d="M1024 619.52c0-143.36-138.24-256-307.2-256s-307.2 112.64-307.2 256 138.24 256 307.2 256c30.72 0 61.44-5.12 92.16-10.24l97.28 51.2-25.6-76.8c87.04-51.2 143.36-128 143.36-220.16z m-414.72-40.96c-30.72 0-51.2-20.48-51.2-51.2s20.48-51.2 51.2-51.2 51.2 20.48 51.2 51.2c0 25.6-25.6 51.2-51.2 51.2z m209.92 0c-30.72 0-51.2-20.48-51.2-51.2s20.48-51.2 51.2-51.2 51.2 20.48 51.2 51.2c0 25.6-25.6 51.2-51.2 51.2z"
                        fill="#4CBF00"
                        p-id="4118"
                      ></path>
                      <path
                        d="M358.4 609.28c0-158.72 153.6-286.72 348.16-286.72h15.36c-40.96-133.12-179.2-235.52-353.28-235.52-204.8 0-368.64 138.24-368.64 307.2 0 107.52 66.56 204.8 168.96 256l-30.72 92.16L256 686.08c35.84 10.24 71.68 15.36 112.64 15.36h10.24c-15.36-30.72-20.48-61.44-20.48-92.16z m138.24-414.72c35.84 0 66.56 30.72 66.56 66.56s-30.72 66.56-66.56 66.56C460.8 322.56 430.08 291.84 430.08 256S460.8 194.56 496.64 194.56zM245.76 322.56c-35.84 0-61.44-30.72-61.44-66.56s30.72-66.56 66.56-66.56 61.44 30.72 61.44 66.56-30.72 66.56-66.56 66.56z"
                        fill="#4CBF00"
                        p-id="4119"
                      ></path>
                    </svg>
            </div>
          </div>
        </el-col>
        <el-col :span="12">
          <div class="right">
            <div class="top">
              <div class="right-left">
                <div class="right-left-top">
                  <img src="../../assets/img/code_login_wechat.png" />
                </div>
                <div class="right-left-bottom">
                  <p>
                    <svg
                      t="1698804524149"
                      class="icon"
                      viewBox="0 0 1024 1024"
                      version="1.1"
                      xmlns="http://www.w3.org/2000/svg"
                      p-id="4117"
                      width="16"
                      height="16"
                    >
                      <path
                        d="M1024 619.52c0-143.36-138.24-256-307.2-256s-307.2 112.64-307.2 256 138.24 256 307.2 256c30.72 0 61.44-5.12 92.16-10.24l97.28 51.2-25.6-76.8c87.04-51.2 143.36-128 143.36-220.16z m-414.72-40.96c-30.72 0-51.2-20.48-51.2-51.2s20.48-51.2 51.2-51.2 51.2 20.48 51.2 51.2c0 25.6-25.6 51.2-51.2 51.2z m209.92 0c-30.72 0-51.2-20.48-51.2-51.2s20.48-51.2 51.2-51.2 51.2 20.48 51.2 51.2c0 25.6-25.6 51.2-51.2 51.2z"
                        fill="#4CBF00"
                        p-id="4118"
                      ></path>
                      <path
                        d="M358.4 609.28c0-158.72 153.6-286.72 348.16-286.72h15.36c-40.96-133.12-179.2-235.52-353.28-235.52-204.8 0-368.64 138.24-368.64 307.2 0 107.52 66.56 204.8 168.96 256l-30.72 92.16L256 686.08c35.84 10.24 71.68 15.36 112.64 15.36h10.24c-15.36-30.72-20.48-61.44-20.48-92.16z m138.24-414.72c35.84 0 66.56 30.72 66.56 66.56s-30.72 66.56-66.56 66.56C460.8 322.56 430.08 291.84 430.08 256S460.8 194.56 496.64 194.56zM245.76 322.56c-35.84 0-61.44-30.72-61.44-66.56s30.72-66.56 66.56-66.56 61.44 30.72 61.44 66.56-30.72 66.56-66.56 66.56z"
                        fill="#4CBF00"
                        p-id="4119"
                      ></path>
                    </svg>
                  </p>
                  <p>微信扫一扫关注</p>
                  <p>"快速预约挂号"</p>
                </div>
              </div>
              <div class="right-right">
                <div class="right-right-top">
                  <img src="../../assets/img/code_app.png" />
                </div>
                <div class="right-right-bottom">
                  <p>
                    <svg
                      t="1698804617407"
                      class="icon"
                      viewBox="0 0 1024 1024"
                      version="1.1"
                      xmlns="http://www.w3.org/2000/svg"
                      p-id="5210"
                      width="16"
                      height="16"
                    >
                      <path
                        d="M352 96H224c-70.4 0-128 57.6-128 128v128c0 70.4 57.6 128 128 128h192c35.2 0 64-28.8 64-64V224c0-70.4-57.6-128-128-128z m64 319.9l-0.1 0.1H224c-17 0-33-6.7-45.1-18.9S160 369 160 352V224c0-17 6.7-33 18.9-45.1S207 160 224 160h128c17 0 33 6.7 45.1 18.9S416 207 416 224v191.9zM800 96H672c-70.4 0-128 57.6-128 128v192c0 35.2 28.8 64 64 64h192c70.4 0 128-57.6 128-128V224c0-70.4-57.6-128-128-128z m64 256c0 17-6.7 33-18.9 45.1S817 416 800 416H608.1l-0.1-0.1V224c0-17 6.7-33 18.9-45.1S655 160 672 160h128c17 0 33 6.7 45.1 18.9S864 207 864 224v128zM416 544H224c-70.4 0-128 57.6-128 128v128c0 70.4 57.6 128 128 128h128c70.4 0 128-57.6 128-128V608c0-35.2-28.8-64-64-64z m0 256c0 17-6.7 33-18.9 45.1S369 864 352 864H224c-17 0-33-6.7-45.1-18.9S160 817 160 800V672c0-17 6.7-33 18.9-45.1S207 608 224 608h191.9l0.1 0.1V800zM800 544H608c-35.2 0-64 28.8-64 64v192c0 70.4 57.6 128 128 128h128c70.4 0 128-57.6 128-128V672c0-70.4-57.6-128-128-128z m64 256c0 17-6.7 33-18.9 45.1S817 864 800 864H672c-17 0-33-6.7-45.1-18.9S608 817 608 800V608.1l0.1-0.1H800c17 0 33 6.7 45.1 18.9S864 655 864 672v128z"
                        fill="#1875F0"
                        p-id="5211"
                      ></path>
                    </svg>
                  </p>
                  <p>扫一扫下载</p>
                  <p>"预约挂号"APP</p>
                </div>
              </div>
            </div>
            <div class="bottom">
              <p>官方指定平台</p>
              <p>快速挂号 安全放心</p>
            </div>
          </div>
        </el-col>
      </el-row>
    </el-dialog>
  </div>
</template>
<script setup lang="ts">
import useUserStore from "../../store/modules/user";
let userStore = useUserStore();
</script>
<style scoped lang="scss">
.login {
  .left {
    border: 1px solid #ccc;
    h1 {
      font-size: 20px;
      margin: 30px 10px 30px 10px;
    }
    .input {
      margin: 0px 0px 0px 20px;
      // display: flex;
      // flex-direction: column;
      // align-items: center;
    }
    .button {
      display: flex;
      flex-direction: column;
      align-items: center;
    }
    .wechat {
        margin: 20px 0px;
        text-align: center;
        svg{
          margin: 10px 0px;
        }
      }
  }
  .right {
    // border: 1px solid #ccc;
    .top {
      display: flex;
      justify-content: space-between;
      img {
        width: 140px;
        height: 140px;
      }
      .right-left {
        margin: 30px 10px 10px 50px;
        .right-left-bottom {
          p {
            margin: 10px 0;
            display: flex;
            justify-content: center;
            align-items: center;
          }
        }
      }
      .right-right {
        margin: 30px 50px 10px 10px;
        .right-right-bottom {
          p {
            margin: 10px 0;
            display: flex;
            justify-content: center;
            align-items: center;
          }
        }
      }
    }
    .bottom {
      p {
        font-size: 15px;
        margin: 20px 0;
        display: flex;
        justify-content: center;
        align-items: center;
      }
    }
  }
}
</style>

调整显示结果为:

3.账号和密码输入并验证

(1)创建state存储双向绑定输入框内容及单选框选择

 (2)表单验证

 代码如下

<template>
  <div class="input">
    <el-form :model="state.loginParam" :rules="rules" ref="form" label-width="50px" style="width: 350px">
      <el-form-item label="账号" prop="phone">
        <el-input placeholder="请输入11位手机号" v-model="state.loginParam.phone"></el-input>
      </el-form-item>
      <el-form-item label="密码" prop="code">
        <el-input placeholder="请输入6位密码" v-model="state.loginParam.code"/>
      </el-form-item>
      <el-form-item>
        <el-checkbox label="记住账号" v-model="state.saveUser"></el-checkbox>
      </el-form-item>
    </el-form>
  </div>
</template>
<script setup lang="ts">
import { reactive, ref } from "vue";
import useUserStore from "../../store/modules/user";
let userStore = useUserStore();
const state = reactive({
    loginParam: {
        phone: '',
        code: '',
    },
    saveUser: false
});
// 自定义校验规则:手机号码自定义校验规则
const validatorPhone = (rule: any, value: any, callBack: any) => {
    // rule 表单校验的规则对象  value:当前文本的内容  callback:回调函数
    const reg =
        /^1((34[0-8])|(8\d{2})|(([35][0-35-9]|4[579]|66|7[35678]|9[1389])\d{1}))\d{7}$/;
    if (reg.test(value)) {
        callBack();
    } else {
        callBack(new Error("请输入正确的手机号格式"));
    }
};
// 自定义校验规则:验证码自定义校验规则
const validatorCode = (rule: any, value: any, callBack: any) => {
    // rule 表单校验的规则对象  value:当前文本的内容  callback:回调函数
    if (/^\d{6}$/.test(value)) {
        callBack();
    } else {
        callBack(new Error("请输入正确的密码格式"));
    }
};
// 获取form组件实例
let form = ref<any>();
  const rules = {
    phone: [{ trigger: "change", validator: validatorPhone }],
    code: [{ trigger: "change", validator: validatorCode }],
};
</script>

效果如下:

4. 点击登录按钮

 本地存储:

 登录数据呈现:

若数据仓库中phone数据为空,显示“登录/注册”,若有phone数据,则显示

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Zotero从安装到使用再到插件下载【适合小白,只看一篇就够!!!】

一、安装 1.安装Zotero 本人安装的是zotero6&#xff0c;全文是基于zotero6功能的介绍&#xff01; 下载地址&#xff1a;Zotero下载 选择 Custom&#xff0c;因为Standard是标准型会默认放置C盘&#xff0c;并且不能更改&#xff01; 选择自己的路径进行安装&#xff01;…

创建asp.net core mvc项目

一、安装vs2019 百度搜索【visual studio社区版下载】&#xff0c;进入微软官网 二、安装环境 运行vs2019,点击“工具”->“获取工具和功能” 三、打开vs2019 1.“文件”->“新建”->“项目”-> “ASP.Net Core Web 应用&#xff08;模型-视图-控制器&#xff09…

Python TCP服务端多线程接收RFID网络读卡器上传数据

本示例使用设备介绍&#xff1a;WIFI/TCP/UDP/HTTP协议RFID液显网络读卡器可二次开发语音播报POE-淘宝网 (taobao.com) #python通过缩进来表示代码块&#xff0c;不可以随意更改每行前面的空白&#xff0c;否则程序会运行错误&#xff01;&#xff01;&#xff01;如果缩进不…

Git->git简介,git的常用命令,git命令的常用理论

git简介git的常用命令git命令的常用理论 1.git简介 Git是什么&#xff1f; Git是一个开源的分布式&#xff0c;用于敏捷高效地处理任何或小或大的项目 Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。 Git 与常用的版本控制工具 CVSI…

2023-11 | 短视频批量下载/爬取某个用户的所有视频 | Python

这里以鞠婧祎的个人主页为demo https://www.douyin.com/user/MS4wLjABAAAACV5Em110SiusElwKlIpUd-MRSi8rBYyg0NfpPrqZmykHY8wLPQ8O4pv3wPL6A-oz 【2023-11-4 23:02:52 星期六】可能后面随着XX的调整, 方法不再适用, 请注意 找到接口 找到https://www.douyin.com/aweme/v1/web/…

蓝桥云课--1014 第 1 场算法双周赛

2-数树数【算法赛】&#xff08;找规律&#xff09; 一、题目要求 二、思路 由此可以推导出来&#xff0c;当s[i]L时&#xff0c;下一个编号当前编号*2-1&#xff1b;当s[i]R时&#xff0c;下一个编号当前编号*2&#xff1b; 三、代码 #include<bits/stdc.h> #define…

安卓三防手持终端 二维码扫描识别器 pda条码手持机

PDA条码手持机是一种快速的数据采集设备&#xff0c;具备多种数据采集功能并且可以进行二次开发&#xff0c;可以针对性的进行定制服务&#xff0c;满足各种业务需求。因其体积小&#xff0c;易操作、功能全、效率高深受物联网行业的青睐。 条码扫描是PDA重要的功能之一&#…

网络安全(黑客)小白自学

1.网络安全是什么 网络安全可以基于攻击和防御视角来分类&#xff0c;我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术&#xff0c;而“蓝队”、“安全运营”、“安全运维”则研究防御技术。 2.网络安全市场 一、是市场需求量高&#xff1b; 二、则是发展相对成熟…

C++|前言

c|前言 一、什么是C二、C发展史三、C的重要性3.1语言的使用广泛度3.2工作领域3.3校招领域 四、如何学习C4.1别人怎么学4.2自己怎么学 一、什么是C 在上回书已经学习了C语言&#xff0c;我们知道C语言是面向过程语言&#xff0c;C语言是结构化和模块化的语言&#xff0c;适合处理…

你觉得哪个软件写verilog体验最好?

最近在媒体上看到一个热点问题&#xff0c;浏览量高达680,003。“你觉得哪个软件写verilog体验最好&#xff1f;”这个问题可以说是IC设计师们最想知道的问题&#xff0c;也是大家工作交流中比较常见的。今天移知教育小编就来为大家分享一下&#xff0c;我对于这个问题的解答。…

登陆认证权限控制(2)—— 基于Spring security 安全框架的权限管理 注解式权限控制 RABC模型

前言 登陆认证&#xff0c;权限控制是一个系统必不可少的部分&#xff0c;一个开放访问的系统能否在上线后稳定持续运行其实很大程度上取决于登陆认证和权限控制措施是否到位&#xff0c;不然可能系统刚刚上线就会夭折。 Spring Security 是一个能够为基于 Spring 的企业应用…

学习Opencv(蝴蝶书/C++)相关——2.用clang++或g++命令行编译程序

文章目录 1. c/cpp程序的执行1.1 cpp程序的编译过程1.2 预处理指令1.3 编译过程的细节2. macOS下使用Clang看cpp程序的编译过程2.1 示例2.1.1 第一步 预处理器-preprocessor2.1.2 第二步 编译器-compiler2.1.3 第三步 汇编器-assembler2.1.4 第四步 链接器-linker2.1.5 链接其他…

【机器学习基础】机器学习概述

目录 前言 一、机器学习概念 二、机器学习分类 三、机器学习术语 &#x1f308;嗨&#xff01;我是Filotimo__&#x1f308;。很高兴与大家相识&#xff0c;希望我的博客能对你有所帮助。 &#x1f4a1;本文由Filotimo__✍️原创&#xff0c;首发于CSDN&#x1f4da;。 &#x…

【论文阅读】PSDF Fusion:用于动态 3D 数据融合和场景重建的概率符号距离函数

【论文阅读】PSDF Fusion&#xff1a;用于动态 3D 数据融合和场景重建的概率符号距离函数 Abstract1 Introduction3 Overview3.1 Hybrid Data Structure3.2 3D Representations3.3 Pipeline 4 PSDF Fusion and Surface Reconstruction4.1 PSDF Fusion4.2 Inlier Ratio Evaluati…

MCU平台使用SPI-DirectC实现FPGA在线升级

本文介绍在MCU平台上使用SPI-DirectC实现FPGA的在线升级功能。 对于使用Microchip FPGA若想使用离线方式对FPGA进行Bitstream的烧写,就不得不使用官方提供的DirectC组件(开源,包含JTAG-DirectC和SPI-DirectC),本文是在MCU(32bit)上实现的,采用的是SPI-DirectC组件。 …

分布式数据库·Hive和MySQL的安装与配置

一、版本要求&#xff1a;Hadoop:hadoop-2.10.1、MySQL&#xff1a;mysql-8.0.35、 HIVE&#xff1a;apache-hive-3.1.2、MySQL驱动&#xff1a;mysql-connector-java-5.1.49 安装包网盘链接&#xff1a;阿里云盘分享 安装位置 Hive:master、MySQL:slave1 二、卸载已安装的…

实现第三方app开机自启

添加 <category android:name"android.intent.category.LAUNCHER_APP" />

【数据结构】单链表OJ题(一)

&#x1f525;博客主页&#xff1a; 小羊失眠啦. &#x1f3a5;系列专栏&#xff1a;《C语言》 《数据结构》 《Linux》《Cpolar》 ❤️感谢大家点赞&#x1f44d;收藏⭐评论✍️ 文章目录 前言一、移除链表元素二、寻找链表中间结点三、输出链表倒数第k个结点四、反转单链表五…

【Web】在前端中CSS的语法

CSS规则是由两个主要的部分构成&#xff1a;选择器、以及一条或多条声明。 选择器通常是需要改变的HTML元素。 每条声明由一个属性和一个值组成。 属性&#xff08;Property&#xff09;是需要设置的样式属性&#xff08;Style attribute&#xff09;。每一个属性有一个值。…

Vue3+vite+cesium环境搭建

引言 目前有不少vue3cesium的配置教学&#xff0c;存在以下两个问题&#xff1a; &#xff08;1&#xff09;vue3cli方式&#xff0c;随着项目的迭代&#xff0c;npm run serve 启动调试很慢&#xff1b; &#xff08;2&#xff09;vue3vite 确实能将调试启动提升不少的&…