import { postAlgorithmModelGetAlgorithmModelById, putAlgorithmModelUpdateAlgorithmModel } from '@/services/resource/AlgorithmModel'; import { deleteModelVersionDeleteModelVersion, postModelVersionGetModelVersionList } from '@/services/resource/ModelVersion'; import { ArrowLeftOutlined, PlusOutlined } from '@ant-design/icons'; import { ActionType, PageContainer, ProCard, ProColumns, ProDescriptions, ProTable, } from '@ant-design/pro-components'; import { Access, FormattedMessage, history, useAccess, useParams, useIntl } from '@umijs/max'; import { Button, message } from 'antd'; import React, { useRef, useState } from 'react'; import MyCreateForm from '../ModelVersionList/components/MyCreateForm'; import TableActionCard from '@/components/TableActionCard'; import IsDelete from '@/components/TableActionCard/isDelete'; import UpdateForm from '../ModelVersionList/components/UpdateForm'; import {proTableCommonOptions} from "../../../../config/defaultTable"; import {AlgorithmModelColumns} from "./components/Columns" import IsConfirmAction from "@/components/TableActionCard/isConfirmAction"; /**styles */ const detailStylesProps = { marginBottom: 15, textColor: '#333333', }; const headerStylesProps = { fontSize: 16, fontWeight: 700, color: '#333333', }; const AlgorithmModelDetail: React.FC = () => { const access = useAccess(); const intl = useIntl(); const actionRef = useRef(); const [createModalOpen, setCreateModalOpen] = useState(false); const [updateModalOpen, setUpdateModalOpen] = useState(false); const [currentRow, setCurrentRow] = useState(); const [selectedRowsState, setSelectedRows] = useState([]); const [model_fk_id_open, set_model_fk_id_open] = useState(false); const [model_fk_id, set_model_fk_id] = useState(); const [model_fk_id_column_open, set_model_fk_id_column_open] = useState(false); const [modelFkIdIds, setModelFkIdIds] = useState([]); const [modelFkIdMap, setModelFkIdMap] = useState<{ [key: number]: string }>({}); const handleDestroy = async (selectedRow: API.ModelVersion) => { deleteModelVersionDeleteModelVersion({ id: selectedRow.id }) .then(() => { message.success(intl.formatMessage({ id: 'common.success', defaultMessage: '$$$' })); actionRef.current?.reload(); }) .catch(() => { message.error(intl.formatMessage({ id: 'common.failure', defaultMessage: '$$$' })); }); }; const columns: ProColumns[] = [ { title: , dataIndex: 'id', sorter: true, }, { title: , dataIndex: 'version', hideInSearch: true, }, { title: , dataIndex: 'path', hideInSearch: true, }, { title: ( ), dataIndex: 'isEnable', filters: true, onFilter: true, hideInSearch: true, valueType: 'switch', }, { title: , dataIndex: 'remark', hideInSearch: true, }, { title: , dataIndex: 'status', hideInSearch: true, valueEnum: { 1: { text: '已创建', status: 'Default' }, 2: { text: '已发布', status: 'Processing' }, 3: { text: '已上架', status: 'Success' }, 4: { text: '已下架', status: 'Default' }, 5: { text: '已关闭', status: 'Error' }, }, }, { title: ( ), dataIndex: 'createTime', sorter: true, hideInSearch: true, valueType: 'dateTime', }, { title: ( ), dataIndex: 'updateTime', sorter: true, hideInSearch: true, valueType: 'dateTime', }, { title: , dataIndex: 'option', valueType: 'option', fixed: 'right', render: (_, record) => [ { // setPublishModalOpen(true); putAlgorithmModelUpdateAlgorithmModel({ id: record.modelFkId, defaultVersionFkId: record.id, }) .then(() => { message.success( intl.formatMessage({ id: 'common.success', defaultMessage: '$$$' }), ); }) .catch(() => { message.error( intl.formatMessage({ id: 'common.failure', defaultMessage: '$$$' }), ); }); }} > ), }, { key: 'update', renderDom: ( ), }, { key: 'destroy', renderDom: ( { handleDestroy(record).then(() => {}); }} > ), }, ]} >, ], }, ]; // TODO 需要将业务层代码转移到此处 // TODO 按UI原稿重新布局此模块 // 关闭页面 const doClose = () => { history.back(); }; const handleCreateModal = () => { if (createModalOpen) { setCreateModalOpen(false); setCurrentRow(undefined); } else { setCreateModalOpen(true); } }; const handleUpdateModal = () => { if (updateModalOpen) { setUpdateModalOpen(false); setCurrentRow(undefined); } else { setUpdateModalOpen(true); } }; const routeParams = useParams(); return ( 模型详情 } style={{ margin: 0, padding: 0, marginBottom: detailStylesProps.marginBottom, background: 'transparent', }} headStyle={{ margin: 0, padding: 0 }} bodyStyle={{ margin: 0, padding: 0 }} > { console.log(routeParams, 'id'); const resp = await postAlgorithmModelGetAlgorithmModelById({ id: Number(routeParams.id), }); // postModelVersionGetModelVersionList({modelFkId: 3}) console.log('resp', resp); return { data: resp.data?.algorithmModel, success: resp.success, }; }} > } style={{ margin: 0, padding: 0 }} headStyle={{ paddingTop: 20, paddingBottom: 20, ...headerStylesProps }} bodyStyle={{ margin: 0, padding: 0 }} > [ ]} request={async (params = {}, sort) => { const { current, ...rest } = params; const reqParams = { page: current, desc: false, orderKey: '', modelFkId: Number(routeParams?.id), ...rest, }; if (sort && Object.keys(sort).length) { reqParams.orderKey = Object.keys(sort)[0]; let sort_select = sort[reqParams.orderKey]; reqParams.desc = sort_select === 'descend'; } let resp = await postModelVersionGetModelVersionList({ ...reqParams }); return { data: resp.data.list.map((v: API.ModelVersion) => { return { ...v, key: v.id }; }), success: resp.success, total: resp.data.total, current: resp.data.page, pageSize: resp.data.pageSize, }; }} editable={{ type: 'multiple', }} columnsState={{ persistenceKey: 'pro-table-singe-demos', persistenceType: 'localStorage', onChange(value) { console.log('value: ', value); }, }} rowKey="id" search={false} options={{ fullScreen: false, setting: false, density: false, reload: false, }} form={{ // 由于配置了 transform,提交的参与与定义的不同这里需要转化一下 syncToUrl: (values, type) => { if (type === 'get') { return { ...values, created_at: [values.startTime, values.endTime], }; } return values; }, }} pagination={{ pageSize: 5, onChange: (page) => console.log(page), }} dateFormatter="string" /> ); }; export default AlgorithmModelDetail;