import React, { useEffect, useState } from 'react'; import { Table, Button, Modal, Form, Input, Tag, Space, Popconfirm, message, Row, Col, Card, } from 'antd'; import { PlusOutlined, EditOutlined, DeleteOutlined, CheckCircleOutlined, StopOutlined, } from '@ant-design/icons'; import type { SystemConfig } from '../types/systemConfig'; import { getSystemConfigList, createSystemConfig, updateSystemConfig, deleteSystemConfig, updateSystemConfigStatus, } from '../services/systemConfigApi'; export default function SystemConfigs() { const [loading, setLoading] = useState(false); const [list, setList] = useState([]); const [total, setTotal] = useState(0); const [page, setPage] = useState(1); const [size, setSize] = useState(10); const [editOpen, setEditOpen] = useState(false); const [editing, setEditing] = useState(null); const [createOpen, setCreateOpen] = useState(false); const [form] = Form.useForm(); const [createForm] = Form.useForm(); const fetchList = async () => { setLoading(true); try { const res = await getSystemConfigList({ page, size }); setList(res?.data ?? []); setTotal(res?.total ?? 0); } catch (e) { message.error('获取列表失败'); } finally { setLoading(false); } }; useEffect(() => { fetchList(); }, [page, size]); const openEdit = (config: SystemConfig) => { setEditing(config); form.setFieldsValue({ name: config.name, value: config.value, type: config.type, desc: config.desc, }); setEditOpen(true); }; const submitEdit = async () => { try { const values = await form.validateFields(); if (!editing) return; await updateSystemConfig(editing.id, values); message.success('更新成功'); setEditOpen(false); fetchList(); } catch (error) { message.error('更新失败'); } }; const openCreate = () => { createForm.resetFields(); setCreateOpen(true); }; const submitCreate = async () => { try { const values = await createForm.validateFields(); await createSystemConfig(values); message.success('创建成功'); setCreateOpen(false); fetchList(); } catch (error: any) { message.error(error?.response?.data?.message || '创建失败'); } }; const handleDelete = async (config: SystemConfig) => { try { await deleteSystemConfig(config.id); message.success('删除成功'); fetchList(); } catch (error) { message.error('删除失败'); } }; const handleToggleStatus = async (config: SystemConfig) => { try { const newStatus = config.status === 1 ? 0 : 1; await updateSystemConfigStatus(config.id, { status: newStatus }); message.success(newStatus === 1 ? '已启用' : '已禁用'); fetchList(); } catch (error) { message.error('状态更新失败'); } }; const columns = [ { title: '配置标识', dataIndex: 'key', key: 'key', width: 200, }, { title: '配置名称', dataIndex: 'name', key: 'name', width: 150, }, { title: '配置值', dataIndex: 'value', key: 'value', ellipsis: true, }, { title: '配置描述', dataIndex: 'desc', key: 'desc', ellipsis: true, }, { title: '状态', dataIndex: 'status', key: 'status', width: 80, render: (value: number) => value === 1 ? 启用 : 禁用, }, { title: '操作', key: 'action', width: 250, render: (_: any, config: SystemConfig) => ( handleDelete(config)}> ), }, ]; return (
{ setPage(p); setSize(s); }, }} /> {/* 编辑弹窗 */} setEditOpen(false)} width={600} >
{/* 创建弹窗 */} setCreateOpen(false)} width={600} >
); }