/* * @Author: ZhaoYing * @Date: 2026-02-03 16:50:05 * @Last Modified by: ZhaoYing * @Last Modified time: 2026-03-20 19:02:31 */ /** * Model Management Main Page * Manages AI models with three views: group models, model list, and model square * Supports filtering, searching, and CRUD operations */ import { useState, useRef, type FC } from 'react'; import { Button, Flex, Space, type SegmentedProps, Form } from 'antd' import { useTranslation } from 'react-i18next'; import GroupModelModal from './components/GroupModelModal' import type { ModelListItem, GroupModelModalRef, CustomModelModalRef, BaseRef, Query } from './types' import SearchInput from '@/components/SearchInput' import PageTabs from '@/components/PageTabs' import GroupModel from './Group' import ModelList from './List' import ModelSquare from './Square' import CustomModelModal from './components/CustomModelModal' import CustomSelect from '@/components/CustomSelect' import { modelTypeUrl, modelProviderUrl } from '@/api/models' /** * Available tab keys */ const tabKeys = ['group', 'list', 'square'] /** * Model management main component */const ModelManagement: FC = () => { const { t } = useTranslation(); const [activeTab, setActiveTab] = useState('group'); const configModalRef = useRef(null) const customModelModalRef = useRef(null) const groupRef = useRef(null) const modelListRef = useRef(null) const [form] = Form.useForm() const query = Form.useWatch([], form) /** Format tab items with translations */ const formatTabItems = () => { return tabKeys.map(value => ({ value, label: t(`modelNew.${value}`), })) } /** Handle tab change */ const handleChangeTab = (value: SegmentedProps['value']) => { setActiveTab(value as string); form.resetFields() } /** Open edit modal based on active tab */ const handleEdit = (vo?: ModelListItem | ModelListItem) => { switch(activeTab) { case 'group': configModalRef?.current?.handleOpen(vo as ModelListItem) break case 'list': customModelModalRef?.current?.handleOpen(vo as ModelListItem) break } } /** Refresh list based on active tab */ const handleRefresh = (isEdit?: boolean) => { switch (activeTab) { case 'group': groupRef.current?.getList() break case 'list': console.log('isEdit', isEdit) if (isEdit) { modelListRef.current?.modelListDetailRefresh?.() } else { modelListRef.current?.getList() } break } } return (
{activeTab === 'list' && items.map((item) => ({ label: t(`modelNew.${item}`), value: String(item) }))} className="rb:w-40" allowClear={true} placeholder={t('modelNew.type')} /> } {activeTab === 'list' && items.map((item) => ({ label: t(`modelNew.${item}`), value: String(item) }))} className="rb:w-40" allowClear={true} placeholder={t('modelNew.provider')} /> } {activeTab !== 'list' && } {activeTab === 'group' && } {activeTab === 'list' && }
{activeTab === 'group' && } {activeTab === 'list' && } {activeTab === 'square' && }
) } export default ModelManagement