import { CommonTabKeys } from '@/enums'; import { useCacheState } from '@/hooks/pageCacheState'; import { getAssetIcon } from '@/services/dataset/index.js'; import { to } from '@/utils/promise'; import { Flex, Tabs, type TabsProps } from 'antd'; import { useEffect, useRef, useState } from 'react'; import { CategoryData, ResourceType, resourceConfig } from '../../types'; import CategoryList from '../CategoryList'; import ResourceList, { ResourceListRef } from '../ResourceList'; import styles from './index.less'; type ResourcePageProps = { resourceType: ResourceType; // 资源类型,数据集还是模型 }; function ResourcePage({ resourceType }: ResourcePageProps) { const [cacheState, setCacheState] = useCacheState(); const [activeTab, setActiveTab] = useState(cacheState?.activeTab ?? CommonTabKeys.Public); const [typeList, setTypeList] = useState([]); const [tagList, setTagList] = useState([]); const [activeType, setActiveType] = useState(cacheState?.activeType); const [activeTag, setActiveTag] = useState(cacheState?.activeTag); const dataListRef = useRef(null); useEffect(() => { getAssetIconList(); }, []); // 分类搜索 const handleCategorySearch = (value: string) => { getAssetIconList(value); }; // 选择类型 const chooseType = (record: CategoryData) => { setActiveType((prev) => (prev === record.id ? undefined : record.id)); }; // 选择 Tag const chooseTag = (record: CategoryData) => { setActiveTag((prev) => (prev === record.id ? undefined : record.id)); }; // 获取分类 const getAssetIconList = async (name: string = '') => { const params = { name: name, page: 0, size: 10000, }; const [res] = await to(getAssetIcon(params)); if (res && res.data && res.data.content) { const { content } = res.data; setTypeList( content.filter( (item: CategoryData) => Number(item.category_id) === resourceConfig[resourceType].typeValue, ), ); setTagList( content.filter( (item: CategoryData) => Number(item.category_id) === resourceConfig[resourceType].tagValue, ), ); } }; // 切换 Tab,重置数据 const hanleTabChange: TabsProps['onChange'] = (value) => { dataListRef.current?.reset(); setActiveTab(value); }; const isPublic = activeTab === CommonTabKeys.Public; return (
); } export default ResourcePage;