刘光辉
3 小时以前 cf11e63b659afcc9792ab3e395f1b45d844431a8
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
import type { fileItem } from '#/components/Jnpf/upload/src/props';
 
import { defHttp } from '#/api/request';
 
export interface UploadEditContext {
  modelId: string;
  dmsAudit?: boolean;
  recordId?: string;
  field: string;
  parentField?: string;
  rowId?: string;
  menuId?: string;
  taskId?: string;
}
export interface UploadEditDraft {
  shared?: boolean;
  dmsAudit?: boolean;
  contentToken?: string;
  metadataToken?: string;
  watchToken?: string;
  revisionTemporary?: boolean;
  draftId: string;
  revision: number;
  files: fileItem[];
  baselineFiles?: fileItem[];
  editOrigins?: Record<string, string>;
  canDiscard?: boolean;
  editing?: boolean;
  ownEditing?: boolean;
  leaseId?: string;
  mode?: 'edit' | 'review';
  source?: fileItem;
}
export const getUploadOfficeOptions = () =>
  defHttp.get<{ data: { editEnabled: boolean; previewEnabled: boolean } }>({ url: '/api/biz/onlyoffice/upload-file/options' }, { errorMessageMode: 'none' });
export const loadUploadEdit = (context: UploadEditContext) => defHttp.post<{ data: UploadEditDraft }>({ url: '/api/visualdev/UploadEdit/load', data: context });
export const changeUploadEdit = (
  action: 'begin' | 'discard' | 'files',
  data: {
    contentToken?: string;
    metadataToken?: string;
    context?: UploadEditContext;
    draftId: string;
    fileId?: string;
    files?: fileItem[];
    mode?: 'edit' | 'review';
    revision: number;
  },
) => defHttp.post<{ data: UploadEditDraft }>({ url: `/api/visualdev/UploadEdit/${action}`, data });
export const beginTemporaryUploadEdit = (data: { context: UploadEditContext; fileId: string; files: fileItem[] }) =>
  defHttp.post<{ data: UploadEditDraft }>({ url: '/api/visualdev/UploadEdit/temporary/begin', data });
export const cleanupTemporaryUploadEdit = (leaseId: string) => defHttp.post({ url: '/api/visualdev/UploadEdit/temporary/cleanup', data: { fileId: leaseId } });
 
export const loadSharedUploadEdit = (context: UploadEditContext, background = false) =>
  defHttp.post<{ data: UploadEditDraft }>(
    { url: '/api/visualdev/UploadEdit/shared/load', data: context },
    { errorMessageMode: background ? 'none' : 'message' },
  );
export const updateUploadEditLease = (action: 'close' | 'heartbeat', draftId: string, leaseId: string) =>
  defHttp.post({ url: `/api/visualdev/UploadEdit/${action}`, data: { draftId, fileId: leaseId } }, { errorMessageMode: 'none' });
 
export const loadRevisionTemporaryResult = (leaseId: string) =>
  defHttp.post<{ data: UploadEditDraft }>({ url: '/api/visualdev/UploadEdit/temporary/revision-result', data: { fileId: leaseId } });
 
/** One authorized read for all DMS attachment positions on a form. */
export const loadSharedUploadEdits = (contexts: UploadEditContext[]) =>
  defHttp.post<{ data: UploadEditDraft[] }>({ url: '/api/visualdev/UploadEdit/shared/batch', data: contexts }, { errorMessageMode: 'none' });
 
export const watchSharedUploadEdits = (token: string, signal: AbortSignal) =>
  defHttp.post<{ data: boolean }>({ url: '/api/visualdev/UploadEdit/shared/watch', data: { token }, signal, timeout: 30_000 }, { errorMessageMode: 'none' });