import React, { useEffect, useState } from 'react'; import { connect } from 'react-redux'; import { Tabs, Spin, Table, Button, Divider, message } from 'antd'; import moment from 'moment'; import { push } from 'react-router-redux'; import MetadataDatabaseModal from '../components/metadataDatabaseModal'; import { ModelTypes, ConfigurableTypes } from '../constants/index'; const MetadataDetails = (props) => { const { user, actions, dispatch, clientHeight, metadataModels, isRequesting, resourceCatalogPath, match } = props; const { metadataManagement } = actions; const [activeKey, setActiveKey] = useState('info'); const [databasesRecord, setDatabasesRecord] = useState(null); const [databasesRecordId, setDatabasesRecordId] = useState(null); const [tableData, setTableData] = useState([]); const [tableDataCount, setTableDataCount] = useState(0);//Table数据 const [limit, setLimit] = useState(10); const [currentPage, setCurrentPage] = useState(1); const [modalVisible, setModalVisible] = useState(false); const [editData, setEditData] = useState({}); const initData = () => { dispatch(metadataManagement.getMetadataModels({ modelTypes: ModelTypes.join(',') })); dispatch(metadataManagement.getMetadataDatabasesById(match.params.id)).then(res => { if (res.success) { setDatabasesRecord(res.payload.data); setDatabasesRecordId(res.payload.data.id); initTableData({ id: res.payload.data.id, limit, offset: 0 }); } }); } useEffect(() => { setActiveKey('info') initData(); }, [match.params.id]) const onTabChange = (key) => { setActiveKey(key) } const onView = (record) => { setDatabasesRecordId(record.id); dispatch(push(`/metadataManagement/latestMetadata/detail/${record.id}`)); } const renderBasicInfo = () => { return databasesRecord ?
{/* 基本信息 */} < div style={{ lineHeight: '35px', marginLeft: 32 }}>
元数据名称:{databasesRecord.name}
元数据代码:{databasesRecord.code}
元数据类型:{databasesRecord.type}
创建时间:{moment(databasesRecord.createAt).format("YYYY-MM-DD HH:mm:ss")}
修改时间:{databasesRecord.updateAt ? moment(databasesRecord.updateAt).format("YYYY-MM-DD HH:mm:ss") : ''}
上下文路径:{'/' + resourceCatalogPath.join('/')}
元数据详情:{databasesRecord.description}
属性 < div style={{ lineHeight: '35px', marginLeft: 32 }}> {metadataModels && metadataModels.filter(mm => mm.modelType === databasesRecord.type).map(mm =>
{mm.attributeName.length > 10 ? mm.attributeName.substring(0, 10) + '...' : mm.attributeName}: {databasesRecord.attributesParam && databasesRecord.attributesParam[mm.attributeCode] || ''}
)} : <> } const initTableData = (query = {}) => { dispatch(metadataManagement.getMetadataDatabases({ ...query })).then(res => { if (res.success) { setTableData(res.payload.data.rows); setTableDataCount(res.payload.data.count); } }) } //新建 const onConfirm = (values) => { let obj = { parent: databasesRecord.id, createBy: user.id, catalog: databasesRecord.catalog, catalogKey: sessionStorage.getItem('jumpSelectedKey'), ...values } dispatch(metadataManagement.postMetadataDatabases(obj)).then(() => { setCurrentPage(1); initTableData({ id: databasesRecord.id, limit, offset: 0 }); setModalVisible(false); }); } const renderConfigInfo = () => { const columns = [ { title: '元数据名称', dataIndex: 'name', key: 'name', ellipsis: true }, { title: '元数据代码', dataIndex: 'code', key: 'code', ellipsis: true }, { title: '元数据类型', dataIndex: 'type', key: 'type', }, { title: '操作', dataIndex: 'action', render: (text, record) => { return onView(record)}>查看 } }]; return databasesRecord && (ConfigurableTypes['表'].includes(databasesRecord.type) || databasesRecord.type === '视图') ? null :
{ return {`共${Math.ceil(total / limit)} 页,${total} 项`} }, onShowSizeChange: (currentPage, pageSize) => { setCurrentPage(currentPage); setLimit(pageSize); }, onChange: (page, pageSize) => { setCurrentPage(page); setLimit(pageSize); let queryParams = { id: databasesRecord.id, page: page - 1, size: pageSize }; initTableData(queryParams); } }} >
{ modalVisible ? ConfigurableTypes[databasesRecord.type].includes(m.modelType))} editData={editData} onCancel={() => setModalVisible(false)} onConfirm={onConfirm} /> : '' }
} return
基本信息, key: 'info', children: renderBasicInfo() }, { label: 组合, key: 'detailConfig', children: renderConfigInfo() } ]}> { }
} function mapStateToProps(state) { const { global, auth, metadataModels } = state; return { user: auth.user, actions: global.actions, clientHeight: global.clientHeight, isRequesting: metadataModels.isRequesting, metadataModels: metadataModels.data, }; } export default connect(mapStateToProps)(MetadataDetails)