import { PageContainer } from '@ant-design/pro-layout'; import { useEffect, useState } from 'react'; import { useLocation } from 'umi'; import Access from './Access'; import Provider from './Provider'; import Media from './Media'; import { service } from '@/pages/link/AccessConfig'; import { Spin } from 'antd'; type LocationType = { id?: string; }; const Detail = () => { const location = useLocation(); const [visible, setVisible] = useState(false); const [loading, setLoading] = useState(true); const [data, setData] = useState({}); const [provider, setProvider] = useState({}); const [type, setType] = useState<'media' | 'network' | undefined>(undefined); const [dataSource, setDataSource] = useState([]); useEffect(() => { setLoading(true); const id = new URLSearchParams(location.search).get('id') || undefined; service.getProviders().then((resp) => { if (resp.status === 200) { setDataSource(resp.result); if (new URLSearchParams(location.search).get('id')) { setVisible(false); service.detail(id || '').then((response) => { setData(response.result); const dt = resp.result.find((item: any) => item?.id === response.result?.provider); setProvider(dt); if ( response.result?.provider === 'fixed-media' || response.result?.provider === 'gb28181-2016' ) { setType('media'); } else { setType('network'); } }); } else { setVisible(true); } setLoading(false); } }); }, []); const componentRender = () => { switch (type) { case 'network': return ( { setVisible(true); }} /> ); case 'media': return ( { setVisible(true); }} /> ); default: return null; } }; return ( {visible ? ( { setType(typings); setProvider(param); setData({}); setVisible(false); }} /> ) : ( componentRender() )} ); }; export default Detail;