diff --git a/.scratch/ui-consistency/issues/04-model-configs.md b/.scratch/ui-consistency/issues/04-model-configs.md index 483e6f6..bbd9565 100644 --- a/.scratch/ui-consistency/issues/04-model-configs.md +++ b/.scratch/ui-consistency/issues/04-model-configs.md @@ -5,8 +5,8 @@ **Blocked by:** 03(检查点通过后) **Acceptance criteria:** -- [ ] 创建/编辑表单统一 FormDrawer -- [ ] 删除有 Popconfirm;启用/停用开关行为不变 -- [ ] 空态 Empty、20 行分页阈值 -- [ ] `tsc --noEmit` 通过 +- [x] 创建/编辑表单统一 FormDrawer +- [x] 删除有 Popconfirm;启用/停用开关行为不变 +- [x] 空态 Empty、20 行分页阈值 +- [x] `tsc --noEmit` 通过 - [ ] t480 走查:模型配置 CRUD + 能力约束校验 golden path diff --git a/frontend/web/src/pages/ModelConfigs.tsx b/frontend/web/src/pages/ModelConfigs.tsx index e2d0cbd..2db6266 100644 --- a/frontend/web/src/pages/ModelConfigs.tsx +++ b/frontend/web/src/pages/ModelConfigs.tsx @@ -1,15 +1,16 @@ import { useState } from 'react' import { - Button, Divider, Drawer, Form, Input, InputNumber, message, Popconfirm, Select, Space, Switch, Table, Tag, + Button, Divider, Empty, Form, Input, InputNumber, message, Popconfirm, Select, Space, Switch, Table, Tag, Tooltip, } from 'antd' import { - ApiOutlined, CheckCircleOutlined, DeleteOutlined, EditOutlined, PlusOutlined, ReloadOutlined, + ApiOutlined, DeleteOutlined, EditOutlined, PlusOutlined, ReloadOutlined, } from '@ant-design/icons' import { modelConfigsApi, type ModelCapability, type ModelConfig, type ModelConfigPayload, type ModelModality, type ModelProtocol, } from '../api' +import FormDrawer from '../components/FormDrawer' import PageWrapper from '../components/PageWrapper' import { useResource } from '../hooks/useResource' import { formatDateTime } from '../utils/date' @@ -85,6 +86,7 @@ const protocolOptions: Record(null) + const [submitting, setSubmitting] = useState(false) const [testingId, setTestingId] = useState(null) const [capability, setCapability] = useState() const [enabled, setEnabled] = useState() @@ -170,11 +172,21 @@ export default function ModelConfigsPage() { description: values.description || '', } if (editing) { - await modelConfigsApi.update(editing.id, payload) - message.success('模型配置已更新') + setSubmitting(true) + try { + await modelConfigsApi.update(editing.id, payload) + message.success('模型配置已更新') + } finally { + setSubmitting(false) + } } else { - await modelConfigsApi.create(payload) - message.success('模型配置已创建') + setSubmitting(true) + try { + await modelConfigsApi.create(payload) + message.success('模型配置已创建') + } finally { + setSubmitting(false) + } } notifyModelConfigsChanged() setDrawerOpen(false) @@ -317,7 +329,7 @@ export default function ModelConfigsPage() {