人力资源管理后台 === 基础环境+登陆
目录
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个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云…...
[数据结构]-红黑树
前言 作者:小蜗牛向前冲 名言:我可以接受失败,但我不能接受放弃 如果觉的博主的文章还不错的话,还请点赞,收藏,关注👀支持博主。如果发现有问题的地方欢迎❀大家在评论区指正 目录 一、红黑树的…...
别再被 ee.Initialize() 坑了!手把手教你正确配置 Python 本地 GEE API(附项目名查找指南)
别再被 ee.Initialize() 坑了!手把手教你正确配置 Python 本地 GEE API(附项目名查找指南) 如果你正在尝试在本地 Python 环境中使用 Google Earth Engine (GEE) API,很可能在 ee.Initialize() 这一步遇到了障碍。网上的许多教程…...
AI生成专著的秘密武器!实用工具推荐,开启高效写作之旅
研究人员撰写学术专著的困境与AI工具的助力 对很多研究人员来说,撰写学术专著面临的最大挑战,无疑是“有限的精力”与“无尽的需求”之间的矛盾。专著的创作通常需要三到五年,甚至更长的时间,而研究人员日常还得兼顾教学、科研项…...
QMIX算法解析:多智能体强化学习中的值函数分解与单调性约束
1. QMIX算法概述 多智能体强化学习(MARL)是近年来人工智能领域的热门研究方向之一。想象一下星际争霸中的战斗场景:一队机枪兵需要协作击败敌人,每个单位都需要根据局部观察做出决策,同时保持整体战术配合。这正是QMIX…...
多模态标注成本太高?SITS2026自研弱监督方案上线即降本67%,附可复现代码片段(限时48h)
第一章:SITS2026案例:多模态社交媒体分析 2026奇点智能技术大会(https://ml-summit.org) SITS2026(Social Intelligence & Temporal Synthesis 2026)是面向真实世界社交媒体数据的多模态分析基准项目,聚焦于跨平…...
傅里叶变换实战:如何用Python避免频谱分析中的泄露效应?
傅里叶变换实战:如何用Python避免频谱分析中的泄露效应? 频谱分析是数字信号处理中的核心技能,而傅里叶变换则是打开这扇大门的钥匙。但在实际应用中,即使是最有经验的工程师也常常被频谱泄露问题困扰——那些本应清晰的频率峰为何…...
Qwen3本地部署实战:并发请求下的吞吐量优化策略
1. Qwen3本地部署基础准备 第一次在本地部署Qwen3时,我遇到了不少坑。记得当时兴奋地跑完安装命令,结果发现连最基本的API请求都处理不了。经过几次折腾后,终于摸清了门道。本地部署Qwen3其实就像在家里搭建一个小型发电站,需要先…...
华大HC32F460 SPI+DMA实战:如何用两块开发板实现高速数据互传(附完整代码)
华大HC32F460 SPIDMA双板通信实战:从硬件对接到性能调优全解析 在嵌入式系统开发中,设备间的高速数据交换一直是工程师面临的挑战之一。华大半导体的HC32F460系列MCU凭借其强大的SPI接口和DMA控制器,为这类需求提供了优雅的解决方案。本文将带…...
bge-large-zh-v1.5应用场景:政府公文语义归档、教育题库向量化管理
bge-large-zh-v1.5应用场景:政府公文语义归档、教育题库向量化管理 1. 引言:当海量文档遇上智能检索 想象一下,你是一位政府工作人员,每天需要从堆积如山的政策文件、会议纪要、历史公文中,快速找到十年前关于“老旧…...
告别手动画库!用立创商城的3D模型让AD的PCB更真实(2024最新方法)
告别手动画库!用立创商城的3D模型让AD的PCB更真实(2024最新方法) 在硬件设计领域,PCB的3D可视化早已不是锦上添花的功能,而是设计评审、结构匹配和项目展示的刚需。想象一下,当你的电路板在Altium Designer…...
VisionPro图像处理实战:用CogIPOneImageTool搞定高斯模糊与边缘检测(保姆级教程)
VisionPro图像处理实战:用CogIPOneImageTool搞定高斯模糊与边缘检测(保姆级教程) 在工业视觉检测领域,图像预处理的质量往往直接决定整个系统的成败。一张来自生产线的原始图像可能包含各种噪声、光照不均或模糊问题,而…...
