import { getAccessToken } from '@/access'; import KFIcon from '@/components/KFIcon'; import KFModal from '@/components/KFModal'; import { DataSource, ResourceType, resourceConfig } from '@/pages/Dataset/config'; import { to } from '@/utils/promise'; import { getFileListFromEvent, validateUploadFiles } from '@/utils/ui'; import { Button, Form, Input, Upload, UploadFile, message, type ModalProps, type UploadProps, } from 'antd'; import { omit } from 'lodash'; import { useState } from 'react'; import styles from '../AddDatasetModal/index.less'; interface AddVersionModalProps extends Omit { resourceType: ResourceType; resourceId: number; resoureName: string; owner: string; identifier: string; is_public: boolean; onOk: () => void; } function AddVersionModal({ resourceType, resourceId, resoureName, owner, identifier, is_public, onOk, ...rest }: AddVersionModalProps) { const [uuid] = useState(Date.now()); const config = resourceConfig[resourceType]; // 上传组件参数 const uploadProps: UploadProps = { action: config.uploadAction, headers: { Authorization: getAccessToken() || '', }, defaultFileList: [], beforeUpload: config.beforeUpload, accept: config.uploadAccept, }; // 上传请求 const createDatasetVersion = async (params: any) => { const request = config.addVersion; const [res] = await to(request(params)); if (res) { message.success('创建成功'); onOk?.(); } }; // 提交 const onFinish = (formData: any) => { const fileList: UploadFile[] = formData['fileList'] ?? []; if (validateUploadFiles(fileList)) { const version_vos = fileList.map((item) => { const data = item.response?.data?.[0] ?? {}; return { file_name: data.fileName, file_size: data.fileSize, url: data.url, }; }); const params = { id: resourceId, identifier, is_public, owner, [config.filePropKey]: version_vos, ...omit(formData, 'fileList'), [config.sourceParamKey]: DataSource.Create, }; createDatasetVersion(params); } }; const name = config.name; return (
{ if (value === 'master') { return Promise.reject(`版本不能为 master`); } return Promise.resolve(); }, }, ]} > {resourceType === ResourceType.Dataset && (
只允许上传 .zip 和 .tgz 格式文件
)}
); } export default AddVersionModal;