Commit 229c46a1 by zhaochengxiang

资产地图

parent 84e9357e
...@@ -8,3 +8,11 @@ export function* getAllTopics() { ...@@ -8,3 +8,11 @@ export function* getAllTopics() {
export function* getTableModelByDirIid(payload) { export function* getTableModelByDirIid(payload) {
return yield call(service.getTableModelByDirId, payload); return yield call(service.getTableModelByDirId, payload);
} }
export function* getTreeTotalLevel(payload) {
return yield call(service.getTreeTotalLevel, payload);
}
export function* queryAllDirectoryAsTreeByDirLevel(payload) {
return yield call(service.queryAllDirectoryAsTreeByDirLevel, payload);
}
import { GetJSON } from "../util/axios" import { GetJSON, Get } from "../util/axios"
export function getAllTopics() { export function getAllTopics() {
return GetJSON("/dataassetmanager/countApi/queryAllTopics"); return GetJSON("/dataassetmanager/countApi/queryAllTopics");
...@@ -7,3 +7,11 @@ export function getAllTopics() { ...@@ -7,3 +7,11 @@ export function getAllTopics() {
export function getTableModelByDirId(payload) { export function getTableModelByDirId(payload) {
return GetJSON("/dataassetmanager/countApi/getTableModelInfoByDirIdAnotherType", payload); return GetJSON("/dataassetmanager/countApi/getTableModelInfoByDirIdAnotherType", payload);
} }
export function getTreeTotalLevel(payload) {
return Get("/dataassetmanager/countApi/getTreeTotalLevel", payload);
}
export function queryAllDirectoryAsTreeByDirLevel(payload) {
return GetJSON("/dataassetmanager/countApi/queryAllDirectoryAsTreeByDirLevel", payload);
}
...@@ -4,6 +4,18 @@ import { FolderAddOutlined, FileOutlined } from '@ant-design/icons'; ...@@ -4,6 +4,18 @@ import { FolderAddOutlined, FileOutlined } from '@ant-design/icons';
import './SquareItem.less'; import './SquareItem.less';
const colors = [
'#BDD2FD',
'#C2C8D5',
'#FBE5A2',
'#F6C3B7',
'#B6E3F5',
'#D3C6EA',
'#FFD8B8',
'#AAD8D8',
'#FFD6E7',
];
class SquareItem extends React.Component { class SquareItem extends React.Component {
onItemClick = () => { onItemClick = () => {
...@@ -19,7 +31,7 @@ class SquareItem extends React.Component { ...@@ -19,7 +31,7 @@ class SquareItem extends React.Component {
} }
render() { render() {
const { item } = this.props; const { item, index } = this.props;
let assetName = '', assetCnName = ''; let assetName = '', assetCnName = '';
if (item && item.dbType === 'Table') { if (item && item.dbType === 'Table') {
...@@ -37,22 +49,26 @@ class SquareItem extends React.Component { ...@@ -37,22 +49,26 @@ class SquareItem extends React.Component {
<div className='map-square-item'> <div className='map-square-item'>
{ {
item && ( item && (
item.dbType==='Dir' ? <Card title={ item.dbType==='Dir' ? <Card
<div className='d-flex pointer' style={{ alignItems: 'center' }} onClick={this.onItemClick}> title={
<FolderAddOutlined className='mr-1' /> <div className='d-flex pointer' style={{ justifyContent: 'center', alignItems: 'center' }} onClick={this.onItemClick}>
<span>{item.dirName||''}</span> <FolderAddOutlined className='mr-3' />
<span className='textOverflow' title={item.dirName||''}>{item.dirName||''}</span>
</div> </div>
}> }
<p>{`数据资产: ${item.tableModelCount}`}</p> headStyle={{ backgroundColor: colors[index % colors.length] }}
<p>{`资产编目: ${item.subDirCount}`}</p> >
</Card> : <Card title={ <div className='text-center textOverflow' title={item.tableModelCount}>{item.tableModelCount}</div>
<div className='d-flex pointer' style={{ alignItems: 'center' }} onClick={this.onItemClick}> </Card> : <Card
<FileOutlined className='mr-1' /> title={
<span>{assetName||''}</span> <div className='d-flex pointer' style={{ justifyContent: 'center', alignItems: 'center' }} onClick={this.onItemClick}>
<FileOutlined className='mr-3' />
<span>{assetCnName||''}</span>
</div> </div>
}> }
<p>{`中文名称: ${assetCnName||''}`}</p> headStyle={{ backgroundColor: colors[index % colors.length] }}
<p>{`英文名称: ${assetName||''}`}</p> >
<div className='text-center textOverflow' title={assetName||''}>{assetName||''}</div>
</Card> </Card>
) )
} }
......
.map-square-item { .map-square-item {
.yy-card-head {
background-color: #f4856f !important;
.yy-card-head-title { .yy-card-head-title {
color: #fff !important; color: #fff !important;
...@@ -11,12 +9,10 @@ ...@@ -11,12 +9,10 @@
color: #1890ff; color: #1890ff;
} }
} }
}
.yy-card-body { .yy-card-body {
p {
color: #1890ff !important; color: #1890ff !important;
font-size: 18px !important; font-size: 18px !important;
} height: 76!important;
} }
} }
\ No newline at end of file
import React from 'react'; import React from 'react';
import { Row, Col, Breadcrumb, Spin, Slider } from 'antd'; import { Row, Col, Breadcrumb, Slider } from 'antd';
import { HomeOutlined } from '@ant-design/icons'; import { HomeOutlined } from '@ant-design/icons';
import SquareItem from './Component/SquareItem'; import SquareItem from './Component/SquareItem';
import Org from './Component/Org'; import Org from './Component/Org';
import Tree from './Component/Tree'; import Tree from './Component/Tree';
import Relation from './Component/Relation'; import Relation from './Component/Relation';
import { dispatchLatest } from '../../../model'; import { dispatch, dispatchLatest } from '../../../model';
const column = 3; const column = 3;
...@@ -16,7 +16,6 @@ class MapContent extends React.Component { ...@@ -16,7 +16,6 @@ class MapContent extends React.Component {
super(props); super(props);
this.state = { this.state = {
loading: false, loading: false,
// tableModelData: null,
curTableModelData: null, curTableModelData: null,
orgModelData: null, orgModelData: null,
orgChildData: null, orgChildData: null,
...@@ -25,23 +24,54 @@ class MapContent extends React.Component { ...@@ -25,23 +24,54 @@ class MapContent extends React.Component {
relationModelData: null, relationModelData: null,
relationChildData: null, relationChildData: null,
parentNodeId: null, parentNodeId: null,
breadcrumbContents: null breadcrumbContents: null,
currentLevel: 1,
totalLevel: 1,
}; };
} }
componentDidMount() { componentDidMount() {
this.getTreeTotalLevelThenQueryAllDirectoryAsTreeByDirLevel();
}
componentDidUpdate(prevProps, prevState){
const { type } = this.props;
if (type !== prevProps.type) {
this.setState({ parentNodeId: '' });
}
}
getTreeTotalLevelThenQueryAllDirectoryAsTreeByDirLevel = () => {
const { topic } = this.props;
dispatch({
type: 'map.getTreeTotalLevel',
payload: { dirId: topic.id },
callback: data => {
const _totalLevel = Number(data);
const _currentLevel = (_totalLevel<3?_totalLevel:3);
this.setState({ totalLevel: _totalLevel, currentLevel: _currentLevel }, () => {
this.queryAllDirectoryAsTreeByDirLevel(_currentLevel-1);
});
}
})
}
queryAllDirectoryAsTreeByDirLevel = (level) => {
const { topic } = this.props; const { topic } = this.props;
this.setState({ loading: true }, () => { this.setState({ loading: true }, () => {
dispatchLatest({ dispatchLatest({
type: 'map.getTableModelByDirIid', type: 'map.queryAllDirectoryAsTreeByDirLevel',
payload: { dirId: topic.id }, payload: { dirId: topic.id, dirLevel: level },
callback: data => { callback: data => {
this.convertRemoteData(data); this.convertRemoteData(data);
this.setState({ this.setState({
loading: false, loading: false,
// tableModelData: data||[],
curTableModelData: data||[], curTableModelData: data||[],
breadcrumbContents: [{ data: data||[] }] breadcrumbContents: [{ data: data||[] }]
}, () => { }, () => {
...@@ -61,14 +91,6 @@ class MapContent extends React.Component { ...@@ -61,14 +91,6 @@ class MapContent extends React.Component {
}) })
} }
componentDidUpdate(prevProps, prevState){
const { type } = this.props;
if (type !== prevProps.type) {
this.setState({ parentNodeId: '' });
}
}
convertRemoteData = (data) => { convertRemoteData = (data) => {
data.forEach((item, index) => { data.forEach((item, index) => {
if (item.dbType==='Dir') { if (item.dbType==='Dir') {
...@@ -86,6 +108,10 @@ class MapContent extends React.Component { ...@@ -86,6 +108,10 @@ class MapContent extends React.Component {
item.text = assetCnName||''; item.text = assetCnName||'';
item.id = `t${item.id||''}`; item.id = `t${item.id||''}`;
} }
if (item.children) {
this.convertRemoteData(item.children);
}
}) })
} }
...@@ -152,9 +178,15 @@ class MapContent extends React.Component { ...@@ -152,9 +178,15 @@ class MapContent extends React.Component {
}) })
} }
onLevelChange = (value) => {
this.setState({ currentLevel: value }, () => {
this.queryAllDirectoryAsTreeByDirLevel(value-1);
});
}
render() { render() {
const { type, topic } = this.props; const { type, topic } = this.props;
const { curTableModelData, breadcrumbContents, orgModelData , treeModelData, relationModelData, loading, orgChildData, treeChildData, relationChildData, parentNodeId } = this.state; const { curTableModelData, breadcrumbContents, orgModelData , treeModelData, relationModelData, orgChildData, treeChildData, relationChildData, parentNodeId, currentLevel, totalLevel } = this.state;
let groups = []; let groups = [];
if (curTableModelData) { if (curTableModelData) {
...@@ -164,9 +196,7 @@ class MapContent extends React.Component { ...@@ -164,9 +196,7 @@ class MapContent extends React.Component {
} }
return ( return (
<> <div className='position-relative' style={{ height: '100%' }}>
{
loading ? <Spin /> : <div className='position-relative' style={{ height: '100%' }}>
{ {
type==='square' && <> type==='square' && <>
{ {
...@@ -195,7 +225,7 @@ class MapContent extends React.Component { ...@@ -195,7 +225,7 @@ class MapContent extends React.Component {
group && group.map((item, _index) => { group && group.map((item, _index) => {
return ( return (
<Col key={_index} span={24/column}> <Col key={_index} span={24/column}>
<SquareItem item={item} onClick={this.onSquareItemClick} {...this.props} /> <SquareItem item={item} index={_index} onClick={this.onSquareItemClick} {...this.props} />
</Col> </Col>
) )
}) })
...@@ -247,12 +277,10 @@ class MapContent extends React.Component { ...@@ -247,12 +277,10 @@ class MapContent extends React.Component {
}} }}
> >
<span>层数</span> <span>层数</span>
<Slider vertical min={1} max={20} /> <Slider vertical min={1} max={totalLevel} value={currentLevel} onChange={this.onLevelChange} />
</div> </div>
} }
</div> </div>
}
</>
); );
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment