Files
orion-visor/orion-visor-ui/src/api/exec/upload-task.ts
lijiahangmax 6149010bf4 🎉 重构前端代码.
2025-06-25 14:49:36 +08:00

192 lines
4.1 KiB
TypeScript

import type { ClearRequest, DataGrid, OrderDirection, Pagination } from '@/types/global';
import type { TableData } from '@arco-design/web-vue';
import axios from 'axios';
import qs from 'query-string';
/**
* 上传任务创建请求
*/
export interface UploadTaskCreateRequest {
remotePath?: string;
description?: string;
hostIdList?: Array<number>;
files?: Array<UploadTaskFileCreateRequest>;
}
/**
* 上传任务文件创建请求
*/
export interface UploadTaskFileCreateRequest {
fileId?: string;
filePath?: string;
fileSize?: number;
}
/**
* 上传任务创建响应
*/
export interface UploadTaskCreateResponse {
id: number;
token: string;
}
/**
* 上传任务查询请求
*/
export interface UploadTaskQueryRequest extends Pagination, OrderDirection {
id?: number;
userId?: number;
remotePath?: string;
description?: string;
status?: string;
createTimeRange?: string[];
}
/**
* 上传任务清理请求
*/
export interface UploadTaskClearRequest extends UploadTaskQueryRequest, ClearRequest {
}
/**
* 上传任务查询响应
*/
export interface UploadTaskQueryResponse extends TableData {
id: number;
userId: number;
username: string;
remotePath: string;
description: string;
status: string;
extraInfo: string;
fileCount: number;
hostCount: number;
startTime: number;
endTime: number;
createTime: number;
hosts: Array<UploadTaskHost>;
}
/**
* 上传任务主机响应
*/
export interface UploadTaskHost {
id: number;
code: string;
name: string;
address: string;
files: Array<UploadTaskFile>;
}
/**
* 上传任务文件响应
*/
export interface UploadTaskFile {
id: number;
taskId: number;
hostId: number;
fileId: string;
filePath: string;
fileSize: number;
status: string;
errorMessage: string;
startTime: number;
endTime: number;
current: number;
}
/**
* 上传任务状态响应
*/
export interface UploadTaskStatusResponse extends TableData {
id: number;
status: string;
startTime: number;
endTime: number;
files: Array<UploadTaskFile>;
}
/**
* 创建上传任务
*/
export function createUploadTask(request: UploadTaskCreateRequest) {
return axios.post<UploadTaskCreateResponse>('/exec/upload-task/create', request);
}
/**
* 创建上传任务
*/
export function startUploadTask(id: number) {
return axios.post('/exec/upload-task/start', { id });
}
/**
* 创建上传任务
*/
export function cancelUploadTask(id: number, failed: boolean) {
return axios.post('/exec/upload-task/cancel', { id, failed });
}
/**
* 查询上传任务
*/
export function getUploadTask(id: number) {
return axios.get<UploadTaskQueryResponse>('/exec/upload-task/get', { params: { id } });
}
/**
* 分页查询上传任务
*/
export function getUploadTaskPage(request: UploadTaskQueryRequest) {
return axios.post<DataGrid<UploadTaskQueryResponse>>('/exec/upload-task/query', request);
}
/**
* 查询上传任务状态
*/
export function getUploadTaskStatus(idList: Array<number>, queryFiles: boolean) {
return axios.get<Array<UploadTaskStatusResponse>>('/exec/upload-task/status', {
params: { idList, queryFiles },
promptBizErrorMessage: false,
promptRequestErrorMessage: false,
paramsSerializer: params => {
return qs.stringify(params, { arrayFormat: 'comma' });
},
});
}
/**
* 删除上传任务
*/
export function deleteUploadTask(id: number) {
return axios.delete('/exec/upload-task/delete', { params: { id } });
}
/**
* 批量删除上传任务
*/
export function batchDeleteUploadTask(idList: Array<number>) {
return axios.delete('/exec/upload-task/batch-delete', {
params: { idList },
paramsSerializer: params => {
return qs.stringify(params, { arrayFormat: 'comma' });
}
});
}
/**
* 查询批量上传任务数量
*/
export function getUploadTaskCount(request: UploadTaskQueryRequest) {
return axios.post<number>('/exec/upload-task/count', request);
}
/**
* 清空批量上传任务
*/
export function clearUploadTask(request: UploadTaskClearRequest) {
return axios.post<number>('/exec/upload-task/clear', request, {
timeout: 60000,
});
}