import React, { useState, useEffect } from 'react'; import { PlusOutlined } from '@ant-design/icons'; import { Button, Modal, Steps } from 'antd'; import SpaceCard from '@/components/knowledge/space-card'; import { File, ISpace, StepChangeParams, IStorage, SpaceConfig } from '@/types/knowledge'; import { apiInterceptors, getSpaceList, getSpaceConfig } from '@/client/api'; import { useTranslation } from 'react-i18next'; import DocUploadForm from '@/components/knowledge/doc-upload-form'; import SpaceForm from '@/components/knowledge/space-form'; import DocTypeForm from '@/components/knowledge/doc-type-form'; import Segmentation from '@/components/knowledge/segmentation'; import classNames from 'classnames'; const Knowledge = () => { const [spaceList, setSpaceList] = useState | null>([]); const [isAddShow, setIsAddShow] = useState(false); const [activeStep, setActiveStep] = useState(0); const [spaceName, setSpaceName] = useState(''); const [files, setFiles] = useState>([]); const [docType, setDocType] = useState(''); const [spaceConfig, setSpaceConfig] = useState(null); const { t } = useTranslation(); const addKnowledgeSteps = [ { title: t('Knowledge_Space_Config') }, { title: t('Choose_a_Datasource_type') }, { title: t('Upload') }, { title: t('Segmentation') }, ]; async function getSpaces() { const [_, data] = await apiInterceptors(getSpaceList()); setSpaceList(data); } async function getSpaceConfigs() { const [_, data] = await apiInterceptors(getSpaceConfig()); if (!data) return null; setSpaceConfig(data.storage); } useEffect(() => { getSpaces(); getSpaceConfigs(); }, []); const handleStepChange = ({ label, spaceName, docType = '', files, pace = 1 }: StepChangeParams) => { if (label === 'finish') { setIsAddShow(false); getSpaces(); setSpaceName(''); setDocType(''); } else if (label === 'forward') { activeStep === 0 && getSpaces(); setActiveStep((step) => step + pace); } else { setActiveStep((step) => step - pace); } files && setFiles(files); spaceName && setSpaceName(spaceName); docType && setDocType(docType); }; function onAddDoc(spaceName: string) { const space = spaceList?.find((item) => item?.name === spaceName); setSpaceName(spaceName); setActiveStep(space?.domain_type === 'FinancialReport' ? 2 : 1); setIsAddShow(true); if (space?.domain_type === 'FinancialReport') { setDocType('DOCUMENT'); } } return (
{spaceList?.map((space: ISpace) => ( ))}
{ setIsAddShow(false); }} width={1000} afterClose={() => { setActiveStep(0); getSpaces(); }} footer={null} > {activeStep === 0 && } {activeStep === 1 && } {activeStep === 3 && }
); }; export default Knowledge;