# 员工台账岗位多选 - 前端联调方案 ## 背景 人力资源 > 员工管理(员工台账)的"岗位"由单选改为**多选**,与系统"用户管理"的多岗位能力保持一致。存储上采用 JSON 数组(`post_ids` 列),同"角色"字段的既有模式。 ## 涉及页面 - 人力资源 > 员工管理 列表页(`src/views/hrm/employee/index.vue`) - 员工新增/编辑表单(`src/views/hrm/employee/modules/form.vue`、`data.ts`) - 员工详情(`src/views/hrm/employee/modules/detail.vue`) - 员工导入弹窗(含下载模板、上传文件) - 员工导出 Excel ## API 变更说明 | 方法 | 路径 | 变更 | |------|------|------| | POST | `/hrm/employee/create` | 请求字段 `postId` → `postIds`(数组) | | PUT | `/hrm/employee/update` | 请求字段 `postId` → `postIds`(数组) | | GET | `/hrm/employee/get` | 响应字段 `postId/postName` → `postIds/postNames` | | GET | `/hrm/employee/page` | 响应字段 `postId/postName` → `postIds/postNames` | | GET | `/hrm/employee/export-excel` | "岗位名称"列支持多值(逗号拼接) | | GET | `/hrm/employee/import-template` | "岗位名称"列示例改为多岗位 | | POST | `/hrm/employee/import` | "岗位名称"列支持填写多个岗位名 | ### 1. 新增员工 `POST /hrm/employee/create` **请求参数(字段变更):** | 参数 | 类型 | 必填 | 说明 | |------|------|------|------| | postIds | List\ | 是 | 岗位ID数组,至少一个(原 `postId` 单值字段已移除) | ```json { "name": "张三", "phone": "13800138000", "deptId": 103, "postIds": [2, 4], "roleIds": [1], "hireDate": "2026-08-01", "employeeStatus": 1, "gender": 1 } ``` ### 2. 更新员工 `PUT /hrm/employee/update` 同 create,请求体中的 `postIds` 为员工最终的岗位集合(全量覆盖,非增量)。 ### 3. 员工详情 / 分页 `GET /hrm/employee/get`、`GET /hrm/employee/page` **响应字段变更:** | 字段 | 类型 | 说明 | |------|------|------| | postIds | List\ | 岗位ID数组(原 `postId` 已移除) | | postNames | String | 岗位名称,多个用英文逗号拼接,如"部门经理,项目经理"(原 `postName` 已移除) | ```json { "code": 0, "data": { "id": 6, "name": "张三", "deptName": "研发部", "postIds": [2, 4], "postNames": "部门经理,项目经理", "roleNames": "普通管理员" } } ``` ### 4. 导出 Excel `GET /hrm/employee/export-excel` - "岗位名称"列展示多个岗位名,英文逗号拼接(与分页返回的 `postNames` 一致)。 ### 5. 导入模板 / 导入 `GET /hrm/employee/import-template`、`POST /hrm/employee/import` - 模板"岗位名称"列由单个岗位名改为支持**多个岗位名**,多个用**英文逗号(`,`)或中文逗号(`,`)**分隔。 - 模板示例行:`部门经理,项目经理`。 - 任一岗位名不存在,该行导入失败,原因"岗位【xx】不存在"。 - 岗位名称列不允许为空(岗位必填)。 ## 字段展示规则 | 字段 | 展示位置 | 说明 | |------|----------|------| | postIds | 表单(新增/编辑)、详情 | 表单岗位改为多选下拉框,编辑回显勾选多个 | | postNames | 列表、详情、导出 | 展示为逗号拼接的多个岗位名 | ## 业务规则说明 | 场景 | 规则 | |------|------| | 表单保存 | `postIds` 必填,至少一个岗位 | | 编辑保存 | `postIds` 全量覆盖该员工岗位 | | 导入 | "岗位名称"列多个名称用逗号分隔,任一不存在则整行失败 | | 已有数据 | 存量员工的单岗位数据已迁移为 `postIds`,老数据不丢失 | ## 注意事项 - **前端需同步修改**:新增/编辑表单的岗位字段从单选改为多选下拉,提交字段名从 `postId` 改为 `postIds`;列表/详情展示字段从 `postName` 改为 `postNames`。 - **编辑员工时同步更新**关联系统登录用户(用户管理页)的岗位/部门/昵称/角色/邮箱/备注,两边保持一致。 - 岗位下拉数据仍从系统岗位接口获取(与之前一致)。 - 岗位名称解析为精确匹配,不支持模糊。