【手把手教vue会员管理系统】篇四之登录界面

news2024/11/29 22:35:56

一、登录界面路由配置

1.将view目录下的about、home组件删除,再新建login文件夹,在login文件夹下新建index.vue组件,并添加如下图所示的代码:

2.将App.vue更改成下图所示,删掉不必要的代码。

3.在router的index.js文件中配置路由

注意:1.是export,不是exports。

        2.是routes,是没有r的,不是routers!!

        3.路由名称可以自定义,组件名称看引入时给了什么名字

4.运行。npm run serve

出现空白页面,不要慌,没有问题,因为默认打开的是‘/’这个路径,我们没有配置这个,所以一片空白

接着在url后面手动添加login,然后回车,就可以看到登录页面。说明路由通了

二、登录界面

1.界面设计

界面如下

(1)准备一张背景图,放在assets下,在这里我命名为login

(2)login>>index.vue里的代码如下:

element部分在element的表单部分,可自行选择添加。

<template>
  <div class="login-container">
    <el-form
      ref="form"
      :rules="rules"
      :model="form"
      label-width="80px"
      class="login-form"
    >
      <!-- 账号:label-显示的文字,v-model-绑定的属性值 -->
      <h2 class="login-title">会员管理系统</h2>
      <el-form-item label="账号" prop="username">
        <el-input v-model="form.username"></el-input>
      </el-form-item>
      <!-- 密码 -->
      <el-form-item label="密码" prop="password">
        <el-input v-model="form.password" type="password"></el-input>
      </el-form-item>
      <!-- 按钮 -->
      <el-form-item>
        <el-button type="primary" @click="submitForm('form')">登录</el-button>
      </el-form-item>
    </el-form>
  </div>
</template>

<script>
export default {
  data() {
    return {
      form: {
        username: "",
        password: "",
      },
      //校验规则
      rules: {
        username: [
          { required: true, message: "请输入用户名称", trigger: "blur" },
          { min: 2, max: 7, message: "长度在 2 到 7 个字符", trigger: "blur" },
        ],
        password: [
          { required: true, message: "请输入密码", trigger: "blur" },
          { min: 6, max: 15, message: "长度在 6 到 15个字符", trigger: "blur" },
        ],
      },
    };
  },
  methods: {
    submitForm(formName) {
      this.$refs[formName].validate((valid) => {
        //console.log(valid);//校验成功则valid为true。反之
        if (valid) {
          //提交表单给后台验证是否正确
          alert("submit!");
        } else {
          console.log("验证失败");
          return false;
        }
      });
    },
  },
};
</script>
<style scoped>
.login-form {
  width: 350px;
  /*上下边距160px,左右自动居中*/
  margin: 180px auto;
  background-color: rgb(255, 255, 255, 0.8);
  padding: 28px;
  border-radius: 20px;
}
.login-container {
  position: absolute;
  width: 100%;
  height: 100%;
  background: url(../../assets/login.png);
}
.login-title {
  text-align: center;
}
</style>

2.调用后台接口实现登录验证

(1)创建接口

打开Easy-mock

描述、项目名等自己填

然后点击创建》》创建接口

  • post
  • url:/user/login
  • 描述:登录注册

{
  "code": 2000,
  "flag": true,
  "message": "验证成功",
  "data": {
    "token": "admin"
  }
}

》点击创建。这样一个接口就创建成功了。

再创建一个接口:用来响应用户信息

  • get
  • url: /user/info/{token}
  • 描述:响应用户信息

{
  "code": 2000,
  "flag": true,
  "message": "成功获取用户信息",
  "data": {
    "id|1-10000": 1,
    "name": "@cname",
    "roles": ["manager"]
  }
}

(2)在项目的根目录下新建.env.development文件

#开发环境

#只有以 VUE_APP_ 开头的变量会被 webpack.DefinePlugin 静态嵌入到项目中使用process.env.VUE_APP_XXX

#目标环境地址,添加或更改服务后要重启服务npm run serve
#easy-mock服务接口地址
VUE_APP_SERVICE_URL= ' https://mock.presstime.cn/mock/64b7e077b9e270cc51cb04df'

#开发环境的前缀
VUE_APP_BASE_URL='/dev-api'

注意:记得将VUE_APP_SERVICE_URL里的接口地址改成自己easy-mockli 里项目的BaseURL

(3)登录逻辑实现

将index.vue里的<script>标签内的内容修改如下:

<script>
//导入
import { login, getUserInfo } from "@/api/login";
export default {
  data() {
    return {
      form: {
        username: "",
        password: "",
      },
      //校验规则
      rules: {
        username: [
          { required: true, message: "请输入用户名称", trigger: "blur" },
          { min: 2, max: 7, message: "长度在 2 到 7 个字符", trigger: "blur" },
        ],
        password: [
          { required: true, message: "请输入密码", trigger: "blur" },
          { min: 6, max: 15, message: "长度在 6 到 15个字符", trigger: "blur" },
        ],
      },
    };
  },
  methods: {
    submitForm(formName) {
      this.$refs[formName].validate((valid) => {
        //console.log(valid);//校验成功则valid为true。反之
        if (valid) {
          //提交表单给后台验证是否正确
          login(this.form.username, this.form.password).then((respose) => {
            const resp = respose.data;
            console.log(resp, resp.flag, resp.data.token);
            if (resp.flag) {
              //验证成功,通过token去获取用户信息
              getUserInfo(resp.data.token).then((response) => {
                const respUser = response.data;
                //获取用户数据
                console.log("用户信息详情", respUser.data);
                //1.保存token和用户信息
                localStorage.setItem("会员管理系统-用户信息", respUser.data);
                localStorage.setItem("会员管理系统-token", resp.data.token);
                //前往首页
                this.$router.push("/");
              });
            }
          });
          // alert("submit!");
        } else {
          console.log("验证失败");
          return false;
        }
      });
    },
  },
};
</script>

界面代码添加:

3.运行

输入账号密码后会跳转到/ 路径,控制台显示返回的信息

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

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

相关文章

哈希算法:如何防止数据库中的用户信息被脱库?

文章来源于极客时间前google工程师−王争专栏。 2011年CSDN“脱库”事件&#xff0c;CSDN网站被黑客攻击&#xff0c;超过600万用户的注册邮箱和密码明文被泄露&#xff0c;很多网友对CSDN明文保存用户密码行为产生了不满。如果你是CSDN的一名工程师&#xff0c;你会如何存储用…

项目资源管理案例题

本文来自江山老师高项文档 规划资源管理 没有规划资源管理 资源管理计划项目经理一人制定&#xff0c;没有全员参与 资源管理计划内容不全面&#xff0c;有遗漏 质量工程师编写资源管理计划是不对的 资源管理计划应该各干系人参与&#xff0c;而且还需要经过评审 估算活…

基于元模型优化算法的主从博弈多虚拟电厂动态定价和能量管理MATLAB程序

微❤关注“电气仔推送”获得资料&#xff08;专享优惠&#xff09; 参考文献&#xff1a; 基于元模型优化算法的主从博弈多虚拟电厂动态定价和能量管理_董雷 仿真平台&#xff1a; MATLABcplex 主要内容&#xff1a; 主要为多虚拟电厂/微网的优化调度策略&#xff0c;模型…

实用篇-Nacos配置管理

Nacos不仅具有注册中心的功能&#xff0c;还具有注册管理的功能 一、Nacos实现配置管理 可以使用统一配置管理&#xff0c;来配置更改热更新&#xff0c;整体结构如下 前提条件: 你已经把上面的 实用篇-Nacos注册中心 学完了&#xff0c;并且项目也跟着做了。我们下面会使用到…

Python 接口自动化 —— requests框架

1.前言 Python内置的urllib模块&#xff0c;也可以用于访问网络资源。但是&#xff0c;它用起来比较麻烦&#xff0c;而且&#xff0c;缺少很多实用的高级功能。因此我们使用 requests 模块进行进行接口测试。 requests官方文档资料地址&#xff1a;http://cn.python-request…

操作系统:进程与线程(二)同步与互斥B

一战成硕 2.3.5 管程2.3.6 经典同步问题 2.3.5 管程 管程的特性保证了进程互斥&#xff0c;无需程序员自己实现互斥&#xff0c;降低了死锁发生的可能。 管程的定义 管程是一种高级的同步机制。 定义描述举例 条件变量 2.3.6 经典同步问题 生产者消费者问题 缓冲区没满&a…

会说话,得天下!演讲与口才训练必修课

会说话&#xff0c;得天下&#xff01;演讲与口才训练必修课 口才是现代职场上一项非常重要的素质。有了好的口才&#xff0c;不仅可以很好地展示自己的思想和见解&#xff0c;还可以影响他人并获得支持&#xff0c;这对个人职业发展十分重要。所以&#xff0c;学习如何进行出…

详解 DES加密技术 | 凯撒密码 | 栅栏密码

目录 密码学 恺撒密码 栅栏密码 消息和加密 密码的三个特性 算法和密钥 对称算法 公开密钥算法 DES对称加密技术 DES算法的安全性 DES算法的原理 DES算法的实现步骤 IP置换表和IP-1逆置换表 函数f 子密钥ki S盒的工作原理 DES算法的应用误区 密码学 密码学是一门…

Oracle (7)Online Redo Log Files

目录 一、Oracle Online Redo Log Files及其相关内容介绍 1、Online Redo Log Files简介 2、Online Redo Log Files特点 3、Online Redo Log Files文件组 4、多路复用文件 5、联机重做日志文件工作方式 6、LGWR什么时候写重做 7、LS和LSN 8、删除Redo文件成员 9、删除…

【黑马程序员】mysql基础篇笔记

2023年10月26日12:21:09过一下 1.01.MySQL课程介绍(Av765670802,P1) 2.02. 基础-课程内容&数据库相关概念(Av765670802,P2) 3.03. 基础-概述-MySQL安装及启动(Av765670802,P3) 4.04. 基础-概述-数据模型(Av765670802,P4) 通过表来存储数据的数据库就叫做关系型数据库 …

centos7安装配置以及Linux常用命令

⭐⭐ linux专栏&#xff1a;linux专栏 ⭐⭐ 个人主页&#xff1a;个人主页 目录 一.CentOS的安装 使用vi编辑ifcfg-ens33 二. 下载MobaXterm软件 2.1MobaXterm的用途 2.2 MobaXterm的使用 2.3下载插件vim 三.Linux常用命令 3.4 vi或vim编辑器 3.4.1 命令模式 3.4.2.…

面试官:给你40亿个数,你应该如何快速判断一个数是否在这40亿个数中?—— 位图 [ C++入门 ]

阅读导航 引言一、位图的概念1. 官方文档2. 基本概念 二、位图的实现1. 插入2. 删除3. 查找C模拟实现&#x1f534;完整代码 总结 引言 在C编程中&#xff0c;位图是一种常用的数据结构&#xff0c;用于高效地表示大量的布尔值。它通过使用一个二进制位来表示每个元素的存在与…

集成电路自动化测试的优势是什么?

集成电路自动化测试的优势主要包括&#xff1a; 提高效率&#xff1a;自动化测试可以显著提高测试效率&#xff0c;因为可以24小时不间断地进行测试&#xff0c;同时避免了人工测试中的误差和疏漏&#xff0c;节省了大量时间和人力成本。 提升精度&#xff1a;自动化测试的精…

MySQL|基础操作+8大查询方式汇总

MySQL操作 一、操作数据库 MySQL中可以创建多个数据库用于存储不同场景的表结构&#xff0c;学习MySQL之前&#xff0c;我们要先理清如下的关系&#xff1a; 数据库 --> 数据表 --> 字段 抛开数据库存储上限去考虑&#xff0c;每个数据库中可以包含无数个数据表&#xf…

Apriori介绍及代码批注

一、Apriori原理解析 1. 概述 关联规则分析是数据挖掘中最活跃的研究方法之一&#xff0c;目的是在一个数据集中找到各项之间的关联关系&#xff0c;而这种关系并没有在数据中直接体现出来。以超市的销售数据为例&#xff0c;当存在很多商品时&#xff0c;可能的商品组合数量…

MySQL的数据库操作、数据类型、表操作

目录 一、数据库操作 &#xff08;1&#xff09;、显示数据库 &#xff08;2&#xff09;、创建数据库 &#xff08;3&#xff09;、删除数据库 &#xff08;4&#xff09;、使用数据库 二、常用数据类型 &#xff08;1&#xff09;、数值类型 &#xff08;2&#xff0…

用Jmeter做微信小程序项目接口测试【案例】

公司新项目组开发一款微信小程序电商平台&#xff0c;为了更好保证产品质量&#xff0c;因此提出了需要进行接口测试。 从接口本身来讲&#xff0c;对其测试与其他项目应该是一样的。所以不难理解&#xff0c;我们要对小程序的接口测试需要准备的 材料有&#xff1a; 1、完备…

LCR 158. 库存管理 II 哈希 / 摩尔投票法

LCR 158. 库存管理 II - 力扣&#xff08;LeetCode&#xff09; 仓库管理员以数组 stock 形式记录商品库存表。stock[i] 表示商品 id&#xff0c;可能存在重复。请返回库存表中数量大于 stock.length / 2 的商品 id。 &#xff08;1&#xff09;方法一&#xff1a;先排序 题目…

​Profinet转EtherNET/IP从站连接欧姆龙plc与西门子200smart通讯的配置方法​

本案例是200smart plc与欧姆龙plc进行通讯的方法&#xff0c;远创智控YC-PNM-EIP网关可以读写全系列西门子 PLC 数据。一般不需要 PLC 里做特殊的设置。只需要把 PLC 的变量地址配置到网关中&#xff0c;网关就可以读取指定地址的数据或者写数据到指定的地址。 PLC 通过网线连接…

Android---Bitmap详解

每一个 Android App 中都会使用到 Bitmap&#xff0c;它也是程序中内存消耗的大户&#xff0c;当 Bitmap 使用内存超过可用空间&#xff0c;则会报 OOM。 Bitmap 占用内存分析 Bitmap 用来描述一张图片的长、宽、颜色等信息&#xff0c;可用使用 BitmapFactory 来将某一路径下…