人员管理
1. 功能定位
人员管理用于维护自然人档案、人员状态、任职关系、上下级关系和生命周期操作。
人员不直接保存单一部门和岗位,而是通过任职关系绑定部门和岗位。
现有档案扩展字段全部保留(身份、合同、家庭、材料、员工类型、办公信息等)。部门 / 岗位从人员主数据改为任职关系;主部门由主岗位自动带出,人员不单独维护主部门。
2. 页面布局
人员管理采用「列表页 + 独立路由页」。
- 新增走独立路由
PersonCreate。不再提供独立编辑页PersonEdit。 - 查看和改档案都进详情页
PersonDetail。详情按区块编辑,不改成抽屉。 - 列表左侧保留组织树,支持搜索定位。点选某部门时,任意有效任职落在该部门的人都算。
- 表单按属性分块,一行 4 列,标签在输入框上方。顺序:基本信息 → 任职与上下级 → 工作信息 → 个人信息 → 学历信息 → 合同信息 → 银行卡信息 → 紧急联系人 → 家庭信息 → 个人材料。
- 详情页在任职与上下级后插入账号信息,最后追加人事历史。
- 调岗走右侧抽屉,不走生命周期 Dialog。转正 / 停用 / 启用 / 离职 / 退休 / 复职 / 返聘 / 删除共用一个 Dialog,内容通过
component :is按操作类型加载。
2.1 筛选区
- 姓名
- 工号
- 手机号
- 所属部门(左侧树)
- 所属岗位
- 人员状态
- 员工类型
- 是否绑定账号
2.2 表格列
- 姓名
- 工号
- 主部门
- 主岗位
- 员工类型
- 人员状态
- 直属主管(主职任职上的直属主管)
- 账号状态
- 入职日期
- 操作
2.3 操作入口
列表操作:详情、历史、调岗、转正、停用、启用、离职、退休、复职、返聘、删除。列表不再单独放「编辑」,改档案从详情各区块进入。
详情页可出现的操作:各可编辑区块的「编辑」、底部「调岗」,以及按状态出现的生命周期操作。
实际按钮按人员状态控制,见第 4.1 节。表中「编辑」指详情页分块编辑档案,不是独立编辑页。
操作成功后保留当前筛选并刷新。历史打开人事历史抽屉:内容区用 GrowWatchBox + GrowScrollbar 纵向滚动,底部「关闭」固定。
3. 人员字段
必填取「现有表单 ∪ 本文档」的并集。
| 字段 | 是否必填 | 控件 | 说明 |
|---|---|---|---|
| 姓名 | 是 | 输入框 | 人员姓名 |
| 工号 | 是 | 输入框 | 唯一编号 |
| 邮箱 | 是 | 输入框 | 联系方式 |
| 手机号 | 否 | 输入框 | 联系方式 |
| 证件类型 | 否 | 下拉选择 | 身份证、护照等 |
| 证件号码 | 否 | 输入框 | 证件编号 |
| 人员状态 | 是 | 下拉选择 | 新增可选待入职 / 试用 / 正式,默认待入职;详情编辑只读 |
| 员工类型 | 是 | 下拉选择 | 全职、实习、兼职、外包 |
| 入职日期 | 是 | 日期选择 | 首次入职日期 |
| 试用期开始日期 | 否 | 日期选择 | 试用开始 |
| 试用期结束日期 | 否 | 日期选择 | 试用结束 |
| 转正日期 | 否 | 日期选择 | 实际转正日期 |
| 离职日期 | 否 | 日期选择 | 离职日期 |
| 退休日期 | 否 | 日期选择 | 退休日期 |
| 任职关系 | 新增必填 | 任职编辑器 | 至少一条主职;部门 / 岗位 / 任职类型变更走调岗;职级和上下级可在详情编辑 |
| 直属主管 | 否 | 下拉选择 | 挂在任职上,每条任职最多一个 |
| 协同上级 | 否 | 多选 | 挂在任职上,每条任职可多个 |
其余现有档案字段(分机、办公地点、身份、学历、合同、家庭、材料等)按原表单保留,非必填,按属性分块展示。新增和详情分块编辑不展示备注字段。
4. 人员状态
人员状态包括:
- 待入职
- 试用
- 正式
- 停用
- 离职
- 退休
- 返聘
| 状态 | 说明 |
|---|---|
| 待入职 | 已建档但尚未正式入职。新增默认状态,也可直接建成试用 / 正式 |
| 试用 | 试用期人员 |
| 正式 | 正式在职人员 |
| 停用 | 暂不可用人员,不等同离职。任职关系保留 |
| 离职 | 已离职人员 |
| 退休 | 已退休人员 |
| 返聘 | 离职或退休后重新返聘人员 |
详情分块编辑可以改档案,不能改人员状态。人员状态只走独立操作;调岗只改任职,不改人员状态。
停用 / 启用 / 退休 / 转正 / 离职 / 复职 / 返聘都是独立操作,不做进调岗抽屉。
4.1 状态 × 操作
| 状态 | 编辑 | 调岗 | 转正 | 停用 | 启用 | 离职 | 退休 | 复职 | 返聘 | 删除 |
|---|---|---|---|---|---|---|---|---|---|---|
| 待入职 | 是 | 是 | 试用或正式 | 是 | 否 | 是 | 否 | 否 | 否 | 否 |
| 试用 | 是 | 是 | → 正式 | 是 | 否 | 是 | 否 | 否 | 否 | 否 |
| 正式 | 是 | 是 | 否 | 是 | 否 | 是 | 是 | 否 | 否 | 否 |
| 停用 | 是 | 是 | 否 | 否 | 是 | 是 | 否 | 否 | 否 | 否 |
| 离职 | 是 | 否 | 否 | 否 | 否 | 否 | 否 | 是 | 是 | 是 |
| 退休 | 是 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 是 | 否 |
| 返聘 | 是 | 是 | 否 | 是 | 否 | 是 | 是 | 否 | 否 | 否 |
5. 新增人员
按属性分块一次填写,不是强制分步向导。表单一行 4 列。
分块顺序:基本信息 → 任职与上下级 → 工作信息 → 个人信息 → 学历信息 → 合同信息 → 银行卡信息 → 紧急联系人 → 家庭信息 → 个人材料。主部门、岗位、职级与上下级合并在任职编辑器中维护。
新增默认「待入职」,也可以直接建成试用 / 正式。任职在新增里填写。保存后部门 / 岗位 / 任职类型变更走调岗;职级和上下级可在详情「任职与上下级」区块编辑。新增不展示备注字段。
5.1 基础信息
字段:
- 姓名
- 工号
- 手机号
- 邮箱
- 员工类型
- 人员状态(仅新增可改)
- 入职日期
- 司龄(系统计算)
校验:
- 姓名、工号、邮箱、入职日期、人员状态、员工类型不能为空。
- 工号不可重复。
5.2 任职信息
字段:
- 任职类型:主职 / 兼职。主职 = 主岗位,不另拆「是否主岗位」
- 部门
- 岗位(下拉,按所选部门请求
/system/posts,仅启用岗位) - 职级
- 任职开始日期
- 是否占用编制(系统计算,兼职不占)
- 直属主管(每条任职最多一个)
- 协同上级(每条任职可多个)
规则:
- 至少添加一条任职关系。
- 必须且只能有一条主职。兼职升主职见第 8.5 节「设置为主岗」。
- 主岗位所属部门自动作为主部门。
- 一个人在同一部门同一岗位下不可重复添加有效任职关系。
- 兼职默认不占用编制。
- 部门和岗位必须为启用状态。
- 岗位超编只提示,不阻止。
- 任职至少保留一条。仅剩一条时删除按钮禁用。
- 详情编辑任职时,部门、岗位、任职类型、开始日期锁定,不展示「任职变更请使用调岗」说明。职级、直属主管、协同上级可改。添加 / 删除任职、改部门岗位走调岗。
5.3 上下级关系
上下级挂在任职上,不同任职部门可以有不同的直属主管和协同上级。列表「直属主管」展示主职任职上的直属主管。
规则:
- 不允许选择自己为上级。
- 不允许形成上下级循环引用。
- 同一任职下协同上级不能与直属主管重复。
5.4 紧急联系人、家庭信息与个人材料
- 紧急联系人可多条。
- 家庭信息新增 / 详情没填时默认一行空记录。
- 任职、紧急联系人、家庭信息都至少保留一条;仅剩一条时删除按钮禁用。
- 个人材料每项最多 1 个文件。已上传后隐藏「+」上传按钮,只留预览;删除后恢复上传入口。
6. 人员详情
打开方式:独立详情页。默认只读展示,按属性分块,一行 4 列。顺序与新增一致,并在任职关系后展示账号信息,最后展示人事历史。
6.1 分块编辑
去掉独立编辑页。档案在详情各区块上直接改。
可编辑区块:基本信息、任职与上下级、工作信息、个人信息、学历信息、合同信息、银行卡信息、紧急联系人、家庭信息、个人材料。
不可编辑区块:账号信息、人事历史。
- 每个可编辑区块右上角有「编辑」。
- 同时只编辑一个区块。点编辑后该块切成表单,按钮变为「取消 / 保存」。
- 保存提交完整档案(带上未改区块的原值)。取消恢复展示。
- 人员状态、司龄、年龄、工龄、退休日期在编辑态只读或系统计算。
- 切换编辑时保持区块占位,避免页面闪动。
6.2 任职与上下级
每条任职一张卡。字段与新增 / 调岗对齐:部门、岗位、职级、开始 / 结束日期、直属主管、协同上级。标题行:任职类型标签、状态标签、是否占编、快捷图标。区块底部展示下级人员。已结束的主职不回退套用人员当前的岗位和上级。
可调岗时,图标悬停用 Tooltip 说明,不写长文案:
| 卡片 | 图标 | 行为 |
|---|---|---|
| 有效主职 | 交换 | 打开调岗抽屉,进入调整主职 |
| 有效兼职 | 置顶 | 打开调岗抽屉,进入设置为主岗 |
| 有效兼职 | 减号 | 打开调岗抽屉,进入停止兼职 |
底部「调岗」打开同一抽屉,默认调整主职。
详情编辑该块时:
- 部门、岗位、任职类型、开始日期锁定。
- 职级、直属主管、协同上级可改。
- 不展示「任职变更请使用调岗」说明。
- 不提供添加 / 删除任职。部门、岗位、任职类型变更走调岗抽屉。
6.3 账号信息
只读展示:
- 绑定账号
- 账号状态
- 账号角色
- 最后登录时间
6.4 人事历史
只读展示生命周期记录。每条记录带备注。
7. 任职关系规则
任职关系字段:
| 字段 | 是否必填 | 说明 |
|---|---|---|
| 人员 | 是 | 关联人员 |
| 部门 | 是 | 任职部门 |
| 岗位 | 是 | 任职岗位 |
| 职级 | 是 | 独立选择,与岗位不联动 |
| 任职类型 | 是 | 主职 / 兼职。主职 = 主岗位 |
| 任职开始日期 | 是 | 生效日期 |
| 任职结束日期 | 否 | 结束日期 |
| 任职状态 | 是 | 有效 / 已结束 |
| 是否占用编制 | 系统计算 | 兼职不占编制 |
| 直属主管 | 否 | 每条任职最多一个 |
| 协同上级 | 否 | 每条任职可多个 |
| 变更原因 | 否 | 写入人员历史的备注,选填 |
业务规则:
- 人员必须且只能有一个主岗位。
- 主岗位所属部门自动作为主部门。
- 人员不单独维护主部门。
- 一个人可属于多个部门。
- 一个人可拥有多个岗位。
- 一个人在同一部门同一岗位下只能存在一条有效任职关系。
- 调岗、兼职新增、兼职变更、兼职结束、设置为主岗均保留历史记录。
- 调整主职 / 调整兼职 / 新增兼职写入的新任职必须带上所选职级和上下级,与「任职与上下级」卡片字段一致。
- 设置为主岗:选中的有效兼职原地改为主职并占用编制;原主职原地改为兼职且不占编制。不结束原记录、不新建任职。提交时带
assignmentType: 'primary'。
8. 调岗
入口:人员列表「调岗」、详情底部「调岗」,以及详情任职卡片上的快捷图标。
调岗只改任职,不改人员状态。备注选填。点确定才提交接口;切换卡片、点图标只改本地预览,不调接口、不二次确认、不触发表单校验。
后台动作仍是四种,外加「设置为主岗」(复用兼职变更,并带 assignmentType: 'primary'):
| 用户操作 | 提交动作 | assignmentType |
|---|---|---|
| 点主职卡 | primary 调整主职 | primary |
| 点兼职卡 | part_time_change 调整兼职 | part_time |
| 兼职上「设置为主岗」 | part_time_change | primary |
| 「+ 新增兼职」 | part_time_add | part_time |
| 兼职上「停止兼职」 | part_time_end | part_time |
8.1 抽屉框架
- 右侧抽屉,宽 800px,挂到 body,关闭销毁。
- 标题随当前动作变:
调整主职 · 姓名/调整兼职 · 姓名/新增兼职 · 姓名/停止兼职 · 姓名/设置为主岗 · 姓名。 - 底部固定「取消」和主按钮。停止兼职时主按钮文案为「停止兼职」,其余为「确定」。
- 内容区用
GrowWatchBox+GrowScrollbar只纵向滚动。底部按钮不随内容滚走。 - 内边距加在滚动内容上,不加大抽屉 body,避免表单行负边距顶出横向滚动条。
8.2 当前任职
上部「当前任职」三列卡片,列出全部有效任职,末尾一格「+ 新增兼职」。
卡片展示:主职 / 兼职标签、占用编制 / 不占编制、部门 / 岗位、职级。长文本省略。
操作由卡片和图标带出,不要调岗类型下拉,也不要「原兼职」下拉。
| 操作 | 结果 |
|---|---|
| 点主职卡 | 调整主职,表单带出该主职 |
| 点兼职卡 | 调整该兼职,表单带出该兼职 |
| 置顶图标 | 设置为主岗(见 8.7) |
| 减号图标 | 停止兼职,表单只留结束日期和备注 |
| + 新增兼职 | 清空目的部门岗位,填新兼职 |
当前对象高亮。图标收在卡片右侧,点击不冒泡到选卡。
图标是否出现看预览后的任职类型,不是落库类型。原主职被预览成兼职后,同样出现置顶和减号。
8.3 调岗表单
下部标题跟当前动作走,并有一句说明(将调整主职「…」/ 将停止兼职「…」等)。
两列字段:部门、岗位、职级、生效日期、直属主管、协同上级;备注整行。停止兼职只保留日期和备注。字段与任职卡片对齐。
- 岗位按下拉,按所选部门请求
/system/posts,仅启用岗位。 - 换部门清空岗位。
- 职级独立选择,切换部门或岗位不自动修改职级。
- 协同上级不能与直属主管重复。
- 岗位超编只提示,不阻止。
- 切换卡片或图标不触发校验。必填只在点确定时检查:日期必填;非停止兼职时部门和岗位必填;调整 / 停止兼职时必须已选对象。
确定成功后关抽屉、提示成功、刷新列表或详情。校验失败留在抽屉,不关。取消或关闭抽屉丢弃未提交的预览。
8.4 调整主职
字段:新部门、新岗位、职级、直属主管、协同上级、生效日期、备注。默认带出当前主职,可改。
保存后:
- 原主职任职结束。
- 新岗位成为主职,并写入所选职级和上下级。
- 主部门变为新岗位所属部门。
- 原岗位释放编制,新岗位占用编制。
- 账号按继承范围更新组织关系。
8.5 新增兼职
字段:兼职部门、兼职岗位、职级、直属主管、协同上级、任职开始日期、备注。
规则:兼职不占编制;不可与已有有效任职重复。
8.6 调整兼职
字段:新部门、新岗位、职级、直属主管、协同上级、生效日期、备注。默认带出该兼职,可改。
保存后:原兼职结束,新兼职生效,历史保留。
8.7 停止兼职
字段:结束日期、备注。保存后该兼职变为已结束。
8.8 设置为主岗
入口:详情或调岗抽屉里,展示类型为兼职的卡片上的置顶图标。不弹确认框,不立刻调接口。
抽屉内即时预览:
- 选中条显示为主职、占用编制。
- 原主职显示为兼职、不占编制,并出现置顶 / 减号。
- 表单标题为「设置为主岗」,说明为「将「…」设为主岗,原主职改为兼职」。
- 表单仍可改该条的部门、岗位和职级,点确定一并提交。
保存后:选中条原地改为主职并占编;原主职原地改为兼职且不占编。不结束、不新建任职。主部门切到新主职所属部门。提交:transferType: 'part_time_change',assignmentType: 'primary'。
9. 转正
待入职、试用显示「转正」。
待入职两个选项:
- 转入试用
- 直接正式
试用转正后变为正式。
字段:
- 目标状态(待入职时必选)
- 试用期开始日期
- 试用期结束日期
- 实际转正日期(直接正式或试用转正时)
- 备注
保存后:
- 人员状态变更为所选目标。
- 转正记录保留。
限制:
- 已正式、离职、退休、停用、返聘人员不应走转正。
10. 停用与启用
10.1 停用
待入职、试用、正式、返聘可停用。
字段:日期 + 备注。
保存后:人员状态变为停用,任职关系保留。
10.2 启用
仅停用人员显示「启用」。
字段:
- 目标状态:试用 / 正式,默认带回停用前状态
- 日期
- 备注
保存后:人员状态变为所选目标。
11. 离职
入口:点击「离职」。打开方式:统一 Dialog。
字段:
- 离职日期
- 离职原因
- 备注
影响范围用已加载的人员详情拼装,不另开接口:
- 当前有效任职关系数量
- 绑定账号
- 账号是否将被停用
- 角色绑定关系是否保留
- 编制释放情况
确认后:
- 人员状态变更为离职。
- 有效任职关系全部结束。
- 绑定账号自动停用。
- 账号角色绑定关系保留。
- 编制自动释放。
提示文案:
人员离职后,当前有效任职关系将结束,绑定账号将自动停用,角色绑定关系保留。12. 退休
正式、返聘可退休。
字段:日期 + 备注。
保存后:人员状态变为退休,有效任职结束,编制释放。退休人员可在详情分块编辑档案,不可调岗,只显示返聘,不显示复职、删除。
13. 复职与返聘
两个入口,同一套交互,传递的目标状态不同。
| 复职 | 返聘 | |
|---|---|---|
| 可见 | 仅离职 | 离职、退休 |
| 结果状态 | 可选试用或正式 | 返聘 |
| 账号 | 默认原账号且视为可用;被占用则改绑已有账号;此处不新建账号 | 同左 |
返聘字段:
- 开始日期
- 部门
- 岗位
- 任职类型(主职 / 兼职,默认主职)
- 直属主管
- 账号:默认原账号;原账号被占用时改选已有账号
- 备注
保存后:
- 原人员档案保留。
- 新增任职关系。
- 人员状态变更为对应目标。
重新入职:新建人员档案。返聘 / 复职:保留原档案。
14. 删除人员
规则:
- 非离职人员不可删除。
- 仅离职人员允许删除。
- 删除需二次确认,备注选填。
- 删除采用逻辑删除。
- 历史任职、调岗、权限关联记录保留。
15. 备注与历史
新增和详情分块编辑不填写备注。删除和生命周期操作可填写备注,有内容时写入人员历史。备注不是必填项。
转正 / 停用 / 启用 / 离职 / 退休 / 复职 / 返聘 / 删除走统一 Dialog,字段含日期(按操作语义)和选填备注。设置为主岗、调整任职、停止兼职、新增兼职不要再套一层确认框。
16. 交互约束
- 不要恢复调岗类型下拉、原兼职下拉。
- 不要在设置为主岗时弹确认或立刻调接口。
- 不要把部门 / 岗位 / 任职类型放进详情分块编辑。
- 不要在新增、详情分块编辑里要备注。
- 不要让调岗抽屉出现横向滚动条,或让底部按钮跟着内容滚走。
17. 当前代码实现(截至 2026-09-01)
列表与入口:
- 人员列表支持姓名、工号、手机号、所属岗位、人员状态、员工类型和账号绑定状态筛选,并提供列显隐和分页。
- 默认列包括姓名、工号、主部门、主岗位、员工类型、人员状态、直属主管、账号状态、入职日期和操作。
- 姓名和详情按钮进入人员详情;列表根据人员状态动态展示调岗、转正、离职、退休、复职、返聘和删除入口。
新增与档案:
- 新增人员使用独立页面,档案按基本信息、工作信息、个人信息、学历、合同、银行卡、家庭、紧急联系人和材料等区域组织。
- 人员详情使用独立页面和分块编辑;任职、账号、人事历史与档案区分展示。
- 敏感字段使用专用展示/输入组件;材料按预定义材料类型单文件维护。
任职与上下级:
- 任职编辑器独立选择部门、岗位和职级,并维护任职类型、起止日期、直属主管和协同上级。
- 调岗使用右侧抽屉,支持调整主职、新增兼职、调整兼职、停止兼职和将兼职设置为主职。
- 直属主管为主要汇报关系;协同上级为补充关系。部门负责人仅作为两者均为空时的后续业务兜底,不在当前人员页面自动写入。
生命周期:
PersonEventDialog通过动态组件承载转正、离职、退休、复职、返聘和删除表单;调岗由独立PersonTransferDrawer承载。- 离职或退休会结束当前有效任职并停用绑定账号,角色绑定关系保留;复职或返聘可重新分配账号和任职。
- 事件和任职变化通过人员历史抽屉展示。
实现边界:
- 已定义人员列表、详情、新增编辑、调岗、转正、离职、退休、复职、返聘、删除和历史接口,并提供 Mock 行为。
- 组织状态、账号联动及权限校验最终以后端结果为准。
Grow Admin