import { useCallback, useEffect, useState } from 'react' import { Button, Card, Col, Form, Input, Modal, Row, Space, Table, Typography, message, } from 'antd' import type { ColumnsType } from 'antd/es/table' import { sysParamsApi } from '@/lib/api' import { formatDate } from '@/lib/date' import type { SysParam } from '@/types/system' export function ParamsManagementPage() { const [searchForm] = Form.useForm() const [editForm] = Form.useForm() const [params, setParams] = useState([]) const [loading, setLoading] = useState(false) const [page, setPage] = useState(1) const [pageSize, setPageSize] = useState(10) const [total, setTotal] = useState(0) const [modalOpen, setModalOpen] = useState(false) const [editingParam, setEditingParam] = useState(null) const reloadParams = useCallback(async () => { setLoading(true) try { const response = await sysParamsApi.getParamsList({ page, pageSize, ...searchForm.getFieldsValue(), }) setParams(response.data.list) setTotal(response.data.total) } finally { setLoading(false) } }, [page, pageSize, searchForm]) useEffect(() => { reloadParams() }, [reloadParams]) const openCreate = () => { setEditingParam(null) editForm.resetFields() setModalOpen(true) } const openEdit = (record: SysParam) => { setEditingParam(record) editForm.setFieldsValue(record) setModalOpen(true) } const saveParam = async () => { const values = await editForm.validateFields() if (editingParam) { await sysParamsApi.updateParam({ ID: editingParam.ID, ...values }) message.success('参数已更新') } else { await sysParamsApi.createParam(values) message.success('参数已创建') } setModalOpen(false) reloadParams() } const deleteParam = (record: SysParam) => { Modal.confirm({ title: `删除参数 ${record.key}`, okButtonProps: { danger: true }, onOk: async () => { await sysParamsApi.deleteParam(record.ID) message.success('参数已删除') reloadParams() }, }) } const columns: ColumnsType = [ { title: '创建时间', width: 180, render: (_, record) => formatDate(record.CreatedAt), }, { title: '参数名称', dataIndex: 'name', width: 160 }, { title: '参数键', dataIndex: 'key', width: 180 }, { title: '参数值', dataIndex: 'value' }, { title: '说明', dataIndex: 'desc', width: 200 }, { title: '操作', key: 'actions', width: 180, render: (_, record) => ( ), }, ] return (
参数管理 当前页维护运行期键值参数,保持与原系统的参数读取方式一致。
{ setPage(1); reloadParams() }}>
{ setPage(nextPage) setPageSize(nextPageSize) }, }} /> setModalOpen(false)} onOk={saveParam} >
) }