import { useIntl } from '@@/plugin-locale/localeExports'; import { useRef, useState } from 'react'; import type { ActionType, ProColumns } from '@jetlinks/pro-table'; import ProTable from '@jetlinks/pro-table'; import type { SystemLogItem } from '@/pages/Log/System/typings'; import { Tag, Tooltip } from 'antd'; import moment from 'moment'; import BaseService from '@/utils/BaseService'; import { EyeOutlined } from '@ant-design/icons'; import SearchComponent from '@/components/SearchComponent'; import Detail from '@/pages/Log/System/Detail'; const service = new BaseService('logger/system'); const System = () => { const intl = useIntl(); const actionRef = useRef(); const [param, setParam] = useState({}); const [visible, setVisible] = useState(false); const [current, setCurrent] = useState>({}); const columns: ProColumns[] = [ { title: intl.formatMessage({ id: 'pages.table.name', defaultMessage: '名称', }), dataIndex: 'name', ellipsis: true, }, { title: '日志级别', dataIndex: 'level', width: 80, render: (text) => {text}, valueType: 'select', valueEnum: { ERROR: { text: 'ERROR', status: 'ERROR', }, INFO: { text: 'INFO', status: 'INFO', }, DEBUG: { text: 'DEBUG', status: 'DEBUG', }, WARN: { text: 'WARN', status: 'WARN', }, }, }, { title: intl.formatMessage({ id: 'pages.log.system.logContent', defaultMessage: '日志内容', }), dataIndex: 'message', ellipsis: true, }, { title: intl.formatMessage({ id: 'pages.log.system.serviceName', defaultMessage: '服务名', }), dataIndex: 'server', width: 150, ellipsis: true, render: (text, record) => record?.context?.server || '--', }, { title: intl.formatMessage({ id: 'pages.log.system.creationTime', defaultMessage: '创建时间', }), dataIndex: 'createTime', width: 200, sorter: true, ellipsis: true, valueType: 'dateTime', defaultSortOrder: 'descend', renderText: (text) => moment(text).format('YYYY-MM-DD HH:mm:ss'), }, { title: intl.formatMessage({ id: 'pages.data.option', defaultMessage: '操作', }), valueType: 'option', align: 'center', width: 200, render: (text, record) => [ { setVisible(true); setCurrent(record); }} > , ], }, ]; return ( <> field={columns} target="system-log" onSearch={(data) => { actionRef.current?.reset?.(); setParam(data); }} /> columns={columns} params={param} request={async (params) => service.query({ ...params, sorts: [{ name: 'createTime', order: 'desc' }] }) } defaultParams={{ sorts: [{ createTime: 'desc' }] }} search={false} actionRef={actionRef} /> {visible && ( { setVisible(false); setCurrent({}); }} /> )} ); }; export default System;