import React, { useEffect, useState } from 'react'; import { Button, Space, Modal, Message, Popover } from '@arco-design/web-react'; import { IconSync } from '@arco-design/web-react/icon'; import { downloadEnvConfigFile, testEnv } from '@/api/componentDeployEnv'; import ConfigTutorial from './configTutorial'; const EnvExtra = ({ currentEnvData }) => { const [testLoading, setTestLoading] = useState(false); const [tutorialVisible, setTutorialVisible] = useState(false); const [onceTestType, setOnceTestType] = useState(null); // 单次测试结果 // 下载配置证书压缩包文件 const handleDownloadConfig = async () => { try { const blob = await downloadEnvConfigFile(currentEnvData.id); console.log('blob:', blob); // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore const url = window.URL.createObjectURL(blob); const link = document.createElement('a'); link.href = url; // 设置文件名 - 环境名称_时间戳.zip const fileName = `${currentEnvData.name}_配置文件_${new Date().getTime()}.zip`; link.setAttribute('download', fileName); // 触发下载 document.body.appendChild(link); link.click(); // 清理 document.body.removeChild(link); window.URL.revokeObjectURL(url); Message.success('下载配置文件成功'); } catch (e) { console.error('下载配置文件失败:', e); Message.error('下载配置文件失败: ' + (e.message || '未知错误')); } }; // 模拟查看环境配置教程 const handleViewTutorial = () => { setTutorialVisible(true); }; // 模拟点击测试环境可用性 const handleTestAvailability = async () => { setTestLoading(true); const res: any = await testEnv(currentEnvData.id); if (res.code === 200 && res.data) { setOnceTestType(true); Message.success(`环境 ${currentEnvData.name} 测试成功`); } else { setOnceTestType(false); Message.error(`环境 ${currentEnvData.name} 测试失败: ${res.message}`); } setTestLoading(false); }; useEffect(() => { if (currentEnvData?.available === 1) setOnceTestType(true); else if (currentEnvData?.available === -1) setOnceTestType(false); else setOnceTestType(null); }, [currentEnvData]); return ( <>