184 lines
3.7 KiB
TypeScript
184 lines
3.7 KiB
TypeScript
import createAxios from "@/utils/request";
|
|
import type { ISysFileInfo } from "@/domain/iSysFile";
|
|
|
|
export type FileListParams = {
|
|
group_id?: number;
|
|
page?: number;
|
|
pageSize?: number;
|
|
}
|
|
|
|
/**
|
|
* 获取文件列表
|
|
* @param params 查询参数
|
|
*/
|
|
export function getFileList(params: FileListParams) {
|
|
return createAxios<API.ListResponse<ISysFileInfo>>({
|
|
url: '/system/file/list',
|
|
method: 'get',
|
|
params,
|
|
});
|
|
}
|
|
|
|
/**
|
|
* 获取回收站文件列表
|
|
* @param params 查询参数
|
|
*/
|
|
export function getTrashedFileList(params: {page?: number; pageSize?: number}) {
|
|
return createAxios<API.ListResponse<ISysFileInfo>>({
|
|
url: '/system/file/list/trashed',
|
|
method: 'get',
|
|
params
|
|
});
|
|
}
|
|
|
|
/**
|
|
* 上传文件
|
|
* @param file 文件
|
|
* @param groupId 文件组ID
|
|
* @param onProgress 上传进度回调
|
|
*/
|
|
export function uploadFile(file: File, groupId: number, onProgress?: (progress: number) => void) {
|
|
const formData = new FormData();
|
|
formData.append('file', file);
|
|
formData.append('group_id', groupId.toString());
|
|
return createAxios({
|
|
timeout: 0,
|
|
url: '/system/file/list/upload',
|
|
method: 'post',
|
|
data: formData,
|
|
headers: {
|
|
'Content-Type': 'multipart/form-data',
|
|
},
|
|
onUploadProgress: (progressEvent) => {
|
|
if (onProgress && progressEvent.total) {
|
|
const progress = Math.round((progressEvent.loaded * 100) / progressEvent.total);
|
|
onProgress(progress);
|
|
}
|
|
},
|
|
});
|
|
}
|
|
|
|
/**
|
|
* 删除文件(软删除)
|
|
* @param id 文件ID
|
|
*/
|
|
export function deleteFile(id: number) {
|
|
return createAxios({
|
|
url: `/system/file/list/${id}`,
|
|
method: 'delete',
|
|
});
|
|
}
|
|
|
|
/**
|
|
* 批量删除文件(软删除)
|
|
* @param ids 文件ID数组
|
|
*/
|
|
export function batchDeleteFiles(ids: number[]) {
|
|
return createAxios<{count: number}>({
|
|
url: '/system/file/list/batch/delete',
|
|
method: 'delete',
|
|
data: { ids },
|
|
});
|
|
}
|
|
|
|
/**
|
|
* 彻底删除文件
|
|
* @param id 文件ID
|
|
*/
|
|
export function forceDeleteFile(id: number) {
|
|
return createAxios({
|
|
url: `/system/file/list/force-delete/${id}`,
|
|
method: 'delete',
|
|
});
|
|
}
|
|
|
|
/**
|
|
* 批量彻底删除文件
|
|
* @param ids 文件ID数组
|
|
*/
|
|
export function batchForceDeleteFiles(ids: number[]) {
|
|
return createAxios<{count: number}>({
|
|
url: '/system/file/list/batch/force-delete',
|
|
method: 'delete',
|
|
data: { ids },
|
|
});
|
|
}
|
|
|
|
/**
|
|
* 恢复文件
|
|
* @param id
|
|
* @returns
|
|
*/
|
|
export function restoreFile(id: number) {
|
|
return createAxios({
|
|
url: `/system/file/list/restore/${id}`,
|
|
method: 'post',
|
|
});
|
|
}
|
|
|
|
/**
|
|
* 批量恢复文件
|
|
* @param ids 文件 ID数组
|
|
* @returns
|
|
*/
|
|
export function batchRestoreFiles(ids: number[]) {
|
|
return createAxios<{count: number}>({
|
|
url: '/system/file/list/batch/restore',
|
|
method: 'post',
|
|
data: { ids },
|
|
});
|
|
}
|
|
|
|
/**
|
|
* 复制文件
|
|
* @param ids
|
|
* @param groupId
|
|
* @returns
|
|
*/
|
|
export function copyFile(ids: number | number[], groupId?: number) {
|
|
return createAxios<ISysFileInfo>({
|
|
url: `/system/file/list/copy`,
|
|
method: 'post',
|
|
data: { group_id: groupId, ids },
|
|
});
|
|
}
|
|
|
|
/**
|
|
* 移动文件
|
|
* @param ids
|
|
* @param groupId
|
|
* @returns
|
|
*/
|
|
export function moveFile(ids: number | number[], groupId?: number) {
|
|
return createAxios<ISysFileInfo>({
|
|
url: `/system/file/list/move`,
|
|
method: 'post',
|
|
data: { group_id: groupId, ids },
|
|
});
|
|
}
|
|
|
|
/**
|
|
* 重命名文件
|
|
* @param id 文件ID
|
|
* @param name 新文件名
|
|
* @returns
|
|
*/
|
|
export function renameFile(id: number, name: string) {
|
|
return createAxios({
|
|
url: `/system/file/list/rename/${id}`,
|
|
method: 'put',
|
|
data: { name },
|
|
});
|
|
}
|
|
|
|
/**
|
|
* 清空回收站文件
|
|
* @returns
|
|
*/
|
|
export function cleanTrashed() {
|
|
return createAxios<{ count: number }>({
|
|
url: '/system/file/list/clean/trashed',
|
|
method: 'delete',
|
|
});
|
|
}
|