/* * @Author: donghao donghao@supervision.ltd * @Date: 2024-04-22 15:23:36 * @LastEditors: donghao donghao@supervision.ltd * @LastEditTime: 2024-07-18 11:15:26 * @FilePath: \general-ai-platform-web\src\pages\Node\BusinessModel\index.tsx * @Description: 业务模型 * @交互说明 * 1、业务模型列表的分页展示 * 2、新增、更新、删除(模型)功能 * 3. 模型详情展示 */ import TableActionCard from '@/components/TableActionCard'; import IsDelete from '@/components/TableActionCard/isDelete'; import { useBusinessInfo } from '@/hooks/useBusinessInfo'; import { apiModelDeploymentDelete, apiModelDeploymentInfo, apiModelDeploymentList, } from '@/services/business/model'; import { isSuccessApi } from '@/utils/forApi'; import { ExclamationCircleFilled } from '@ant-design/icons'; import type { ActionType, ProColumns } from '@ant-design/pro-components'; import { ProCard, ProTable } from '@ant-design/pro-components'; import { FormattedMessage, useIntl } from '@umijs/max'; import { Button, message } from 'antd'; import { useRef, useState } from 'react'; import { proTableDefaultOptions, proTablePaginationOptions } from '../../../../config/defaultTable'; import CreateForm from './components/createForm'; import UpdateForm from './components/updateForm'; import DetailCard from './components/detailCard'; const BusinessModel: React.FC = () => { const intl = useIntl(); const { getStoreBusinessInfo } = useBusinessInfo(); const actionRef = useRef(); const [commInfo] = useState>({ ...getStoreBusinessInfo() }); // 通用信息 const [createModalOpen, setCreateModalOpen] = useState(false); const [updateModalOpen, setUpdateModalOpen] = useState(false); const [detailModalOpen, setDetailModalOpen] = useState(false); // 编辑窗口是否打开 const [currentRow, setCurrentRow] = useState>({}); // 动态设置每页数量 const [currentPageSize, setCurrentPageSize] = useState(10); /**新增 编辑 详情 删除 */ // 新增 const handleCreateModal = () => { setCreateModalOpen(!createModalOpen); }; // 编辑 const handleUpdateModal = () => { setUpdateModalOpen(!updateModalOpen); }; // 详情 const handleDetailModal = () => { setDetailModalOpen(!detailModalOpen); }; // 设备节点信息 async function loadDetail(record, isOpenDetail = false) { const resp = await apiModelDeploymentInfo({ id: record?.model_id }); if (isSuccessApi(resp) && resp?.data) { setCurrentRow({ ...resp?.data, id: record?.model_id }); if (isOpenDetail) { setUpdateModalOpen(true); } } } function reloadList() { actionRef.current?.reload(); } // 业务模型列表信息 const columns: ProColumns>[] = [ { title: , dataIndex: 'model_name', hideInSearch: true, key: 'fixedName', fixed: 'left', width: '40%', }, { title: ( ), dataIndex: 'create_time', hideInSearch: true, valueType: 'dateTime', }, { title: , dataIndex: 'option', valueType: 'option', fixed: 'right', key: 'option', render: (_, record) => [ { loadDetail(record); setDetailModalOpen(true); }} > ), }, { key: 'update', renderDom: ( ), }, { key: 'destroy', renderDom: ( { // console.log('删除成功'); const resp = await apiModelDeploymentDelete({ id: record.model_id }); console.log(resp, 'apiModelDeploymentDelete'); if (isSuccessApi(resp)) { reloadList(); message.success( intl.formatMessage({ id: 'common.action.success', defaultMessage: '$$$', }), ); } else { message.error( resp?.meta?.message || intl.formatMessage({ id: 'common.action.failure', defaultMessage: '$$$', }), ); } }} > ), }, ]} >, ], }, ]; return (
} extra={ } >
业务模型需关联设备节点请先至“设备节点”页创建需关联的节点
{ console.log(data, 'onDataSourceChange_data'); // let CategoryFkIdIds: any = data.map((v) => { // return v.categoryFkId; // }); // setCategoryFkIdIds(CategoryFkIdIds); }} pagination={{ ...proTablePaginationOptions, pageSize: currentPageSize, onChange: (pageNo, pageSize) => setCurrentPageSize(pageSize), }} columnsState={{ persistenceKey: 'algorithm_model_list', persistenceType: 'localStorage', }} request={async (params = {}) => { const { current, ...rest } = params; const reqParams = { pageNo: current, entity_id: commInfo.id, ...rest, }; let resp = await apiModelDeploymentList({ ...reqParams }); if (!isSuccessApi(resp)) { return { data: [], success: true }; } console.log(resp, 'getModelVersionList_resp'); return { data: resp.data?.data, success: resp.success, total: resp.data.count, current: current, pageSize: currentPageSize, }; }} columns={columns} />
); }; export default BusinessModel;