Files
hzdyjs/web/src/api/cw/projectApproval.ts
T
2025-09-07 18:17:50 +08:00

218 lines
4.6 KiB
TypeScript

import request from '@/utils/request';
import type { AxiosPromise } from 'axios';
import type { PageQuery, TableDataInfo } from '@/api/types';
/**
* 项目审批流程查询参数
*/
export interface CwProjectApprovalQuery extends PageQuery {
applicationNo?: string;
projectName?: string;
processStatus?: string;
submitterName?: string;
startTime?: string[];
}
/**
* 项目审批流程VO
*/
export interface CwProjectApprovalProcessVO {
id: string | number;
applicationId: string | number;
applicationNo: string;
processName: string;
processStatus: string;
totalNodes: number;
currentNode: number;
startTime: string;
endTime: string;
submitterId: string | number;
submitterName: string;
createTime: string;
updateTime: string;
}
/**
* 审批记录VO
*/
export interface CwApprovalRecordVO {
id: string | number;
applicationId: string | number;
applicationNo: string;
processId: string | number;
nodeCode: string;
nodeName: string;
customNodeName: string;
nodeOrder: number;
approverId: string | number;
approverName: string;
nodeStatus: string;
approveAction: string;
approveOpinion: string;
startTime: string;
endTime: string;
isCustomProcess: boolean;
createTime: string;
updateTime: string;
}
/**
* 自定义审批流程启动请求
*/
export interface CwCustomApprovalRequest {
applicationId: string | number;
applicationNo: string;
auditorIds: Array<string | number>;
processName: string;
submitterId: string | number;
submitterName: string;
}
/**
* 审批操作请求
*/
export interface CwApprovalActionRequest {
recordId: string | number;
action: string; // approve | reject
opinion: string;
}
/**
* 查询项目审批流程列表
*/
export function listProjectApproval(query: CwProjectApprovalQuery): AxiosPromise<TableDataInfo<CwProjectApprovalProcessVO>> {
return request({
url: '/cw/projectApproval/list',
method: 'get',
params: query
});
}
/**
* 获取项目审批流程详细信息
*/
export function getProjectApproval(id: string | number): AxiosPromise<CwProjectApprovalProcessVO> {
return request({
url: '/cw/projectApproval/' + id,
method: 'get'
});
}
/**
* 启动自定义审批流程
*/
export function startCustomApprovalProcess(data: CwCustomApprovalRequest): AxiosPromise<void> {
return request({
url: '/cw/projectApproval/start',
method: 'post',
data: data
});
}
/**
* 执行审批操作(统一接口)
*/
export function approveProcess(data: CwApprovalActionRequest): AxiosPromise<void> {
return request({
url: '/cw/projectApproval/approve',
method: 'put',
data: data
});
}
/**
* 打回申请(统一接口)
*/
export function rejectProcess(data: CwApprovalActionRequest): AxiosPromise<void> {
return request({
url: '/cw/projectApproval/approve',
method: 'put',
data: data
});
}
/**
* 终止审批流程
*/
export function terminateProcess(id: string | number): AxiosPromise<void> {
return request({
url: '/cw/projectApproval/' + id,
method: 'delete'
});
}
/**
* 获取我的待审批列表
*/
export function getMyPendingApprovals(query?: CwProjectApprovalQuery): AxiosPromise<any> {
return request({
url: '/cw/projectApproval/pending',
method: 'get',
params: query
});
}
/**
* 获取我的已审批列表
*/
export function getMyProcessedApprovals(query?: CwProjectApprovalQuery): AxiosPromise<any> {
return request({
url: '/cw/projectApproval/processed',
method: 'get',
params: query
});
}
/**
* 获取审批记录
*/
export function getApprovalRecords(applicationId: string | number): AxiosPromise<CwApprovalRecordVO[]> {
return request({
url: '/cw/projectApproval/records/' + applicationId,
method: 'get'
});
}
/**
* 验证审批流程
*/
export function validateApprovalProcess(data: CwCustomApprovalRequest): AxiosPromise<any> {
return request({
url: '/cw/projectApproval/validate',
method: 'post',
data: data
});
}
/**
* 获取审批流程统计数据
*/
export function getApprovalStatistics(): AxiosPromise<any> {
return request({
url: '/cw/projectApproval/statistics',
method: 'get'
});
}
/**
* 导出项目审批流程
*/
export function exportProjectApproval(query: CwProjectApprovalQuery): AxiosPromise<void> {
return request({
url: '/cw/projectApproval/export',
method: 'post',
data: query,
responseType: 'blob'
});
}
/**
* 获取可用审核人选项
*/
export function getAuditorOptions(): AxiosPromise<any[]> {
return request({
url: '/cw/projectAuditor/options',
method: 'get'
});
}