diff --git a/frontend/web/src/pages/Targets.tsx b/frontend/web/src/pages/Targets.tsx index 2c88290..f28c7ad 100644 --- a/frontend/web/src/pages/Targets.tsx +++ b/frontend/web/src/pages/Targets.tsx @@ -1,10 +1,11 @@ import { useState } from 'react' import { - Button, Drawer, Form, Input, message, Popconfirm, + Button, Empty, Form, Input, message, Popconfirm, Space, Table, Tag, Select, Tooltip, } from 'antd' import { PlusOutlined, ApiOutlined, EditOutlined, DeleteOutlined, ReloadOutlined } from '@ant-design/icons' import { targetsApi, type Target } from '../api' +import FormDrawer from '../components/FormDrawer' import PageWrapper from '../components/PageWrapper' import { useResource } from '../hooks/useResource' import { colors } from '../tokens' @@ -17,6 +18,7 @@ export default function TargetsPage() { ) const [drawerOpen, setDrawerOpen] = useState(false) const [editingTarget, setEditingTarget] = useState(null) + const [submitting, setSubmitting] = useState(false) const [form] = Form.useForm() const openCreate = () => { @@ -64,11 +66,21 @@ export default function TargetsPage() { } if (editingTarget) { - await targetsApi.update(editingTarget.id, payload) - message.success('更新成功') + setSubmitting(true) + try { + await targetsApi.update(editingTarget.id, payload) + message.success('更新成功') + } finally { + setSubmitting(false) + } } else { - await targetsApi.create(payload) - message.success('创建成功') + setSubmitting(true) + try { + await targetsApi.create(payload) + message.success('创建成功') + } finally { + setSubmitting(false) + } } setDrawerOpen(false) reload() @@ -122,7 +134,7 @@ export default function TargetsPage() {