import React, { useState } from 'react' import { ColumnsType, FilterValue, SorterResult } from 'antd/es/table/interface' import { TablePaginationConfig } from 'antd/lib' import FitFullScreen from '@/components/common/FitFullScreen.tsx' import Card from '@/components/common/Card' import { r_getSysLog } from '@/services/system.tsx' import { DATABASE_SELECT_SUCCESS } from '@/constants/common.constants.ts' import HideScrollbar from '@/components/common/HideScrollbar.tsx' import { getLocalTime } from '@/utils/common.ts' const Log: React.FC = () => { const tableCardRef = useRef(null) const [logData, setLogData] = useState([]) const [loading, setLoading] = useState(false) const [tableParams, setTableParams] = useState({ pagination: { current: 1, pageSize: 20, position: ['bottomCenter'] } }) const dataColumns: ColumnsType = [ { title: '类型', dataIndex: 'logType', render: (value) => value === 'ERROR' ? ( {value} ) : ( {value} ), align: 'center' }, { title: '操作者', dataIndex: 'operateUsername', align: 'center', render: (value, record) => value ? ( {`${value}(${record.operateUserId})`} ) : ( Anonymous ) }, { title: '操作时间', dataIndex: 'operateTime', render: (value: string) => getLocalTime(value), align: 'center' }, { title: '请求方式', dataIndex: 'requestMethod', align: 'center' }, { title: '请求 Url', render: (_value, record) => `${record.requestServerAddress}${record.requestUri}${ record.requestParams ? `?${record.requestParams}` : '' }` }, { title: '请求 IP', dataIndex: 'requestIp', align: 'center' }, { title: '异常', dataIndex: 'exception', render: (value: boolean, record) => (value ? record.exceptionInfo : '无'), align: 'center' }, { title: '执行时间', dataIndex: 'executeTime', render: (value, record) => ( {`${value}ms`} ), align: 'center' }, { title: '用户代理', dataIndex: 'userAgent' } ] const handleOnTableChange = ( pagination: TablePaginationConfig, filters: Record, sorter: SorterResult | SorterResult[] ) => { setTableParams({ pagination, filters, ...sorter }) if (pagination.pageSize !== tableParams.pagination?.pageSize) { setLogData([]) } } const getLog = () => { if (loading) { return } void r_getSysLog({ currentPage: tableParams.pagination?.current, pageSize: tableParams.pagination?.pageSize }) .then((res) => { const data = res.data if (data.code === DATABASE_SELECT_SUCCESS) { data.data && setLogData(data.data.records) data.data && setTableParams({ ...tableParams, pagination: { ...tableParams.pagination, total: data.data.total } }) } }) .finally(() => { setLoading(false) }) } useEffect(() => { getLog() }, [ JSON.stringify(tableParams.filters), JSON.stringify(tableParams.sortField), JSON.stringify(tableParams.sortOrder), JSON.stringify(tableParams.pagination?.pageSize), JSON.stringify(tableParams.pagination?.current) ]) return ( <> record.id} pagination={tableParams.pagination} loading={loading} onChange={handleOnTableChange} /> ) } export default Log