import React, { useState, useEffect } from 'react'; import { Modal, Button, Input, Message, Tooltip } from '@arco-design/web-react'; import { IconQuestionCircle, IconCopy, IconDelete, IconPlus } from '@arco-design/web-react/icon'; import styles from './style/envConfigModal.module.less'; import { getComponentEnvConfig, saveComponentEnvConfig } from '@/api/componentInstance'; interface EnvConfigModalProps { language: string; visible: boolean; instanceId: string; onCancel: () => void; onSuccess?: () => void; } interface ConfigItem { name: string; key: string; value: string; desc: string; unmodifiable?: boolean; isCustom?: boolean; // 标记是否为用户自定义添加的 } const EnvConfigModal: React.FC = ({ language, visible, instanceId, onCancel, onSuccess }) => { const [loading, setLoading] = useState(false); const [saveLoading, setSaveLoading] = useState(false); const [configData, setConfigData] = useState(null); const [configList, setConfigList] = useState([]); useEffect(() => { if (visible && instanceId) { fetchEnvConfig(); } }, [visible, instanceId]); const fetchEnvConfig = async () => { try { setLoading(true); const res: any = await getComponentEnvConfig(instanceId); if (res.code === 200) { setConfigData(res.data); setConfigList(res.data.config || []); } else { Message.error(res.msg || '获取环境配置失败'); } } catch (error) { console.error('获取环境配置失败:', error); Message.error('获取环境配置失败'); } finally { setLoading(false); } }; const handleConfigChange = (index: number, field: keyof ConfigItem, value: string) => { const newConfigList: any = [...configList]; newConfigList[index][field] = value; setConfigList(newConfigList); }; // 添加新配置行 const handleAddConfig = () => { const newConfig: ConfigItem = { name: '', key: '', value: '', desc: '', isCustom: true }; setConfigList([...configList, newConfig]); }; // 删除配置行 const handleDeleteConfig = (index: number) => { const newConfigList = configList.filter((_, i) => i !== index); setConfigList(newConfigList); }; const handleCopyCommand = () => { navigator.clipboard.writeText(configData.javaCommand); Message.success('复制成功'); }; const handleSave = async () => { try { setSaveLoading(true); const params = { ...configData, config: configList }; const res: any = await saveComponentEnvConfig(instanceId, params); if (res.code === 200) { Message.success('保存成功'); onSuccess?.(); onCancel(); } else { Message.error(res.msg || '保存失败'); } } catch (error) { console.error('保存失败:', error); Message.error('保存失败'); } finally { setSaveLoading(false); } }; return ( } >
{loading ? (

正在加载配置信息...

) : ( <> {/* 命令展示 */} {configData?.javaCommand && (
{language.includes('Python') ? configData.pythonCommand : configData.javaCommand}
本地点击"复制命令"按钮可以复制上方命令
)} {/* 配置表格 */}
#
* 启动名称
* 参数名(key)
配置值
描述说明
操作
{configList.map((item, index) => (
{index + 1}
handleConfigChange(index, 'name', value)} placeholder="请输入启动名称" size="small" />
handleConfigChange(index, 'key', value)} placeholder="请输入参数名" size="small" />
handleConfigChange(index, 'value', value)} placeholder="请输入配置值" size="small" />
handleConfigChange(index, 'desc', value)} placeholder="请输入描述说明" size="small" />
{item.isCustom && ( )}
))}
{/* 添加新配置按钮 */}
)}
); }; export default EnvConfigModal;