import { ArrowDownOutlined } from '@ant-design/icons'; import { ProFormDependency, ProFormSelect } from '@ant-design/pro-components'; import { Divider, Flex, Tag, Typography } from 'antd'; import { useContext, useEffect, useMemo } from 'react'; import { $t } from '@/utils/i18n'; import { MultiCopyPopupContext } from '../context'; import RuleCheckCard from './RuleCheckCard'; type Step1Props = { formMapRef: any; setTargetDataSourceId: (id: string | number | null) => void; }; const Step1 = ({ formMapRef, setTargetDataSourceId }: Step1Props) => { const { dataSourceList } = useContext(MultiCopyPopupContext); const buildOptions = (sourceId?: string | number) => { const sourceType = dataSourceList.find((item) => item.id === sourceId) ?.sourceType; return dataSourceList.map((item) => ({ ...item, disabled: item.sourceType !== sourceType, label: ( {item.sourceName} MT{item.sourceType} ), })); }; const sourceOptions = useMemo( () => dataSourceList.map((item) => ({ ...item, label: ( {item.sourceName} MT{item.sourceType} ), })), [dataSourceList], ); useEffect(() => { if (dataSourceList?.length) { const sourceItem = dataSourceList[0]; const sourceDataSourceId = sourceItem?.id || ''; const sameTypeItem = dataSourceList.find( (item) => item.id !== sourceDataSourceId && item.sourceType === sourceItem?.sourceType, ); const targetDataSourceId = sameTypeItem?.id || sourceDataSourceId; const curFormRef = formMapRef?.current?.[0]?.current; if (curFormRef) { curFormRef?.setFieldsValue({ sourceDataSourceId, targetDataSourceId, }); setTargetDataSourceId(targetDataSourceId); } } }, [dataSourceList]); return ( <> {({ sourceDataSourceId }) => { if (!sourceDataSourceId) return null; return ; }} {$t('pages.clones.step1.dividerText')} {({ sourceDataSourceId }) => { if (!sourceDataSourceId) return null; const targetOptions = buildOptions(sourceDataSourceId); return ( { setTargetDataSourceId(value || null); }} /> ); }} ); }; export default Step1;