diff --git a/frontend/web/src/pages/IntelligentEvals.tsx b/frontend/web/src/pages/IntelligentEvals.tsx index 8b4a004..dc49733 100644 --- a/frontend/web/src/pages/IntelligentEvals.tsx +++ b/frontend/web/src/pages/IntelligentEvals.tsx @@ -1,6 +1,6 @@ import { useState } from 'react' import { - Button, Empty, Form, Input, InputNumber, Select, Space, Table, Tag, Tooltip, message, + Button, Drawer, Empty, Form, Input, InputNumber, Select, Space, Spin, Table, Tag, Tooltip, message, } from 'antd' import type { ColumnsType } from 'antd/es/table' import { PlusOutlined, ReloadOutlined, EyeOutlined, FileTextOutlined } from '@ant-design/icons' @@ -18,7 +18,7 @@ import { import { colors } from '../tokens' import { formatDateTime } from '../utils/date' -type View = 'list' | 'detail' | 'report' +type DrawerView = 'detail' | 'report' interface CreateFormValues { name: string @@ -31,7 +31,7 @@ interface CreateFormValues { } export default function IntelligentEvalsPage() { - const [view, setView] = useState('list') + const [drawerView, setDrawerView] = useState('detail') const [selectedId, setSelectedId] = useState(null) const [detailTick, setDetailTick] = useState(0) const [createOpen, setCreateOpen] = useState(false) @@ -52,7 +52,7 @@ export default function IntelligentEvalsPage() { { deps: [selectedId, detailTick] }, ) - const pollActive = view === 'detail' && selected != null + const pollActive = selected != null && (selected.status === 'planning' || selected.status === 'executing' || selected.status === 'pending_approval') usePolling(() => void reloadSelected(true), 5000, pollActive) @@ -62,12 +62,18 @@ export default function IntelligentEvalsPage() { const openDetail = (id: string) => { setSelectedId(id) - setView('detail') + setDrawerView('detail') } const openReport = (id: string) => { setSelectedId(id) - setView('report') + setDrawerView('report') + } + + const closeDrawer = () => { + setSelectedId(null) + setDrawerView('detail') + void reload() } const submitCreate = async () => { @@ -149,42 +155,6 @@ export default function IntelligentEvalsPage() { }, ] - if (view === 'detail' && selectedId) { - if (!selected) { - return ( - -
加载中…
-
- ) - } - return ( - - { setView('list'); void reload() }} - onOpenReport={() => setView('report')} - onChanged={() => setDetailTick((t) => t + 1)} - /> - - ) - } - - if (view === 'report' && selectedId) { - if (!selected) { - return ( - -
加载中…
-
- ) - } - return ( - - setView('detail')} /> - - ) - } - return ( + + {selected == null ? ( +
+ ) : drawerView === 'report' ? ( + setDrawerView('detail')} /> + ) : ( + setDrawerView('report')} + onChanged={() => setDetailTick((t) => t + 1)} + /> + )} +
+