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

news2024/10/5 21:59:40

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

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数据,则显示

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

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

相关文章

Android ConstraintLayout

0dp 充满约束 to左侧是控件本身,to右边是约束条件 例如: app:layout_constraintBottom_toBottomOf"id/image_1" app:layout_constraintTop_toBottomOf"id/image_1" 指定权重: app:layout_constraintHorizontal_weight"" app:layout_constra…

[云原生案例2.1 ] Kubernetes的部署安装 【单master集群架构 ---- (二进制安装部署)】

文章目录 1. 常见的K8S安装部署方式1.1 Minikube1.2 Kubeadm1.3 二进制安装部署 2. Kubernetes单master集群架构 ---- &#xff08;二进制安装部署&#xff09;2.1 前置准备2.2 操作系统初始化2.3 部署 docker引擎 ---- &#xff08;所有 node 节点&#xff09;2.4 部署 etcd 集…

cygwin编译redis、nssm配置redis服务

一、总结 本文尝试了redis-7.2.1、redis-7.2、redis-7.0.12、redis-6.2.13&#xff0c;其中redis-7.0.12、redis-6.2.13下载下来后&#xff0c;没有修改redis项目的任何代码&#xff0c;直接在解压后的根目录下执行make命令就可以成功&#xff0c; 结果总结如下&#xff1a; r…

京东数据分析:2023年9月京东笔记本电脑行业品牌销售排行榜

鲸参谋监测的京东平台9月份笔记本电脑市场销售数据已出炉&#xff01; 9月份&#xff0c;笔记本电脑市场整体销售下滑。鲸参谋数据显示&#xff0c;今年9月份&#xff0c;京东平台上笔记本电脑的销量将近59万&#xff0c;环比下滑约21%&#xff0c;同比下滑约40%&#xff1b;销…

RTMP协议详解及Wiresahrk抓包分析

文章目录 前言一、RTMP 简介1、RTMP 介绍2、变种 二、wireshark 抓 RTMP 报文1、搭建 RTMP 服务器2、运行 RTMP 服务器3、打开 wireshark4、ffmpeg 推流5、VLC 拉流 三、RTMP 协议详解1、前言2、总体介绍3、握手4、RTMP Chunk Stream①、message&#xff08;消息&#xff09;②…

人工智能-卷积神经网络之多输入多输出通道

多输入多输出通道 每个图像的多个通道和多层卷积层。例如彩色图像具有标准的RGB通道来代表红、绿和蓝。 但是到目前为止&#xff0c;我们仅展示了单个输入和单个输出通道的简化例子。 这使得我们可以将输入、卷积核和输出看作二维张量。 当我们添加通道时&#xff0c;我们的输…

Qt 项目实战 | 音乐播放器

Qt 项目实战 | 音乐播放器 Qt 项目实战 | 音乐播放器播放器整体架构创建播放器主界面 官方博客&#xff1a;https://www.yafeilinux.com/ Qt开源社区&#xff1a;https://www.qter.org/ 参考书&#xff1a;《Qt 及 Qt Quick 开发实战精解》 Qt 项目实战 | 音乐播放器 开发环…

揭开堆叠式自动编码器的强大功能

一、介绍 在不断发展的人工智能和机器学习领域&#xff0c;深度学习技术因其处理复杂和高维数据的能力而广受欢迎。在各种深度学习模型中&#xff0c;堆叠式自动编码器是一种多功能且功能强大的工具&#xff0c;可用于特征学习、降维和数据表示。本文探讨了堆叠式自动编码器在深…

UE5、CesiumForUnreal实现加载GeoJson绘制单面(Polygon)功能(StaticMesh方式)

文章目录 1.实现目标2.实现过程2.1 实现原理2.1.1 数据读取2.1.2 三角剖分2.1.3 创建StaticMesh2.2 应用测试2.2.1 具体代码2.2.2 蓝图应用测试3.参考资料1.实现目标 通过读取本地GeoJson数据,在UE中以StaticMeshComponent的形式绘制出面数据,支持Editor和Runtime环境,GIF动…

高压放大器能够在哪里使用呢

高压放大器是一种重要的电子设备&#xff0c;可以在许多不同的领域和应用中使用。下面西安安泰将详细介绍高压放大器的应用。 医学影像&#xff1a;高压放大器在医学影像领域具有广泛的应用。医学影像设备&#xff08;如X射线机、CT扫描仪等&#xff09;需要高压来产生足够的能…

通俗理解repartition和coalesce区别

官方的解释 reparation 返回一个具有恰好numPartitions分区的新RDD。 可以增加或减少此RDD中的并行级别。在内部,reparation会使用shuffle来重新分发的数据。 如果要减少此RDD中的分区数量,请考虑使用coalesce,这样可以避免执行shuffle。 coalesce 返回一个新的RDD,该RDD被…

nginx--install

1. ubuntu 1.1 下载并解压依赖 每个包去各自官网下载 stable 版就行。 tar xzvf nginx-1.24.0.tar.gz tar xzvf openssl-3.1.4.tar.gz tar xzvf pcre2-10.42.tar.gz tar xzvf zlib-1.3.tar.gz1.2 配置及安装 参数含义详见 nginx 官网 cd nginx-1.24.0./configure --pre…

11 抽象向量空间

抽象向量空间 向量是什么函数什么是线性推论向量空间 这是关于3Blue1Brown "线性代数的本质"的学习笔记。 向量是什么 可以是一个箭头&#xff0c;可以是一组实数&#xff0c;即一个坐标对。 箭头在高维&#xff08;4维&#xff0c;甚至更高&#xff09;空间&…

免费音效素材,不能错过这6个网站

找免费音效素材&#xff0c;那必须要上这6个网站&#xff0c;热门音效、BGM都能免费下载&#xff0c;赶紧收藏起来。 1、菜鸟图库 https://www.sucai999.com/audio.html?vNTYwNDUx 菜鸟图库是一个综合性素材网站&#xff0c;站内涵盖设计、图片、办公、视频、音效等素材。其中…

【23真题】Easy!速成120两个月够了!

今天分享的是23年广西科技809的信号与系统试题及解析。 本套试卷难度分析&#xff1a;本套试题内容难度中等偏下&#xff0c;题量不大&#xff0c;考察的知识点很基础。所有的知识点都出现在它应该出现的地方&#xff0c;无任何偏难怪&#xff0c;非常常规的试卷&#xff01;个…

经典OJ题:链表中的倒数第K个节点

题目&#xff1a; 输入一个链表&#xff0c;输出该链表中倒数第k个结点。 题源&#xff1a;链表中倒数第k个结点_牛客题霸_牛客网 (nowcoder.com) 方法一&#xff1a;暴力求解法 可以线统计链表的节点个数&#xff0c;然后用链表节点的个数减去K&#xff0c;得出倒数第K个节点…

【EI会议征稿】第四届智慧城市工程与公共交通国际学术会议(SCEPT 2024)

第四届智慧城市工程与公共交通国际学术会议&#xff08;SCEPT 2024&#xff09; 2024 4th International Conference on Smart City Engineering and Public Transportation 第四届智慧城市工程与公共交通国际学术会议&#xff08;SCEPT 2024&#xff09;将于2024年1月26-28日…

免交互(粗糙版)

免交互&#xff1a; 交互是&#xff1a;计算机播放器&#xff0c;需要放视频&#xff0c;我发出指令&#xff0c;计算机执行指令&#xff0c;做出相应的动作。比如说播放视频音频的动作 Linux系统中的交互是,例如&#xff1a;passwd 尤其在shell脚本中&#xff0c;我们的运行…

华为荣耀软开秋招面经问题整理

一、八股 1.linux常用命令 Linux常用命令&#xff08;面试题&#xff09;_linux常用命令面试题-CSDN博客 常用命令、系统命令、打包命令、vim、开关机命令 2.socket通信调用api过程 TCP UDP 二、算法 1.LeetCode——240 搜索二维矩阵II-CSDN博客 2.最长递增子序列的三种…

spring-clound基础开发

一、使用openfeig调用远程另外一个服务接口 1、创建一个spring boot工程,并且创建2个模块来当微服务模块 2、分别配置2个模块的启动文件 3、分别两个模块下创建一个测试的控制器 4、在项目的根目录的pom.xml中添加spring-cloud配置 <properties><java.version>1…