人力资源管理后台 === 基础环境+登陆
目录
1.人力资源项目介绍
1.1 项目架构和解决方案
1.2 课程安排
1.3 课程具备能力
1.4 课程地址
2. 拉取项目基础代码
3.项目目录和入口文件介绍
4.App.vue根组件解析
5.基础设置settings.js和导航守卫permission.js
6.Vuex的结构
7.使用模板中的Icon图标
8.扩展-解析Icon图标的实现思路
9.导入样式资源并使用git管理
10.登录页的结构和表单
11.登录表单校验-实现
1.人力资源项目介绍
1.1 项目架构和解决方案

1.2 课程安排

1.3 课程具备能力
1.4 课程地址
- vue-element-admin文档地址:vue-element-admin
- 演示地址: https://panjiachen.github.io/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

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 # 配置文件
- 入口文件

4.App.vue根组件解析
- App.vue组件

- layout布局
5.基础设置settings.js和导航守卫permission.js

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


注意:人资资源项目主要针对**用户模块user **进行改造和重写
- Vuex的设计思想
1.页面交互状态(折叠侧边栏-固定头部)

2.使用全局状态Vuex根据功能拆分成不同的模块(modules)

3.进行状态管理通过getters建立对于模块中属性的快捷访问

7.使用模板中的Icon图标
- src/icons/svg目录下的图标都可以使用

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

8.扩展-解析Icon图标的实现思路
- 引入目录所有的svg
- 全局注册svg-icon组件

- loader插件打包svg

- svg-icon引用svg的链接

- 知识扩展
1.了解:require.context(路径,是否扫描子目录, 正则匹配) 可以引入某个目录下的内容
2.了解:svg-sprite-loader打包了所有svg到一个svg标签上,将svg名称作为symbol标签的id属性
3.了解:svg-icon使用iconClass属性引用了symbol的id
9.导入样式资源并使用git管理
- 将教学资源中的初始化**图片-样式-svg **拷贝到src目录下

因为项目是从github上拉取下来的,所以git记录了之前模版的信息,所以删除需要建立git
- 删除原有的.git文件
- 初始化仓库
$ git init # 初始化仓库
- 添加到暂存区
$ git add . # 添加到暂存区
- 提交本地仓库
$ git commit -m "初始化人力资源项目" # 提交本地仓库
接下来,同学们需要在gitee上新建一个自己的远程仓库,然后将本地的仓库推送到远程仓库托管
- 本地仓库配置远程仓库地址
$ git remote add origin <你的远程仓库地址> # 本地仓库配置远程仓库地址
- 推送到远程仓库
$ git push -u origin master # 推送到远程仓库
10.登录页的结构和表单
接下来需要实现登录页的表单结构和表单内容
- 拷贝登录页的基本结构布局-代码位置(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.登录表单校验-实现
- 定义数据和校验规则
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 "" undefinedisAgree: [{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>
- 绑定组件的对应属性
<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>
相关文章:
人力资源管理后台 === 基础环境+登陆
目录 1.人力资源项目介绍 1.1 项目架构和解决方案 1.2 课程安排 1.3 课程具备能力 1.4 课程地址 2. 拉取项目基础代码 3.项目目录和入口文件介绍 4.App.vue根组件解析 5.基础设置settings.js和导航守卫permission.js 6.Vuex的结构 7.使用模板中的Icon图标 8.扩展…...
Handler系列-怎么实现delay
1.前提 前面说到sendMessage携带的delay会被加上SystemClock.uptimeMillis() ,最终赋值给Message的when。 msg.when SystemClock.uptimeMillis() delayMillis; 那么when除了用来在链表里面作为排序依据以外,还在哪里用到了呢? 2.Looper…...
C++前缀和算法的应用:最大化城市的最小供电站数目
本文涉及的基础知识点 C算法:前缀和、前缀乘积、前缀异或的原理、源码及测试用例 包括课程视频 二分法 题目 给你一个下标从 0 开始长度为 n 的整数数组 stations ,其中 stations[i] 表示第 i 座城市的供电站数目。 每个供电站可以在一定 范围 内给所…...
Centos/Linux安装Apahce出现bug汇总
源码安装Apache软件 使用软件:Apahce2.4.58,apr1.5.2, apr-util1.5.4 1.下载apr、apr-util和Apache软件; 2.安装apr压缩包,步骤如下: 第一、解压缩 tar zxvf apr-1.5.2.tar.gz第二、安装 cd /usr/local/sr…...
Scrapy爬虫异步框架(一篇文章齐全)
1、Scrapy框架初识 2、Scrapy框架持久化存储(点击前往查阅) 3、Scrapy框架内置管道(点击前往查阅) 4、Scrapy框架中间件(点击前往查阅) Scrapy 是一个开源的、基于Python的爬虫框架,它提供了…...
基于Hadoop架构的多重分布式BP神经网络的短期负荷预测方法
点我完整下载:基于Hadoop架构的多重分布式BP神经网络的短期负荷预测方法.docx 基于Hadoop架构的多重分布式BP神经网络的短期负荷预测方法 "A Short-term Load Forecasting Method based on Multi-distributed BP Neural Network Architecture with Hadoop Fram…...
Oracle查询数据库中当前用户每个表的数据条数
Oracle查询数据库中当前用户每个表的数据条数 select t.table_name,t.num_rows from user_tables t一般情况下这条语句就可查出想要结果 如果不行 请执行以下脚本 create or replace function count_rows(table_name in varchar2,owner in varchar2 default null)return…...
Windows从源码构建tensorflow(离线编译)
由一开始的在线编译,到后面的离线编译,一路踩坑无数,历经整整6个半小时,终于编译成功!在此记录一下参考过的文章,有时间整理一下踩坑记录。 一、环境配置 在tensorflow官网上有版本对应关系 win10 bazel …...
JMeter处理接口签名sign
写接口脚本的时候,很多接口涉及到签名,今天介绍下用JMeter编写签名脚本的方法。 举个例子,开启红包接口,请求方式为post POST /v1/api/red/open json请求参数 { "red_id":1, "timestamp":"1667033841…...
Android : Java中创建线程的几种方式_简单应用
主方法 MainTest.java package com.example.mythread;import java.util.concurrent.Callable; import java.util.concurrent.ExecutionException; import java.util.concurrent.FutureTask;public class MainTest {public static void main(String[] data){ // 以下的方…...
C# Onnx 特征匹配 DeDoDe 检测,不描述---描述,不检测
目录 介绍 效果 模型信息 项目 代码 下载 介绍 github地址:https://github.com/Parskatt/DeDoDe DeDoDe 🎶 Detect, Dont Describe - Describe, Dont Detect, for Local Feature Matching The DeDoDe detector learns to detect 3D consisten…...
第十六章 处理空字符串和 Null 值
文章目录 第十六章 处理空字符串和 Null 值空字符串和 Null 值的默认映射导出值控制空元素的形式 第十六章 处理空字符串和 Null 值 类和属性参数 XMLUSEEMPTYELEMENT XMLIGNORENULL XMLNILNOOBJECT XMLNIL 空字符串和 Null 值的默认映射 下表总结了空字符串和 null 值的…...
MYSQL 处理重复数据
文章目录 前言防止表中出现重复数据统计重复数据过滤重复数据删除重复数据在这里插入代码片后言 前言 hello world欢迎来到前端的新世界 😜当前文章系列专栏:Mysql 🐱👓博主在前端领域还有很多知识和技术需要掌握,正…...
世岩清上:未来科技展览的策展视野
面对科技未来,策展视野的核心在于把握趋势,理解人性,并充分运用科技手段提升观众的体验。以下是我对未来科技展览的策展视野。 一、以人为本的设计理念 科技发展的最终目的是服务于人类,提升人们的生活质量。因此,展…...
如何理解2023vivo开发者大会,使用Rust语言编写蓝河操作系统(BlueOS)?
在2023年vivo开发者大会上,vivo宣布使用Rust语言编写其蓝河操作系统(BlueOS)。 什么是Rust语言? Rust 是一种开放源代码系统编程语言,可用于开发高效、安全的软件。 使用 Rust 可管理内存并控制其低级详细信息。 但你…...
Android flutter this and base files have different roots
类似经历者 Android build fails with certain plugins if project is in a different drive (from sdk) 错误描述 我是windows系统,下载 flutter sdk 我是放在D盘,flutter项目是放在E盘,flutter 执行 pub get的时候,会在我C盘…...
Excel动态选择某一行/列的最后一个数据
选择列的最后一个数据: 以A列为例,使用: LOOKUP(1,0/(A:A<>""),A:A)选择行的最后一个数据: 以第3行为例,使用: LOOKUP(1,0/(3:3<>""),3:3)示例程序 列最后一个数据&a…...
扫描条形码到电脑:Barcode to pc 4.6.3 Crack
像专业人士一样使用条形码将条形码发送到 PC 排名第一的智能手机扫描应用程序 将条形码即时发送到计算机程序并自动执行任务的最简单方法 受到全球 500,000 多名用户的信赖 条形码到 PC:Wi-Fi 扫描仪应用程序,条码到 PC:适用于 Android 和 i…...
从0到0.01入门 Webpack| 003.精选 Webpack面试题
🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云…...
[数据结构]-红黑树
前言 作者:小蜗牛向前冲 名言:我可以接受失败,但我不能接受放弃 如果觉的博主的文章还不错的话,还请点赞,收藏,关注👀支持博主。如果发现有问题的地方欢迎❀大家在评论区指正 目录 一、红黑树的…...
ESP-CSI实战指南:如何让Wi-Fi信号实现厘米级人体检测与室内定位?
ESP-CSI实战指南:如何让Wi-Fi信号实现厘米级人体检测与室内定位? 【免费下载链接】esp-csi Applications based on Wi-Fi CSI (Channel state information), such as indoor positioning, human detection 项目地址: https://gitcode.com/GitHub_Trend…...
告别NeRF漫长等待:手把手教你用3D Gaussian Splatting实现实时高保真渲染
告别NeRF漫长等待:手把手教你用3D Gaussian Splatting实现实时高保真渲染 在数字内容创作和计算机视觉领域,高质量3D场景重建一直是个热门话题。传统方法如NeRF(神经辐射场)虽然能生成令人惊艳的结果,但其漫长的训练和…...
避雷器在线监测系统实战指南:从参数解读到智能运维
1. 避雷器在线监测系统入门:为什么需要实时监控? 避雷器就像电力系统的"防雷卫士",默默守护着变电站、输电线路等重要设备。但你知道吗?这个看似坚固的"卫士"其实也需要定期体检。传统的人工巡检就像每年一次…...
别再傻傻分不清了!硬件工程师必看:eFuse、Hotswap与保险丝,到底怎么选?
硬件工程师的电源保护方案选型指南:eFuse、Hotswap与保险丝深度解析 在硬件系统设计中,电源保护方案的选择往往决定了整个产品的可靠性与成本效益。面对市场上琳琅满目的保护器件,许多工程师常常陷入选择困境:传统保险丝看似简单廉…...
Linux内核中的存储性能优化详解
Linux内核中的存储性能优化详解 引言 存储性能是Linux系统中的重要指标,它直接影响系统的I/O吞吐量、延迟和稳定性。Linux内核提供了丰富的存储性能优化机制,从文件系统到块设备,从内核参数到应用程序。本文将深入探讨Linux内核中的存储性能优…...
2026最权威的五大AI论文网站实际效果
Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 深度探索作为一款具备高效特性的人工智能工具,于论文撰写领域显露了关键的应用价…...
终极Cursor Pro破解方案:三步实现全功能永久使用
终极Cursor Pro破解方案:三步实现全功能永久使用 【免费下载链接】cursor-free-vip [Support 0.45](Multi Language 多语言)自动注册 Cursor Ai ,自动重置机器ID , 免费升级使用Pro 功能: Youve reached your trial re…...
为什么你的多模态模型在西班牙语图文检索准确率暴跌41.7%?——从分词器错位到视觉提示污染的链式归因分析
第一章:多模态大模型跨语言迁移能力 2026奇点智能技术大会(https://ml-summit.org) 多模态大模型(Multimodal Large Language Models, MLLMs)在视觉-语言联合建模基础上,正逐步突破单一语种边界,展现出对低资源语言的…...
药品名称全解析:从通用名到商品名的数据库高效查询指南
1. 药品名称的三大核心分类:从化学结构到品牌营销 第一次接触药品名称时,很多人都会被各种术语绕晕。我刚开始做医药数据分析时,就曾经把某款降压药的化学名和商品名搞混,差点闹出大乌龙。其实药品命名就像人的身份证系统…...
Git核心概念与版本控制思想启蒙
Git核心概念与版本控制思想启蒙 那天下午,调试器停在一个诡异的堆栈溢出位置。我盯着屏幕上的十六进制地址,突然意识到——三小时前能正常运行的代码,现在彻底崩了。更糟糕的是,我完全想不起自己改过哪些文件。Ctrl+Z按到手酸,文件恢复对话框弹了又弹,最后只能对着编译错…...
