| @@ -0,0 +1,121 @@ | |||||
| import KFModal from '@/components/KFModal'; | |||||
| import { DataSource, ResourceData, ResourceType, resourceConfig } from '@/pages/Dataset/config'; | |||||
| import { to } from '@/utils/promise'; | |||||
| import { Form, Input, message, type ModalProps } from 'antd'; | |||||
| interface EditVersionModalProps extends Omit<ModalProps, 'onOk'> { | |||||
| resourceType: ResourceType; | |||||
| resourceVersion: ResourceData; | |||||
| onOk: () => void; | |||||
| } | |||||
| function EditVersionModal({ resourceType, resourceVersion, onOk, ...rest }: EditVersionModalProps) { | |||||
| const config = resourceConfig[resourceType]; | |||||
| const { name: resoureName, version, version_desc } = resourceVersion; | |||||
| // 修改请求 | |||||
| const editDatasetVersion = async (params: any) => { | |||||
| const request = config.editVersion; | |||||
| const [res] = await to(request(params)); | |||||
| if (res) { | |||||
| message.success('编辑成功'); | |||||
| onOk?.(); | |||||
| } | |||||
| }; | |||||
| // 提交 | |||||
| const onFinish = (formData: any) => { | |||||
| const params = { | |||||
| ...resourceVersion, | |||||
| ...formData, | |||||
| [config.sourceParamKey]: DataSource.Create, | |||||
| }; | |||||
| editDatasetVersion(params); | |||||
| }; | |||||
| const name = config.name; | |||||
| return ( | |||||
| <KFModal | |||||
| {...rest} | |||||
| title="编辑版本" | |||||
| image={require('@/assets/img/create-experiment.png')} | |||||
| width={825} | |||||
| okButtonProps={{ | |||||
| htmlType: 'submit', | |||||
| form: 'form', | |||||
| }} | |||||
| > | |||||
| <Form | |||||
| name="form" | |||||
| layout="vertical" | |||||
| initialValues={{ | |||||
| name: resoureName, | |||||
| version: version, | |||||
| version_desc: version_desc, | |||||
| }} | |||||
| onFinish={onFinish} | |||||
| autoComplete="off" | |||||
| > | |||||
| <Form.Item | |||||
| label={`${name}名称`} | |||||
| name="name" | |||||
| rules={[ | |||||
| { | |||||
| required: true, | |||||
| message: `请输入${name}名称`, | |||||
| }, | |||||
| ]} | |||||
| > | |||||
| <Input disabled placeholder={`请输入${name}名称`} /> | |||||
| </Form.Item> | |||||
| <Form.Item | |||||
| label={`${name}版本`} | |||||
| name="version" | |||||
| rules={[ | |||||
| { | |||||
| required: true, | |||||
| message: `请输入${name}版本`, | |||||
| }, | |||||
| { | |||||
| pattern: /^[a-zA-Z0-9._-]+$/, | |||||
| message: `${name}版本只支持字母、数字、点(.)、下划线(_)、中横线(-)`, | |||||
| }, | |||||
| { | |||||
| validator: (_rule, value) => { | |||||
| if (value === 'master') { | |||||
| return Promise.reject(`${name}版本不能为 master`); | |||||
| } else if (value === 'origin') { | |||||
| return Promise.reject(`${name}版本不能为 origin`); | |||||
| } | |||||
| return Promise.resolve(); | |||||
| }, | |||||
| }, | |||||
| ]} | |||||
| > | |||||
| <Input placeholder={`请输入${name}版本`} maxLength={64} showCount allowClear disabled /> | |||||
| </Form.Item> | |||||
| <Form.Item | |||||
| label="版本描述" | |||||
| name="version_desc" | |||||
| rules={[ | |||||
| { | |||||
| required: true, | |||||
| message: '请输入版本描述', | |||||
| }, | |||||
| ]} | |||||
| > | |||||
| <Input.TextArea | |||||
| placeholder="请输入版本描述" | |||||
| autoSize={{ minRows: 2, maxRows: 6 }} | |||||
| maxLength={200} | |||||
| showCount | |||||
| allowClear | |||||
| /> | |||||
| </Form.Item> | |||||
| </Form> | |||||
| </KFModal> | |||||
| ); | |||||
| } | |||||
| export default EditVersionModal; | |||||
| @@ -23,6 +23,7 @@ import { App, Button, Flex, Select, Tabs } from 'antd'; | |||||
| import classNames from 'classnames'; | import classNames from 'classnames'; | ||||
| import { useCallback, useEffect, useState } from 'react'; | import { useCallback, useEffect, useState } from 'react'; | ||||
| import AddVersionModal from '../AddVersionModal'; | import AddVersionModal from '../AddVersionModal'; | ||||
| import EditVersionModal from '../EditVersionModal'; | |||||
| import ResourceIntro from '../ResourceIntro'; | import ResourceIntro from '../ResourceIntro'; | ||||
| import ResourceVersion from '../ResourceVersion'; | import ResourceVersion from '../ResourceVersion'; | ||||
| import VersionCompareModal from '../VersionCompareModal'; | import VersionCompareModal from '../VersionCompareModal'; | ||||
| @@ -132,6 +133,18 @@ const ResourceInfo = ({ resourceType }: ResourceInfoProps) => { | |||||
| }); | }); | ||||
| }; | }; | ||||
| // 版本编辑 | |||||
| const showEditVersionModal = () => { | |||||
| const { close } = openAntdModal(EditVersionModal, { | |||||
| resourceType: resourceType, | |||||
| resourceVersion: info, | |||||
| onOk: () => { | |||||
| getResourceDetail(); | |||||
| close(); | |||||
| }, | |||||
| }); | |||||
| }; | |||||
| // 选择版本 | // 选择版本 | ||||
| const showVersionSelector = () => { | const showVersionSelector = () => { | ||||
| const { close } = openAntdModal(VersionSelectorModal, { | const { close } = openAntdModal(VersionSelectorModal, { | ||||
| @@ -291,6 +304,14 @@ const ResourceInfo = ({ resourceType }: ResourceInfoProps) => { | |||||
| <Button type="default" onClick={showModal} icon={<KFIcon type="icon-xinjian2" />}> | <Button type="default" onClick={showModal} icon={<KFIcon type="icon-xinjian2" />}> | ||||
| 创建新版本 | 创建新版本 | ||||
| </Button> | </Button> | ||||
| <Button | |||||
| type="default" | |||||
| style={{ marginLeft: '20px' }} | |||||
| icon={<KFIcon type="icon-bianji" />} | |||||
| onClick={showEditVersionModal} | |||||
| > | |||||
| 版本编辑 | |||||
| </Button> | |||||
| <Button | <Button | ||||
| type="default" | type="default" | ||||
| style={{ marginLeft: '20px' }} | style={{ marginLeft: '20px' }} | ||||
| @@ -9,6 +9,8 @@ import { | |||||
| deleteDatasetVersion, | deleteDatasetVersion, | ||||
| deleteModel, | deleteModel, | ||||
| deleteModelVersion, | deleteModelVersion, | ||||
| editDatasetVersion, | |||||
| editModelVersion, | |||||
| getDatasetInfo, | getDatasetInfo, | ||||
| getDatasetList, | getDatasetList, | ||||
| getDatasetVersionList, | getDatasetVersionList, | ||||
| @@ -36,6 +38,7 @@ type ResourceTypeInfo = { | |||||
| getVersions: (params: any) => Promise<any>; // 获取版本列表 | getVersions: (params: any) => Promise<any>; // 获取版本列表 | ||||
| deleteRecord: (params: any) => Promise<any>; // 删除 | deleteRecord: (params: any) => Promise<any>; // 删除 | ||||
| addVersion: (params: any) => Promise<any>; // 新增版本 | addVersion: (params: any) => Promise<any>; // 新增版本 | ||||
| editVersion: (params: any) => Promise<any>; // 编辑版本 | |||||
| deleteVersion: (params: any) => Promise<any>; // 删除版本 | deleteVersion: (params: any) => Promise<any>; // 删除版本 | ||||
| getInfo: (params: any) => Promise<any>; // 获取详情 | getInfo: (params: any) => Promise<any>; // 获取详情 | ||||
| compareVersion: (params: any) => Promise<any>; // 版本对比 | compareVersion: (params: any) => Promise<any>; // 版本对比 | ||||
| @@ -65,6 +68,7 @@ export const resourceConfig: Record<ResourceType, ResourceTypeInfo> = { | |||||
| getVersions: getDatasetVersionList, | getVersions: getDatasetVersionList, | ||||
| deleteRecord: deleteDataset, | deleteRecord: deleteDataset, | ||||
| addVersion: addDatasetVersion, | addVersion: addDatasetVersion, | ||||
| editVersion: editDatasetVersion, | |||||
| deleteVersion: deleteDatasetVersion, | deleteVersion: deleteDatasetVersion, | ||||
| getInfo: getDatasetInfo, | getInfo: getDatasetInfo, | ||||
| compareVersion: compareDatasetVersion, | compareVersion: compareDatasetVersion, | ||||
| @@ -103,6 +107,7 @@ export const resourceConfig: Record<ResourceType, ResourceTypeInfo> = { | |||||
| getVersions: getModelVersionList, | getVersions: getModelVersionList, | ||||
| deleteRecord: deleteModel, | deleteRecord: deleteModel, | ||||
| addVersion: addModelVersion, | addVersion: addModelVersion, | ||||
| editVersion: editModelVersion, | |||||
| deleteVersion: deleteModelVersion, | deleteVersion: deleteModelVersion, | ||||
| getInfo: getModelInfo, | getInfo: getModelInfo, | ||||
| compareVersion: compareModelVersion, | compareVersion: compareModelVersion, | ||||
| @@ -58,6 +58,14 @@ export function addDatasetVersion(data) { | |||||
| }); | }); | ||||
| } | } | ||||
| // 编辑数据集版本 | |||||
| export function editDatasetVersion(data) { | |||||
| return request(`/api/mmp/newdataset/updateVersionDesc`, { | |||||
| method: 'PUT', | |||||
| data, | |||||
| }); | |||||
| } | |||||
| // 下载数据集所有文件 | // 下载数据集所有文件 | ||||
| export function downloadAllFiles(params) { | export function downloadAllFiles(params) { | ||||
| return request(`/api/mmp/newdataset/downloadAllFiles`, { | return request(`/api/mmp/newdataset/downloadAllFiles`, { | ||||
| @@ -132,6 +140,15 @@ export function addModelVersion(data) { | |||||
| }); | }); | ||||
| } | } | ||||
| // 编辑模型版本 | |||||
| export function editModelVersion(data) { | |||||
| return request(`/api/mmp/newmodel/updateVersionDesc`, { | |||||
| method: 'PUT', | |||||
| data, | |||||
| }); | |||||
| } | |||||
| // 删除模型版本 | // 删除模型版本 | ||||
| export function deleteModelVersion(params) { | export function deleteModelVersion(params) { | ||||
| return request(`/api/mmp/newmodel/deleteVersion`, { | return request(`/api/mmp/newmodel/deleteVersion`, { | ||||