【员工】员工管理
员工管理由 yudao-module-hrm 后端模块的 employee 包实现,前端管理页面位于 @/views/hrm/employee,员工自助页面位于 @/views/hrm/portal/employee。
模块以独立的 hrm_employee 员工主档为核心,覆盖员工建档、资料维护、合同与附件、入职、转正、异动、离职和员工自助档案。员工档案通过可空的 user_id 关联后台账号,因此待入职、离职或暂未开通账号的员工也可以正常保留档案。
本文涉及表如下图所示:
# 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 '手机号',
`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 '性别',
`email` varchar(255) 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 '招聘渠道编号',
`company_age_start_time` datetime DEFAULT NULL COMMENT '司龄起算时间',
`company_age` int DEFAULT NULL COMMENT '司龄快照(年)',
`candidate_id` bigint 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.id,leader_employee_id 自关联 hrm_employee.id。员工职位直接保存在 post_name,与招聘职位、System 岗位是不同的业务对象。
③ entry_status 表示在职生命周期,type 表示正式或非正式聘用形式,status 表示正式、试用、实习、兼职等具体身份:
| 字段 | 取值 | 说明 |
|---|---|---|
entry_status | 1 在职、2 待入职、3 待离职、4 离职 | 员工当前所处的入职阶段 |
type | 1 正式、2 非正式 | 聘用形式大类 |
status | 1 正式、2 试用、3 实习、4 兼职、5 劳务、6 顾问、7 返聘、8 外包 | 具体员工身份 |
④ candidate_id 和 channel_id 记录招聘来源。候选人转员工后,可由员工档案继续追溯应聘职位和招聘渠道。
⑤ 生日和司龄根据 birthday、company_age_start_time 的自然日期计算;age、company_age 保存业务快照。
# 1.2 子档案
员工详情以 hrm_employee.id 为聚合根,子档案统一通过 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 | 卡号、开户地区、银行和支行 |
这些表保存员工资料本身;工资、社保的业务数据分别在薪资和社保模块维护。
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 排序。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 逻辑关联员工主档,工作单位、岗位、任职区间和离职原因都属于档案资料,不会反向修改员工当前的部门或职位。列表按 sort 展示。
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 员工培训经历';
每条培训经历通过 employee_id 归属员工,课程、机构、培训时长、结果和取得证书都是文字快照,不关联绩效或独立证书记录;同一员工可维护多条并按 sort 排序。
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 员工证书';
employee_id 逻辑关联员工主档;证书业务编号保存在 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 员工联系人';
联系人通过 employee_id 归属于员工,用于保存家属、紧急联系人等档案资料;联系方式不会创建后台账号,也不会参与员工直属汇报关系。
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 '合同类型',
`start_time` datetime DEFAULT NULL COMMENT '合同开始时间',
`end_time` datetime DEFAULT NULL COMMENT '合同结束时间',
`term` int DEFAULT NULL COMMENT '合同期限(月)',
`status` tinyint DEFAULT NULL COMMENT '合同状态',
`sign_company` varchar(255) DEFAULT NULL COMMENT '签约公司',
`sign_time` datetime DEFAULT NULL COMMENT '签订时间',
`remark` varchar(500) DEFAULT NULL COMMENT '备注',
`expire_remind` bit DEFAULT NULL COMMENT '是否到期提醒',
`sort` int DEFAULT NULL COMMENT '显示顺序',
`file_urls` varchar(2048) DEFAULT NULL COMMENT '合同附件地址数组',
PRIMARY KEY (`id`)
) ENGINE=InnoDB COMMENT='HRM 员工合同';
合同与员工是 1:N;file_urls 只保存平台文件地址,文件上传仍复用 Infra 文件能力。expire_remind 表示是否参与到期提醒,合同期限和状态不会自动替代员工主档的入转调离状态。
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 区分身份证、学历、简历、体检、合同和离职材料等类型,url 保存上传后的文件地址。详情页按员工整组读取和保存材料列表,不建立独立的文件内容表。
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 使用平台地区编号。删除工资卡只删除收款资料,不删除员工薪资档案和历史工资。
子档案保存
经历、证书、联系人和合同按各自的 sort 字段排序;合同的 file_urls 与材料附件的 url 只保存文件地址,文件上传复用平台文件能力。
# 1.3 管理后台
对应 [HRM 人力资源 -> 员工管理 -> 员工档案] 菜单,列表根组件为 @/views/hrm/employee/index.vue。员工主档由 HrmEmployeeController(/hrm/employee)提供接口,各类子档案由 employee 包下的子 Controller 提供接口。
# 列表
列表调用 GET /hrm/employee/page,支持按姓名、手机号、工号、部门、岗位、入职时间、转正时间、招聘渠道和聘用形式筛选;正式、试用、实习、待入职、待离职、已离职等页签数量由 GET /hrm/employee/status-count 返回。点击员工姓名进入详情,行内【编辑】打开主档表单,【更多】根据员工当前状态展示可执行的人事动作。

# 新增员工
点击【新增】,由 @/views/hrm/employee/EmployeeForm.vue 调用 HrmEmployeeController 的 POST /hrm/employee/create。新增时可选择“在职”或“待入职”,表单根据员工字段设置加载对应字段;后端同时校验后台账号、部门、直属上级、招聘渠道和候选人等关联,生命周期初始状态不由前端任意填写。

点击【从后台用户创建】,由 EmployeeCreateFromUserForm.vue 先通过 GET /hrm/employee/bound-user-id-list 排除已绑定账号,再调用 POST /hrm/employee/create-list 批量建档。系统会复制用户昵称、邮箱和性别,HR 仍需补充部门、岗位、聘用形式和入职信息。
# 修改员工
列表或详情页点击【编辑】,继续使用 EmployeeForm.vue,先通过 GET /hrm/employee/get 回显,再调用 PUT /hrm/employee/update 保存主档。修改姓名、联系方式、部门、直属上级和任职资料不会自动创建一条异动记录;需要保留人事动作历史时,应使用下文的转正、调岗、晋升等专用操作。
# 导入与导出
点击【导入】,EmployeeImportForm.vue 通过 GET /hrm/employee/get-import-template 下载模板,并向 POST /hrm/employee/import 上传 Excel。导入支持“跳过重复”“覆盖重复”“重复即失败”三种策略,结果分别返回新增、覆盖、跳过和失败的工号。
点击【导出】,页面按当前查询条件调用 GET /hrm/employee/export-excel,导出员工档案。导出不会受当前分页限制。
# 员工详情与子档案
点击员工姓名进入 @/views/hrm/employee/detail/index.vue。详情页通过 HrmEmployeeController 的 GET /hrm/employee/get 加载主档,使用 EmployeePostInfo.vue、EmployeeBasicInfo.vue 展示任职和基本信息,并提供合同、教育/工作/培训经历、证书、联系人、工资社保、材料附件、异动记录和操作日志等页签。

子档案的实际操作如下:
| 子档案 | Vue 组件 | Controller 与主要接口 | 操作 |
|---|---|---|---|
| 教育经历 | EmployeeEducationExperienceList.vue、EmployeeEducationExperienceForm.vue | HrmEmployeeEducationExperienceController(/hrm/employee/education-experience):GET /hrm/employee/education-experience/list、POST /hrm/employee/education-experience/create、PUT /hrm/employee/education-experience/update、DELETE /hrm/employee/education-experience/delete | 新增、修改、删除 |
| 工作经历 | EmployeeWorkExperienceList.vue、EmployeeWorkExperienceForm.vue | HrmEmployeeWorkExperienceController(/hrm/employee/work-experience):GET /hrm/employee/work-experience/list、POST /hrm/employee/work-experience/create、PUT /hrm/employee/work-experience/update、DELETE /hrm/employee/work-experience/delete | 新增、修改、删除 |
| 培训经历 | EmployeeTrainingExperienceList.vue、EmployeeTrainingExperienceForm.vue | HrmEmployeeTrainingExperienceController(/hrm/employee/training-experience):GET /hrm/employee/training-experience/list、POST /hrm/employee/training-experience/create、PUT /hrm/employee/training-experience/update、DELETE /hrm/employee/training-experience/delete | 新增、修改、删除 |
| 证书 | EmployeeCertificateList.vue、EmployeeCertificateForm.vue | HrmEmployeeCertificateController(/hrm/employee/certificate):GET /hrm/employee/certificate/list、POST /hrm/employee/certificate/create、PUT /hrm/employee/certificate/update、DELETE /hrm/employee/certificate/delete | 新增、修改、删除 |
| 联系人 | EmployeeContactList.vue、EmployeeContactForm.vue | HrmEmployeeContactController(/hrm/employee/contact):GET /hrm/employee/contact/list、POST /hrm/employee/contact/create、PUT /hrm/employee/contact/update、DELETE /hrm/employee/contact/delete | 新增、修改、删除 |
| 合同 | EmployeeContractList.vue、EmployeeContractForm.vue | HrmEmployeeContractController(/hrm/employee/contract):GET /hrm/employee/contract/list、POST /hrm/employee/contract/create、PUT /hrm/employee/contract/update、DELETE /hrm/employee/contract/delete | 新增、修改、删除、上传附件 |
| 材料附件 | EmployeeMaterialFiles.vue | HrmEmployeeFileController(/hrm/employee/file):GET /hrm/employee/file/list、PUT /hrm/employee/file/save | 按员工整组保存材料 |
| 工资卡 | EmployeeSalaryCardInfo.vue、EmployeeSalaryCardForm.vue | HrmEmployeeSalaryCardController(/hrm/employee/salary-card):GET /hrm/employee/salary-card/get、PUT /hrm/employee/salary-card/save、DELETE /hrm/employee/salary-card/delete | 保存或删除当前工资卡 |
异动记录由 EmployeeChangeRecordList.vue 调用 HrmEmployeeChangeRecordController(/hrm/employee/change-record)的 GET /hrm/employee/change-record/list 只读展示,不能从详情页直接改写历史动作。
# 批量操作与删除
勾选员工后,【批量操作】支持设置参保方案、调用 POST /hrm/employee/send-profile-fill-message 发送档案填写通知,以及调用 DELETE /hrm/employee/delete-list 批量删除。设置参保方案只允许正式或试用且未离职的员工。
单条删除调用 DELETE /hrm/employee/delete。当前页面不按在职状态隐藏删除入口;删除采用逻辑删除,只删除员工主档,不删除其后台账号,也不会级联清理已产生的招聘、考勤、薪资、社保和绩效历史。因此执行前应先确认历史数据仍可正确展示,批量删除弹窗也会明确提示“后台账号及历史业务记录将保留”。
# 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 员工异动记录';
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 '离职原因',
`remark` varchar(500) DEFAULT NULL COMMENT '备注',
`old_employee_status` tinyint DEFAULT NULL COMMENT '离职前员工状态',
PRIMARY KEY (`id`)
) ENGINE=InnoDB COMMENT='HRM 员工离职信息';
# 2.2 管理后台
入转调离入口同时存在于员工列表的【更多】菜单和员工详情页,相关表单都位于 @/views/hrm/employee。页面根据 entry_status 和 status 只展示当前员工可执行的动作。
# 确认入职与再入职
待入职员工点击【确认入职】,由 EmployeeForm.vue 补全实际入职资料并调用 PUT /hrm/employee/confirm-entry,员工进入在职状态;如果员工来自招聘候选人,候选人同步更新为已入职。
已离职员工点击【办理再入职】,同一表单切换到再入职模式并调用 POST /hrm/employee/rehire。系统继续沿用原员工编号,写入 type=9 的异动记录,并更新新的部门、岗位、直属上级和入职时间。
# 转正
试用员工可以使用 EmployeeRegularForm.vue 办理转正,调用 POST /hrm/employee/regular。立即生效时同步更新员工状态和转正时间;预约生效时先写入待执行的 type=4 异动记录,之后由 HrmEmployeeChangeJob 到期执行。
# 调岗、晋升与降级
【调整部门/岗位】使用 EmployeeTransferForm.vue 调用 POST /hrm/employee/transfer,可调整部门、职位、职级、工作地点和直属上级;【晋升】、【降级】分别使用 EmployeePromoteForm.vue、EmployeeDemoteForm.vue 调用 POST /hrm/employee/promote、POST /hrm/employee/demote。三类动作均支持立即或预约生效,对应异动类型为 5、6、7。
# 转为全职
实习或兼职员工可使用 EmployeeFullTimeForm.vue 调用 POST /hrm/employee/convert-to-full-time,把聘用形式转为正式并保存转全职后的岗位、职级和薪资相关任职信息;异动类型为 8。其它员工状态不会显示该入口。
# 离职、取消离职与修改离职信息
在职员工使用 EmployeeQuitForm.vue 调用 POST /hrm/employee/quit。立即离职会直接更新员工主档;未来离职先把员工置为待离职,到 plan_quit_time 后由 HrmEmployeeChangeJob 更新为离职。
待离职员工可填写原因并调用 PUT /hrm/employee/cancel-quit,恢复办理离职前的员工状态;已离职员工可以再次打开离职表单修改离职类型、原因和结算信息,但不会因此恢复在职。所有离职信息通过 HrmEmployeeQuitInfoController(/hrm/employee/quit-info)的 GET /hrm/employee/quit-info/get 在详情页只读回显。
# 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=2 配置新建在职员工字段,type=3 配置新建待入职员工字段,type=4 配置档案字段的可见与可编辑范围。姓名、手机号、工号、入职状态等必要字段始终保留。
# 3.2 管理后台
# 配置新建字段与档案字段
对应 [HRM 人力资源 -> 员工管理 -> 员工设置] 菜单,页面位于 @/views/hrm/employee/config/index.vue。EmployeeCreateFieldConfig.vue 分别调用 GET /hrm/employee/config/create-field/list、PUT /hrm/employee/config/create-field/save 配置在职和待入职的新建表单;EmployeeArchiveFieldConfig.vue 调用 GET /hrm/employee/config/archive-field/list、PUT /hrm/employee/config/archive-field/save 配置档案字段的显示和编辑权限。
保存的是整组字段顺序与开关,不提供逐条删除配置。系统必要字段始终保留,不能通过页面隐藏或关闭。

# 4. 我的档案
员工端“我的档案”由 HrmPortalEmployeeController(/hrm/portal/employee)提供本人主档接口,各类经历由同级 Portal Controller 提供只读接口。
# 4.1 员工端
# 查看档案
对应 [HRM 人力资源 -> HRM 员工端 -> 我的档案] 菜单,页面位于 @/views/hrm/portal/employee/index.vue。页面通过 GET /hrm/portal/employee/get 根据当前登录账号绑定的 hrm_employee.user_id 定位本人,展示基本信息、岗位信息和教育、工作、培训、证书、联系人等资料;这些子档案在员工端只读。

# 修改本人资料
点击【编辑】打开员工端 EmployeeForm.vue。表单先调用 HrmPortalEmployeeFieldConfigController(/hrm/portal/employee/field-config)的 GET /hrm/portal/employee/field-config/list 获取可编辑范围,再通过 PUT /hrm/portal/employee/update 保存管理员开放的主档字段。员工不能借此修改部门、岗位、直属上级、员工状态或其他人的档案。