Files
hzdyjs/web/src/api/rs/training.ts
T

429 lines
11 KiB
TypeScript

import request from '@/utils/request';
// 培训课程查询参数类型
export interface CourseQuery {
pageNum: number;
pageSize: number;
title?: string;
category?: string;
status?: string;
params?: Record<string, any>;
}
// 培训课程数据类型
export interface CourseVO {
courseId: number | string;
title: string;
category: string;
description: string;
startTime: string;
endTime: string;
duration: number;
location: string;
maxParticipants: number;
currentParticipants: number;
status: string;
applicationCount: number;
createTime: string;
updateTime: string;
createBy: string;
updateBy: string;
remark: string;
}
// 培训课程表单类型
export interface CourseForm {
courseId?: number | string;
title: string;
category: string;
description?: string;
startTime: string;
endTime: string;
duration: number;
location?: string;
maxParticipants?: number;
status?: string;
remark?: string;
}
// 培训申请查询参数类型
export interface ApplicationQuery {
pageNum: number;
pageSize: number;
courseId?: number | string;
courseName?: string;
location?: string; // 培训地点
userId?: number | string;
userName?: string;
department?: string;
status?: string;
excludeStatus?: string; // 排除指定状态的数据
params?: Record<string, any>;
}
// 培训申请数据类型
export interface ApplicationVO {
applicationId: number | string;
courseId: number | string;
courseName: string;
userId: number | string;
userName: string;
department: string;
position?: string;
currentTitle?: string; // 现职称
currentPosition?: string; // 现岗位
workStartTime?: string; // 参加工作时间
phone?: string; // 联系电话
organizerUnit?: string; // 主办单位
trainingType?: string; // 培训类型
trainingFee?: number; // 培训费用
companions?: string; // 同行人员(JSON字符串)
trainingPurpose?: string; // 培训目的
reason?: string;
status: string;
applyTime: string;
currentApprover?: string;
location?: string;
duration?: number;
startTime?: string;
endTime?: string;
rejectTime?: string; // 拒绝时间
attachmentIds?: string; // 附件ID列表
createTime: string;
updateTime: string;
createBy: number; // 修正类型:string -> number
updateBy: number; // 修正类型:string -> number
remark: string;
}
// 培训申请表单类型
export interface ApplicationForm {
applicationId?: number | string;
courseId: number | string;
courseName?: string; // 自定义课程名称
userId?: number | string;
userName?: string;
department?: string;
position?: string;
currentTitle?: string; // 现职称
currentPosition?: string; // 现岗位
workStartTime?: string; // 参加工作时间
phone?: string; // 联系电话
organizerUnit?: string; // 主办单位
trainingType?: string; // 培训类型
trainingTypeOther?: string; // 其他培训类型描述
trainingFee?: number; // 培训费用
companions?: (string | number)[]; // 同行人员数组
trainingPurpose?: string; // 培训目的
reason?: string;
status?: string;
location?: string;
duration?: number;
startTime?: string;
endTime?: string;
attachmentIds?: string[]; // 附件ID数组
remark?: string;
}
// 培训记录查询参数类型
export interface RecordQuery {
pageNum: number;
pageSize: number;
courseId?: number | string;
courseName?: string;
userId?: number | string;
userName?: string;
location?: string;
department?: string;
completionStatus?: string;
includeApprovedApplications?: boolean; // 是否包含已通过审批的申请数据
params?: Record<string, any>;
}
// 培训记录数据类型
export interface RecordVO {
recordId: number | string;
applicationId?: number | string;
courseId: number | string;
courseName: string;
userId: number | string;
userName: string;
location?: string;
department?: string;
completionStatus: string;
score?: string;
duration?: number;
completionTime?: string;
certificatePath?: string;
certificateNumber?: string;
certificateFileName?: string;
feedback?: string;
createTime: string;
updateTime: string;
createBy: string;
updateBy: string;
remark: string;
}
// 培训记录表单类型
export interface RecordForm {
recordId?: number | string;
applicationId?: number | string;
courseId: number | string;
courseName?: string;
userId: number | string;
userName?: string;
completionStatus: string;
score?: string;
duration?: number;
completionTime?: string;
certificatePath?: string;
certificateNumber?: string;
certificateFileName?: string;
attachmentIds?: string;
feedback?: string;
remark?: string;
}
// ============================================
// 注意:培训课程模块已废弃 (2025-01-03)
// 课程信息现在直接存储在 rs_training_application 表中
// 以下培训课程相关接口已移除,请使用培训申请相关接口
// ============================================
// 查询培训申请列表
export function listTrainingApplication(query: ApplicationQuery) {
return request({
url: '/rs/training/application/list',
method: 'get',
params: query
});
}
// 查询待审批的培训申请列表(供审批人使用)
export function listPendingTrainingApplication(query: ApplicationQuery) {
return request({
url: '/rs/training/application/pending/list',
method: 'get',
params: query
});
}
// 获取培训申请详情
export function getTrainingApplication(applicationId: string | number) {
return request({
url: `/rs/training/application/${applicationId}`,
method: 'get'
});
}
// 提交培训申请
export function addTrainingApplication(data: ApplicationForm) {
return request({
url: '/rs/training/application',
method: 'post',
data: data
});
}
// 修改培训申请
export function updateTrainingApplication(data: ApplicationForm) {
return request({
url: '/rs/training/application',
method: 'put',
data: data
});
}
// 取消培训申请
export function cancelTrainingApplication(applicationId: string | number) {
return request({
url: `/rs/training/application/cancel/${applicationId}`,
method: 'put'
});
}
// 删除培训申请
export function deleteTrainingApplication(applicationId: string | number) {
return request({
url: `/rs/training/application/${applicationId}`,
method: 'delete'
});
}
// 导出培训申请
export function exportTrainingApplication(query: ApplicationQuery) {
return request({
url: '/rs/training/application/export',
method: 'get',
params: query,
responseType: 'blob'
});
}
// 获取我的培训申请列表
export function listMyTrainingApplication(query: ApplicationQuery) {
return request({
url: '/rs/training/application/my',
method: 'get',
params: query
});
}
// 查询培训记录列表
export function listTrainingRecord(query: RecordQuery) {
return request({
url: '/rs/training/record/list',
method: 'get',
params: query
});
}
// 获取我的培训记录列表
export function listMyTrainingRecord(query: RecordQuery) {
return request({
url: '/rs/training/record/my',
method: 'get',
params: query
});
}
// 获取培训记录详情
export function getTrainingRecord(recordId: string | number) {
return request({
url: `/rs/training/record/${recordId}`,
method: 'get'
});
}
// 新增培训记录
export function addTrainingRecord(data: RecordForm) {
return request({
url: '/rs/training/record',
method: 'post',
data: data
});
}
// 修改培训记录
export function updateTrainingRecord(data: RecordForm) {
return request({
url: '/rs/training/record',
method: 'put',
data: data
});
}
// 删除培训记录
export function delTrainingRecord(recordId: string | number | Array<string | number>) {
return request({
url: `/rs/training/record/${typeof recordId === 'object' ? recordId.join(',') : recordId}`,
method: 'delete'
});
}
// 上传培训证书
export function uploadCertificate(recordId: string | number, file: File) {
const formData = new FormData();
formData.append('file', file);
return request({
url: `/rs/training/record/certificate/${recordId}`,
method: 'post',
data: formData,
headers: {
'Content-Type': 'multipart/form-data'
}
});
}
// 导出培训记录
export function exportTrainingRecord(query: RecordQuery) {
return request({
url: '/rs/training/record/export',
method: 'get',
params: query,
responseType: 'blob'
});
}
// 提交培训申请(需要权限验证)
export function submitTrainingApplication(data: ApplicationForm) {
return request({
url: '/rs/training/application/submit',
method: 'post',
data: data
});
}
// 更新培训申请状态
export function updateApplicationStatus(applicationId: string | number, status: string, rejectReason?: string) {
return request({
url: `/rs/training/application/status/${applicationId}/${status}`,
method: 'put',
data: rejectReason ? { opinion: rejectReason } : {}
});
}
// 获取我的审批记录列表(当前用户审批过的所有申请)
export function listMyApprovalRecord(query: ApplicationQuery) {
return request({
url: '/rs/training/application/myApproval',
method: 'get',
params: query
});
}
// 导出审批记录
export function exportApprovalRecord(query: ApplicationQuery) {
return request({
url: '/rs/training/application/approval/export',
method: 'get',
params: query,
responseType: 'blob'
});
}
// 获取培训申请审批历史
export function getTrainingApprovalHistory(applicationId: string | number) {
return request({
url: `/rs/training/approval/history/${applicationId}`,
method: 'get'
});
}
// 获取所有审批记录列表(包括所有用户的所有申请记录)
export function listAllApprovalRecords(query: ApplicationQuery) {
return request({
url: '/rs/training/approval/list',
method: 'get',
params: query
});
}
// 处理审批(通过或拒绝)- 会创建审批记录
export function processTrainingApproval(applicationId: string | number, status: string, opinion?: string) {
return request({
url: `/rs/training/approval/process/${applicationId}/${status}`,
method: 'put',
data: opinion ? { opinion: opinion } : {}
});
}
// 重新提交被拒绝的培训申请
export function resubmitTrainingApplication(applicationId: string | number, data: ApplicationForm) {
return request({
url: `/rs/training/application/resubmit/${applicationId}`,
method: 'put',
data: data
});
}
// 更新培训记录的证书附件ID
export function updateRecordAttachments(recordId: string | number, data: { attachmentIds: string }) {
return request({
url: `/rs/training/record/attachments/${recordId}`,
method: 'put',
data: data
});
}