import { postDeviceGroupGetDeviceGroupList, postDeviceGroupGetDeviceGroupTree } from '@/services/device/DeviceGroup'; import {PlusOutlined, RedoOutlined} from '@ant-design/icons'; import type {ActionType} from '@ant-design/pro-components'; import { PageContainer, ProCard, ProColumns, ProDescriptions, ProList, ProTable } from '@ant-design/pro-components'; import {useIntl, useAccess} from '@umijs/max'; import {Button, message, Tag, Tree} from 'antd'; import React, {useEffect, useRef, useState} from 'react'; import {DataNode} from "antd/es/tree"; import {Access, FormattedMessage, history} from "@@/exports"; import {postGetProjectByGroupId} from "@/services/project/Project"; import {postModelVersionGetModelVersionListByIds} from "@/services/resource/ModelVersion"; import {dateFormat} from "@/utils/common"; import UpdateForm from "./components/UpdateForm"; const AlgorithmSetting: React.FC = () => { /** * @en-US Pop-up window of new window * @zh-CN 新建窗口的弹窗 * */ /** * @en-US International configuration * @zh-CN 国际化配置 * */ const access = useAccess(); const intl = useIntl(); const actionRef = useRef(); const [updateModalOpen, setUpdateModalOpen] = useState(false); const [hasInit, setHasInit] = useState(false) const [nodeTreeData, setNodeTreeData] = React.useState([]); const [selectNodes, setSelectNodes] = React.useState([]); const [currentRow, setCurrentRow] = useState(); const [currentCard, setCurrentCard] = useState(); const [selectedRowsState, setSelectedRows] = useState([]); const [tabs, setTabs] = useState([]); const [cardActionProps, setCardActionProps] = useState<'actions' | 'extra'>( 'extra', ); const [modelVersionData, setModelVersionData] = useState([]); const [projectData, setProjectData] = useState({}); const handleUpdateModal = ()=>{ if (updateModalOpen) { setUpdateModalOpen(false) setCurrentCard(undefined) } else { setUpdateModalOpen(true) } } const data = [ '苏胜天人物识别算法', '苏胜天交警识别识别', '苏胜天车牌识别算法', '苏胜天语音识别算法', '苏胜天轨迹识别算法', ].map((item) => ({ title: '苏胜天算法模型', subTitle: 经典算法, actions: [模型版本选择], avatar: 'https://gw.alipayobjects.com/zos/antfincdn/UCSiy1j6jx/xingzhuang.svg', content: (
{item}
版本:V1.2.4
更新时间:2022-12-12
), })); const [tab, setTab] = useState(''); const columns1: ProColumns[] = [ { title: (), dataIndex: "name", hideInSearch: true, }, ]; const columns = [ { title: (), dataIndex: "id", sorter: true, }, { title: (), dataIndex: "name", hideInSearch: true, }, { title: (), dataIndex: "code", hideInSearch: true, }, { title: (), dataIndex: "address", hideInSearch: true, }, { title: (), dataIndex: "telephone", hideInSearch: true, }, { title: (), dataIndex: "lon", hideInSearch: true, }, { title: (), dataIndex: "lat", hideInSearch: true, }, { title: (), dataIndex: "managerName", hideInSearch: true, }, { title: (), dataIndex: "managerPhone", hideInSearch: true, }, { title: (), dataIndex: "isEnable", filters: true, onFilter: true, hideInSearch: true, valueType: 'switch', }, { title: (), dataIndex: "remark", hideInSearch: true, }, { title: (), dataIndex: "createTime", sorter: true, hideInSearch: true, valueType: 'dateTime', }, { title: (), dataIndex: "updateTime", sorter: true, hideInSearch: true, valueType: 'dateTime', }, ]; useEffect(() => { postDeviceGroupGetDeviceGroupTree().then((resp) => { setNodeTreeData(resp.data.tree) setHasInit(true) }).catch(() => { message.error(intl.formatMessage({id: 'common.failure', defaultMessage: '$$$'})) }) }, []) return ( } onClick={() => { setSelectNodes([]); actionRef.current?.reload() }}>重置}> headerTitle={intl.formatMessage({ id: 'pages.searchTable.title', defaultMessage: '$$$', })} options={{search: true, fullScreen: false, setting: false, density: false, reload: false}} actionRef={actionRef} search={false} rowKey="key" onRow={(record) => { return { onClick: () => { if (record.id) { setCurrentRow(record); postGetProjectByGroupId({id: record.id}).then((resp) => { let tab_data = (resp?.data?.list || []).map((v: any) => { let model_data = (v?.models || []).map((item: any) => ({ title: '苏胜天算法模型', subTitle: 经典算法, actions: [{ setCurrentCard({groupFkId: record.id, modelFkId: item.id}) handleUpdateModal() }}>绑定设备], avatar: 'https://gw.alipayobjects.com/zos/antfincdn/UCSiy1j6jx/xingzhuang.svg', content: (
{item.name}
版本:{item.remark}
更新时间:{dateFormat(item.updateTime)}
) })); console.log(88, model_data, data) // setProjectData({...projectData, [v.id]: v}) return { label: `项目:${v.name}`, key: v.id, children: ( ghost={true} itemCardProps={{ ghost: true, }} pagination={{ defaultPageSize: 8, showSizeChanger: false, }} showActions="hover" grid={{ gutter: 8, column: 4 }} metas={{ title: {}, subTitle: {}, type: {}, avatar: {}, content: {}, actions: { cardActionProps, }, }} headerTitle="项目模型列表" dataSource={model_data} />), } }) if (tab_data.length) { setTab(tab_data[0].key) } setTabs(tab_data) }) } }, }; }} pagination={{ showSizeChanger: false, pageSize: 10, }} columnsState={{ persistenceKey: 'device_group_list', persistenceType: 'localStorage' }} 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 postDeviceGroupGetDeviceGroupList({...reqParams, name: params?.keyword || ''}) return { data: resp.data.list.map((v: API.DeviceGroup)=>{ return {...v, key: v.id} }), success: resp.success, total: resp.data.total, current: resp.data.page, pageSize: resp.data.pageSize }; }} columns={columns1} rowSelection={{ onChange: (_, selectedRows) => { // setSelectedRows(selectedRows); }, }} />
{ let model_ids = projectData[key]?.inferConfig?.models || [] postModelVersionGetModelVersionListByIds({ids: model_ids}).then((resp)=>{ let version_model_data = (resp?.data?.list || []).map((item) => { return { title: '苏胜天算法模型', subTitle: 经典算法, actions: [{handleUpdateModal()}}>模型版本选择], avatar: 'https://gw.alipayobjects.com/zos/antfincdn/UCSiy1j6jx/xingzhuang.svg', content: (
{item}
版本:V1.2.4
更新时间:2022-12-12
), } }); setModelVersionData(version_model_data) console.log(99, modelVersionData) }) setTab(key); }, }} >
); }; export default AlgorithmSetting;