diff --git a/apps/web/src/pages/Accounts.tsx b/apps/web/src/pages/Accounts.tsx index 9243376..464eed3 100644 --- a/apps/web/src/pages/Accounts.tsx +++ b/apps/web/src/pages/Accounts.tsx @@ -10,10 +10,11 @@ import { Tag, Popconfirm, } from 'antd'; -import { PlusOutlined } from '@ant-design/icons'; +import { PlusOutlined, EditOutlined } from '@ant-design/icons'; import { listAccounts, createAccount, + updateAccount, deleteAccount, switchAccount, Account, @@ -24,6 +25,7 @@ export default function AccountsPage() { const [accounts, setAccounts] = useState([]); const [loading, setLoading] = useState(false); const [modalOpen, setModalOpen] = useState(false); + const [editingAccount, setEditingAccount] = useState(null); const [form] = Form.useForm(); const fetchAccounts = async () => { @@ -40,15 +42,46 @@ export default function AccountsPage() { fetchAccounts(); }, []); + const openCreateModal = () => { + setEditingAccount(null); + form.resetFields(); + setModalOpen(true); + }; + + const openEditModal = (record: Account) => { + setEditingAccount(record); + form.setFieldsValue({ + name: record.name, + accessKeyId: record.accessKeyId, + region: record.region, + endpoint: record.endpoint, + }); + setModalOpen(true); + }; + + const closeModal = () => { + setModalOpen(false); + setEditingAccount(null); + form.resetFields(); + }; + const handleSubmit = async (values: AccountInput) => { try { - await createAccount(values); - message.success('账号添加成功'); - setModalOpen(false); - form.resetFields(); + if (editingAccount) { + const payload: Partial = { ...values }; + if (!payload.accessKeySecret) { + delete payload.accessKeySecret; + } + await updateAccount(editingAccount.id, payload); + message.success('账号更新成功'); + } else { + await createAccount(values); + message.success('账号添加成功'); + } + closeModal(); fetchAccounts(); } catch (error) { - message.error('添加失败'); + message.error(editingAccount ? '更新失败' : '添加失败'); } }; @@ -92,6 +125,9 @@ export default function AccountsPage() { 切换 )} + handleDelete(record.id)}> @@ -113,9 +151,9 @@ export default function AccountsPage() { setModalOpen(false)} + onCancel={closeModal} footer={null} >
@@ -134,9 +172,14 @@ export default function AccountsPage() {