# HRM 模块删除接口补全 ## 概述 为 HRM 模块中缺失删除接口的 Controller 补全删除功能,主要涉及员工相关子模块(教育经历、工作经历、紧急联系人)以及薪资模块的撤销/删除功能。 ## 一、员工模块删除接口 ### 涉及页面 - 员工详情页(教育经历、工作经历、紧急联系人模块) ### API | 方法 | 路径 | 说明 | |------|------|------| | DELETE | /hrm/employee/education/delete | 删除教育经历 | | DELETE | /hrm/employee/work-history/delete | 删除工作经历 | | DELETE | /hrm/employee/emergency-contact/delete | 删除紧急联系人 | **请求参数:** | 参数 | 类型 | 必填 | 说明 | |------|------|------|------| | id | Long | 是 | 记录ID | **响应:** ```json { "code": 200, "data": true, "msg": "操作成功" } ``` ### 前端修改点 #### 1. 教育经历删除按钮 ```html 删除 ``` #### 2. 工作经历删除按钮 ```html 删除 ``` #### 3. 紧急联系人删除按钮 ```html 删除 ``` #### 4. 方法实现 ```js // 删除教育经历 handleDeleteEducation(row) { this.$modal.confirm('是否确认删除该教育经历?').then(() => { return deleteEducation(row.id); }).then(() => { this.getEducationList(); this.$modal.msgSuccess('删除成功'); }).catch(() => {}); }, // 删除工作经历 handleDeleteWorkHistory(row) { this.$modal.confirm('是否确认删除该工作经历?').then(() => { return deleteWorkHistory(row.id); }).then(() => { this.getWorkHistoryList(); this.$modal.msgSuccess('删除成功'); }).catch(() => {}); }, // 删除紧急联系人 handleDeleteEmergencyContact(row) { this.$modal.confirm('是否确认删除该紧急联系人?').then(() => { return deleteEmergencyContact(row.id); }).then(() => { this.getEmergencyContactList(); this.$modal.msgSuccess('删除成功'); }).catch(() => {}); }, ``` #### 5. API 接口定义 ```js // api/hrm/employee.js // 删除教育经历 export function deleteEducation(id) { return request({ url: '/hrm/employee/education/delete', method: 'delete', params: { id } }); } // 删除工作经历 export function deleteWorkHistory(id) { return request({ url: '/hrm/employee/work-history/delete', method: 'delete', params: { id } }); } // 删除紧急联系人 export function deleteEmergencyContact(id) { return request({ url: '/hrm/employee/emergency-contact/delete', method: 'delete', params: { id } }); } ``` --- ## 二、薪资核算模块接口 ### 涉及页面 - 薪酬核算列表页 ### API | 方法 | 路径 | 说明 | |------|------|------| | POST | /hrm/salary/calculation/revoke | 批量撤销薪酬核算确认 | | DELETE | /hrm/salary/calculation/delete | 删除薪酬核算记录(仅待确认状态) | **撤销确认请求:** ```json { "ids": [1, 2, 3] } ``` **删除请求参数:** | 参数 | 类型 | 必填 | 说明 | |------|------|------|------| | id | Long | 是 | 核算记录ID | **撤销确认逻辑说明:** 1. 仅已确认状态(status=10)的核算记录可以撤销 2. 撤销后状态恢复为待确认(status=0) 3. 同时删除关联的薪资发放明细 4. 如果已发放则不允许撤销 **删除逻辑说明:** 1. 仅待确认状态(status=0)的核算记录可以删除 2. 已确认或已发放的记录不可删除 ### 前端修改点 ```js // api/hrm/salary/calculation.js // 撤销薪酬核算确认 export function revokeSalaryCalculation(ids) { return request({ url: '/hrm/salary/calculation/revoke', method: 'post', data: { ids } }); } // 删除薪酬核算记录 export function deleteSalaryCalculation(id) { return request({ url: '/hrm/salary/calculation/delete', method: 'delete', params: { id } }); } ``` ```html 撤销确认 删除 ``` ```js // 撤销确认 handleRevoke(row) { this.$modal.confirm('撤销确认后,该记录将恢复为待确认状态,关联的发放明细将被删除。是否继续?').then(() => { return revokeSalaryCalculation([row.id]); }).then(() => { this.getList(); this.$modal.msgSuccess('撤销成功'); }).catch(() => {}); }, // 删除 handleDelete(row) { this.$modal.confirm('是否确认删除该薪酬核算记录?').then(() => { return deleteSalaryCalculation(row.id); }).then(() => { this.getList(); this.$modal.msgSuccess('删除成功'); }).catch(() => {}); }, ``` --- ## 三、薪资发放模块接口 ### 涉及页面 - 薪资发放列表页 - 薪资发放明细页 ### API | 方法 | 路径 | 说明 | |------|------|------| | POST | /hrm/salary/payment/revoke-detail | 批量撤销薪资发放明细 | | DELETE | /hrm/salary/payment/delete | 删除薪资发放台账(仅待发放状态) | **撤销发放请求:** ```json { "detailIds": [1, 2, 3] } ``` **删除请求参数:** | 参数 | 类型 | 必填 | 说明 | |------|------|------|------| | id | Long | 是 | 发放台账ID | **撤销发放逻辑说明:** 1. 仅已发放状态(status=10)的明细可以撤销 2. 撤销后明细状态恢复为待发放(status=0) 3. 同时将关联的核算记录恢复为已确认(status=10) 4. 如果整个台账的所有明细都被撤销,台账状态也会恢复为待发放 **删除台账逻辑说明:** 1. 仅待发放状态(status=0)的台账可以删除 2. 如果存在已发放明细,需先撤销所有明细才能删除 3. 删除台账会同时删除所有待发放明细 ### 前端修改点 ```js // api/hrm/salary/payment.js // 撤销薪资发放明细 export function revokeSalaryPaymentDetail(detailIds) { return request({ url: '/hrm/salary/payment/revoke-detail', method: 'post', data: { detailIds } }); } // 删除薪资发放台账 export function deleteSalaryPayment(id) { return request({ url: '/hrm/salary/payment/delete', method: 'delete', params: { id } }); } ``` ```html 撤销发放 删除 ``` ```js // 撤销发放明细 handleRevokeDetail(row) { this.$modal.confirm('撤销发放后,该明细将恢复为待发放状态,关联的核算记录将恢复为已确认。是否继续?').then(() => { return revokeSalaryPaymentDetail([row.id]); }).then(() => { this.getDetailList(); this.$modal.msgSuccess('撤销成功'); }).catch(() => {}); }, // 删除发放台账 handleDelete(row) { this.$modal.confirm('删除后将同时删除所有待发放明细,是否继续?').then(() => { return deleteSalaryPayment(row.id); }).then(() => { this.getList(); this.$modal.msgSuccess('删除成功'); }).catch(() => {}); }, ``` --- ## 四、状态流转说明 ### 薪酬核算状态 | 状态值 | 状态名称 | 说明 | |--------|----------|------| | 0 | 待确认 | 初始状态,可删除、可确认 | | 10 | 已确认 | 可撤销确认 | | 20 | 已发放 | 已完成发放,不可操作 | ### 薪资发放明细状态 | 状态值 | 状态名称 | 说明 | |--------|----------|------| | 0 | 待发放 | 初始状态 | | 10 | 已发放 | 可撤销发放 | ### 状态流转图 ``` 薪酬核算: 待确认(0) --确认--> 已确认(10) --发放--> 已发放(20) 已确认(10) --撤销确认--> 待确认(0) 待确认(0) --删除--> (删除) 薪资发放明细: 待发放(0) --发放--> 已发放(10) 已发放(10) --撤销发放--> 待发放(0) 薪资发放台账: 待发放(0) --删除--> (删除) 注:需先撤销所有已发放明细才能删除 ``` --- ## 五、已有删除接口说明 以下模块已有删除接口,无需前端额外修改: | 模块 | 删除接口路径 | |------|-------------| | 员工主表 | /hrm/employee/delete | | 请假申请 | /hrm/leave/delete | | 调岗申请 | /hrm/transfer/delete | | 离职申请 | /hrm/resignation/delete | | 考勤异常申请 | /hrm/attendance/exception/delete | | 社保公积金配置 | /hrm/salary/social-security-config/delete | | 个税税率配置 | /hrm/salary/tax-rate-config/delete | | 社保公积金方案 | /hrm/salary/social-security-scheme/delete | | 员工社保档案 | /hrm/salary/employee-social-security/delete | ## 六、不提供删除接口说明 以下模块不提供删除接口(审计类数据不允许直接删除): - 考勤记录(/hrm/attendance/record)- 考勤数据属于审计数据 ## 七、权限说明 | 权限标识 | 说明 | |----------|------| | hrm:employee:delete | 员工及子模块删除权限 | | hrm:salary:confirm | 薪酬核算确认/撤销权限 | | hrm:salary:delete | 薪酬核算/发放删除权限 | | hrm:salary:pay | 薪资发放/撤销权限 | ## 八、注意事项 1. 删除操作需要二次确认,避免误删 2. 薪酬核算确认后不可直接删除,需先撤销确认 3. 薪资发放后不可直接删除台账,需先撤销所有已发放明细 4. 撤销操作会级联更新关联数据(如发放明细、核算状态等) 5. 删除操作需刷新列表数据