编辑 | blame | 历史 | 原始文档

HRM 模块删除接口补全

概述

为 HRM 模块中缺失删除接口的 Controller 补全删除功能,主要涉及员工相关子模块(教育经历、工作经历、紧急联系人)以及薪资模块的撤销/删除功能。

一、员工模块删除接口

涉及页面

  • 员工详情页(教育经历、工作经历、紧急联系人模块)

API

方法 路径 说明
DELETE /hrm/employee/education/delete 删除教育经历
DELETE /hrm/employee/work-history/delete 删除工作经历
DELETE /hrm/employee/emergency-contact/delete 删除紧急联系人

请求参数:

参数 类型 必填 说明
id Long 记录ID

响应:

{
  "code": 200,
  "data": true,
  "msg": "操作成功"
}

前端修改点

1. 教育经历删除按钮

<el-button type="danger" size="small" @click="handleDeleteEducation(row)">
  删除
</el-button>

2. 工作经历删除按钮

<el-button type="danger" size="small" @click="handleDeleteWorkHistory(row)">
  删除
</el-button>

3. 紧急联系人删除按钮

<el-button type="danger" size="small" @click="handleDeleteEmergencyContact(row)">
  删除
</el-button>

4. 方法实现

// 删除教育经历
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 接口定义

// 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 删除薪酬核算记录(仅待确认状态)

撤销确认请求:

{
  "ids": [1, 2, 3]
}

删除请求参数:

参数 类型 必填 说明
id Long 核算记录ID

撤销确认逻辑说明:

  1. 仅已确认状态(status=10)的核算记录可以撤销
  2. 撤销后状态恢复为待确认(status=0)
  3. 同时删除关联的薪资发放明细
  4. 如果已发放则不允许撤销

删除逻辑说明:

  1. 仅待确认状态(status=0)的核算记录可以删除
  2. 已确认或已发放的记录不可删除

前端修改点

// 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 }
  });
}
<!-- 撤销确认按钮 -->
<el-button type="warning" size="small" @click="handleRevoke(row)"
           v-if="row.status === 10">
  撤销确认
</el-button>

<!-- 删除按钮 -->
<el-button type="danger" size="small" @click="handleDelete(row)"
           v-if="row.status === 0">
  删除
</el-button>
// 撤销确认
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 删除薪资发放台账(仅待发放状态)

撤销发放请求:

{
  "detailIds": [1, 2, 3]
}

删除请求参数:

参数 类型 必填 说明
id Long 发放台账ID

撤销发放逻辑说明:

  1. 仅已发放状态(status=10)的明细可以撤销
  2. 撤销后明细状态恢复为待发放(status=0)
  3. 同时将关联的核算记录恢复为已确认(status=10)
  4. 如果整个台账的所有明细都被撤销,台账状态也会恢复为待发放

删除台账逻辑说明:

  1. 仅待发放状态(status=0)的台账可以删除
  2. 如果存在已发放明细,需先撤销所有明细才能删除
  3. 删除台账会同时删除所有待发放明细

前端修改点

// 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 }
  });
}
<!-- 明细列表 - 撤销发放按钮 -->
<el-button type="warning" size="small" @click="handleRevokeDetail(row)"
           v-if="row.status === 10">
  撤销发放
</el-button>

<!-- 台账列表 - 删除按钮 -->
<el-button type="danger" size="small" @click="handleDelete(row)"
           v-if="row.status === 0">
  删除
</el-button>
// 撤销发放明细
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. 删除操作需刷新列表数据