| @@ -19,7 +19,7 @@ const Settings: ProLayoutProps & { | |||
| title: '智能软件开发平台', | |||
| pwa: true, | |||
| logo: '/assets/images/left-top-logo.png', | |||
| iconfontUrl: '//at.alicdn.com/t/c/font_4511326_t634djsqobs.js', | |||
| iconfontUrl: '//at.alicdn.com/t/c/font_4511326_a182r7rksx5.js', | |||
| token: { | |||
| // 参见ts声明,demo 见文档,通过token 修改样式 | |||
| //https://procomponents.ant.design/components/layout#%E9%80%9A%E8%BF%87-token-%E4%BF%AE%E6%94%B9%E6%A0%B7%E5%BC%8F | |||
| @@ -17,14 +17,12 @@ | |||
| margin-top: 40px; | |||
| .ant-btn { | |||
| height: 42px; | |||
| height: 40px; | |||
| padding: 0 30px; | |||
| font-size: @font-size-content; | |||
| border-radius: 10px; | |||
| } | |||
| .ant-btn-default { | |||
| color: @text-color; | |||
| background: rgba(22, 100, 255, 0.06); | |||
| border-color: transparent; | |||
| } | |||
| .ant-btn + .ant-btn { | |||
| @@ -129,8 +129,6 @@ | |||
| border-radius: 10px; | |||
| } | |||
| .ant-btn-default { | |||
| color: @text-color; | |||
| background: rgba(22, 100, 255, 0.06); | |||
| border-color: transparent; | |||
| } | |||
| .ant-btn + .ant-btn { | |||
| @@ -139,6 +137,7 @@ | |||
| } | |||
| } | |||
| // 表单类型为large时,font-size为15px | |||
| .ant-form-large { | |||
| .ant-form-item-label { | |||
| label { | |||
| @@ -9,10 +9,10 @@ import { | |||
| } from '@/services/dataset/index.js'; | |||
| import { downLoadZip } from '@/utils/downloadfile'; | |||
| import { UploadOutlined } from '@ant-design/icons'; | |||
| import { useParams, useSearchParams } from '@umijs/max'; | |||
| import { Button, Form, Input, Modal, Select, Table, Tabs, Upload, message } from 'antd'; | |||
| import moment from 'moment'; | |||
| import { useEffect, useRef, useState } from 'react'; | |||
| import { useParams } from 'react-router-dom'; | |||
| import Styles from './index.less'; | |||
| const { Search } = Input; | |||
| const { TabPane } = Tabs; | |||
| @@ -53,9 +53,11 @@ const Dataset = () => { | |||
| const [version, setVersion] = useState(null); | |||
| const [versionList, setVersionList] = useState([]); | |||
| const locationParams = useParams(); //新版本获取路由参数接口 | |||
| const [searchParams] = useSearchParams(); | |||
| const [wordList, setWordList] = useState([]); | |||
| const [activeTabKey, setActiveTabKey] = useState('1'); | |||
| const [uuid, setUuid] = useState(Date.now()); | |||
| const isPublic = searchParams.get('isPublic') === 'true'; | |||
| const getDatasetByDetail = () => { | |||
| getDatasetById(locationParams.id).then((ret) => { | |||
| console.log(ret); | |||
| @@ -264,15 +266,17 @@ const Dataset = () => { | |||
| <div | |||
| style={{ display: 'flex', justifyContent: 'space-between', alignItems: 'center' }} | |||
| > | |||
| <Button | |||
| type="default" | |||
| className={Styles.plusButton} | |||
| style={{ margin: '0 20px 0 0' }} | |||
| onClick={deleteDataset} | |||
| icon={<KFIcon type="icon-shanchu" />} | |||
| > | |||
| 删除 | |||
| </Button> | |||
| {!isPublic && ( | |||
| <Button | |||
| type="default" | |||
| className={Styles.plusButton} | |||
| style={{ margin: '0 20px 0 0' }} | |||
| onClick={deleteDataset} | |||
| icon={<KFIcon type="icon-shanchu" />} | |||
| > | |||
| 删除 | |||
| </Button> | |||
| )} | |||
| <Button | |||
| type="default" | |||
| disabled={!version} | |||
| @@ -155,7 +155,7 @@ const PublicData = (React.FC = () => { | |||
| const routeToIntro = (e, record) => { | |||
| e.stopPropagation(); | |||
| console.log(record); | |||
| navgite({ pathname: `/dataset/dataset/${record.id}` }); | |||
| navgite({ pathname: `/dataset/dataset/${record.id}?isPublic=false` }); | |||
| }; | |||
| const onFinishFailed = (errorInfo) => { | |||
| console.log('Failed:', errorInfo); | |||
| @@ -1,8 +1,6 @@ | |||
| import clock from '@/assets/img/clock.png'; | |||
| import creatByImg from '@/assets/img/creatBy.png'; | |||
| import deleteIcon from '@/assets/img/delete-icon.png'; | |||
| import { deleteDataset, getAssetIcon, getDatasetList } from '@/services/dataset/index.js'; | |||
| import { modalConfirm } from '@/utils/ui'; | |||
| import { getAssetIcon, getDatasetList } from '@/services/dataset/index.js'; | |||
| import { Form, Input, Pagination } from 'antd'; | |||
| import moment from 'moment'; | |||
| import { useEffect, useState } from 'react'; | |||
| @@ -108,7 +106,7 @@ const PublicData = () => { | |||
| const routeToIntro = (e, record) => { | |||
| e.stopPropagation(); | |||
| console.log(record); | |||
| navgite({ pathname: `/dataset/dataset/${record.id}` }); | |||
| navgite({ pathname: `/dataset/dataset/${record.id}?isPublic=true` }); | |||
| }; | |||
| const onFinishFailed = (errorInfo) => { | |||
| console.log('Failed:', errorInfo); | |||
| @@ -227,28 +225,6 @@ const PublicData = () => { | |||
| return ( | |||
| <div className={Styles.dataItem} onClick={(e) => routeToIntro(e, item)}> | |||
| <span className={Styles.itemText}>{item.name}</span> | |||
| <img | |||
| onClick={(e) => { | |||
| e.stopPropagation(); | |||
| modalConfirm({ | |||
| title: '确定删除该条数据集实例吗?', | |||
| onOk: () => { | |||
| deleteDataset(item.id).then((ret) => { | |||
| if (ret.code === 200) { | |||
| message.success('删除成功'); | |||
| getModelLists(queryFlow); | |||
| } else { | |||
| message.error(ret.msg); | |||
| } | |||
| }); | |||
| }, | |||
| }); | |||
| }} | |||
| className={Styles.dropdown} | |||
| style={{ width: '17px', marginRight: '6px' }} | |||
| src={deleteIcon} | |||
| alt="" | |||
| /> | |||
| <div className={Styles.itemDescripition}>{item.description}</div> | |||
| <div className={Styles.itemTime}> | |||
| <img | |||
| @@ -246,8 +246,8 @@ const Props = forwardRef(({ onParentChange }, ref) => { | |||
| > | |||
| 下载 | |||
| </a> | |||
| <a style={{ marginRight: '10px' }}>导出到模型库</a> | |||
| <a style={{ marginRight: '10px' }}>导出到数据集</a> | |||
| {/* <a style={{ marginRight: '10px' }}>导出到模型库</a> | |||
| <a style={{ marginRight: '10px' }}>导出到数据集</a> */} | |||
| </div> | |||
| </div> | |||
| <div style={{ margin: '15px 0' }} className={Styles.resultContent}> | |||
| @@ -9,10 +9,10 @@ import { | |||
| } from '@/services/dataset/index.js'; | |||
| import { downLoadZip } from '@/utils/downloadfile'; | |||
| import { UploadOutlined } from '@ant-design/icons'; | |||
| import { useParams, useSearchParams } from '@umijs/max'; | |||
| import { Button, Form, Input, Modal, Select, Table, Tabs, Upload, message } from 'antd'; | |||
| import moment from 'moment'; | |||
| import { useEffect, useRef, useState } from 'react'; | |||
| import { useParams } from 'react-router-dom'; | |||
| import Styles from './index.less'; | |||
| const { Search } = Input; | |||
| const { TabPane } = Tabs; | |||
| @@ -53,9 +53,11 @@ const Dataset = () => { | |||
| const [version, setVersion] = useState(null); | |||
| const [versionList, setVersionList] = useState([]); | |||
| const locationParams = useParams(); //新版本获取路由参数接口 | |||
| const [searchParams] = useSearchParams(); | |||
| console.log(locationParams); | |||
| const [wordList, setWordList] = useState([]); | |||
| const [uuid, setUuid] = useState(Date.now()); | |||
| const isPublic = searchParams.get('isPublic') === 'true'; | |||
| const getModelByDetail = () => { | |||
| getModelById(locationParams.id).then((ret) => { | |||
| console.log(ret); | |||
| @@ -262,15 +264,18 @@ const Dataset = () => { | |||
| <div | |||
| style={{ display: 'flex', justifyContent: 'space-between', alignItems: 'center' }} | |||
| > | |||
| <Button | |||
| type="default" | |||
| className={Styles.plusButton} | |||
| style={{ margin: '0 20px 0 0' }} | |||
| onClick={deleteDataset} | |||
| icon={<KFIcon type="icon-shanchu" />} | |||
| > | |||
| 删除 | |||
| </Button> | |||
| {!isPublic && ( | |||
| <Button | |||
| type="default" | |||
| className={Styles.plusButton} | |||
| style={{ margin: '0 20px 0 0' }} | |||
| onClick={deleteDataset} | |||
| icon={<KFIcon type="icon-shanchu" />} | |||
| > | |||
| 删除 | |||
| </Button> | |||
| )} | |||
| <Button | |||
| type="default" | |||
| className={Styles.plusButton} | |||
| @@ -152,7 +152,7 @@ const PublicData = () => { | |||
| const routeToIntro = (e, record) => { | |||
| e.stopPropagation(); | |||
| console.log(record); | |||
| navgite({ pathname: `/dataset/model/${record.id}` }); | |||
| navgite({ pathname: `/dataset/model/${record.id}?isPublic=false` }); | |||
| }; | |||
| const onFinishFailed = (errorInfo) => { | |||
| console.log('Failed:', errorInfo); | |||
| @@ -357,7 +357,7 @@ const PublicData = () => { | |||
| /> | |||
| </div> | |||
| </Dropdown> */} | |||
| ,<div className={Styles.itemDescripition}>{item.description}</div> | |||
| <div className={Styles.itemDescripition}>{item.description}</div> | |||
| <div className={Styles.itemTime}> | |||
| <img | |||
| style={{ width: '17px', marginRight: '6px' }} | |||
| @@ -1,9 +1,7 @@ | |||
| import clock from '@/assets/img/clock.png'; | |||
| import creatByImg from '@/assets/img/creatBy.png'; | |||
| import deleteIcon from '@/assets/img/delete-icon.png'; | |||
| import { deleteModel, getAssetIcon, getModelList } from '@/services/dataset/index.js'; | |||
| import { modalConfirm } from '@/utils/ui'; | |||
| import { Form, Input, Modal, Pagination, Radio, message } from 'antd'; | |||
| import { getAssetIcon, getModelList } from '@/services/dataset/index.js'; | |||
| import { Form, Input, Modal, Pagination, Radio } from 'antd'; | |||
| import moment from 'moment'; | |||
| import { useEffect, useState } from 'react'; | |||
| import { useNavigate } from 'react-router-dom'; | |||
| @@ -109,7 +107,7 @@ const PublicData = () => { | |||
| const routeToIntro = (e, record) => { | |||
| e.stopPropagation(); | |||
| console.log(record); | |||
| navgite({ pathname: `/dataset/model/${record.id}` }); | |||
| navgite({ pathname: `/dataset/model/${record.id}?isPublic=true` }); | |||
| }; | |||
| const onFinishFailed = (errorInfo) => { | |||
| console.log('Failed:', errorInfo); | |||
| @@ -233,28 +231,6 @@ const PublicData = () => { | |||
| }} | |||
| > | |||
| <span className={Styles.itemText}>{item.name}</span> | |||
| <img | |||
| onClick={(e) => { | |||
| e.stopPropagation(); | |||
| modalConfirm({ | |||
| title: '确定删除该条模型实例吗?', | |||
| onOk: () => { | |||
| deleteModel(item.id).then((ret) => { | |||
| if (ret.code === 200) { | |||
| message.success('删除成功'); | |||
| getModelLists(queryFlow); | |||
| } else { | |||
| message.error(ret.msg); | |||
| } | |||
| }); | |||
| }, | |||
| }); | |||
| }} | |||
| className={Styles.dropdown} | |||
| style={{ width: '17px', marginRight: '6px' }} | |||
| src={deleteIcon} | |||
| alt="" | |||
| /> | |||
| <div className={Styles.itemDescripition}>{item.description}</div> | |||
| <div className={Styles.itemTime}> | |||
| <img | |||
| @@ -1,4 +1,5 @@ | |||
| import KFIcon from '@/components/KFIcon'; | |||
| import KFModal from '@/components/KFModal'; | |||
| import { | |||
| addWorkflow, | |||
| cloneWorkflow, | |||
| @@ -9,12 +10,13 @@ import { | |||
| } from '@/services/pipeline/index.js'; | |||
| import themes from '@/styles/theme.less'; | |||
| import { modalConfirm } from '@/utils/ui'; | |||
| import { Button, ConfigProvider, Form, Input, Modal, Space, Table, message } from 'antd'; | |||
| import { Button, ConfigProvider, Form, Input, Space, Table, message } from 'antd'; | |||
| import classNames from 'classnames'; | |||
| import momnet from 'moment'; | |||
| import { useEffect, useRef, useState } from 'react'; | |||
| import { useNavigate } from 'react-router-dom'; | |||
| import Styles from './index.less'; | |||
| const { TextArea } = Input; | |||
| const Pipeline = () => { | |||
| const [form] = Form.useForm(); | |||
| @@ -254,17 +256,10 @@ const Pipeline = () => { | |||
| scroll={{ y: 'calc(100% - 55px)' }} | |||
| /> | |||
| </div> | |||
| <Modal | |||
| title={ | |||
| <div style={{ display: 'flex', alignItems: 'center', fontWeight: 500 }}> | |||
| <img | |||
| style={{ width: '20px', marginRight: '10px' }} | |||
| src={`/assets/images/pipeline-edit-icon.png`} | |||
| alt="" | |||
| /> | |||
| {dialogTitle} | |||
| </div> | |||
| } | |||
| <KFModal | |||
| title={dialogTitle} | |||
| image={require('@/assets/img/create-experiment.png')} | |||
| width={825} | |||
| open={isModalOpen} | |||
| className={Styles.modal} | |||
| okButtonProps={{ | |||
| @@ -314,7 +309,7 @@ const Pipeline = () => { | |||
| /> | |||
| </Form.Item> | |||
| </Form> | |||
| </Modal> | |||
| </KFModal> | |||
| </div> | |||
| ); | |||
| }; | |||
| @@ -8,60 +8,17 @@ | |||
| padding-right: 30px; | |||
| background-image: url(/assets/images/pipeline-back.png); | |||
| background-size: 100% 100%; | |||
| } | |||
| .modal { | |||
| :global { | |||
| .ant-modal-content { | |||
| width: 825px; | |||
| padding: 20px 67px; | |||
| background-image: url(/assets/images/modal-back.png); | |||
| background-repeat: no-repeat; | |||
| background-position: top center; | |||
| background-size: 100%; | |||
| border-radius: 21px; | |||
| } | |||
| .ant-modal-header { | |||
| margin: 20px 0; | |||
| background-color: transparent; | |||
| } | |||
| .ant-input { | |||
| height: 40px; | |||
| border-color: #e6e6e6; | |||
| } | |||
| .ant-form-item .ant-form-item-label > label { | |||
| color: rgba(29, 29, 32, 0.8); | |||
| } | |||
| .ant-modal-footer { | |||
| display: flex; | |||
| justify-content: center; | |||
| margin: 40px 0 30px 0; | |||
| } | |||
| .ant-btn { | |||
| width: 110px; | |||
| height: 40px; | |||
| font-size: 18px; | |||
| background: rgba(22, 100, 255, 0.06); | |||
| border-color: transparent; | |||
| border-radius: 10px; | |||
| } | |||
| .ant-btn-primary { | |||
| background: #1664ff; | |||
| } | |||
| } | |||
| } | |||
| .PipelineBox{ | |||
| .PipelineBox { | |||
| height: calc(100% - 20px); | |||
| .PipelineTable{ | |||
| .PipelineTable { | |||
| height: calc(100% - 60px); | |||
| :global{ | |||
| .ant-table-wrapper .ant-table{ | |||
| :global { | |||
| .ant-table-wrapper .ant-table { | |||
| // overflow-y: auto; | |||
| height: calc(100% - 48px); | |||
| } | |||
| } | |||
| } | |||
| } | |||