import React, { useEffect, useState } from 'react'; import { Modal, message, Input, Form, Statistic, Button } from 'antd'; import { request } from '@/utils/http'; import config from '@/utils/config'; import { Loading3QuartersOutlined, CheckCircleOutlined, } from '@ant-design/icons'; import { PageLoading } from '@ant-design/pro-layout'; import Ansi from 'ansi-to-react'; const DependenceLogModal = ({ dependence, handleCancel, visible, socketMessage, }: { dependence?: any; visible: boolean; handleCancel: (needRemove?: boolean) => void; socketMessage: any; }) => { const [value, setValue] = useState(''); const [executing, setExecuting] = useState(true); const [isPhone, setIsPhone] = useState(false); const [loading, setLoading] = useState(true); const [isRemoveFailed, setIsRemoveFailed] = useState(false); const [removeLoading, setRemoveLoading] = useState(false); const cancel = (needRemove: boolean = false) => { localStorage.removeItem('logDependence'); handleCancel(needRemove); }; const titleElement = () => { return ( <> {executing && } {!executing && } 日志 - {dependence && dependence.name} {' '} ); }; const getDependenceLog = () => { setLoading(true); request .get(`${config.apiPrefix}dependencies/${dependence.id}`) .then((data: any) => { if (localStorage.getItem('logDependence') === String(dependence.id)) { const log = (data.data.log || []).join('') as string; setValue(log); setExecuting(!log.includes('结束时间')); setIsRemoveFailed(log.includes('删除失败')); } }) .finally(() => { setLoading(false); }); }; const forceRemoveDependence = () => { setRemoveLoading(true); request .delete(`${config.apiPrefix}dependencies/force`, { data: [dependence.id], }) .then((data: any) => { cancel(true); }) .finally(() => { setRemoveLoading(false); }); }; const footerClick = () => { if (isRemoveFailed) { forceRemoveDependence(); } else { cancel(); } }; useEffect(() => { if (dependence) { getDependenceLog(); } }, [dependence]); useEffect(() => { if (!socketMessage || !dependence) return; const { type, message, references } = socketMessage; if ( type === 'installDependence' && references.length > 0 && references.includes(dependence.id) ) { if (message.includes('结束时间')) { setExecuting(false); setIsRemoveFailed(message.includes('删除失败')); } setValue(`${value}${message}`); } }, [socketMessage]); useEffect(() => { setIsPhone(document.body.clientWidth < 768); }, []); return ( cancel()} onCancel={() => cancel()} footer={[ , ]} > {loading ? ( ) : (
          {value}
        
)}
); }; export default DependenceLogModal;