ruoyi-vue-pro 开发指南 ruoyi-vue-pro 开发指南
  • 萌新必读
  • 后端手册
  • 中间件手册
  • 工作流手册
  • 大屏手册
  • 支付手册
  • 会员手册
  • 商城手册
  • ERP 手册
  • CRM 手册
  • MES 手册
  • WMS 手册
  • IM 即时通讯手册
  • AI 大模型手册
  • IoT 物联网手册
  • 公众号手册
  • 系统手册
  • 运维手册
  • 前端手册 Vue 3.x
  • 前端手册 Vben 5.x
  • 前端手册 Vue 2.x
  • 前端手册 Admin Uniapp
  • 工作流手册
  • 大屏手册
  • 支付手册
  • 会员手册
  • 商城手册
  • ERP 手册
  • CRM 手册
  • MES 手册
  • WMS 手册
  • IM 即时通讯手册
  • AI 大模型手册
  • IoT 物联网手册
  • 公众号手册
  • 系统手册
视频教程
  • Vue3 + element-plus (opens new window)
  • Vue3 + vben5(ant-design-vue、element-plus) (opens new window)
  • Vue2 + element-ui (opens new window)
微服务版 (opens new window)
作者博客 (opens new window)
GitHub (opens new window)
  • 萌新必读
  • 后端手册
  • 中间件手册
  • 工作流手册
  • 大屏手册
  • 支付手册
  • 会员手册
  • 商城手册
  • ERP 手册
  • CRM 手册
  • MES 手册
  • WMS 手册
  • IM 即时通讯手册
  • AI 大模型手册
  • IoT 物联网手册
  • 公众号手册
  • 系统手册
  • 运维手册
  • 前端手册 Vue 3.x
  • 前端手册 Vben 5.x
  • 前端手册 Vue 2.x
  • 前端手册 Admin Uniapp
  • 工作流手册
  • 大屏手册
  • 支付手册
  • 会员手册
  • 商城手册
  • ERP 手册
  • CRM 手册
  • MES 手册
  • WMS 手册
  • IM 即时通讯手册
  • AI 大模型手册
  • IoT 物联网手册
  • 公众号手册
  • 系统手册
视频教程
  • Vue3 + element-plus (opens new window)
  • Vue3 + vben5(ant-design-vue、element-plus) (opens new window)
  • Vue2 + element-ui (opens new window)
微服务版 (opens new window)
作者博客 (opens new window)
GitHub (opens new window)
  • 萌新必读

    • 简介
    • 交流群
    • 视频教程
    • 功能列表
    • 快速启动(后端项目)
    • 快速启动(前端项目)
    • 接口文档
    • 技术选型
    • 项目结构
    • 代码热加载
    • 一键改包
    • 迁移模块(适合新项目)
    • 删除功能(以租户为例)
    • 表结构变更(版本升级)
    • 国产信创数据库(DM 达梦、大金、OpenGauss、瀚高)
    • 如何去除 Redis 缓存
    • 内网穿透
    • 面试题、简历模版、简历优化
    • 项目外包
  • 后端手册

    • 新建模块
    • 代码生成【单表】(新增功能)
    • 代码生成【主子表】
    • 代码生成(树表)
    • 代码生成(移动端)
    • 功能权限
    • 数据权限
    • 用户体系
    • 三方登录
    • OAuth 2.0(SSO 单点登录)
    • SaaS 多租户【字段隔离】
    • SaaS 多租户【数据库隔离】
    • WebSocket 实时通信
    • 异常处理(错误码)
    • 参数校验、时间传参
    • 分���实现
    • VO 对象转换、数据翻译
    • 文件存储(上传下载)
    • Excel 导入导出
    • 操作日志、访问日志、异常日志
    • MyBatis 数据库
    • MyBatis 联表&分页查询
    • 多数据源(读写分离)、事务
    • Redis 缓存
    • 本地缓存
    • 异步任务
    • 分布式锁
    • 幂等性(防重复提交)
    • 请求限流(RateLimiter)
    • HTTP 接口签名(防篡改)
    • HTTP 接口加解密
    • 单元测试
    • 验证码
    • 工具类 Util
    • 配置管理
    • 数据库文档
  • 中间件手册

    • 定时任务
    • 消息队列(内存)
    • 消息队列(Redis)
    • 消息队列(RocketMQ)
    • 消息队列(RabbitMQ)
    • 消息队列(Kafka)
    • 限流熔断
  • 工作流手册

    • 工作流演示
    • 功能开启
    • 工作流(达梦适配)
    • 审批接入(流程表单)
    • 审批接入(业务表单)
    • 流程设计器(BPMN)
    • 流程设计器(钉钉、飞书)
    • 选择审批人、发起人自选
    • 会签、或签、依次审批
    • 流程发起、取消、重新发起
    • 审批通过、不通过、驳回
    • 审批加签、减签
    • 审批转办、委派、抄送
    • 执行监听器、任务监听器
    • 流程表达式
    • 流程审批通知
    • 移动端审批
  • 大屏手册

    • 报表设计器
    • 大屏设计器
  • 支付手册

    • 功能开启
    • 支付宝支付接入
    • 微信公众号支付接入
    • 微信小程序支付接入
    • 支付宝、微信退款接入
    • 支付宝转账接入
    • 微信转账接入
    • 钱包充值、支付、退款
    • 模拟支付、退款
    • 移动端支付管理
  • 会员手册

    • 功能开启
    • 微信公众号登录
    • 微信小程序登录
    • 微信小程序订阅消息
    • 微信小程序码
    • 会员用户、标签、分组
    • 会员等级、积分、签到
    • 移动端会员管理
  • 商城手册

    • 商城演示
    • 功能开启
    • 商城装修
    • 在线客服
    • 【商品】商品分类
    • 【商品】商品属性
    • 【商品】商品 SPU 与 SKU
    • 【商品】商品评价
    • 【交易】购物车
    • 【交易】交易订单
    • 【交易】售后退款
    • 【交易】快递发货
    • 【交易】门店自提
    • 【交易】分销返佣
    • 【营销】优惠劵
    • 【营销】积分商城
    • 【营销】拼团活动
    • 【营销】秒杀活动
    • 【营销】砍价活动
    • 【营销】满减送活动
    • 【营销】限时折扣
    • 【营销】内容管理
    • 【统计】会员、商品、交易统计
    • 移动端商城管理
  • ERP手册

    • ERP 演示
    • 功能开启
    • 【产品】产品信息、分类、单位
    • 【库存】产品库存、库存明细
    • 【库存】其它入库、其它出库
    • 【库存】库存调拨、库存盘点
    • 【采购】采购订单、入库、退货
    • 【销售】销售订单、出库、退货
    • 【财务】采购付款、销售收款
    • 移动端 ERP
  • CRM手册

    • CRM 演示
    • 功能开启
    • 【线索】线索管理
    • 【客户】客户管理、公海客户
    • 【商机】商机管理、商机状态
    • 【合同】合同管理、合同提醒
    • 【回款】回款管理、回款计划
    • 【产品】产品管理、产品分类
    • 【通用】数据权限
    • 【通用】跟进记录、待办事项
    • 移动端 CRM
  • AI大模型手册

    • AI 大模型演示
    • 功能开启
    • AI 聊天对话
    • AI 绘画创作
    • AI 知识库(RAG)
    • AI 音乐创作
    • AI 写作��手
    • AI 思维导图
    • AI 工具(function calling)
    • AI 工作流
    • Dify 工作流
    • FastGPT 工作流
    • Coze 智能体
    • 推理模式(thinking)
    • 联网搜索
    • MCP Client 客户端
    • MCP Server 服务端
    • 【模型接入】Claude
    • 【模型接入】OpenAI
    • 【模型接入】通义千问
    • 【模型接入】DeepSeek
    • 【模型接入】字节豆包
    • 【模型接入】腾讯混元
    • 【模型接入】硅基流动
    • 【模型接入】MiniMax
    • 【模型接入】月之暗面
    • 【模型接入】百川智能
    • 【模型接入】文心一言
    • 【模型接入】LLAMA
    • 【模型接入】智谱 GLM
    • 【模型接入】讯飞星火
    • 【模型接入】微软 OpenAI
    • 【模型接入】谷歌 Gemini
    • 【模型接入】Stable Diffusion
    • 【模型接入】Midjourney
    • 【模型接入】Suno
    • 【模型接入】Grok
    • 【模型接入】阶跃星辰
    • 移动端 AI 大模型
  • IoT物联网手册

    • 功能开启
    • 产品管理
    • 设备管理
    • 物模型配置
    • 设备网关与子设备
    • 设备动态注册
    • 设备接入(概述)
    • 设备接入(HTTP 协议)
    • 设备接入(MQTT 协议)
    • 设备接入(EMQX 协议)
    • 设备接入(TCP 协议)
    • 设备接入(UDP 协议)
    • 设备接入(WebSocket 协议)
    • 设备接入(CoAP 协议)
    • 设备���入(Modbus Client 模式)
    • 设备接入(Modbus Server 模式)
    • 设备接入(自定义协议)
    • 场景联动
    • 数据流转
    • 告警配置
    • OTA 固件升级
    • 移动端 IoT 物联网
  • MES手册

    • MES 演示
    • 功能开启
    • 【基础】物料产品、分类、计量单位
    • 【基础】客户管理、供应商管理
    • 【基础】车间设置、工作站设置
    • 【基础】编码规则
    • 【生产】工序设置、工艺流程
    • 【生产】生产工单
    • 【生产】生产排产、工序流转卡
    • 【生产】生产报工
    • 【生产】安灯配置、安灯呼叫
    • 【生产】工作记录
    • 【仓库】仓库与库区库位、条码赋码、SN码
    • 【仓库】批次管理、库存现有量、库存事务
    • 【仓库】到货通知、采购入库、采购退货
    • 【仓库】生产领料、生产退料、物料消耗
    • 【仓库】产品产出、产品入库
    • 【仓库】发货通知、销售出库、销售退货
    • 【仓库】外协发料、外协入库
    • 【仓库】其他入库、其他出库
    • 【仓库】调拨单、装箱管理
    • 【仓库】库存盘点
    • 【质量】检测项设置、常见缺陷
    • 【质量】质检方案
    • 【质量】来料检验(IQC)
    • 【质量】过程检验(IPQC)
    • 【质量】出货检验(OQC)
    • 【质量】退货检验(RQC)
    • 【质量】待检任务、检验结果、缺陷记录
    • 【设备】设备类型、设备台账
    • 【设备】点检保养项目、点检保养方案
    • 【设备】点检记录、保养记录、维修单
    • 【工具】工具类型、工装夹具台账
    • 【排班】班组设置、节假日设置
    • 【排班】排班计划、排班日历
    • 移动端 MES
  • WMS手册

    • WMS 演示
    • 功能开启
    • 【基础】仓库
    • 【基础】商品、SKU、分类、品牌
    • 【基础】往来企业(供应商、客户)
    • 【库存】库存记录、流水、统计
    • 【单据】入库
    • 【单据】出库
    • 【单据】移库
    • 【单据】盘库
    • 【其它】WMS、MES、ERP 对比
    • 移动端 WMS
  • HRM人力资源

    • HRM 演示
    • 功能开启
    • 【组织】工作台、组织架构
    • 【员工】员工管理
      • 1. 员工档案
        • 1.1 主表表结构
        • 1.2 子表结构
        • 1.3 管理后台
      • 2. 入职、转正、异动与离职
        • 2.1 表结构
        • 2.2 状态流转
        • 2.3 管理后台
      • 3. 员工字段设置
        • 3.1 表结构
        • 3.2 管理后台
      • 4. 我的档案
        • 4.1 员工端
    • 【招聘】招聘管理
    • 【考勤】考勤管理
    • 【社保���社保管理
    • 【薪资】计薪设置、薪资档案
    • 【薪资】月度工资、工资条
    • 【绩效】绩效模板、绩效计划
    • 【绩效】绩效考核、绩效档案
    • 移动端 HRM
  • IM即时通讯手册

    • IM 演示
    • 功能开启
    • 【好友】好友关系、好友申请
    • 【群聊】群组、群成员、入群申请
    • 【消息】私聊、群聊、频道消息
    • 【频道】频道、频道素材
    • 【内容】表情、敏感词
    • 【通话】语音通话、视频通话、共享屏幕
    • 【WebSocket】实时推送与离线消息
    • 移动端 IM 即时通讯
  • 公众号手册

    • 功能开启
    • 公众号接入
    • 公众号粉丝
    • 公众号标签
    • 公众号消息
    • 模版消息
    • 自动回复
    • 公众号菜单
    • 公众号素材
    • 公众号图文
    • 公众号统计
    • 移动端公众号管理
  • 系统手册

    • 短信配置
    • 邮件配置
    • 站内信配置
    • Webhook(钉钉、飞书、企微)
    • 数据脱敏、字段权限
    • 敏感词
    • 地区 & IP 库
  • 运维手册

    • 开发环境
    • Linux 部署
    • Docker 部署
    • Jenkins 部署
    • 宝塔部署
    • 1Panel 部署
    • HTTPS 证书
    • 服务监控
    • Tomcat WAR 部署
  • 前端手册 Vue 3.x

    • 开发规范
    • 菜单路由
    • Icon 图标
    • 字典数据
    • 系统组件
    • 通用方法
    • 配置读取
    • CRUD 组件
    • 国际化
    • IDE 调试
    • 代码格式化
  • 前端手册 Vben 5.x

    • 开发规范
    • 菜单路由
    • 图标、主题、国际化
    • 字典数据
    • 系统组件
    • 通用方法
    • 配置读取
    • IDE 调试
    • 代码格式化
  • 前端手册 Vue 2.x

    • 开发规范
    • 菜单路由
    • Icon 图标
    • 字典数据
    • 系统组件
    • 通用方法
    • 配置读取
  • 前端手册 Admin Uniapp

    • 开发规范
    • 菜单路由
    • 图标、主题、国际化
    • 字典数据
    • 系统组件
    • 通用方法
    • IDE 调试
    • 代码格式化
    • 运行发布
  • 更新日志

    • 【v2026-07】
    • 【v2026-06】
    • 【v2026-05】
    • 【v2026-04】
    • 【v2026-03】
    • 【v2026-01】
    • 【v2025-12】
    • 【v2025-11】
    • 【v2025-10】
    • 【v2025-09】
    • 【v2025-08】
    • 【v2-6-1】2025-07-19
    • 【v2-6-0】2025-06-07
    • 【v2.5.0】2025-05-13
    • 【v2.4.2】2025-04-12
    • 【v2.4.1】2025-02-09
    • 【v2.4.0】2024-12-31
    • 【v2.3.0】2024-10-07
    • 【v2.2.0】2024-08-02
    • 【v2.1.0】2024-05-05
    • 【v2.0.1】2024-03-01
    • 【v2.0.0】2024-01-26
  • 开发指南
  • HRM人力资源
芋道源码
2026-08-02
目录

【员工】员工管理

员工管理模块,由 yudao-module-hrm 后端模块的 employee 包实现,前端实现在 @/views/hrm/employee 目录,员工自助页面实现在 @/views/hrm/portal/employee 目录。

员工主档 hrm_employee 是整个 HRM 的业务主键:招聘的候选人转员工后落在这里,考勤、社保、薪资、绩效也都通过 employee_id 关联到这里。员工档案通过可空的 user_id 关联后台账号,因此待入职、已离职或暂未开通账号的员工也可以正常保留档案。

  • 员工档案:主档 + 8 张子档案表,覆盖经历、证书、联系人、合同、材料附件和工资卡。
  • 入转调离:转正、调岗、晋升、降级、转全职、离职、再入职,统一沉淀为异动记录。
  • 员工字段设置:配置新建表单与档案页展示哪些字段、员工能改哪些字段。

本文涉及表如下图所示:

员工管理表关系

# 1. 员工档案

员工档案,由 HrmEmployeeController 提供接口(/hrm/employee);个人经历、联系人、合同、材料附件等子档案,分别由 employee 包下的子 Controller 提供接口。

# 1.1 主表表结构

省略 creator/create_time/updater/update_time/deleted/tenant_id 等通用字段

CREATE TABLE `hrm_employee` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '员工编号',

  `name` varchar(255) NOT NULL COMMENT '员工姓名',
  `job_number` varchar(64) DEFAULT NULL COMMENT '工号',
  `user_id` bigint DEFAULT NULL COMMENT '后台用户编号',

  `mobile` varchar(255) DEFAULT NULL COMMENT '手机号',
  `email` varchar(255) DEFAULT NULL COMMENT '邮箱',
  `country` varchar(64) DEFAULT NULL COMMENT '国家或地区',
  `nation` varchar(64) DEFAULT NULL COMMENT '民族',
  `id_type` tinyint DEFAULT NULL COMMENT '证件类型',
  `id_number` varchar(255) DEFAULT NULL COMMENT '证件号码',
  `sex` tinyint DEFAULT NULL COMMENT '性别',
  `native_place` varchar(128) DEFAULT NULL COMMENT '籍贯',
  `birthday` datetime DEFAULT NULL COMMENT '出生时间',
  `age` int DEFAULT NULL COMMENT '年龄快照',
  `address` varchar(255) DEFAULT NULL COMMENT '户籍地址',
  `highest_education` tinyint DEFAULT NULL COMMENT '最高学历',

  `dept_id` bigint DEFAULT NULL COMMENT '部门编号',
  `leader_employee_id` bigint DEFAULT NULL COMMENT '直属上级员工编号',

  `entry_status` tinyint DEFAULT NULL COMMENT '入职状态',
  `status` tinyint DEFAULT NULL COMMENT '员工状态',
  `type` tinyint DEFAULT NULL COMMENT '聘用形式',

  `entry_time` datetime DEFAULT NULL COMMENT '入职时间',
  `probation` int DEFAULT NULL COMMENT '试用期(月)',
  `regular_time` datetime DEFAULT NULL COMMENT '转正时间',
  `leave_time` datetime DEFAULT NULL COMMENT '离职时间',

  `post_name` varchar(255) DEFAULT NULL COMMENT '职位名称',
  `post_level` varchar(255) DEFAULT NULL COMMENT '岗位职级',
  `work_city` varchar(64) DEFAULT NULL COMMENT '工作城市',
  `work_address` varchar(255) DEFAULT NULL COMMENT '工作地点',
  `work_detail_address` varchar(255) DEFAULT NULL COMMENT '工作详细地址',

  `channel_id` bigint DEFAULT NULL COMMENT '招聘渠道编号',
  `candidate_id` bigint DEFAULT NULL COMMENT '招聘候选人编号',

  `company_age_start_time` datetime DEFAULT NULL COMMENT '司龄起算时间',
  `company_age` int DEFAULT NULL COMMENT '司龄快照(年)',
  `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB COMMENT='HRM 员工主档';

① user_id 逻辑关联 system_users 表的 id 字段,允许为空。同一后台账号只能绑定一份员工档案;绑定后,员工才能进入 HRM 员工端并接收站内通知。

② dept_id 关联 system_dept 表,leader_employee_id 自关联 hrm_employee 表。员工职位直接保存在 post_name 字段,它与招聘职位(hrm_recruit_post)、System 岗位是不同的业务对象。

③ 枚举 entry_status 入职状态(HrmEmployeeEntryStatusEnum,字典 hrm_employee_entry_status:1 = 在职,2 = 待入职,3 = 待离职,4 = 离职),表达员工所处的在职生命周期。详见 §2.2 状态流转。

④ 枚举 type 聘用形式(HrmEmployeeTypeEnum,字典 hrm_employee_type)和 status 员工状态(HrmEmployeeStatusEnum,字典 hrm_employee_status)是大类与明细的关系,status 已经隐含了所属 type:

type 说明 对应的 status
1 正式 1 正式、2 试用
2 非正式 3 实习、4 兼职、5 劳务、6 顾问、7 返聘、8 外包

其中只有实习、兼职可以「转为全职」(CONVERTIBLE_TO_FULL_TIME_STATUSES);社保、薪资等��块要求员工为正式或试用状态。

⑤ candidate_id 和 channel_id 记录招聘来源,分别关联 hrm_recruit_candidate、hrm_recruit_channel 表。候选人转员工后,可由员工档案继续追溯应聘职位和招聘渠道,详见 《【招聘】招聘管理》。

⑥ age 年龄、company_age 司龄是业务快照:实际展示时按 birthday、company_age_start_time 的自然日期计算,快照字段用于列表筛选与统计。


该表包含 8 个子表,均通过 employee_id 关联主表,在员工详情页以页签形式维护:

表 关系 主要内容
hrm_employee_education_experience 1:N 学历、院校、专业、入学与毕业时间、教学方式
hrm_employee_work_experience 1:N 工作单位、职位、起止时间、离职原因、证明人
hrm_employee_training_experience 1:N 培训课程、机构、时长、成绩和证书
hrm_employee_certificate 1:N 证书名称、级别、编号、有效期和发证机构
hrm_employee_contact 1:N 联系人、关系、电话、单位、职务和地址
hrm_employee_contract 1:N 合同编号、类型、期限、签约公司、提醒和附件
hrm_employee_file 1:N 身份证、学历、简历、体检、合同和离职材料
hrm_employee_salary_card 1:0..1 卡号、开户地区、银行和支行

这些表保存员工资料本身;工资、社保的业务数据分别在薪资和社保模块维护。

# 1.2 子表结构

hrm_employee_education_experience 表结构
CREATE TABLE `hrm_employee_education_experience` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '教育经历编号',

  `employee_id` bigint NOT NULL COMMENT '员工编号',

  `education` tinyint DEFAULT NULL COMMENT '学历',
  `graduate_school` varchar(255) DEFAULT NULL COMMENT '毕业院校',
  `major` varchar(255) DEFAULT NULL COMMENT '专业',
  `admission_time` datetime DEFAULT NULL COMMENT '入学时间',
  `graduation_time` datetime DEFAULT NULL COMMENT '毕业时间',
  `teaching_methods` tinyint DEFAULT NULL COMMENT '教学方式',
  `first_degree` bit DEFAULT NULL COMMENT '是否第一学历',
  `sort` int DEFAULT NULL COMMENT '显示顺序',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB COMMENT='HRM 员工教育经历';

① employee_id 关联 hrm_employee 表的 id 字段,同一员工可以维护多条教育经历,详情页按 sort 排序。

② education 学历(HrmEmployeeEducationEnum,字典 hrm_employee_education)、teaching_methods 教学方式(HrmEmployeeTeachingMethodEnum)。

③ first_degree 标记第一学历,不代表最高学历,员工主档的 highest_education 仍单独维护。

hrm_employee_work_experience 表结构
CREATE TABLE `hrm_employee_work_experience` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '工作经历编号',

  `employee_id` bigint NOT NULL COMMENT '员工编号',

  `work_unit` varchar(255) DEFAULT NULL COMMENT '工作单位',
  `post_name` varchar(255) DEFAULT NULL COMMENT '职位名称',
  `start_time` datetime DEFAULT NULL COMMENT '开始时间',
  `end_time` datetime DEFAULT NULL COMMENT '结束时间',
  `reason` varchar(1024) DEFAULT NULL COMMENT '离职原因',
  `witness_name` varchar(255) DEFAULT NULL COMMENT '证明人姓名',
  `witness_phone` varchar(32) DEFAULT NULL COMMENT '证明人电话',
  `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  `sort` int DEFAULT NULL COMMENT '显示顺序',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB COMMENT='HRM 员工工作经历';

employee_id 关联员工主档。工作单位、岗位、任职区间和离职原因都属于入职前的档案资料,不会反向修改员工当前的部门或职位。

hrm_employee_training_experience 表结构
CREATE TABLE `hrm_employee_training_experience` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '培训经历编号',

  `employee_id` bigint NOT NULL COMMENT '员工编号',

  `course` varchar(128) DEFAULT NULL COMMENT '培训课程',
  `organization_name` varchar(128) DEFAULT NULL COMMENT '培训机构',
  `start_time` datetime DEFAULT NULL COMMENT '开始时间',
  `end_time` datetime DEFAULT NULL COMMENT '结束时间',
  `duration` varchar(64) DEFAULT NULL COMMENT '培训时长',
  `result` varchar(64) DEFAULT NULL COMMENT '培训结果',
  `certificate_name` varchar(128) DEFAULT NULL COMMENT '取得证书',
  `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  `sort` int DEFAULT NULL COMMENT '显示顺序',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB COMMENT='HRM 员工培训经历';

课程、机构、培训时长、结果和取得证书都是文字快照,不关联绩效,也不会自动生成 hrm_employee_certificate 证书记录。

hrm_employee_certificate 表结构
CREATE TABLE `hrm_employee_certificate` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '证书编号',

  `employee_id` bigint NOT NULL COMMENT '员工编号',

  `name` varchar(255) DEFAULT NULL COMMENT '证书名称',
  `level` varchar(255) DEFAULT NULL COMMENT '证书级别',
  `no` varchar(255) DEFAULT NULL COMMENT '证书编号',
  `start_time` datetime DEFAULT NULL COMMENT '有效期开始时间',
  `end_time` datetime DEFAULT NULL COMMENT '有效期结束时间',
  `issuing_authority` varchar(255) DEFAULT NULL COMMENT '发证机构',
  `issuing_time` datetime DEFAULT NULL COMMENT '发证时间',
  `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  `sort` int DEFAULT NULL COMMENT '显示顺序',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB COMMENT='HRM 员工证书';

证书业务编号保存在 no 字段,数据库不建立唯一约束,HR 可按实际情况维护多条同名或同编号记录。

hrm_employee_contact 表结构
CREATE TABLE `hrm_employee_contact` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '联系人编号',

  `employee_id` bigint NOT NULL COMMENT '员工编号',

  `name` varchar(64) DEFAULT NULL COMMENT '联系人姓名',
  `relation` varchar(64) DEFAULT NULL COMMENT '与员工关系',
  `phone` varchar(40) DEFAULT NULL COMMENT '联系电话',
  `work_unit` varchar(128) DEFAULT NULL COMMENT '工作单位',
  `post_name` varchar(128) DEFAULT NULL COMMENT '职位名称',
  `address` varchar(255) DEFAULT NULL COMMENT '联系地址',
  `sort` int DEFAULT NULL COMMENT '显示顺序',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB COMMENT='HRM 员工联系人';

用于保存家属、紧急联系人等档案资料。联系人不会创建后台账号,也不会参与员工的直属汇报关系。

hrm_employee_contract 表结构
CREATE TABLE `hrm_employee_contract` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '合同编号',

  `employee_id` bigint NOT NULL COMMENT '员工编号',

  `no` varchar(128) DEFAULT NULL COMMENT '合同业务编号',
  `type` tinyint DEFAULT NULL COMMENT '合同类型',
  `status` tinyint DEFAULT NULL COMMENT '合同状态',
  `start_time` datetime DEFAULT NULL COMMENT '合同开始时间',
  `end_time` datetime DEFAULT NULL COMMENT '合同结束时间',
  `term` int DEFAULT NULL COMMENT '合同期限(月)',
  `sign_company` varchar(255) DEFAULT NULL COMMENT '签约公司',
  `sign_time` datetime DEFAULT NULL COMMENT '签订时间',
  `expire_remind` bit DEFAULT NULL COMMENT '是否到期提醒',
  `file_urls` varchar(2048) DEFAULT NULL COMMENT '合同附件地址数组',
  `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  `sort` int DEFAULT NULL COMMENT '显示顺序',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB COMMENT='HRM 员工合同';

① 枚举 type 合同类型(HrmEmployeeContractTypeEnum):1 固定期限劳动合同、2 无固定期限劳动合同、3 以完成一定工作任务为期限的劳动合同、4 实习协议、5 劳务合同、6 返聘协议、7 劳务派遣合同、8 借调合同、9 其他。

② 枚举 status 合同状态(HrmEmployeeContractStatusEnum):0 未执行、1 执行中、2 已到期。合同期限和状态不会自动替代员工主档的入转调离状态。

③ expire_remind 表示是否参与到期提醒,命中后展示在 HR 工作台的「合同到��」待办中。

④ file_urls 只保存平台文件地址,文件上传复用 Infra 文件能力。

hrm_employee_file 表结构
CREATE TABLE `hrm_employee_file` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '材料编号',

  `employee_id` bigint NOT NULL COMMENT '员工编号',

  `type` tinyint NOT NULL COMMENT '材料类型',
  `url` varchar(512) NOT NULL COMMENT '文件地址',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB COMMENT='HRM 员工材料附件';

枚举 type 材料类型(HrmEmployeeFileTypeEnum)按 3 组划分:11~19 基本资料(身份证、学历证明、证件照、工资银行卡、社保卡等)、21~27 档案资料(劳动合同、入职简历、登记表、体检单、转正申请表等)、31~33 离职资料(离职审批、离职证明等)。

详情页按员工整组读取和保存材料列表,不建立独立的文件内容表。

hrm_employee_salary_card 表结构
CREATE TABLE `hrm_employee_salary_card` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '工资卡编号',

  `employee_id` bigint NOT NULL COMMENT '员工编号',

  `bank_card_number` varchar(64) DEFAULT NULL COMMENT '银行卡号',
  `bank_area_id` int DEFAULT NULL COMMENT '开户地区编号',
  `bank_name` varchar(64) DEFAULT NULL COMMENT '银行名称',
  `bank_branch_name` varchar(128) DEFAULT NULL COMMENT '开户支行',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB COMMENT='HRM 员工工资卡';

工资卡与员工是 1:0..1,通过 employee_id 查询并覆盖保存当前记录;bank_area_id 使用平台地区编号。删除工资卡只删除收款资料,不删除员工薪资档案和历史工资。

# 1.3 管理后台

对应 [HRM 人力资源 -> 员工管理 -> 员工档案] 菜单,对应 yudao-ui-admin-vue3 项目的 @/views/hrm/employee 目录。

# 列表

支持按姓名、手机号、工号、部门、岗位、入职时间、转正时间、招聘渠道和聘用形式筛选。列表顶部按正式、试用、实习、兼职、劳务、顾问、返聘、外包、在职、全职、待入职、待离职、已离职展示页签及数量(页签口径见 HrmEmployeeStatusTabEnum)。

点击员工姓名进入详情,行内【编辑】打开主档表单,【更多】按员工当前状态展示可执行的人事动作。

管理后台 - 员工列表

# 新增

通过弹窗 EmployeeForm.vue 完成。新增时可选择「在职」或「待入职」,表单根据员工字段设置加载对应字段(详见 §3 员工字段设置)。后端会校验后台账号、部门、直属上级、招聘渠道和候选人等关联是否存在。

管理后台 - 新增员工

另外可点击【从后台用户创建】,由 EmployeeCreateFromUserForm.vue 先排除已绑定的账号,再批量建档。系统会复制用户昵称、邮箱和性别,HR 仍需补充部门、岗位、聘用形式和入职信息。

管理后台 - 从后台用户创建

# 修改

列表或详情页点击【编辑】,继续使用 EmployeeForm.vue。

⚠️ 注意:修改姓名、联系方式、部门、直属上级和任职资料不会自动创建异动记录。需要保留人事动作历史时,应使用下文「入职、转正、异动与离职」中的专用操作。

# 导入与导出

点击【导入】,由 EmployeeImportForm.vue 下载模板并上传 Excel。导入按工号判重,支持「跳过重复」「覆盖重复」「重复即失败」三种策略(HrmEmployeeImportDuplicateStrategyEnum),结果分别返回新增、覆盖、跳过和失败的工号。

点击【导出】,按当前查询条件导出员工档案,不受当前分页限制。

# 员工详情

点击员工姓名进入 @/views/hrm/employee/detail/index.vue。页面顶部由 EmployeePostInfo.vue、EmployeeBasicInfo.vue 展示任职和基本信息,下方以页签维护各类子档案:

管理后台 - 员工详情

★ 教育 / 工作 / 培训经历、证书、联系人(员工详情「基本信息」Tab):由对应子表存储,均支持新增、修改、删除,分别由 HrmEmployeeEducationExperienceController、HrmEmployeeWorkExperienceController、HrmEmployeeTrainingExperienceController、HrmEmployeeCertificateController、HrmEmployeeContactController 提供接口。

管理后台 - 员工详情 - 教育经历

★ 员工合同(员工详情「员工合同」Tab):由 hrm_employee_contract 表存储,支持新增、修改、删除,由 HrmEmployeeContractController 提供接口。

管理后台 - 员工详情 - 合同

★ 材料附件(员工详情 Tab):由 EmployeeMaterialFiles.vue 展示,HrmEmployeeFileController 提供整组保存接口,不逐条增删。

管理后台 - 员工详情 - 材料附件

★ 工资卡(员工详情 Tab):由 EmployeeSalaryCardInfo.vue、EmployeeSalaryCardForm.vue 维护,HrmEmployeeSalaryCardController 提供保存与删除接口。

管理后台 - 员工详情 - 工资卡

★ 工资社保(员工详情 Tab):展示员工当前薪资档案与参保资料,详见 《【薪资】计薪设置、薪资档案》 和 《【社保】社保管理》。

管理后台 - 员工详情 - 工资社保

★ 异动记录(员工详情 Tab):由 EmployeeChangeRecordList.vue 只读展示 hrm_employee_change_record,不能从详情页直接改写历史动作。

管理后台 - 员工详情 - 异动记录

# 批量操作

勾选员工后,【批量操作】支持设置参保方案、发送档案填写通知,以及批量删除。其中设置参保方案只允许正式或试用且未离职的员工。

# 删除

单条删除与批量删除均为逻辑删除,只删除员工主档,不删除其后台账号,也不会级联清理已产生的招聘、考勤、薪资、社保和绩效历史。因此执行前应先确认历史数据仍可正确展示,批量删除弹窗也会明确提示「后台账号及历史业务记录将保留」。

# 2. 入职、转正、异动与离职

入转调离动作由 HrmEmployeeController 提供接口。每次转正、调岗、晋升、降级、转全职和再入职都会写入 hrm_employee_change_record 异动记录;离职计划则保存在 hrm_employee_quit_info。

# 2.1 表结构

CREATE TABLE `hrm_employee_change_record` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '异动记录编号',

  `employee_id` bigint NOT NULL COMMENT '员工编号',

  `type` tinyint DEFAULT NULL COMMENT '异动类型',
  `reason` tinyint DEFAULT NULL COMMENT '异动原因',

  `old_dept_id` bigint DEFAULT NULL COMMENT '原部门编号',
  `new_dept_id` bigint DEFAULT NULL COMMENT '新部门编号',
  `old_post_name` varchar(255) DEFAULT NULL COMMENT '原岗位',
  `new_post_name` varchar(255) DEFAULT NULL COMMENT '新岗位',
  `old_post_level` varchar(255) DEFAULT NULL COMMENT '原职级',
  `new_post_level` varchar(255) DEFAULT NULL COMMENT '新职级',
  `old_work_address` varchar(255) DEFAULT NULL COMMENT '原工作地点',
  `new_work_address` varchar(255) DEFAULT NULL COMMENT '新工作地点',
  `old_leader_employee_id` bigint DEFAULT NULL COMMENT '原直属上级',
  `new_leader_employee_id` bigint DEFAULT NULL COMMENT '新直属上级',

  `probation` int DEFAULT NULL COMMENT '试用期(月)',
  `effect_time` datetime DEFAULT NULL COMMENT '计划生效时间',
  `applied_time` datetime DEFAULT NULL COMMENT '实际生效时间',
  `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB COMMENT='HRM 员工异动记录';

① 枚举 type 异动类型(HrmEmployeeChangeTypeEnum):

值 枚举 说明 触发操作
4 REGULAR 转正 regularEmployee
5 TRANSFER 调岗 transferEmployee
6 PROMOTION 晋升 promoteEmployee
7 DEMOTION 降级 demoteEmployee
8 FULL_TIME 转为全职 convertEmployeeToFullTime
9 REHIRE 再入职 rehireEmployee(仅立即生效,不支持预约)

② 枚举 reason 异动原因(HrmEmployeeChangeReasonEnum):1 组织架构调整、2 个人申请、3 工作安排、4 违规违纪、5 绩效不达标、6 个人身体原因、7 不适应当前岗位。其中调岗、晋升只能选 1~3(TRANSFER_AND_PROMOTION_REASONS),降级只能选 4~7(DEMOTION_REASONS)。

③ effect_time 是计划生效时间,applied_time 是实际生效时间。预约生效的记录先落库、applied_time 为空,等待 HrmEmployeeChangeJob 到期执行后回填。

④ old_* / new_* 成对保存变更前后的部门、岗位、职级、工作地点和直属上级,用于详情页展示变动轨迹。


该表配套一张离职信息表:

  • hrm_employee_quit_info(员工离职信息):保存离职计划与结算信息,由 HrmEmployeeQuitInfoController 在员工详情页只读回显。
hrm_employee_quit_info 表结构
CREATE TABLE `hrm_employee_quit_info` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '离职信息编号',

  `employee_id` bigint NOT NULL COMMENT '员工编号',

  `plan_quit_time` datetime DEFAULT NULL COMMENT '计划离职时间',
  `apply_quit_time` datetime DEFAULT NULL COMMENT '申请离职时间',
  `salary_settlement_time` datetime DEFAULT NULL COMMENT '薪资结算时间',

  `type` tinyint DEFAULT NULL COMMENT '离职类型',
  `reason` tinyint DEFAULT NULL COMMENT '离职原因',
  `old_employee_status` tinyint DEFAULT NULL COMMENT '离职前员工状态',
  `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB COMMENT='HRM 员工离职信息';

① 枚举 type 离职类型(HrmEmployeeQuitTypeEnum):1 主动离职、2 被动离职、3 退休。

② 枚举 reason 离职原因(HrmEmployeeQuitReasonEnum)与离职类型联动:1~10 属于主动离职(家庭原因、身体原因、薪资原因、交通不便、工作压力、管理问题、无晋升机会、职业规划、合同到期放弃续签、其他个人原因),11~16 属于被动离职(试用期内辞退、违反公司条例、组织调整 / 裁员、绩效不达标辞退、合同到期不续签、其他原因)。

③ old_employee_status 记录办理离职前的员工状态,供「取消离职」时恢复使用。

# 2.2 状态流转

员工的入转调离生命周期由 HrmEmployeeServiceImpl 控制,entry_status 表达阶段,status 表达身份。状态枚举 HrmEmployeeEntryStatusEnum:

状态值 枚举 说明 可执行操作
1 ACTIVE 在职 转正、调岗、晋升、降级、转全职、离职
2 PENDING_ENTRY 待入职 确认入职
3 PENDING_LEAVE 待离职 取消离职
4 LEFT 离职 办理再入职、修改离职信息

状态流转说明

候选人转员工 ──→ 待入职(2) ──确认入职──→ 在职(1) ──离职──→ 离职(4) ──再入职──→ 在职(1)
                                        │              ↑
                                        └──预约离职──→ 待离职(3)
                                                       │
                                                       └──取消离职──→ 在职(1)
  • 确认入职(confirmEmployeeEntry):待入职 → 在职。补全实际入职资料;如果员工来自招聘候选人,候选人同步���新为已入职。
  • 转正(regularEmployee):试用 → 正式。立即生效时同步更新员工状态和转正时间;预约生效时先写入待执行的异动记录,之后由 HrmEmployeeChangeJob 到期执行。
  • 调岗 / 晋升 / 降级(transferEmployee / promoteEmployee / demoteEmployee):调整部门、职位、职级、工作地点和直属上级,均支持立即或预约生效。
  • 转为全职(convertEmployeeToFullTime):实习、兼职 → 正式。把聘用形式转为正式,并保存转全职后的岗位、职级和任职信息。
  • 离职(quitEmployee):立即离职直接更新员工主档;未来离职先把员工置为待离职,到 plan_quit_time 后由 HrmEmployeeChangeJob 更新为离职。
  • 取消离职(cancelEmployeeQuit):待离职 → 在职。按 old_employee_status 恢复办理离职前的员工状态。
  • 再入职(rehireEmployee):离职 → 在职。沿用原员工编号,并更新新的部门、岗位、直属上级和入职时间。

# 2.3 管理后台

入转调离入口同时存在于员工列表的【更多】菜单和员工详情页,相关表单都位于 @/views/hrm/employee 目录。页面根据 entry_status 和 status 只展示当前员工可执行的动作。

# 确认入职与再入职

待入职员工点击【确认入职】,由 EmployeeForm.vue 补全实际入职资料;已离职员工点击【办理再入职】,同一表单切换到再入职模式。

管理后台 - 员工确认入职

# 转正

试用员工点击【转正】,由 EmployeeRegularForm.vue 填写转正时间与原因。选择未来日期时为预约转正,列表中会提示待生效的异动。

管理后台 - 员工转正

# 调岗、晋升与降级

【调整部门 / 岗位】由 EmployeeTransferForm.vue 处理,【晋升】、【降级】分别由 EmployeePromoteForm.vue、EmployeeDemoteForm.vue 处理。三者表单结构相似,区别在于可选的异动原因不同。

管理后台 - 员工调岗

# 转为全职

实习或兼职员工点击【转为全职】,由 EmployeeFullTimeForm.vue 填写原因、生效时间、试用期、部门、岗位、职级、直属上级、工作地点和备注。其它员工状态不会显示该入口。

管理后台 - 员工转为全职

# 离职、取消离职与修改离职信息

在职员工点击【办理离职】,由 EmployeeQuitForm.vue 填写计划离职时间、离职类型、原因和薪资结算时间。

管理后台 - 员工离职

待离职员工可填写原因后【取消离职】,恢复办理离职前的员工状态;已离职员工可以再次打开离职表单修改离职类型、原因和结算信息,但不会因此恢复在职。

# 3. 员工字段设置

员工字段设置,由 HrmEmployeeFieldConfigController 提供接口(/hrm/employee/config),配置统一保存在通用的 hrm_config 表中。

# 3.1 表结构

CREATE TABLE `hrm_config` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '编号',

  `type` tinyint NOT NULL COMMENT '配置类型',
  `value` varchar(255) NOT NULL COMMENT '配置值',
  `sort` int DEFAULT NULL COMMENT '显示顺序',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB COMMENT='HRM 业务配置';

① 枚举 type 配置类型(HrmConfigTypeEnum)。该表被员工与招聘两个模块共用:

值 枚举 说明 维护菜单
1 RECRUIT_ELIMINATE 招聘淘汰原因 招聘管理 -> 招聘设置 -> 淘汰原因
2 EMPLOYEE_CREATE_ACTIVE_FIELD 新建在职员工字段 员工管理 -> 员工设置
3 EMPLOYEE_CREATE_PENDING_FIELD 新建待入职员工字段 员工管理 -> 员工设置
4 EMPLOYEE_ARCHIVE_FIELD 员工档案字段 员工管理 -> 员工设置

② 可配置的字段范围由 HrmEmployeeCreateFieldEnum(新建表单)和 HrmEmployeeArchiveFieldEnum(档案页)定义。两个枚举都带有「是否锁定」标记:姓名、入职状态、聘用形式、员工状态、入职时间等系统必要字段始终保留,不能通过页面隐藏或关闭。

# 3.2 管理后台

对应 [HRM 人力资源 -> 员工管理 -> 员工设置] 菜单,对应 yudao-ui-admin-vue3 项目的 @/views/hrm/employee/config 目录。

# 配置新建字段

由 EmployeeCreateFieldConfig.vue 分别配置「在职」和「待入职」两套新建表单的字段与顺序,对应 hrm_config 的 type=2、type=3。

# 配置档案字段

由 EmployeeArchiveFieldConfig.vue 配置员工档案页字段的显示与员工可编辑权限,对应 hrm_config 的 type=4。这里的「可编辑」控制的是员工端「我的档案」能否修改该字段,管理端不受影响。

两个页签保存的都是整组字段顺序与开关,不提供逐条删除配置。

管理后台 - 员工设置

# 4. 我的档案

员工端「我的档案」,由 HrmPortalEmployeeController 提供本人主档接口(/hrm/portal/employee),各类经历由同级 Portal Controller 提供只读接口。

# 4.1 员工端

对应 [HRM 人力资源 -> HRM 员工端 -> 我的档案] 菜单,对应 yudao-ui-admin-vue3 项目的 @/views/hrm/portal/employee 目录。

# 查看档案

页面根据当前登录账号绑定的 hrm_employee.user_id 定位本人,展示基本信息、岗位信息,以及教育、工作、培训、证书、联系人等资料。这些子档案在员工端只读。

员工端 - 我的档案

# 修改本人资料

点击【编辑】打开员工端 EmployeeForm.vue。表单先读取 HrmPortalEmployeeFieldConfigController 提供的可编辑范围(即员工设置中「档案字段」开放的字段),再保存主档。

员工不能借此修改部门、岗位、直属上级、员工状态或其他人的档案。

员工端 - 编辑我的档案

【组织】工作台、组织架构
【招聘】招聘管理

← 【组织】工作台、组织架构 【招聘】招聘管理→

Theme by Vdoing | Copyright © 2019-2026 芋道源码 | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式
×