import React, { useEffect, useState } from 'react'; import { Button, Header, Icon, Label, Modal, Segment, Table, } from 'semantic-ui-react'; import { API, formatDateTime, showError, showSuccess } from '../../helpers'; const ConfigVersion = () => { const [versions, setVersions] = useState([]); const [loading, setLoading] = useState(false); const [publishing, setPublishing] = useState(false); const [preview, setPreview] = useState(null); const loadVersions = async () => { setLoading(true); const res = await API.get('/api/config-versions/'); const { success, message, data } = res.data; if (success) { setVersions(data || []); } else { showError(message); } setLoading(false); }; useEffect(() => { loadVersions().then(); }, []); const publishConfig = async () => { setPublishing(true); const res = await API.post('/api/config-versions/publish'); const { success, message, data } = res.data; if (success) { showSuccess(`发布成功,版本 ${data.version}`); await loadVersions(); } else { showError(message); } setPublishing(false); }; const activateVersion = async (id) => { const res = await API.put(`/api/config-versions/${id}/activate`); const { success, message, data } = res.data; if (success) { showSuccess(`已激活版本 ${data.version}`); await loadVersions(); } else { showError(message); } }; return (
版本发布

查看历史快照,发布新版本,或重新激活旧版本。

版本号 状态 创建人 Checksum 创建时间 操作 {versions.map((version) => ( {version.version} {version.is_active ? : } {version.created_by} {(version.checksum || '').slice(0, 16)}... {formatDateTime(version.created_at)} {!version.is_active ? ( ) : null} ))}
setPreview(null)} closeIcon> 版本预览 {preview ? ( <>
快照 JSON
{preview.snapshot_json}
渲染结果
{preview.rendered_config}
) : null}
); }; export default ConfigVersion;