1086 lines
29 KiB
TypeScript
1086 lines
29 KiB
TypeScript
import request from '@/utils/request';
|
||
|
||
// 出国申请查询参数类型
|
||
export interface OverseasApplicationQuery {
|
||
pageNum: number;
|
||
pageSize: number;
|
||
applicantName?: string;
|
||
department?: string;
|
||
purpose?: string;
|
||
destination?: string;
|
||
status?: string;
|
||
approvalLevel?: string;
|
||
currentApprover?: string;
|
||
applicantId?: number;
|
||
budgetMin?: number;
|
||
budgetMax?: number;
|
||
applyTimeBegin?: string;
|
||
applyTimeEnd?: string;
|
||
startDateBegin?: string;
|
||
startDateEnd?: string;
|
||
params?: Record<string, any>;
|
||
}
|
||
|
||
// 出国申请数据类型
|
||
export interface OverseasApplicationVO {
|
||
applicationId: number | string;
|
||
serialNumber?: string; // 编号
|
||
applicantId: number;
|
||
applicantName: string;
|
||
gender?: string; // 性别
|
||
birthDate?: string; // 出生日期
|
||
photo?: string; // 照片地址
|
||
idNumber?: string; // 身份证号
|
||
politicalStatus?: string; // 政治面貌
|
||
registeredAddress?: string; // 户籍所在地
|
||
department: string;
|
||
position?: string; // 职务
|
||
professionalTitle?: string; // 职称
|
||
administrativeLevel?: string; // 行政职级
|
||
personnelCategory?: string; // 人员类别代码
|
||
registrationUnit?: string; // 登记备案责任单位
|
||
unitLeaderSignature?: string; // 单位负责人签名
|
||
officePhone?: string; // 办公电话
|
||
mobilePhone?: string; // 移动电话
|
||
contactPhone: string;
|
||
documentName?: string; // 申领证件名称
|
||
documentNumber?: string; // 证件号码
|
||
destinationCountry?: string; // 前往国家
|
||
exitReason?: string; // 出境事由
|
||
visitRelationship?: string; // 探望对象姓名及与申请者关系
|
||
remarks?: string; // 备注
|
||
emergencyContact?: string; // 应急联系人及电话
|
||
signature?: string; // 手写签字
|
||
stampedRegistrationFilePath?: string; // 登记备案表盖章文件路径
|
||
stampedRegistrationFileName?: string; // 登记备案表盖章文件名
|
||
stampedFileUploadTime?: string; // 盖章文件上传时间
|
||
stampedFileUploadStatus?: string; // 盖章文件上传状态
|
||
stampedFileOssId?: number; // 盖章文件OSS ID
|
||
partyRetentionFilePath?: string; // 党籍保留附件文件路径
|
||
partyRetentionFileName?: string; // 党籍保留附件文件名
|
||
partyRetentionUploadTime?: string; // 党籍保留附件上传时间
|
||
partyRetentionUploadStatus?: string; // 党籍保留附件上传状态
|
||
partyRetentionFileOssId?: number; // 党籍保留附件OSS ID
|
||
purpose: string;
|
||
purposeDetail: string;
|
||
destination: string;
|
||
destinationCity?: string;
|
||
startDate: string;
|
||
endDate: string;
|
||
duration: number;
|
||
budget: number;
|
||
invitation?: string;
|
||
itinerary: string;
|
||
accommodationPlan?: string;
|
||
transportationPlan?: string;
|
||
status: string;
|
||
currentApprover?: string;
|
||
approvalLevel: string;
|
||
applyTime: string;
|
||
approvalTime?: string;
|
||
adminRemark?: string;
|
||
applicantRemark?: string;
|
||
createTime: string;
|
||
updateTime: string;
|
||
createBy: string;
|
||
updateBy: string;
|
||
// 显示字段
|
||
statusText: string;
|
||
purposeText: string;
|
||
approvalLevelText: string;
|
||
genderText?: string;
|
||
politicalStatusText?: string;
|
||
administrativeLevelText?: string;
|
||
personnelCategoryText?: string;
|
||
// 工作流相关字段
|
||
approvalStatus?: string; // 工作流审批状态:draft/waiting/finish/back/cancel
|
||
approvalStatusText?: string; // 工作流审批状态文本
|
||
taskId?: string; // 当前待办任务ID(用于审批跳转)
|
||
}
|
||
|
||
// 出国申请表单类型
|
||
export interface OverseasApplicationForm {
|
||
applicationId?: number | string;
|
||
serialNumber?: string; // 编号
|
||
applicantId?: number;
|
||
applicantName?: string;
|
||
gender?: string; // 性别
|
||
birthDate?: string; // 出生日期
|
||
photo?: string; // 照片地址
|
||
idNumber?: string; // 身份证号
|
||
politicalStatus?: string; // 政治面貌
|
||
registeredAddress?: string; // 户籍所在地
|
||
department?: string; // 所属部门/现工作部门
|
||
position?: string; // 职务
|
||
professionalTitle?: string; // 职称
|
||
administrativeLevel?: string; // 行政职级
|
||
personnelCategory?: string; // 人员类别代码
|
||
unitLeaderSignature?: string; // 单位负责人签名
|
||
officePhone?: string; // 办公电话
|
||
mobilePhone?: string; // 移动电话
|
||
contactPhone?: string; // 联系电话(保留兼容性)
|
||
documentName?: string; // 申领证件名称
|
||
documentNumber?: string; // 证件号码
|
||
destinationCountry?: string; // 前往国家
|
||
exitReason?: string; // 出境事由
|
||
visitRelationship?: string; // 探望对象姓名及与申请者关系
|
||
remarks?: string; // 备注
|
||
emergencyContact?: string; // 应急联系人及电话
|
||
signature?: string; // 手写签字(base64格式)
|
||
stampedRegistrationFilePath?: string; // 登记备案表盖章文件路径
|
||
stampedRegistrationFileName?: string; // 登记备案表盖章文件名
|
||
stampedFileUploadTime?: string; // 盖章文件上传时间
|
||
stampedFileUploadStatus?: string; // 盖章文件上传状态:0-未上传,1-已上传
|
||
partyRetentionFilePath?: string; // 党籍保留附件文件路径
|
||
partyRetentionFileName?: string; // 党籍保留附件文件名
|
||
partyRetentionUploadTime?: string; // 党籍保留附件上传时间
|
||
partyRetentionUploadStatus?: string; // 党籍保留附件上传状态:0-未上传,1-已上传
|
||
purpose: string;
|
||
purposeDetail: string;
|
||
destination: string;
|
||
destinationCity?: string; // 目的地城市
|
||
startDate: string;
|
||
endDate: string;
|
||
duration?: number; // 自动计算
|
||
budget: number;
|
||
invitation?: string;
|
||
itinerary: string;
|
||
accommodationPlan?: string;
|
||
transportationPlan?: string;
|
||
applicantRemark?: string;
|
||
// 工作流相关字段
|
||
approvalStatus?: string; // 工作流审批状态
|
||
}
|
||
|
||
// 审批请求类型(支持标准工作流模式)
|
||
export interface ApprovalRequest {
|
||
applicationId: number | string;
|
||
approvalStatus: string;
|
||
approvalOpinion?: string;
|
||
approvalSignature?: string; // 审批签字(base64图片)
|
||
taskId?: string; // 🔴 新增:工作流任务ID,支持标准工作流模式
|
||
}
|
||
|
||
// 出国记录查询参数类型
|
||
export interface OverseasRecordQuery {
|
||
pageNum: number;
|
||
pageSize: number;
|
||
applicantName?: string;
|
||
department?: string;
|
||
purpose?: string;
|
||
destination?: string;
|
||
completionStatus?: string;
|
||
applicantId?: number;
|
||
applicationId?: number;
|
||
actualStartDateBegin?: string;
|
||
actualStartDateEnd?: string;
|
||
actualEndDateBegin?: string;
|
||
actualEndDateEnd?: string;
|
||
params?: Record<string, any>;
|
||
}
|
||
|
||
// 出国记录数据类型
|
||
export interface OverseasRecordVO {
|
||
recordId: number | string;
|
||
applicationId: number;
|
||
applicantId: number;
|
||
applicantName: string;
|
||
department: string;
|
||
position: string;
|
||
positionText?: string; // 职务文本(用于显示)
|
||
contactPhone: string;
|
||
contactEmail: string;
|
||
purpose: string;
|
||
purposeDetail: string;
|
||
destination: string;
|
||
destinationCity: string;
|
||
actualStartDate: string;
|
||
actualEndDate: string;
|
||
actualDuration: number;
|
||
actualBudget: number;
|
||
invitation: string;
|
||
itinerary: string;
|
||
accommodationPlan: string;
|
||
transportationPlan: string;
|
||
completionStatus: string;
|
||
achievement: string;
|
||
reportContent: string;
|
||
certificatePath: string;
|
||
createTime: string;
|
||
updateTime: string;
|
||
createBy: string;
|
||
updateBy: string;
|
||
// 显示字段
|
||
purposeText: string;
|
||
status?: string; // 申请状态(来自申请表)
|
||
statusText?: string; // 申请状态文本(来自申请表)
|
||
completionStatusText: string;
|
||
// 来自申请表的扩展字段
|
||
gender?: string;
|
||
genderText?: string;
|
||
birthDate?: string;
|
||
politicalStatus?: string;
|
||
politicalStatusText?: string;
|
||
professionalTitle?: string;
|
||
documentName?: string;
|
||
documentNumber?: string;
|
||
mobilePhone?: string;
|
||
destinationCountry?: string;
|
||
exitReason?: string;
|
||
emergencyContact?: string;
|
||
remarks?: string;
|
||
}
|
||
|
||
// 出国记录表单类型
|
||
export interface OverseasRecordForm {
|
||
recordId?: number | string;
|
||
applicationId: number;
|
||
applicantId?: number;
|
||
applicantName?: string;
|
||
department?: string;
|
||
position?: string;
|
||
contactPhone?: string;
|
||
contactEmail?: string;
|
||
purpose?: string;
|
||
purposeDetail?: string;
|
||
destination?: string;
|
||
destinationCity?: string;
|
||
actualStartDate: string;
|
||
actualEndDate: string;
|
||
actualDuration?: number;
|
||
actualBudget: number;
|
||
completionStatus: string;
|
||
achievement?: string;
|
||
reportContent?: string;
|
||
certificatePath?: string;
|
||
}
|
||
|
||
// 完成状态更新请求类型
|
||
export interface CompletionRequest {
|
||
recordId: number | string;
|
||
completionStatus: string;
|
||
achievement?: string;
|
||
reportContent?: string;
|
||
}
|
||
|
||
// 出国审批记录查询参数类型
|
||
export interface OverseasApprovalQuery {
|
||
pageNum: number;
|
||
pageSize: number;
|
||
applicationId?: number;
|
||
approverId?: number;
|
||
approverName?: string;
|
||
approvalLevel?: string;
|
||
approvalStatus?: string;
|
||
approvalTimeBegin?: string;
|
||
approvalTimeEnd?: string;
|
||
applicantName?: string;
|
||
department?: string;
|
||
destination?: string;
|
||
params?: Record<string, any>;
|
||
}
|
||
|
||
// 出国审批记录数据类型
|
||
export interface OverseasApprovalVO {
|
||
approvalId: number | string;
|
||
applicationId: number;
|
||
approverId: number;
|
||
approverName: string;
|
||
approvalLevel: string;
|
||
approvalStatus: string;
|
||
approvalOpinion: string;
|
||
approvalTime: string;
|
||
createTime: string;
|
||
updateTime: string;
|
||
createBy: string;
|
||
updateBy: string;
|
||
// ==================== 申请信息相关字段 ====================
|
||
applicantId: number;
|
||
applicantName: string;
|
||
department: string;
|
||
purpose: string;
|
||
destination: string;
|
||
startDate: string;
|
||
endDate: string;
|
||
duration: number;
|
||
// 显示字段
|
||
approvalLevelText: string;
|
||
approvalStatusText: string;
|
||
purposeText: string;
|
||
}
|
||
|
||
// ==================== 出国申请相关API ====================
|
||
|
||
// 查询出国申请列表
|
||
export function listOverseasApplication(query: OverseasApplicationQuery) {
|
||
return request({
|
||
url: '/rs/overseas/application/list',
|
||
method: 'get',
|
||
params: query
|
||
});
|
||
}
|
||
|
||
// 查询我的出国申请列表
|
||
export function listMyOverseasApplication(query: OverseasApplicationQuery) {
|
||
return request({
|
||
url: '/rs/overseas/application/my/list',
|
||
method: 'get',
|
||
params: query
|
||
});
|
||
}
|
||
|
||
// 查询当前用户的待审批申请列表(五级审批模式)
|
||
export function listPendingOverseasApplication() {
|
||
return request({
|
||
url: '/rs/overseas/application/pending/list',
|
||
method: 'get'
|
||
});
|
||
}
|
||
|
||
// ========================================
|
||
// 🚨 标准化改造:删除自定义待审批查询API
|
||
//
|
||
// 原因:出国申请工作流应使用标准工作流模式
|
||
// 用户应通过工作流API pageByTaskWait() 获取待办任务
|
||
// 而不是调用自定义的业务API
|
||
//
|
||
// 删除的API:listPendingOverseasApplication()
|
||
//
|
||
// 标准工作流模式:
|
||
// 1. 导入工作流API:import { pageByTaskWait } from '@/api/workflow/task'
|
||
// 2. 调用标准API:pageByTaskWait(queryParams)
|
||
// 3. 获得待办任务列表,包含businessId
|
||
// 4. 点击办理跳转:/rs/overseas/application/edit?taskId=xxx&applicationId=businessId
|
||
// ========================================
|
||
|
||
// 根据状态查询申请列表
|
||
export function listOverseasApplicationByStatus(status: string) {
|
||
return request({
|
||
url: `/rs/overseas/application/status/${status}`,
|
||
method: 'get'
|
||
});
|
||
}
|
||
|
||
// 查询出国申请详细
|
||
export function getOverseasApplication(applicationId: string | number) {
|
||
return request({
|
||
url: `/rs/overseas/application/detail/${applicationId}`,
|
||
method: 'get'
|
||
});
|
||
}
|
||
|
||
// 新增出国申请
|
||
export function addOverseasApplication(data: OverseasApplicationForm) {
|
||
return request({
|
||
url: '/rs/overseas/application',
|
||
method: 'post',
|
||
data: data
|
||
});
|
||
}
|
||
|
||
// 修改出国申请
|
||
export function updateOverseasApplication(data: OverseasApplicationForm) {
|
||
return request({
|
||
url: '/rs/overseas/application',
|
||
method: 'put',
|
||
data: data
|
||
});
|
||
}
|
||
|
||
// 提交出国申请
|
||
export function submitOverseasApplication(applicationId: string | number) {
|
||
return request({
|
||
url: `/rs/overseas/application/submit/${applicationId}`,
|
||
method: 'put'
|
||
});
|
||
}
|
||
|
||
// 重新提交被拒绝的出国申请
|
||
export function resubmitOverseasApplication(applicationId: string | number, data: OverseasApplicationForm) {
|
||
return request({
|
||
url: `/rs/overseas/application/resubmit/${applicationId}`,
|
||
method: 'put',
|
||
data: data
|
||
});
|
||
}
|
||
|
||
// 校验出国申请前置条件
|
||
export function validateApplicationPrerequisites(politicalStatus?: string, duration?: number) {
|
||
return request({
|
||
url: '/rs/overseas/application/validatePrerequisites',
|
||
method: 'get',
|
||
params: {
|
||
politicalStatus,
|
||
duration
|
||
}
|
||
});
|
||
}
|
||
|
||
// 取消出国申请
|
||
export function cancelOverseasApplication(applicationId: string | number, reason?: string) {
|
||
return request({
|
||
url: `/rs/overseas/application/cancel/${applicationId}`,
|
||
method: 'put',
|
||
params: { reason }
|
||
});
|
||
}
|
||
|
||
// 审批出国申请
|
||
export function approveOverseasApplication(data: ApprovalRequest) {
|
||
return request({
|
||
url: '/rs/overseas/application/approve',
|
||
method: 'post',
|
||
data: data
|
||
});
|
||
}
|
||
|
||
// 删除出国申请
|
||
export function delOverseasApplication(applicationId: string | number | Array<string | number>) {
|
||
return request({
|
||
url: `/rs/overseas/application/${typeof applicationId === 'object' ? applicationId.join(',') : applicationId}`,
|
||
method: 'delete'
|
||
});
|
||
}
|
||
|
||
// 导出出国申请
|
||
export function exportOverseasApplication(query: OverseasApplicationQuery) {
|
||
return request({
|
||
url: '/rs/overseas/application/export',
|
||
method: 'post',
|
||
data: query
|
||
});
|
||
}
|
||
|
||
// ==================== 出国记录相关API ====================
|
||
|
||
// 查询出国记录列表
|
||
export function listOverseasRecord(query: OverseasRecordQuery) {
|
||
return request({
|
||
url: '/rs/overseas/record/list',
|
||
method: 'get',
|
||
params: query
|
||
});
|
||
}
|
||
|
||
// 查询我的出国记录列表
|
||
export function listMyOverseasRecord(query: OverseasRecordQuery) {
|
||
return request({
|
||
url: '/rs/overseas/record/my/list',
|
||
method: 'get',
|
||
params: query
|
||
});
|
||
}
|
||
|
||
// 根据申请ID查询出国记录
|
||
export function getOverseasRecordByApplication(applicationId: string | number) {
|
||
return request({
|
||
url: `/rs/overseas/record/application/${applicationId}`,
|
||
method: 'get'
|
||
});
|
||
}
|
||
|
||
// 查询出国记录详细
|
||
export function getOverseasRecord(recordId: string | number) {
|
||
return request({
|
||
url: `/rs/overseas/record/${recordId}`,
|
||
method: 'get'
|
||
});
|
||
}
|
||
|
||
// 新增出国记录
|
||
export function addOverseasRecord(data: OverseasRecordForm) {
|
||
return request({
|
||
url: '/rs/overseas/record',
|
||
method: 'post',
|
||
data: data
|
||
});
|
||
}
|
||
|
||
// 修改出国记录
|
||
export function updateOverseasRecord(data: OverseasRecordForm) {
|
||
return request({
|
||
url: '/rs/overseas/record',
|
||
method: 'put',
|
||
data: data
|
||
});
|
||
}
|
||
|
||
// 基于申请信息创建出国记录
|
||
export function createOverseasRecordFromApplication(applicationId: string | number) {
|
||
return request({
|
||
url: `/rs/overseas/record/create/${applicationId}`,
|
||
method: 'post'
|
||
});
|
||
}
|
||
|
||
// 更新出国记录完成状态
|
||
export function updateOverseasRecordCompletion(data: CompletionRequest) {
|
||
return request({
|
||
url: '/rs/overseas/record/complete',
|
||
method: 'put',
|
||
data: data
|
||
});
|
||
}
|
||
|
||
// 删除出国记录
|
||
export function delOverseasRecord(recordId: string | number | Array<string | number>) {
|
||
return request({
|
||
url: `/rs/overseas/record/${typeof recordId === 'object' ? recordId.join(',') : recordId}`,
|
||
method: 'delete'
|
||
});
|
||
}
|
||
|
||
// 导出出国记录
|
||
export function exportOverseasRecord(query: OverseasRecordQuery) {
|
||
return request({
|
||
url: '/rs/overseas/record/export',
|
||
method: 'post',
|
||
data: query
|
||
});
|
||
}
|
||
|
||
// 初始化出国记录测试数据(临时接口)
|
||
export function initOverseasRecordTestData() {
|
||
return request({
|
||
url: '/rs/overseas/record/initTestData',
|
||
method: 'post'
|
||
});
|
||
}
|
||
|
||
// ==================== 出国审批记录相关API ====================
|
||
|
||
// 查询出国审批记录列表
|
||
export function listOverseasApproval(query: OverseasApprovalQuery) {
|
||
return request({
|
||
url: '/rs/overseas/approval/list',
|
||
method: 'get',
|
||
params: query
|
||
});
|
||
}
|
||
|
||
// 查询我的审批记录列表
|
||
export function listMyOverseasApproval(query: OverseasApprovalQuery) {
|
||
return request({
|
||
url: '/rs/overseas/approval/my/list',
|
||
method: 'get',
|
||
params: query
|
||
});
|
||
}
|
||
|
||
// 根据申请ID查询审批记录列表
|
||
export function getOverseasApprovalByApplication(applicationId: string | number) {
|
||
return request({
|
||
url: `/rs/overseas/approval/application/${applicationId}`,
|
||
method: 'get'
|
||
});
|
||
}
|
||
|
||
// 查询出国审批记录详细
|
||
export function getOverseasApproval(approvalId: string | number) {
|
||
return request({
|
||
url: `/rs/overseas/approval/${approvalId}`,
|
||
method: 'get'
|
||
});
|
||
}
|
||
|
||
// 导出出国审批记录
|
||
export function exportOverseasApproval(query: OverseasApprovalQuery) {
|
||
return request({
|
||
url: '/rs/overseas/approval/export',
|
||
method: 'post',
|
||
data: query
|
||
});
|
||
}
|
||
|
||
// 获取出国申请审批历史
|
||
export function getOverseasApprovalHistory(applicationId: string | number) {
|
||
return request({
|
||
url: `/rs/overseas/application/approval/history/${applicationId}`,
|
||
method: 'get'
|
||
});
|
||
}
|
||
|
||
// 新增出国审批记录
|
||
export function addOverseasApproval(data: any) {
|
||
return request({
|
||
url: '/rs/overseas/approval',
|
||
method: 'post',
|
||
data: data
|
||
});
|
||
}
|
||
|
||
// 修改出国审批记录
|
||
export function updateOverseasApproval(data: any) {
|
||
return request({
|
||
url: '/rs/overseas/approval',
|
||
method: 'put',
|
||
data: data
|
||
});
|
||
}
|
||
|
||
// 删除出国审批记录
|
||
export function delOverseasApproval(approvalIds: string | number | Array<string | number>) {
|
||
return request({
|
||
url: `/rs/overseas/approval/${approvalIds}`,
|
||
method: 'delete'
|
||
});
|
||
}
|
||
|
||
// 修复审批记录数据
|
||
export function fixOverseasApprovalData() {
|
||
return request({
|
||
url: '/rs/overseas/approval/fixData',
|
||
method: 'post'
|
||
});
|
||
}
|
||
|
||
// 修复已审批通过但未创建记录的申请
|
||
export function fixApprovedOverseasRecords() {
|
||
return request({
|
||
url: '/rs/overseas/application/fix/records',
|
||
method: 'post'
|
||
});
|
||
}
|
||
|
||
// ==================== PDF生成相关接口 ====================
|
||
|
||
// 生成登记表请求参数类型
|
||
export interface GenerateRegistrationFormRequest {
|
||
applicationId: number;
|
||
documentNumber?: string;
|
||
format?: string;
|
||
}
|
||
|
||
// 登记表生成响应类型
|
||
export interface RegistrationFormResponse {
|
||
documentId: string;
|
||
fileName: string;
|
||
downloadUrl: string;
|
||
previewUrl: string;
|
||
fileSize: number;
|
||
generateTime: string;
|
||
documentNumber: string;
|
||
applicationId: number;
|
||
}
|
||
|
||
// 生成出国申请登记表PDF
|
||
export function generateRegistrationForm(data: GenerateRegistrationFormRequest) {
|
||
return request({
|
||
url: '/rs/overseas/application/generateRegistrationForm',
|
||
method: 'post',
|
||
data: data
|
||
});
|
||
}
|
||
|
||
// 下载生成的PDF文档
|
||
export function downloadRegistrationFormPdf(documentId: string) {
|
||
return request({
|
||
url: `/rs/overseas/application/downloadPdf/${documentId}`,
|
||
method: 'get',
|
||
responseType: 'blob'
|
||
});
|
||
}
|
||
|
||
// 预览生成的PDF文档
|
||
export function previewRegistrationFormPdf(documentId: string) {
|
||
return request({
|
||
url: `/rs/overseas/application/previewPdf/${documentId}`,
|
||
method: 'get',
|
||
responseType: 'blob'
|
||
});
|
||
}
|
||
|
||
// 下载登记备案附件模板
|
||
export function downloadRegistrationTemplate() {
|
||
return request({
|
||
url: '/rs/overseas/application/downloadRegistrationTemplate',
|
||
method: 'get',
|
||
responseType: 'blob'
|
||
});
|
||
}
|
||
|
||
// 下载保留党籍申请模板
|
||
export function downloadPartyMembershipTemplate() {
|
||
return request({
|
||
url: '/rs/overseas/application/downloadPartyMembershipTemplate',
|
||
method: 'get',
|
||
responseType: 'blob'
|
||
});
|
||
}
|
||
|
||
// ==================== 出国申请附件相关API ====================
|
||
|
||
// 附件数据类型
|
||
export interface OverseasAttachmentVO {
|
||
attachmentId: number | string;
|
||
applicationId: number;
|
||
attachmentTitle: string;
|
||
attachmentContent?: string;
|
||
fileName: string;
|
||
fileOriginalName: string;
|
||
filePath: string;
|
||
fileSize: number;
|
||
fileSizeFormatted?: string;
|
||
fileType?: string;
|
||
mimeType?: string;
|
||
uploadTime?: string;
|
||
uploadUserId?: number;
|
||
uploadUserName?: string;
|
||
createTime?: string;
|
||
updateTime?: string;
|
||
}
|
||
|
||
// 附件BO
|
||
export interface OverseasAttachmentBo {
|
||
attachmentId?: number | string;
|
||
applicationId: number;
|
||
attachmentTitle: string;
|
||
attachmentContent?: string;
|
||
}
|
||
|
||
// 查询出国申请的附件列表
|
||
export function listOverseasAttachments(applicationId: string | number) {
|
||
return request({
|
||
url: `/rs/overseas/attachment/list/${applicationId}`,
|
||
method: 'get'
|
||
});
|
||
}
|
||
|
||
// 查询附件详情
|
||
export function getOverseasAttachment(attachmentId: string | number) {
|
||
return request({
|
||
url: `/rs/overseas/attachment/${attachmentId}`,
|
||
method: 'get'
|
||
});
|
||
}
|
||
|
||
// 上传附件
|
||
export function uploadOverseasAttachment(data: FormData) {
|
||
return request({
|
||
url: '/rs/overseas/attachment/upload',
|
||
method: 'post',
|
||
headers: {
|
||
'Content-Type': 'multipart/form-data'
|
||
},
|
||
data: data
|
||
});
|
||
}
|
||
|
||
// 更新附件信息(标题和内容)
|
||
export function updateOverseasAttachment(data: OverseasAttachmentBo) {
|
||
return request({
|
||
url: '/rs/overseas/attachment',
|
||
method: 'put',
|
||
data: data
|
||
});
|
||
}
|
||
|
||
// 删除附件
|
||
export function deleteOverseasAttachment(attachmentId: string | number) {
|
||
return request({
|
||
url: `/rs/overseas/attachment/${attachmentId}`,
|
||
method: 'delete'
|
||
});
|
||
}
|
||
|
||
// 批量删除附件
|
||
export function deleteOverseasAttachments(attachmentIds: Array<string | number>) {
|
||
return request({
|
||
url: '/rs/overseas/attachment/batch',
|
||
method: 'delete',
|
||
data: attachmentIds
|
||
});
|
||
}
|
||
|
||
// ==================== 出国行程变更相关API ====================
|
||
|
||
// 行程变更查询参数类型
|
||
export interface ItineraryChangeQuery {
|
||
pageNum: number;
|
||
pageSize: number;
|
||
applicantName?: string;
|
||
destination?: string;
|
||
status?: string;
|
||
params?: Record<string, any>;
|
||
}
|
||
|
||
// 行程变更数据类型
|
||
export interface ItineraryChangeVO {
|
||
changeId: number | string;
|
||
recordId: number;
|
||
applicationId?: number;
|
||
applicantName: string;
|
||
gender?: string;
|
||
birthDate?: string;
|
||
politicalStatus?: string;
|
||
professionalTitle?: string;
|
||
position?: string;
|
||
documentName?: string;
|
||
documentNumber?: string;
|
||
department: string;
|
||
originalDestination: string;
|
||
originalDestinationCity?: string;
|
||
originalExitReason: string;
|
||
originalStartDate: string;
|
||
originalEndDate: string;
|
||
originalDuration: number;
|
||
originalItinerary: string;
|
||
changeType: string;
|
||
newDestination?: string;
|
||
newDestinationCity?: string;
|
||
newExitReason?: string;
|
||
newStartDate?: string;
|
||
newEndDate?: string;
|
||
newDuration?: number;
|
||
newItinerary?: string;
|
||
changeReason: string;
|
||
remark?: string;
|
||
status: string;
|
||
statusText: string;
|
||
approvalOpinion?: string;
|
||
approvalBy?: number;
|
||
approvalByName?: string;
|
||
approvalTime?: string;
|
||
createTime: string;
|
||
updateTime?: string;
|
||
createBy: string;
|
||
updateBy: string;
|
||
}
|
||
|
||
// 行程变更表单类型
|
||
export interface ItineraryChangeForm {
|
||
changeId?: number | string;
|
||
recordId: number; // 关联出国记录ID(必填)
|
||
applicationId: number;
|
||
applicantId: number; // 申请人ID(必填)
|
||
applicantName?: string;
|
||
gender?: string;
|
||
birthDate?: string;
|
||
politicalStatus?: string;
|
||
professionalTitle?: string;
|
||
position?: string;
|
||
documentName?: string;
|
||
documentNumber?: string;
|
||
department?: string;
|
||
originalDestination?: string;
|
||
originalDestinationCity?: string;
|
||
originalExitReason?: string;
|
||
originalStartDate?: string;
|
||
originalEndDate?: string;
|
||
originalDuration?: number;
|
||
originalItinerary?: string;
|
||
changeType: string;
|
||
newDestination?: string;
|
||
newDestinationCity?: string;
|
||
newExitReason?: string;
|
||
newStartDate?: string;
|
||
newEndDate?: string;
|
||
newDuration?: number;
|
||
newItinerary?: string;
|
||
changeReason: string;
|
||
remark?: string;
|
||
}
|
||
|
||
// 行程变更审批请求类型
|
||
export interface ItineraryChangeApprovalRequest {
|
||
changeId: number | string;
|
||
approved: boolean; // true=通过,false=拒绝
|
||
opinion?: string; // 审批意见
|
||
signature?: string; // 审批签字(base64图片)
|
||
}
|
||
|
||
// 查询行程变更列表
|
||
export function listItineraryChange(query: ItineraryChangeQuery) {
|
||
return request({
|
||
url: '/rs/itinerary/change/list',
|
||
method: 'get',
|
||
params: query
|
||
});
|
||
}
|
||
|
||
// 查询我的变更记录列表(只返回已通过的变更申请)
|
||
export function listMyItineraryChange(query: ItineraryChangeQuery) {
|
||
return request({
|
||
url: '/rs/itinerary/change/my/list',
|
||
method: 'get',
|
||
params: query
|
||
});
|
||
}
|
||
|
||
// 查询待审批的行程变更列表
|
||
export function listPendingItineraryChange(query: ItineraryChangeQuery) {
|
||
return request({
|
||
url: '/rs/itinerary/change/pending/list',
|
||
method: 'get',
|
||
params: query
|
||
});
|
||
}
|
||
|
||
// 查询行程变更详细
|
||
export function getItineraryChange(changeId: string | number) {
|
||
return request({
|
||
url: `/rs/itinerary/change/${changeId}`,
|
||
method: 'get'
|
||
});
|
||
}
|
||
|
||
// 新增行程变更
|
||
export function addItineraryChange(data: ItineraryChangeForm) {
|
||
return request({
|
||
url: '/rs/itinerary/change',
|
||
method: 'post',
|
||
data: data
|
||
});
|
||
}
|
||
|
||
// 修改行程变更(重新提交)
|
||
export function updateItineraryChange(data: ItineraryChangeForm) {
|
||
return request({
|
||
url: '/rs/itinerary/change',
|
||
method: 'put',
|
||
data: data
|
||
});
|
||
}
|
||
|
||
// 删除行程变更
|
||
export function delItineraryChange(changeId: string | number | Array<string | number>) {
|
||
return request({
|
||
url: `/rs/itinerary/change/${typeof changeId === 'object' ? changeId.join(',') : changeId}`,
|
||
method: 'delete'
|
||
});
|
||
}
|
||
|
||
// 撤回行程变更
|
||
export function cancelItineraryChange(changeId: string | number, reason?: string) {
|
||
return request({
|
||
url: `/rs/itinerary/change/cancel/${changeId}`,
|
||
method: 'put',
|
||
params: { reason }
|
||
});
|
||
}
|
||
|
||
// 审批行程变更
|
||
export function approveItineraryChange(data: ItineraryChangeApprovalRequest) {
|
||
return request({
|
||
url: '/rs/itinerary/change/approve',
|
||
method: 'put',
|
||
data: data
|
||
});
|
||
}
|
||
|
||
// 导出行程变更列表
|
||
export function exportItineraryChange(query: ItineraryChangeQuery) {
|
||
return request({
|
||
url: '/rs/itinerary/change/export',
|
||
method: 'post',
|
||
data: query
|
||
});
|
||
}
|
||
|
||
// 获取可用的出国记录列表(用于选择原出国申请)
|
||
export function getAvailableOverseasRecords() {
|
||
return request({
|
||
url: '/rs/itinerary/change/available-records',
|
||
method: 'get'
|
||
});
|
||
}
|
||
|
||
// 获取已审批通过的出国申请列表(用于行程变更申请选择)
|
||
export function getApprovedOverseasApplications() {
|
||
return request({
|
||
url: '/rs/overseas/application/status/1',
|
||
method: 'get'
|
||
});
|
||
}
|
||
|
||
// 根据记录ID查询出国记录详情(用于显示原申请信息)
|
||
export function getOverseasRecordForChange(recordId: string | number) {
|
||
return request({
|
||
url: `/rs/itinerary/change/record/${recordId}`,
|
||
method: 'get'
|
||
});
|
||
}
|
||
|
||
// 查询某个记录的变更历史
|
||
export function getItineraryChangeHistory(recordId: string | number) {
|
||
return request({
|
||
url: `/rs/itinerary/change/record/${recordId}/history`,
|
||
method: 'get'
|
||
});
|
||
}
|
||
|
||
// ==================== 动态审批人获取API ====================
|
||
|
||
/**
|
||
* 根据申请人ID获取部门审批人ID
|
||
* @param applicantId 申请人ID
|
||
*/
|
||
export function getDepartmentApproverId(applicantId: string | number): Promise<{ data: number }> {
|
||
return request({
|
||
url: `/rs/overseas/application/getDepartmentApproverId/${applicantId}`,
|
||
method: 'get'
|
||
});
|
||
}
|
||
|
||
/**
|
||
* 根据申请人ID获取人事处审批人列表
|
||
* @param applicantId 申请人ID
|
||
*/
|
||
export function getHrApprovers(applicantId: string | number): Promise<{ data: number[] }> {
|
||
return request({
|
||
url: `/rs/overseas/application/getHrApprovers/${applicantId}`,
|
||
method: 'get'
|
||
});
|
||
}
|
||
|
||
// ==================== 出国申请进度查询(监控)相关API ====================
|
||
|
||
// 审批监控查询参数类型
|
||
export interface OverseasMonitorQuery {
|
||
pageNum: number;
|
||
pageSize: number;
|
||
applicantName?: string;
|
||
department?: string;
|
||
destination?: string;
|
||
approvalLevel?: string;
|
||
currentApprover?: string;
|
||
status?: string;
|
||
applyTimeStart?: string;
|
||
applyTimeEnd?: string;
|
||
}
|
||
|
||
// 查询待审批列表(监控)
|
||
export function getPendingList(query: OverseasMonitorQuery) {
|
||
return request({
|
||
url: '/rs/overseas/monitor/pending/list',
|
||
method: 'get',
|
||
params: query
|
||
});
|
||
}
|
||
|
||
// 查询已完成审批列表(监控)
|
||
export function getCompletedList(query: OverseasMonitorQuery) {
|
||
return request({
|
||
url: '/rs/overseas/monitor/completed/list',
|
||
method: 'get',
|
||
params: query
|
||
});
|
||
}
|
||
|
||
// 查询申请详情(监控)
|
||
export function getDetail(applicationId: string | number) {
|
||
return request({
|
||
url: `/rs/overseas/monitor/detail/${applicationId}`,
|
||
method: 'get'
|
||
});
|
||
}
|
||
|
||
// 下载审批表PDF
|
||
export function downloadApprovalPdf(applicationId: string | number) {
|
||
return request({
|
||
url: `/rs/overseas/monitor/downloadApprovalPdf/${applicationId}`,
|
||
method: 'get',
|
||
responseType: 'blob'
|
||
});
|
||
}
|