270 lines
7.1 KiB
TypeScript
270 lines
7.1 KiB
TypeScript
/**
|
|
* 财务审批记录管理 - API服务
|
|
*
|
|
* @author ruoyi
|
|
* @date 2025-01-28
|
|
*/
|
|
|
|
import request from '@/utils/request';
|
|
import type { AxiosPromise } from 'axios';
|
|
|
|
// 审批记录查询参数
|
|
export interface CwApprovalRecordQuery {
|
|
pageNum?: number;
|
|
pageSize?: number;
|
|
applicationNo?: string;
|
|
projectName?: string;
|
|
applicantName?: string;
|
|
approvalStatus?: string;
|
|
approverName?: string;
|
|
currentApprover?: string;
|
|
deptId?: string;
|
|
submitTimeBegin?: string;
|
|
submitTimeEnd?: string;
|
|
needApproval?: boolean;
|
|
}
|
|
|
|
// 审批记录VO
|
|
export interface CwApprovalRecordVO {
|
|
id: string | number;
|
|
applicationId: string | number;
|
|
applicationNo: string;
|
|
projectName: string;
|
|
applicantName: string;
|
|
deptName: string;
|
|
totalInvestment: number;
|
|
currentApproverName: string;
|
|
approvalStatus: string;
|
|
submitTime: string;
|
|
approvalTime?: string;
|
|
approverName?: string;
|
|
approvalComment?: string;
|
|
approvalResult?: string;
|
|
}
|
|
|
|
// 审批表单
|
|
export interface CwApprovalForm {
|
|
applicationId?: string | number;
|
|
applicationIds?: Array<string | number>;
|
|
approvalResult: string;
|
|
approvalComment: string;
|
|
nextApprover?: string | number;
|
|
}
|
|
|
|
// 审批历史记录
|
|
export interface CwApprovalHistoryVO {
|
|
id: string | number;
|
|
applicationId: string | number;
|
|
approverName: string;
|
|
approvalResult: string;
|
|
approvalComment: string;
|
|
approvalTime: string;
|
|
stepName: string;
|
|
stepOrder: number;
|
|
}
|
|
|
|
// 查询审批记录列表
|
|
export const listApprovalRecord = (query: CwApprovalRecordQuery): AxiosPromise<CwApprovalRecordVO[]> => {
|
|
return request({
|
|
url: '/cw/approval/list',
|
|
method: 'get',
|
|
params: query
|
|
});
|
|
};
|
|
|
|
// 查询审批记录详情
|
|
export const getApprovalRecord = (id: string | number): AxiosPromise<CwApprovalRecordVO> => {
|
|
return request({
|
|
url: '/cw/approval/' + id,
|
|
method: 'get'
|
|
});
|
|
};
|
|
|
|
// 审批申报(单个)
|
|
export const approveApplication = (data: CwApprovalForm) => {
|
|
// 🔧 修复:使用部门审批接口,将JSON数据转换为URL参数
|
|
const params = new URLSearchParams();
|
|
params.append('applicationId', String(data.applicationId || ''));
|
|
|
|
// 🔧 修复:正确处理审批结果映射
|
|
let approveAction = 'return'; // 默认为退回
|
|
if (data.approvalResult === 'approve') {
|
|
approveAction = 'approve';
|
|
} else if (data.approvalResult === 'return') {
|
|
approveAction = 'return';
|
|
}
|
|
|
|
params.append('approveAction', approveAction);
|
|
params.append('approveOpinion', data.approvalComment || '');
|
|
|
|
return request({
|
|
url: '/cw/approval/dept', // 🔧 修复:使用部门审批接口
|
|
method: 'post',
|
|
headers: {
|
|
'Content-Type': 'application/x-www-form-urlencoded'
|
|
},
|
|
data: params.toString()
|
|
});
|
|
};
|
|
|
|
// 批量审批申报
|
|
export const batchApproveApplication = async (data: CwApprovalForm) => {
|
|
// 🔧 修复:后端没有批量接口,改为逐个调用
|
|
if (!data.applicationIds || data.applicationIds.length === 0) {
|
|
throw new Error('未选择要审批的申报项目');
|
|
}
|
|
|
|
console.log('🔧 批量审批开始,项目数量:', data.applicationIds.length);
|
|
const results = [];
|
|
|
|
for (const applicationId of data.applicationIds) {
|
|
try {
|
|
const singleData = {
|
|
applicationId: applicationId,
|
|
approvalResult: data.approvalResult,
|
|
approvalComment: data.approvalComment,
|
|
nextApprover: data.nextApprover
|
|
};
|
|
|
|
console.log('🔧 处理项目ID:', applicationId);
|
|
const result = await approveApplication(singleData);
|
|
results.push({ applicationId, success: true, result });
|
|
} catch (error) {
|
|
console.error('🔧 项目审批失败,ID:', applicationId, 'Error:', error);
|
|
results.push({ applicationId, success: false, error });
|
|
}
|
|
}
|
|
|
|
// 检查是否有失败的项目
|
|
const failures = results.filter((r) => !r.success);
|
|
if (failures.length > 0) {
|
|
console.error('🔧 批量审批部分失败:', failures);
|
|
throw new Error(`批量审批完成,${failures.length}个项目审批失败`);
|
|
}
|
|
|
|
console.log('🔧 批量审批全部成功');
|
|
return { code: 200, msg: '批量审批成功', data: results };
|
|
};
|
|
|
|
// 获取审批历史记录
|
|
export const getApprovalHistory = (applicationId: string | number): AxiosPromise<CwApprovalHistoryVO[]> => {
|
|
return request({
|
|
url: '/cw/approval/byApplication/' + applicationId,
|
|
method: 'get'
|
|
});
|
|
};
|
|
|
|
// 获取当前用户待审批列表
|
|
export const getPendingApprovals = (query: CwApprovalRecordQuery): AxiosPromise<CwApprovalRecordVO[]> => {
|
|
return request({
|
|
url: '/cw/approval/pending',
|
|
method: 'get',
|
|
params: query
|
|
});
|
|
};
|
|
|
|
// 获取当前用户已审批列表
|
|
export const getMyApprovals = (query: CwApprovalRecordQuery): AxiosPromise<CwApprovalRecordVO[]> => {
|
|
return request({
|
|
url: '/cw/approval/my',
|
|
method: 'get',
|
|
params: query
|
|
});
|
|
};
|
|
|
|
// 获取部门审批列表
|
|
export const getDepartmentApprovals = (query: CwApprovalRecordQuery): AxiosPromise<CwApprovalRecordVO[]> => {
|
|
return request({
|
|
url: '/cw/approval/dept/pending',
|
|
method: 'get',
|
|
params: query
|
|
});
|
|
};
|
|
|
|
// 获取财务审批待审批列表
|
|
export const getFinancePendingApprovals = (query: CwApprovalRecordQuery): AxiosPromise<CwApprovalRecordVO[]> => {
|
|
return request({
|
|
url: '/cw/approval/finance/pending',
|
|
method: 'get',
|
|
params: query
|
|
});
|
|
};
|
|
|
|
// 获取财务审批已审批列表
|
|
export const getFinanceApprovedRecords = (query: CwApprovalRecordQuery): AxiosPromise<CwApprovalRecordVO[]> => {
|
|
return request({
|
|
url: '/cw/approval/finance/approved',
|
|
method: 'get',
|
|
params: query
|
|
});
|
|
};
|
|
|
|
// 获取学院领导审批待审批列表
|
|
export const getLeaderPendingApprovals = (query: CwApprovalRecordQuery): AxiosPromise<CwApprovalRecordVO[]> => {
|
|
return request({
|
|
url: '/cw/approval/leader/pending',
|
|
method: 'get',
|
|
params: query
|
|
});
|
|
};
|
|
|
|
// 获取学院领导已审批列表
|
|
export const getLeaderApprovedApprovals = (query: CwApprovalRecordQuery): AxiosPromise<CwApprovalRecordVO[]> => {
|
|
return request({
|
|
url: '/cw/approval/leader/approved',
|
|
method: 'get',
|
|
params: query
|
|
});
|
|
};
|
|
|
|
// 获取可选审批人列表
|
|
export const getAvailableApprovers = (applicationId: string | number): AxiosPromise<any[]> => {
|
|
return request({
|
|
url: '/cw/approval/approvers/' + applicationId,
|
|
method: 'get'
|
|
});
|
|
};
|
|
|
|
// 导出审批记录
|
|
export const exportApprovalRecord = (query: CwApprovalRecordQuery) => {
|
|
return request({
|
|
url: '/cw/approval/export',
|
|
method: 'post',
|
|
data: query
|
|
});
|
|
};
|
|
|
|
// 获取审批统计数据
|
|
export const getApprovalStatistics = (year?: number) => {
|
|
return request({
|
|
url: '/cw/approval/statistics',
|
|
method: 'get',
|
|
params: { year }
|
|
});
|
|
};
|
|
|
|
// 按部门统计审批数据
|
|
export const getApprovalStatsByDept = () => {
|
|
return request({
|
|
url: '/cw/approval/statsByDept',
|
|
method: 'get'
|
|
});
|
|
};
|
|
|
|
// 按月份统计审批数据
|
|
export const getApprovalStatsByMonth = (year?: number) => {
|
|
return request({
|
|
url: '/cw/approval/statsByMonth',
|
|
method: 'get',
|
|
params: { query: { year } }
|
|
});
|
|
};
|
|
|
|
// 获取审批效率统计
|
|
export const getApprovalEfficiency = () => {
|
|
return request({
|
|
url: '/cw/approval/efficiency',
|
|
method: 'get'
|
|
});
|
|
};
|