import React, { useEffect, useState } from 'react'; import { Modal, message, Input, Form } from 'antd'; import { request } from '@/utils/http'; import config from '@/utils/config'; import { Loading3QuartersOutlined, CheckCircleOutlined, } from '@ant-design/icons'; enum CrontabStatus { 'running', 'idle', 'disabled', } const CronLogModal = ({ cron, handleCancel, visible, }: { cron?: any; visible: boolean; handleCancel: () => void; }) => { const [value, setValue] = useState('启动中...'); const [loading, setLoading] = useState(true); const [excuting, setExcuting] = useState(true); const getCronLog = (isFirst?: boolean) => { if (isFirst) { setLoading(true); } request .get(`${config.apiPrefix}crons/${cron._id}/log`) .then((data: any) => { if (localStorage.getItem('logCron') === cron._id) { const log = data.data as string; setValue(log || '暂无日志'); setExcuting(log && !log.includes('执行结束')); if (log && !log.includes('执行结束')) { setTimeout(() => { getCronLog(); }, 2000); } if (log && log.includes('重启面板完成')) { message.warning({ content: '系统将在5秒后刷新', duration: 5 }); setTimeout(() => { window.location.reload(); }, 5000); } } }) .finally(() => { if (isFirst) { setLoading(false); } }); }; const cancel = () => { localStorage.removeItem('logCron'); handleCancel(); }; const titleElement = () => { return ( <> 日志-{cron && cron.name}{' '} {excuting && } {!excuting && } ); }; useEffect(() => { if (cron) { getCronLog(true); } }, [cron]); return ( cancel()} onCancel={() => cancel()} >
        {!loading && value}
      
); }; export default CronLogModal;