feat(hrm): 新增员工紧急联系人管理功能
完成员工紧急联系人模块的全流程开发,包括: 1. 数据库表结构、Mapper、Service、Controller后端代码 2. 前端页面、API接口、导入导出功能 3. 配套SQL脚本、导入模板与使用文档 4. 支持批量导入导出、数据校验与用户关联匹配
This commit is contained in:
41
sql/hrm_emergency_contact.sql
Normal file
41
sql/hrm_emergency_contact.sql
Normal file
@@ -0,0 +1,41 @@
|
||||
-- =====================================================================
|
||||
-- 员工紧急联系人信息表
|
||||
-- 通过 user_id 关联 sys_user,自动带出姓名/性别/身份证号/联系电话
|
||||
-- =====================================================================
|
||||
CREATE TABLE IF NOT EXISTS `hrm_emergency_contact` (
|
||||
`contact_id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '紧急联系人ID',
|
||||
|
||||
-- 关联信息(从 sys_user 自动带出 / 关联查询)
|
||||
`user_id` BIGINT NOT NULL COMMENT '用户ID(关联 sys_user)',
|
||||
`dept_id` BIGINT DEFAULT NULL COMMENT '部门ID(关联 sys_dept,从 sys_user 自动带出)',
|
||||
|
||||
-- 员工基本信息(新增/导入时从 sys_user 自动填充,允许手动修改)
|
||||
`real_name` VARCHAR(30) DEFAULT NULL COMMENT '姓名(从 sys_user.nick_name 自动带出)',
|
||||
`phone` VARCHAR(20) DEFAULT NULL COMMENT '联系电话(从 sys_user.phonenumber 自动带出)',
|
||||
`id_card` VARCHAR(200) DEFAULT NULL COMMENT '身份证号(从 sys_user.id_card 自动带出)',
|
||||
`gender` CHAR(1) DEFAULT '0' COMMENT '性别(0男 1女 2未知,从 sys_user.sex 自动带出)',
|
||||
`age` INT DEFAULT NULL COMMENT '年龄',
|
||||
|
||||
-- 公司信息(sys_user 无此字段,手动录入)
|
||||
`company_name` VARCHAR(100) DEFAULT NULL COMMENT '公司名称',
|
||||
`hire_date` DATE DEFAULT NULL COMMENT '入职时间',
|
||||
|
||||
-- 紧急联系人信息
|
||||
`emergency_contact` VARCHAR(30) DEFAULT NULL COMMENT '紧急联系人姓名',
|
||||
`relationship` VARCHAR(30) DEFAULT NULL COMMENT '与本人关系',
|
||||
`emergency_phone1` VARCHAR(20) DEFAULT NULL COMMENT '紧急联系人电话1',
|
||||
`emergency_phone2` VARCHAR(20) DEFAULT NULL COMMENT '紧急联系人电话2',
|
||||
`emergency_address` VARCHAR(200) DEFAULT NULL COMMENT '紧急联系人地址',
|
||||
|
||||
-- 基础字段
|
||||
`remark` VARCHAR(500) DEFAULT NULL COMMENT '备注',
|
||||
`del_flag` CHAR(1) DEFAULT '0' COMMENT '删除标志(0代表存在 2代表删除)',
|
||||
`create_by` VARCHAR(64) DEFAULT '' COMMENT '创建者',
|
||||
`create_time` DATETIME DEFAULT NULL COMMENT '创建时间',
|
||||
`update_by` VARCHAR(64) DEFAULT '' COMMENT '更新者',
|
||||
`update_time` DATETIME DEFAULT NULL COMMENT '更新时间',
|
||||
|
||||
PRIMARY KEY (`contact_id`) USING BTREE,
|
||||
KEY `idx_user_id` (`user_id`) USING BTREE,
|
||||
KEY `idx_dept_id` (`dept_id`) USING BTREE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=DYNAMIC COMMENT='员工紧急联系人信息表';
|
||||
30
sql/hrm_emergency_contact_cleanup.sql
Normal file
30
sql/hrm_emergency_contact_cleanup.sql
Normal file
@@ -0,0 +1,30 @@
|
||||
-- =====================================================================
|
||||
-- 清理紧急联系人菜单脏数据(执行前请确认)
|
||||
-- =====================================================================
|
||||
|
||||
-- 方式1:按 menu_id 范围删除(如果之前用的是 2000-2100 或 2070-2076)
|
||||
-- DELETE FROM sys_menu WHERE menu_id BETWEEN 2000 AND 2100;
|
||||
-- DELETE FROM sys_menu WHERE menu_id BETWEEN 2070 AND 2076;
|
||||
|
||||
-- 方式2:按菜单名称删除(推荐,更精确)
|
||||
-- DELETE FROM sys_menu WHERE menu_name = '紧急联系人';
|
||||
|
||||
-- 方式3:按权限标识删除(删除所有相关按钮权限)
|
||||
-- DELETE FROM sys_menu WHERE perms LIKE 'hrm:emergencyContact:%';
|
||||
|
||||
-- 方式4:组合删除(先查后删,安全)
|
||||
-- 先查询确认
|
||||
SELECT menu_id, menu_name, parent_id, perms, create_time
|
||||
FROM sys_menu
|
||||
WHERE menu_name = '紧急联系人'
|
||||
OR perms LIKE 'hrm:emergencyContact:%';
|
||||
|
||||
-- 确认无误后再执行删除
|
||||
-- DELETE FROM sys_menu WHERE menu_name = '紧急联系人' OR perms LIKE 'hrm:emergencyContact:%';
|
||||
|
||||
-- =====================================================================
|
||||
-- 执行步骤:
|
||||
-- 1. 先执行 SELECT 查询,确认要删除的数据
|
||||
-- 2. 确认无误后,再执行 DELETE 语句
|
||||
-- 3. 删除完成后,在若依系统菜单管理界面手动添加菜单
|
||||
-- =====================================================================
|
||||
115
sql/hrm_emergency_contact_manual_guide.md
Normal file
115
sql/hrm_emergency_contact_manual_guide.md
Normal file
@@ -0,0 +1,115 @@
|
||||
# 紧急联系人菜单手动添加指南
|
||||
|
||||
## 第一步:清理脏数据(在Navicat/DBeaver中执行)
|
||||
|
||||
```sql
|
||||
-- 先查询确认
|
||||
SELECT menu_id, menu_name, parent_id, perms, create_time
|
||||
FROM sys_menu
|
||||
WHERE menu_name = '紧急联系人'
|
||||
OR perms LIKE 'hrm:emergencyContact:%';
|
||||
|
||||
-- 确认无误后再执行删除
|
||||
DELETE FROM sys_menu
|
||||
WHERE menu_name = '紧急联系人'
|
||||
OR perms LIKE 'hrm:emergencyContact:%';
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 第二步:在若依系统菜单管理中手动添加
|
||||
|
||||
### 1. 添加主菜单
|
||||
|
||||
进入 **系统管理 → 菜单管理**,点击【新增】按钮,填写以下信息:
|
||||
|
||||
| 字段 | 值 |
|
||||
|------|-----|
|
||||
| 上级菜单 | 人事中心(或你想要的父菜单) |
|
||||
| 菜单类型 | 菜单 |
|
||||
| 菜单图标 | user |
|
||||
| 菜单名称 | 紧急联系人 |
|
||||
| 显示排序 | 99 |
|
||||
| 是否外链 | 否 |
|
||||
| 路由地址 | emergencyContact |
|
||||
| 组件路径 | hrm/emergencyContact/index |
|
||||
| 权限字符 | hrm:emergencyContact:list |
|
||||
| 路由参数 | (留空) |
|
||||
| 是否缓存 | 缓存 |
|
||||
| 显示状态 | 显示 |
|
||||
| 菜单状态 | 正常 |
|
||||
|
||||
点击【确定】保存。
|
||||
|
||||
---
|
||||
|
||||
### 2. 添加按钮权限
|
||||
|
||||
主菜单添加成功后,在菜单列表中找到【紧急联系人】,点击右侧的【新增】按钮(添加子菜单/按钮)。
|
||||
|
||||
需要添加以下6个按钮权限:
|
||||
|
||||
#### ① 查询按钮
|
||||
- 菜单类型:按钮
|
||||
- 菜单名称:查询
|
||||
- 显示排序:1
|
||||
- 权限字符:hrm:emergencyContact:query
|
||||
- 显示状态:显示
|
||||
- 菜单状态:正常
|
||||
|
||||
#### ② 新增按钮
|
||||
- 菜单类型:按钮
|
||||
- 菜单名称:新增
|
||||
- 显示排序:2
|
||||
- 权限字符:hrm:emergencyContact:add
|
||||
- 显示状态:显示
|
||||
- 菜单状态:正常
|
||||
|
||||
#### ③ 修改按钮
|
||||
- 菜单类型:按钮
|
||||
- 菜单名称:修改
|
||||
- 显示排序:3
|
||||
- 权限字符:hrm:emergencyContact:edit
|
||||
- 显示状态:显示
|
||||
- 菜单状态:正常
|
||||
|
||||
#### ④ 删除按钮
|
||||
- 菜单类型:按钮
|
||||
- 菜单名称:删除
|
||||
- 显示排序:4
|
||||
- 权限字符:hrm:emergencyContact:remove
|
||||
- 显示状态:显示
|
||||
- 菜单状态:正常
|
||||
|
||||
#### ⑤ 导出按钮
|
||||
- 菜单类型:按钮
|
||||
- 菜单名称:导出
|
||||
- 显示排序:5
|
||||
- 权限字符:hrm:emergencyContact:export
|
||||
- 显示状态:显示
|
||||
- 菜单状态:正常
|
||||
|
||||
#### ⑥ 导入按钮
|
||||
- 菜单类型:按钮
|
||||
- 菜单名称:导入
|
||||
- 显示排序:6
|
||||
- 权限字符:hrm:emergencyContact:import
|
||||
- 显示状态:显示
|
||||
- 菜单状态:正常
|
||||
|
||||
---
|
||||
|
||||
## 第三步:刷新系统
|
||||
|
||||
1. 添加完成后,**退出登录**或 **刷新页面**
|
||||
2. 重新登录后,在对应父菜单下应该能看到【紧急联系人】菜单
|
||||
3. 进入菜单测试功能是否正常
|
||||
|
||||
---
|
||||
|
||||
## 注意事项
|
||||
|
||||
1. **上级菜单选择**:如果想放在"人事中心"下,就选择"人事中心";如果想放在顶级,就选择"主类目"
|
||||
2. **权限字符**:必须严格按照 `hrm:emergencyContact:list`、`hrm:emergencyContact:query` 等格式填写
|
||||
3. **路由地址**:必须与前端路由配置一致,这里是 `emergencyContact`
|
||||
4. **组件路径**:必须与前端组件路径一致,这里是 `hrm/emergencyContact/index`
|
||||
42
sql/hrm_emergency_contact_menu.sql
Normal file
42
sql/hrm_emergency_contact_menu.sql
Normal file
@@ -0,0 +1,42 @@
|
||||
-- =====================================================================
|
||||
-- 菜单 SQL:员工紧急联系人管理(若依框架兼容版)
|
||||
-- 必须分步执行,不能批量执行!
|
||||
-- =====================================================================
|
||||
|
||||
-- ============================================================
|
||||
-- 第一步:清理可能存在的脏数据(如果之前执行失败过)
|
||||
-- ============================================================
|
||||
-- DELETE FROM sys_menu WHERE menu_id BETWEEN 2070 AND 2076;
|
||||
|
||||
-- ============================================================
|
||||
-- 第二步:插入主菜单(先执行这行,成功后再执行按钮)
|
||||
-- parent_id = 0 表示顶级菜单,可根据需要改为实际的HRM菜单ID
|
||||
-- ============================================================
|
||||
INSERT INTO sys_menu (
|
||||
menu_id, menu_name, parent_id, order_num, path, component, query_param,
|
||||
is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time
|
||||
) VALUES (
|
||||
2070, '紧急联系人', 0, 99, 'emergencyContact', 'hrm/emergencyContact/index', '',
|
||||
1, 0, 'C', '0', '0', 'hrm:emergencyContact:list', 'user', 'admin', NOW()
|
||||
);
|
||||
|
||||
-- ============================================================
|
||||
-- 第三步:主菜单插入成功后,再执行按钮权限
|
||||
-- ============================================================
|
||||
INSERT INTO sys_menu (
|
||||
menu_id, menu_name, parent_id, order_num, path, component,
|
||||
is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time
|
||||
) VALUES
|
||||
(2071, '查询', 2070, 1, '#', NULL, 1, 0, 'F', '0', '0', 'hrm:emergencyContact:query', '#', 'admin', NOW()),
|
||||
(2072, '新增', 2070, 2, '#', NULL, 1, 0, 'F', '0', '0', 'hrm:emergencyContact:add', '#', 'admin', NOW()),
|
||||
(2073, '修改', 2070, 3, '#', NULL, 1, 0, 'F', '0', '0', 'hrm:emergencyContact:edit', '#', 'admin', NOW()),
|
||||
(2074, '删除', 2070, 4, '#', NULL, 1, 0, 'F', '0', '0', 'hrm:emergencyContact:remove', '#', 'admin', NOW()),
|
||||
(2075, '导出', 2070, 5, '#', NULL, 1, 0, 'F', '0', '0', 'hrm:emergencyContact:export', '#', 'admin', NOW()),
|
||||
(2076, '导入', 2070, 6, '#', NULL, 1, 0, 'F', '0', '0', 'hrm:emergencyContact:import', '#', 'admin', NOW());
|
||||
|
||||
-- ============================================================
|
||||
-- 使用说明:
|
||||
-- 1. 如果之前执行失败过,先执行第一步的 DELETE 清理脏数据
|
||||
-- 2. 先执行第二步(主菜单),确认成功后再执行第三步(按钮权限)
|
||||
-- 3. 如需将菜单放在HRM模块下,将 parent_id 从 0 改为 HRM菜单的实际ID
|
||||
-- ============================================================
|
||||
24
sql/hrm_emergency_contact_sample_data.sql
Normal file
24
sql/hrm_emergency_contact_sample_data.sql
Normal file
@@ -0,0 +1,24 @@
|
||||
-- =====================================================================
|
||||
-- 示例数据:信息部员工紧急联系人
|
||||
-- 使用前请将 user_id 替换为实际 sys_user 表中的 ID
|
||||
-- =====================================================================
|
||||
|
||||
-- 示例数据1:张伟
|
||||
INSERT INTO `hrm_emergency_contact` (`user_id`, `dept_id`, `real_name`, `phone`, `id_card`, `gender`, `age`, `company_name`, `hire_date`, `emergency_contact`, `relationship`, `emergency_phone1`, `emergency_phone2`, `emergency_address`, `remark`, `del_flag`, `create_by`, `create_time`)
|
||||
VALUES (1, 100, '张伟', '13800138001', '110101199001011234', '0', 36, '上海泛微网络科技股份有限公司', '2022-03-15', '李芳', '配偶', '13900139001', '13800138002', '上海市浦东新区张江高科技园区200号', '信息部经理', '0', 'admin', NOW());
|
||||
|
||||
-- 示例数据2:李娜
|
||||
INSERT INTO `hrm_emergency_contact` (`user_id`, `dept_id`, `real_name`, `phone`, `id_card`, `gender`, `age`, `company_name`, `hire_date`, `emergency_contact`, `relationship`, `emergency_phone1`, `emergency_phone2`, `emergency_address`, `remark`, `del_flag`, `create_by`, `create_time`)
|
||||
VALUES (2, 100, '李娜', '13800138003', '110101199205022345', '1', 34, '上海泛微网络科技股份有限公司', '2021-07-01', '王强', '配偶', '13900139003', '', '上海市徐汇区漕河泾开发区100号', '需求分析师', '0', 'admin', NOW());
|
||||
|
||||
-- 示例数据3:王强
|
||||
INSERT INTO `hrm_emergency_contact` (`user_id`, `dept_id`, `real_name`, `phone`, `id_card`, `gender`, `age`, `company_name`, `hire_date`, `emergency_contact`, `relationship`, `emergency_phone1`, `emergency_phone2`, `emergency_address`, `remark`, `del_flag`, `create_by`, `create_time`)
|
||||
VALUES (3, 100, '王强', '13800138005', '110101198803033456', '0', 38, '上海泛微网络科技股份有限公司', '2020-01-10', '刘静', '配偶', '13900139005', '13800138006', '上海市闵行区七宝镇50号', '开发主管', '0', 'admin', NOW());
|
||||
|
||||
-- 示例数据4:赵敏
|
||||
INSERT INTO `hrm_emergency_contact` (`user_id`, `dept_id`, `real_name`, `phone`, `id_card`, `gender`, `age`, `company_name`, `hire_date`, `emergency_contact`, `relationship`, `emergency_phone1`, `emergency_phone2`, `emergency_address`, `remark`, `del_flag`, `create_by`, `create_time`)
|
||||
VALUES (4, 100, '赵敏', '13800138007', '110101199507044567', '1', 31, '上海泛微网络科技股份有限公司', '2023-05-20', '赵建国', '父母', '13900139007', '', '上海市静安区南京西路300号', '前端开发', '0', 'admin', NOW());
|
||||
|
||||
-- 示例数据5:陈浩
|
||||
INSERT INTO `hrm_emergency_contact` (`user_id`, `dept_id`, `real_name`, `phone`, `id_card`, `gender`, `age`, `company_name`, `hire_date`, `emergency_contact`, `relationship`, `emergency_phone1`, `emergency_phone2`, `emergency_address`, `remark`, `del_flag`, `create_by`, `create_time`)
|
||||
VALUES (5, 100, '陈浩', '13800138009', '110101199608055678', '0', 30, '上海泛微网络科技股份有限公司', '2022-11-01', '陈芳', '父母', '13900139009', '13800138010', '上海市浦东新区陆家嘴环路1000号', '后端开发', '0', 'admin', NOW());
|
||||
BIN
sql/信息部紧急联系人导入.xlsx
Normal file
BIN
sql/信息部紧急联系人导入.xlsx
Normal file
Binary file not shown.
25
sql/紧急联系人导入模板示例.xlsx
Normal file
25
sql/紧急联系人导入模板示例.xlsx
Normal file
@@ -0,0 +1,25 @@
|
||||
这是一个示例说明文件,实际Excel模板需要通过系统下载
|
||||
|
||||
Excel模板字段顺序:
|
||||
1. 入职时间 (yyyy.MM.dd格式,如:2025.06.18)
|
||||
2. 公司名称 (如:山东福安德信息科技有限公司)
|
||||
3. 部门 (如:信息化部)
|
||||
4. 姓名 (如:高鑫磊)
|
||||
5. 联系电话 (如:18324818443)
|
||||
6. 身份证号 (如:341222200309052816)
|
||||
7. 性别 (男/女/未知)
|
||||
8. 年龄 (如:23)
|
||||
9. 紧急联系人 (如:李继敏)
|
||||
10. 与本人关系 (如:母子)
|
||||
11. 联系电话1 (如:15955868031)
|
||||
12. 联系电话2 (可选)
|
||||
13. 紧急联系人地址 (如:安徽省阜阳市太和县皮条孙镇)
|
||||
14. 备注 (可选)
|
||||
|
||||
示例数据:
|
||||
2025.06.18,山东福安德信息科技有限公司,信息化部,高鑫磊,18324818443,341222200309052816,男,23,李继敏,母子,15955868031,,安徽省阜阳市太和县皮条孙镇,
|
||||
2025.06.18,山东福安德信息科技有限公司,信息化部,刘敬超,19932047759,13043520021117093X,男,24,刘建领,父子,18932719783,,河北省邯郸市曲周县槐桥乡,
|
||||
,山东福安德信息科技有限公司,信息化部,王文昊,19711921991,130923200312073014,男,22,王海军,父子,18233665966,18233691998,河北省沧州市东光县,
|
||||
,山东福安德信息科技有限公司,信息化部,井昊东,17803227053,13063420041124001X,男,22,井小苗,母子,13803279482,18603228769,河北省保定市曲阳县七里庄村,
|
||||
,山东福安德信息科技有限公司,信息化部,祖启佳,13308587452,520221200406220769,女,22,黄倩,母女,18188276838,,贵州省六盘水市水城县,
|
||||
,山东福安德信息科技有限公司,信息化部,朱昊天,19930382154,131121200310093614,男,22,朱庆忠,父子,15832865136,,河北省衡水市枣强县,
|
||||
Reference in New Issue
Block a user