import React, { useEffect, useState, useRef } from 'react'; import { Modal, Steps, Select, Grid, Input, Form, Message, Button } from '@arco-design/web-react'; import EnvExtra from '@/pages/componentDevelopment/componentEnv/envExtra'; import FormEditor, { FormEditorInstance } from '@/pages/componentDevelopment/componentEnv/formEditor'; const Step = Steps.Step; // 定义环境类型选项的接口 interface EnvTypeOption { id: string | number; classifyType: string; classifyName: string; dictKey: string; } // 定义组件 Props 类型 interface AddModalProps { visible: boolean; envType: EnvTypeOption[]; setVisible: (visible: boolean) => void; onOk?: (value) => void; record?: any; // 添加record属性用于接收外部传入的数据 } const AddModal = ({ visible, envType, setVisible, onOk, record }: AddModalProps) => { const [currentStep, setCurrentStep] = useState(1); const [envTypeOptions, setEnvTypeOptions] = useState([]); const [confirmLoading, setConfirmLoading] = useState(false); const [currentEnvData, setCurrentEnvData] = useState({}); const formRef = useRef(null); useEffect(() => { if (envType.length > 0) setEnvTypeOptions(envType); }, [envType]); // 当组件接收到record参数时,初始化数据并跳转到第二步 useEffect(() => { if (record && Object.keys(record).length > 0) setCurrentStep(2); else setCurrentStep(1); setCurrentEnvData(record); }, [record, visible]); const handleOk = () => { // 当前步骤为1时,触发表单提交 if (currentStep === 1) { formRef.current && formRef.current.handleOk(); return; } setVisible(false); }; const handleCancel = () => { setVisible(false); }; const handleStepOneSuccess = (value) => { setCurrentStep(2); setCurrentEnvData(value); onOk && onOk(value); }; // 返回第一步的处理函数 const handleBackToStepOne = () => { setCurrentStep(1); }; return ( 取消, currentStep === 2 && ( ), ]} > {currentStep === 1 && ( handleStepOneSuccess(value)} /> )} {currentStep === 2 && ( )} ); }; export default AddModal;