import {
|
EnterpriseMaterialFileBusinessTypeEnumText,
|
EnterpriseMaterialFileBusinessTypeEnum,
|
DutiableFileBusinessTypeEnumText,
|
EnterpriseMaterialTypeEnum,
|
} from '@/constants';
|
import { UploadUserFile } from '@bole-core/components';
|
import { getFileExtension } from '@bole-core/core';
|
import { convertApi2FormUrl } from '../common/file';
|
|
export type EnterpriseMaterialFileTableItem = {
|
fileBusinessType: EnterpriseMaterialFileBusinessTypeEnum;
|
fileList: (API.AddEnterpriseMaterialFileInput & UploadUserFile)[];
|
lastModificationTime?: string;
|
lastModifierName?: string;
|
};
|
|
export class EnterpriseMaterialUtils {
|
static createEnterpriseMaterialFileTableItem(
|
fileBusinessType: EnterpriseMaterialFileBusinessTypeEnum
|
) {
|
return {
|
fileBusinessType: fileBusinessType,
|
fileList: [],
|
lastModificationTime: '',
|
lastModifierName: '',
|
} as EnterpriseMaterialFileTableItem;
|
}
|
|
static convertFileBusinessTypeToList(materialType = EnterpriseMaterialTypeEnum.FourStreams) {
|
return Object.keys(
|
materialType === EnterpriseMaterialTypeEnum.FourStreams
|
? EnterpriseMaterialFileBusinessTypeEnumText
|
: DutiableFileBusinessTypeEnumText
|
).map((x) => this.createEnterpriseMaterialFileTableItem(Number(x)));
|
}
|
|
static convertFileTableListToApi(fileTableList: EnterpriseMaterialFileTableItem[]) {
|
const addEnterpriseMaterialFileList: API.AddEnterpriseMaterialFileInput[] = [];
|
fileTableList.forEach((fileTableListItem) => {
|
fileTableListItem.fileList
|
.filter((fileItem) => fileItem.status === 'success')
|
.forEach((fileItem) => {
|
addEnterpriseMaterialFileList.push({
|
fileBusinessType: fileTableListItem.fileBusinessType,
|
fileUrl: fileItem.path,
|
fileSize: fileItem.size,
|
fileExtension: getFileExtension(fileItem.url),
|
});
|
});
|
});
|
|
return addEnterpriseMaterialFileList;
|
}
|
|
static isFileTableListAllUploaded(fileTableList: EnterpriseMaterialFileTableItem[]) {
|
return fileTableList.every((fileTableListItem) => {
|
return fileTableListItem.fileList.every((fileItem) => {
|
return fileItem.status === 'success';
|
});
|
});
|
}
|
|
static convertApiFileToTableList(
|
materialItemOutputList: API.EnterpriseMaterialItemOutput[],
|
materialType = EnterpriseMaterialTypeEnum.FourStreams
|
) {
|
const fileTableList = this.convertFileBusinessTypeToList(materialType);
|
|
materialItemOutputList.forEach((materialItemOutput) => {
|
const item = fileTableList.find(
|
(x) => x.fileBusinessType === materialItemOutput.fileBusinessType
|
);
|
if (item) {
|
item.fileList = materialItemOutput.materialFileItemList.map((materialFileItem) => ({
|
...materialFileItem,
|
...convertApi2FormUrl(materialFileItem.fileUrl),
|
size: materialFileItem.fileSize,
|
}));
|
item.lastModificationTime = materialItemOutput.lastModificationTime ?? '';
|
item.lastModifierName = materialItemOutput.lastModifierName ?? '';
|
}
|
});
|
|
return fileTableList;
|
}
|
}
|