Day01-项目介绍及初始化-登录页面(test)

1.人力资源项目介绍

1.1 项目架构和解决方案

image.png

1.2 课程安排

image.png

1.3 课程具备能力

image.png

1.4 课程地址

  • vue-element-admin文档地址:链接
  • 演示地址: 链接
  • 人力资源项目演示地址: 链接

2. 拉取项目基础代码

  • 拉取命令
$ git clone  https://github.com/PanJiaChen/vue-admin-template.git  heimahr
  • 升级core-js版本到3.25.5
$ npm i core-js@3.25.5 # npm
$ yarn add core-js@3.25.5 # yarn
  • 安装完整依赖
$ npm i # npm
$ yarn  # yarn
  • 启动命令在package.json中查看
$ yarn dev
  • 需要检查VsCode本身的插件ESLint 和 Vutur

image.png

3.项目目录和入口文件介绍

  • 项目目录
├── src                        # 源代码目录
│   ├── api                    # 所有请求
│   ├── assets                 # 主题 字体等静态资源
│   ├── components             # 全局公用组件
│   ├── icons                  # 项目所有 svg icons
│   ├── layout                 # 全局 layout
│   ├── router                 # 路由
│   ├── store                  # 全局 store管理
│   ├── styles                 # 全局样式
│   ├── utils                  # 全局公用方法
│   ├── views                  # views 所有页面
│   ├── App.vue                # 入口页面
│   ├── main.js                # 入口文件 加载组件 初始化等
│   └── permission.js          # 权限管理
│   └── settings.js            # 配置文件

  • 入口文件

image.png

4.App.vue根组件解析

  • App.vue组件

image.png

  • layout布局

image.png

5.基础设置settings.js和导航守卫permission.js

image.png
settings.js导出网站基础配置,包括:网站标题、固定header、显示logo
permission.js(权限),主要负责路由导航守卫

6.Vuex的结构

  • 模板中的结构

image.png
image.png
注意:人资资源项目主要针对**用户模块user **进行改造和重写

  • Vuex的设计思想

1.页面交互状态(折叠侧边栏-固定头部)
image.png
2.使用全局状态Vuex根据功能拆分成不同的模块(modules)
image.png
3.进行状态管理通过getters建立对于模块中属性的快捷访问
image.png

7.使用模板中的Icon图标

  • src/icons/svg目录下的图标都可以使用

image.png

  • 图标文件名直接设置为svg-icon组件的iconClass属性

image.png

8.扩展-解析Icon图标的实现思路

  • 引入目录所有的svg

image.png

  • 全局注册svg-icon组件

image.png

  • loader插件打包svg

image.png

  • svg-icon引用svg的链接

image.png

  • 知识扩展

1.了解:require.context(路径,是否扫描子目录, 正则匹配) 可以引入某个目录下的内容
2.了解:svg-sprite-loader打包了所有svg到一个svg标签上,将svg名称作为symbol标签的id属性
3.了解:svg-icon使用iconClass属性引用了symbol的id

9.导入样式资源并使用git管理

  • 将教学资源中的初始化**图片-样式-svg **拷贝到src目录下

image.png

因为项目是从github上拉取下来的,所以git记录了之前模版的信息,所以删除需要建立git

  • 删除原有的.git文件
  • 初始化仓库
$ git init # 初始化仓库
  • 添加到暂存区
$ git add . # 添加到暂存区
  • 提交本地仓库
$ git commit -m "初始化人力资源项目" # 提交本地仓库

接下来,同学们需要在gitee上新建一个自己的远程仓库,然后将本地的仓库推送到远程仓库托管

  • 本地仓库配置远程仓库地址
$ git remote add origin <你的远程仓库地址>  # 本地仓库配置远程仓库地址
  • 推送到远程仓库
$ git push -u origin master # 推送到远程仓库

10.登录页的结构和表单

接下来需要实现登录页的表单结构和表单内容

image.png

  • 拷贝登录页的基本结构布局-代码位置(src/views/login/index.vue)
<template>
  <div class="login-container">
    <div class="logo" />
    <div class="form">
      <h1>登录</h1>
      <el-card shadow="never" class="login-card">
        <!--登录表单-->
      </el-card>
    </div>
  </div>
</template>
<script>
export default {
  name : "Login"
}
</script>
<style lang="scss">
.login-container {
  display: flex;
  align-items: stretch;
  height: 100vh;
  .logo {
    flex: 3;
    background: rgba(38, 72, 176) url(../../assets/common/login_back.png)
      no-repeat center / cover;
    border-top-right-radius: 60px;
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    justify-content: center;
    padding: 0 100px;
    .icon {
      background: url(../../assets/common/logo.png) no-repeat 70px center /
        contain;
      width: 300px;
      height: 50px;
      margin-bottom: 50px;
    }
    p {
      color: #fff;
      font-size: 18px;
      margin-top: 20px;
      width: 300px;
      text-align: center;
    }
  }
  .form {
    flex: 2;
    display: flex;
    flex-direction: column;
    justify-content: center;
    padding-left: 176px;
    .el-card {
      border: none;
      padding: 0;
    }
    h1 {
      padding-left: 20px;
      font-size: 24px;
    }
    .el-input {
      width: 350px;
      height: 44px;
      .el-input__inner {
        background: #f4f5fb;
      }
    }
    .el-checkbox {
      color:#606266;
    }
  }
}
</style>

  • 实现登录表单的结构
<div class="form">
  <h1>登录</h1>
  <el-card shadow="never" class="login-card">
    <!--登录表单-->
    <!-- el-form > el-form-item > el-input -->
    <el-form>
      <el-form-item>
        <el-input placeholder="请输入手机号" />
      </el-form-item>
      <el-form-item>
        <el-input placeholder="请输入密码" />
      </el-form-item>
      <el-form-item>
        <el-checkbox>
          用户平台使用协议
        </el-checkbox>
      </el-form-item>
      <el-form-item>
        <el-button style="width:350px" type="primary">登录</el-button>
   </el-form-item>
</el-form>
  • 提交代码

11.登录表单校验-实现

  1. 定义数据和校验规则
export default {
  name: 'Login'
  name: 'Login',
  data() {
    return {
      loginForm: {
        mobile: '',
        password: '',
        isAgree: false
      },
      loginRules: {
        mobile: [{
          required: true,
          message: '请输入手机号',
          trigger: 'blur'
        }, {
          pattern: /^1[3-9]\d{9}$/,
          message: '手机号格式不正确',
          trigger: 'blur'

        }],
        password: [{
          required: true,
          message: '请输入密码',
          trigger: 'blur'
        }, {
          min: 6,
          max: 16,
          message: '密码长度应该为6-16位之间',
          trigger: 'blur'

        }],
        // required只能检查 null "" undefined
        isAgree: [{
          validator: (rule, value, callback) => {
            // rule规则
            // value检查的数据 true/false
            // callback 函数 执行这个函数
            // 成功执行callback 失败也执行callback(错误对象 new Error(错误信息))
            value ? callback() : callback(new Error('没有勾选用户平台协议'))
          }
        }]
      }
    }
  },
  methods: {
    login() {
      this.$refs.form.validate((isOK) => {
        if (isOK) {
          alert('校验通过')
        }
      })
    }
  }
}
</script>
  1. 绑定组件的对应属性
 <el-form ref="form" :model="loginForm" :rules="loginRules">
      <el-form-item prop="mobile">
            <el-input v-model="loginForm.mobile" placeholder="请输入手机号" />
      </el-form-item>
      <el-form-item prop="password">
          <el-input v-model="loginForm.password" show-password placeholder="请输入密码" />
      </el-form-item>
      <el-form-item prop="isAgree">
          <el-checkbox v-model="loginForm.isAgree">
              用户平台使用协议
          </el-checkbox>
      </el-form-item>
      <el-form-item>
          <el-button style="width:350px" type="primary" @click="login">登录</el-button>
      </el-form-item>
</el-form>

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

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

相关文章

VS2017 boost环境配置与报错解决

1、下载Boost 2、boost编译 将下载好的压缩包文件解压,我这里放到了D:\Qt文件夹内 按win键找到 vs2017(主要看你的vs是什么版本)的x86_x64兼容工具命令提示符 输入以下命令: 首先进入到解压的boost文件夹,复制一下前面解压的路径 cd D:\Qt\boost_1_78_0然后输入命令,…

【Python】牛客网—软件开发-Python专项练习(day1)

1.&#xff08;单选&#xff09;下面哪个是Python中不可变的数据结构&#xff1f; A.set B.list C.tuple D.dict 可变数据类型&#xff1a;列表list[ ]、字典dict{ }、集合set{ }(能查询&#xff0c;也可更改)数据发生改变&#xff0c;但内存地址不变 不…

【kubernetes】关于k8s集群中的ingress规则案例

目录 一、k8s 对外服务之 Ingress 1.1什么是ingress 1.2外部的应用能够访问集群内的服务有哪些方案&#xff1f; 1.3Ingress 组成 1.4Ingress-Nginx 工作原理 1.5ingress 暴露服务的方式 二、实操ingress暴露服务 前期.部署 nginx-ingress-controller 2.1基于host网络…

海翔ERP getylist_login.do接口存在sql注入漏洞

@[toc] 免责声明:请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失,均由使用者本人负责,所产生的一切不良后果与文章作者无关。该文章仅供学习用途使用。 1. 海翔ERP 简介 微信公众号搜索:南风漏洞复…

什么是ETL?什么是ELT?怎么区分它们使用场景

在大数据处理的领域中&#xff0c;ETL和ELT是两个经常被数据工程师提到的工具&#xff0c;而有很多数据工程师对这两种工具的区别和使用和定位有一定的模糊&#xff0c;其实它们分别代表了两种不同的数据集成方法。尽管这两种方法看起来都是从源系统提取数据&#xff0c;转换数…

常见BUG如何在测试过程中分析定位

前言 在测试的日常工作中&#xff0c;相信经常有测试的小伙伴遇到类似的情况&#xff1a;在项目上线时&#xff0c;只要出现问题&#xff08;bug&#xff09;&#xff0c;就很容易成为“背锅侠”。 软件测试人员在工作中是无法避免的要和开发人员和产品经理打交道的&#xff…

第14章 西瓜书——概率图模型

概率图模型 概率图模型&#xff08;Probabilistic Graphical Model&#xff09;是用图结构来表示多元随机变量之间条件依赖关系的模型。在图模型中&#xff0c;节点表示随机变量&#xff0c;边表示变量之间的依赖关系。概率图模型可以分为有向图模型&#xff08;如贝叶斯网络&a…

【XMU学科实践二】豆瓣爬虫实践

文章目录 分析豆瓣阅读网站具体步骤构造headersBeautiful soup中的定位函数find() 、find_all() 完整爬虫代码 叠甲&#xff1a;仅供学习。。 XMU的小朋友实在不会了可以参考我的思路&#xff0c;但还是建议自己敲一遍哈。 学科实践二还是挺有意思的&#xff01; 分析豆瓣阅读网…

人才推荐 | 毕业于美国凯斯西储大学的博士,专业知识广泛

编辑 / 木子 审核 / 朝阳 伟骅英才 伟骅英才致力于以大数据、区块链、AI人工智能等前沿技术打造开放的人力资本生态&#xff0c;用科技解决职业领域问题&#xff0c;提升行业数字化服务水平&#xff0c;提供创新型的产业与人才一体化服务的人力资源解决方案和示范平台&#x…

前端实现生成图片并批量下载,下载成果物是zip包

简介 项目上有个需求&#xff0c;需要根据表单填写一些信息&#xff0c;来生成定制的二维码图片&#xff0c;并且支持批量下载二维码图片。 之前的实现方式是直接后端生成二维码图片&#xff0c;点击下载时后端直接返回一个zip包即可。但是项目经理说后端实现方式每次改个东西…

Qt 自绘进度条 QProgressBar使用

文章目录 效果图控件介绍绘制函数总结 效果图 控件介绍 QProgressBar是Qt框架中提供的一个控件&#xff0c;用于在界面上显示任务的进度。它通常用于向用户展示一个操作完成的百分比&#xff0c;比如文件复制、数据加载等操作的进度。 QProgressBar的主要特性&#xff1a; 范…

BUUCTF----[极客大挑战 2019]HardSQL

输入1’ 单引号闭合 进行永真式判断 竟然说我是臭弟弟----八嘎&#xff08;肯定是进行了过滤&#xff09; 经过手法判断&#xff0c;过滤了&#xff0c;空格&#xff0c;and等报错注入updatexml() 报错注入顾名思义就是&#xff0c;通过特殊函数错误使用并使其输出错误结果来获…

实现鼠标移动el-select下拉框的label上面显示出table悬浮窗

首先是对vue代码 实现思路就是在el-option里面放一个span来包裹el-popover&#xff0c;里面在放tabe实现悬浮表格 <el-form-item label"原理图编号"><el-select v-model"data.number" placeholder"请选择" clearable multiple collaps…

操作系统笔记(进程)

注&#xff1a; 下面图片资源来源于 王道计算机考研 操作系统 1.进程概念 进程&#xff08;process&#xff09;&#xff1a;是动态的&#xff0c;是程序的一次执行过程&#xff08;同一程序多次执行&#xff0c;会产生多个进程&#xff09;程序&#xff1a;是静态的&…

ChatGPT提示技巧:种子词提示

ChatGPT提示技巧&#xff1a;种子词提示 种子词提示是一种通过提供特定种子词或短语来控制 ChatGPT 输出的技术。 种子词提示符的提示公式是种子词或短语&#xff0c;然后是指令 “请根据以下种子词生成文本”。 示例&#xff1a; 文本生成&#xff1a; 任务&#xff1a; …

MVC,MVP的对比(附代码)一次搞懂!

首先看下我们的页面 一个edittext&#xff0c;一个获取用户信息的button&#xff0c;一个展示用户信息的textview 实现&#xff1a;点击按钮&#xff0c;根据用户输入的账号&#xff0c;获取账号信息并显示在textview上 现在我们用三种方式实现 &#xff08;1&#xff09;不使…

Unity性能优化篇(十) 模型优化之网格合并 Easy Mesh Combine Tool插件使用以及代码实现网格合并

把多个模型的网格合并为一个网格。可以使用自己写代码&#xff0c;使用Unity自带的CombineMeshes方法&#xff0c;也可以使用资源商店的插件&#xff0c;在资源商店搜Mesh Combine可以搜索到相关的插件&#xff0c;例如Easy Mesh Combine Tool等插件。 可大幅度减少Batches数量…

Nginx实现高并发

注&#xff1a;文章是4年前在自己网站上写的&#xff0c;迁移过来了。现在看我之前写的这篇文章&#xff0c;描述得不是特别详细&#xff0c;但描述了Nginx的整体架构思想。如果对Nginx玩得透得或者想了解深入的&#xff0c;可以在网上找找其他的文章。 ......................…

C++顺序结构实例

1.计算浮点数相除的余数 计算两个双精度浮点数a和b相除的余数,a和b都是双精度浮点数。这里的余数r的定义是: a=k * 吧+r,其中k是整数,0<=r<b。 输入 一行,包括两个双精度浮点数a和b 输出 一行,a➗b的余数 样例输入 73.263 0.9973 样例输出 0.4301 #i…

机器学习--循环神经网络(RNN)3

本篇文章结合具体的例子来介绍一下LSTM运算方式以及原理。请结合上篇文章的介绍食用。 一、具体例子 如上图所示&#xff0c;网络里面只有一个 LSTM 的单元&#xff0c;输入都是三维的向量&#xff0c;输出都是一维的输出。 这三维的向量跟输出还有记忆元的关系是这样的。 假设…