import {AlgorithmModelColumns} from '@/pages/Resource/AlgorithmModelList/components/Columns'; import { postAlgorithmModelGetAlgorithmModelById, postAlgorithmModelGetAlgorithmModelFkSelect, postAlgorithmModelGetAlgorithmModelNames, putAlgorithmModelUpdateAlgorithmModel } from '@/services/resource/AlgorithmModel'; import {ColumnDrawer as AlgorithmModelColumnDrawer} from "@/pages/Resource/AlgorithmModelList/components/ColumnDrawer"; import {deleteModelVersionDeleteModelVersion, postModelVersionGetModelVersionList, deleteModelVersionDeleteModelVersionByIds} from '@/services/resource/ModelVersion'; import { PlusOutlined } from '@ant-design/icons'; import type { ActionType, ProColumns } from '@ant-design/pro-components'; import { FooterToolbar, PageContainer, ProTable, ProFormSelect, } from '@ant-design/pro-components'; import { FormattedMessage, useIntl, useAccess, Access, history } from '@umijs/max'; import {Button, message, Popconfirm} from 'antd'; import React, { useRef, useState } from 'react'; import UpdateForm from './components/UpdateForm'; import MyCreateForm from "./components/MyCreateForm"; import {ColumnDrawer} from "./components/ColumnDrawer"; const ModelVersionList: React.FC = () => { /** * @en-US Pop-up window of new window * @zh-CN 新建窗口的弹窗 * */ const [publishModalOpen, setPublishModalOpen] = useState(false); const [createModalOpen, setCreateModalOpen] = useState(false); /** * @en-US The pop-up window of the distribution update window * @zh-CN 分布更新窗口的弹窗 * */ const [updateModalOpen, setUpdateModalOpen] = useState(false); const [showDetail, setShowDetail] = useState(false); /** * @en-US International configuration * @zh-CN 国际化配置 * */ const access = useAccess(); const intl = useIntl(); const actionRef = useRef(); 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 handle_model_fk_id = (id: any)=>{ if (model_fk_id_open) { set_model_fk_id(undefined); set_model_fk_id_open(false) }else { postAlgorithmModelGetAlgorithmModelById({id: id}).then((resp)=>{ set_model_fk_id(resp.data.algorithmModel) set_model_fk_id_open(true) }) } } const handle_model_fk_id_column_open = ()=>{ if (model_fk_id_column_open) { set_model_fk_id_column_open(false) }else { postAlgorithmModelGetAlgorithmModelNames({ids: modelFkIdIds}).then((resp)=>{ let a: any = {} resp.data.list.forEach((v: any)=>{ if (v.id) { a[v.id] = v.name } }) setModelFkIdMap(a) }) set_model_fk_id_column_open(true) } } const handleUpdateModal = ()=>{ if (updateModalOpen) { setUpdateModalOpen(false) setCurrentRow(undefined) } else { setUpdateModalOpen(true) } } const handlePublishModal = ()=>{ if (publishModalOpen) { setPublishModalOpen(false) setCurrentRow(undefined) } else { setPublishModalOpen(true) } } const handleCreateModal = ()=>{ if (createModalOpen) { setCreateModalOpen(false) setCurrentRow(undefined) } else { setCreateModalOpen(true) } } const handleColumnDrawer = ()=>{ if (showDetail) { setShowDetail(false) setCurrentRow(undefined) } else { setShowDetail(true) } } 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, render: (dom, entity) => { return ( { setCurrentRow(entity); setShowDetail(true); }} > {dom} ); }, }, { title: (), dataIndex: "modelFkId", hideInSearch: false, render: (text, record) => { if (model_fk_id_column_open) { return ( {handle_model_fk_id(record.modelFkId)}}>{record?.modelFkId ? modelFkIdMap[record.modelFkId] : undefined}) } else { return ({handle_model_fk_id(record.modelFkId)}}>{record.modelFkId}) } }, renderFormItem: () => { return ( // value 和 onchange 会通过 form 自动注入。 { const resp = await postAlgorithmModelGetAlgorithmModelFkSelect({keyword: keyWord?.keyWords || ''}) return resp.data.list.map((v: any)=>{ return { label: v.name, value: v.id } }) }} /> ); }, }, { title: (), dataIndex: "version", hideInSearch: true, }, { title: (), dataIndex: "path", hideInSearch: true, }, { title: (), dataIndex: "startCode", 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) => [ { setUpdateModalOpen(true); setCurrentRow(record); }} > { handleDestroy(record).then(()=>{}) }}> {}} onCancel={()=>{}} okText="Yes" cancelText="No" > { setPublishModalOpen(true); setCurrentRow(record); }}> { 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: '$$$'})) }) }} onCancel={()=>{}} okText="Yes" cancelText="No" > { }}> ], },]; return ( headerTitle={intl.formatMessage({ id: 'pages.searchTable.title', defaultMessage: '$$$', })} options={{ fullScreen: true, setting: true, density: true, reload: true }} actionRef={actionRef} rowKey="key" search={{ labelWidth: 120, }} onDataSourceChange={(data)=>{ let ModelFkIdIds: any = data.map((v)=>{ return v.modelFkId }) setModelFkIdIds(ModelFkIdIds) }} pagination={{ showSizeChanger: true, pageSize: 10, }} columnsState={{ persistenceKey: 'model_version_list', persistenceType: 'localStorage' }} toolBarRender={() => [ ]} request={async (params = {}, sort) => { const {current, ...rest} = params const reqParams = { page: current, desc: false, orderKey: "", ...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 }; }} columns={columns} rowSelection={{ onChange: (_, selectedRows) => { setSelectedRows(selectedRows); }, }} /> {selectedRowsState?.length > 0 && ( {' '} {selectedRowsState.length}{' '} } > )} {/**/} ); }; export default ModelVersionList;