index.tsx 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. import { Descriptions, Modal } from 'antd';
  2. import type { AccessLogItem } from '@/pages/Log/Access/typings';
  3. import { useEffect, useState } from 'react';
  4. import moment from 'moment';
  5. interface Props {
  6. data: Partial<AccessLogItem>;
  7. close: () => void;
  8. }
  9. const Detail = (props: Props) => {
  10. const [data, setDada] = useState<Partial<AccessLogItem>>(props.data || {});
  11. useEffect(() => {
  12. setDada(props.data);
  13. }, [props.data]);
  14. return (
  15. <Modal title={'详情'} visible onCancel={props.close} onOk={props.close} width={1000}>
  16. <Descriptions bordered labelStyle={{ width: 120, textAlign: 'center' }}>
  17. <Descriptions.Item label="URL">{data?.url}</Descriptions.Item>
  18. <Descriptions.Item label="请求方法" span={2}>
  19. {data?.httpMethod}
  20. </Descriptions.Item>
  21. <Descriptions.Item label="动作">{data?.action}</Descriptions.Item>
  22. <Descriptions.Item label="类名" span={2}>
  23. {data?.target}
  24. </Descriptions.Item>
  25. <Descriptions.Item label="方法名">{data?.method}</Descriptions.Item>
  26. <Descriptions.Item label="IP" span={2}>
  27. {data?.ip}
  28. </Descriptions.Item>
  29. <Descriptions.Item label="请求时间">
  30. {moment(data?.requestTime).format('YYYY-MM-DD HH:mm:ss')}
  31. </Descriptions.Item>
  32. <Descriptions.Item label="请求耗时" span={2}>
  33. {(data?.responseTime || 0) - (data?.requestTime || 0)}ms
  34. </Descriptions.Item>
  35. <Descriptions.Item label="请求头" span={3}>
  36. {JSON.stringify(data?.httpHeaders)}
  37. </Descriptions.Item>
  38. <Descriptions.Item label="请求参数" span={3}>
  39. {JSON.stringify(data?.parameters)}
  40. </Descriptions.Item>
  41. <Descriptions.Item label="异常信息" span={3}>
  42. {data?.exception}
  43. </Descriptions.Item>
  44. </Descriptions>
  45. </Modal>
  46. );
  47. };
  48. export default Detail;