import type { DmsApiResult, DmsPermissionResource } from './permission';
|
import type { DmsWatermarkParameters } from './watermarkParameters';
|
|
import { v4 as uuidv4 } from 'uuid';
|
|
import { defHttp } from '#/api/request';
|
|
import { watermarkParameters } from './watermarkParameters';
|
|
export type DmsPersonalFolderType = 'BORROW' | 'DOWNLOAD' | 'FAVORITE';
|
|
export interface DmsPersonalFolder {
|
code: DmsPersonalFolderType;
|
name: string;
|
}
|
|
export interface DmsPersonalFolderFile extends DmsPermissionResource {
|
validTo?: string;
|
}
|
|
export interface DmsFileDownloadTicket {
|
accessTicket: string;
|
expiresAt: string;
|
fileName: string;
|
fileVersionId: string;
|
mimeType?: string;
|
sizeBytes?: number;
|
}
|
|
export interface DmsDownloadDecision {
|
allowed: boolean;
|
resourceId: string;
|
}
|
|
export interface DmsPersonalFolderAddResult {
|
addedCount: number;
|
requestedCount: number;
|
}
|
|
const prefix = '/api/dms/personal-folders';
|
const silentErrorOptions = { errorMessageMode: 'none' as const };
|
|
export function getPersonalFolders() {
|
return defHttp.get<DmsApiResult<DmsPersonalFolder[]>>({ url: prefix }, silentErrorOptions);
|
}
|
|
export function getPersonalFolderFiles(folderType: DmsPersonalFolderType, params: { keyword?: string; pageSize?: number }) {
|
return defHttp.get<DmsApiResult<DmsPersonalFolderFile[]>>({ url: `${prefix}/${folderType}/files`, params }, silentErrorOptions);
|
}
|
|
export function evaluatePersonalFolderDownloads(fileVersionIds: string[]) {
|
return defHttp.post<DmsApiResult<DmsDownloadDecision[]>>(
|
{
|
url: '/api/dms/permission-decisions/batch-evaluate',
|
data: {
|
requests: fileVersionIds.map((resourceId) => ({ actionCode: 'DOWNLOAD', resourceId, resourceType: 'FILE_VERSION', workflowDownloadOnly: true })),
|
},
|
},
|
silentErrorOptions,
|
);
|
}
|
|
export function addFavoriteFile(data: { documentId: string; fileVersionId: string; operationId: string }) {
|
return defHttp.post<DmsApiResult<DmsPersonalFolderAddResult>>({ url: `${prefix}/favorite/files`, data }, silentErrorOptions);
|
}
|
|
export function createDmsFileDownloadTicket(fileVersionId: string, options?: DmsWatermarkParameters) {
|
return defHttp.post<DmsApiResult<DmsFileDownloadTicket>>(
|
{
|
url: '/api/dms/file-download-tickets',
|
data: {
|
...watermarkParameters(options),
|
operationId: uuidv4(),
|
workflowDownloadOnly: true,
|
resourceId: fileVersionId,
|
resourceType: 'FILE_VERSION',
|
},
|
},
|
silentErrorOptions,
|
);
|
}
|
|
export function downloadDmsFile(fileVersionId: string, accessTicket: string, format?: 'pdf') {
|
return defHttp.get<Blob>(
|
{
|
url: `/api/file/Dms/Download/${fileVersionId}`,
|
params: { ticket: accessTicket, ...(format ? { format } : {}) },
|
responseType: 'blob',
|
...(format === 'pdf' ? { timeout: 300_000 } : {}),
|
},
|
{ errorMessageMode: 'none', isTransformResponse: false },
|
);
|
}
|