Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 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 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 | 1x 1x 1x 1x | import { FileModel, FileModelWithPrivate } from '@/shared/@types'
import { httpClient } from '@/shared/lib'
import { AxiosRequestConfig } from 'axios'
import { RcFile } from 'rc-upload/lib/interface'
import { ulid } from 'ulid'
interface CreateDocumentFormData {
file: string
id: string
accountingObjectImport?: string
}
interface CreatePipeDocument {
document: string
pipe: string
}
interface UploadConfig {
pipeId?: string
isNeedDocument?: boolean
importId?: string
}
const createFileFormData = (formData: FormData, file: RcFile) => {
formData.append('file', file)
formData.append('originalName', file.name)
formData.append('id', ulid())
}
export const uploadFiles = (
files: RcFile | RcFile[],
config: Omit<AxiosRequestConfig<RcFile>, 'data'> & { withOffline?: boolean } = {}
) => {
const data = new FormData()
if (Array.isArray(files)) {
for (const file of files) {
createFileFormData(data, file)
}
} else {
createFileFormData(data, files)
}
return httpClient<FileModel, FormData>({
...config,
data,
url: '/files',
method: 'POST',
})
}
export const uploadDocumentsOnEdit = async (
files: RcFile,
axiosRequestConfig?: AxiosRequestConfig<RcFile>,
config?: UploadConfig
) => {
const { importId, isNeedDocument, pipeId } = config || {}
const data = new FormData()
if (Array.isArray(files)) {
for (const file of files) {
createFileFormData(data, file)
}
} else {
createFileFormData(data, files)
}
const file = await httpClient<FileModelWithPrivate, FormData>({
...axiosRequestConfig,
data,
url: '/files',
method: 'POST',
})
if (isNeedDocument) {
const document = await httpClient<FileModel, CreateDocumentFormData>({
...axiosRequestConfig,
data: {
id: ulid(),
file: file?.data?.['@id'],
...(importId && { accountingObjectImport: `/accounting_object_imports/${importId}` }),
},
url: '/documents',
method: 'POST',
})
file.data.documentId = document.data['@id']
if (pipeId) {
await httpClient<FileModel, CreatePipeDocument>({
...axiosRequestConfig,
data: {
document: document.data['@id'],
pipe: pipeId as string,
},
url: '/pipe_documents',
method: 'POST',
})
}
}
return file
}
|