import React, { useState, useEffect } from 'react'; import { Table, Button, message, Space, Spin, Form, Input, Select, Modal } from 'antd'; import TemplateContainer from '@/pages/TemplateContainer'; import { useModel } from '@umijs/max'; import { objectToQueryString } from '@/services/services/common'; import { GetDataInfoTypeOption, GetDataInfoTypeOptions } from '@/services/enum/dataInfo'; import { SearchOutlined } from '@ant-design/icons'; import { ColumnsType } from 'antd/lib/table'; import JsonView from '@uiw/react-json-view'; import cusRequest from '@/request'; const DataInfo: React.FC = () => { const [loading, setLoading] = useState(false); const [dataList, setDataList] = useState([]); const { initialState } = useModel('@@initialState'); const [messageApi, messageHolder] = message.useMessage(); const [form] = Form.useForm(); const [tableParams, setTableParams] = useState({ pagination: { current: 1, pageSize: 10, showQuickJumper: true, totalBoundaryShowSizeChanger: true, }, }); useEffect(() => { QueryDataInfoCollection(tableParams, form.getFieldsValue()); }, []); async function QueryDataInfoCollection(tableParams: TableModel.TableParams, options?: any) { try { setLoading(true); let data = { ...options, page: tableParams.pagination?.current, pageSize: tableParams.pagination?.pageSize, }; let query = objectToQueryString(data); let res = await cusRequest(`/lms/Other/QueryDataInfoCollection?${query}`, { method: 'GET', }); if (res.code != 1) { throw new Error(res.message); } let resData = res.data; if (resData?.collection == undefined) { messageApi.error('请求获取数据为空,请重试!'); return; } setDataList(resData.collection); setTableParams({ pagination: { ...tableParams.pagination, total: resData.total, }, }); messageApi.success('Data fetched successfully'); } catch (error: any) { messageApi.error(error.message); } finally { setLoading(false); } } const [isModalVisible, setIsModalVisible] = useState(false); const [currentJsonData, setCurrentJsonData] = useState(null); const [isJsonFormat, setIsJsonFormat] = useState(false); function CheckJson(str: string) { try { JSON.parse(str); } catch (e) { return false; } return true; } // Function to handle clicking on data const handleDataClick = (dataString: string) => { let isJsonString = CheckJson(dataString); if (isJsonString) { const jsonData = JSON.parse(dataString); setCurrentJsonData(jsonData); setIsJsonFormat(true); } else { // 不是JSON格式,直接展示原始字符串 setCurrentJsonData(dataString); setIsJsonFormat(false); } setIsModalVisible(true); }; // 关闭Modal的函数 const handleModalClose = () => { setIsModalVisible(false); setCurrentJsonData(null); }; const columns: ColumnsType = [ { title: 'ID', dataIndex: 'id', key: 'id', }, { title: '类型', dataIndex: 'type', key: 'type', render: (text, record) => GetDataInfoTypeOption(record.type), }, { title: '数据字符串', dataIndex: 'dataString', key: 'dataString', width: 250, ellipsis: { showTitle: false, }, render: (text) => ( handleDataClick(text)} style={{ cursor: 'pointer', color: 'black' }}> {text} ), }, { title: '创建时间', dataIndex: 'createdTime', key: 'createdTime', width: 180, }, { title: 'Actions', key: 'actions', render: (_: any) => ( ), }, ]; return (
QueryDataInfoCollection(tableParams, values)} style={{ marginBottom: 16 }} > {/* */}