Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
A
AmosBankView
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
bank
AmosBankView
Commits
abbc2778
Commit
abbc2778
authored
Jun 28, 2020
by
zhengjiangtao
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
增加动环监控和网络拓扑图视图切换
parent
fe1a648d
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
309 additions
and
106 deletions
+309
-106
index.scss
src/styles/view/biz/dynamicRing/index.scss
+82
-5
index.scss
src/styles/view/biz/netTopology/index.scss
+86
-6
TreeComponent.js
src/view/bank/dynamicRing/TreeComponent.js
+19
-0
index.js
src/view/bank/dynamicRing/index.js
+52
-40
TreeComponent.js
src/view/bank/netTopology/TreeComponent.js
+4
-3
index.js
src/view/bank/netTopology/index.js
+61
-51
index.js
src/view/bizview/pams/index.js
+5
-1
No files found.
src/styles/view/biz/dynamicRing/index.scss
View file @
abbc2778
...
@@ -2,6 +2,69 @@
...
@@ -2,6 +2,69 @@
height
:
100%
;
height
:
100%
;
display
:
flex
;
display
:
flex
;
.view-header
{
height
:
42px
;
line-height
:
42px
;
background
:
rgba
(
243
,
243
,
243
,
1
);
border
:
1px
solid
rgba
(
234
,
234
,
234
,
1
);
border-left
:
none
;
padding-right
:
42px
;
text-align
:
right
;
padding-top
:
2px
;
z-index
:
1
;
position
:
absolute
;
width
:
108%
;
}
.view-header-close
{
height
:
42px
;
line-height
:
42px
;
background
:
#f3f3f3
;
/* border: 1px solid #eaeaea; */
border-left
:
none
;
padding-right
:
42px
;
text-align
:
right
;
padding-top
:
2px
;
position
:
relative
;
z-index
:
5
;
width
:
270%
;
/* left: 30%; */
/* margin-left: 10px; */
/* float: left; */
top
:
2px
;
}
.image-sytle
{
height
:
20px
;
}
.left-view
{
display
:
inline-block
;
width
:
36px
;
height
:
36px
;
background
:
rgba
(
255
,
255
,
255
,
1
);
border
:
1px
solid
rgba
(
234
,
234
,
234
,
1
);
opacity
:
1
;
border-radius
:
4px
0px
0px
4px
;
cursor
:
pointer
;
padding
:
8px
;
position
:
relative
;
}
.right-view
{
display
:
inline-block
;
width
:
36px
;
height
:
36px
;
background
:
rgba
(
255
,
255
,
255
,
1
);
border
:
1px
solid
rgba
(
234
,
234
,
234
,
1
);
opacity
:
1
;
border-radius
:
4px
0px
0px
4px
;
cursor
:
pointer
;
padding
:
8px
;
position
:
relative
;
}
.left-content
{
.left-content
{
width
:
300px
;
width
:
300px
;
position
:
relative
;
position
:
relative
;
...
@@ -15,7 +78,7 @@
...
@@ -15,7 +78,7 @@
height
:
42px
;
height
:
42px
;
line-height
:
42px
;
line-height
:
42px
;
background
:
#f3f3f3
;
background
:
#f3f3f3
;
border
:
1px
solid
rgba
(
234
,
234
,
234
,
1
);
border
:
1px
solid
rgba
(
234
,
234
,
234
,
1
);
border-right
:
none
;
border-right
:
none
;
display
:
flex
;
display
:
flex
;
align-items
:
center
;
align-items
:
center
;
...
@@ -40,16 +103,19 @@
...
@@ -40,16 +103,19 @@
.ant-tree
{
.ant-tree
{
height
:
calc
(
100%
-
42px
);
height
:
calc
(
100%
-
42px
);
padding-left
:
24px
;
padding-left
:
24px
;
border
:
1px
solid
rgba
(
234
,
234
,
234
,
1
);
border
:
1px
solid
rgba
(
234
,
234
,
234
,
1
);
border-top
:
none
;
border-top
:
none
;
padding-top
:
7px
;
padding-top
:
7px
;
.ant-tree-title
{
.ant-tree-title
{
font-size
:
16px
;
font-size
:
16px
;
font-weight
:
bold
;
font-weight
:
bold
;
}
}
li
.ant-tree-node-content-wrapper.ant-tree-node-selected
{
li
.ant-tree-node-content-wrapper.ant-tree-node-selected
{
background-color
:
rgba
(
230
,
247
,
255
,
1
);
background-color
:
rgba
(
230
,
247
,
255
,
1
);
}
}
li
span
.ant-tree-switcher.ant-tree-switcher_open
:after
{
li
span
.ant-tree-switcher.ant-tree-switcher_open
:after
{
display
:
inline-block
;
display
:
inline-block
;
width
:
17px
;
width
:
17px
;
...
@@ -73,6 +139,7 @@
...
@@ -73,6 +139,7 @@
background-size
:
cover
;
background-size
:
cover
;
vertical-align
:
sub
;
vertical-align
:
sub
;
}
}
.ant-tree-child-tree
{
.ant-tree-child-tree
{
.ant-tree-switcher
:before
{
.ant-tree-switcher
:before
{
display
:
inline-block
;
display
:
inline-block
;
...
@@ -93,6 +160,7 @@
...
@@ -93,6 +160,7 @@
}
}
.tree-right
{
.tree-right
{
.ant-menu-item
:hover
,
.ant-menu-item
:hover
,
.ant-menu-item-active
,
.ant-menu-item-active
,
.ant-menu
:not
(
.ant-menu-inline
)
.ant-menu-submenu-open
,
.ant-menu
:not
(
.ant-menu-inline
)
.ant-menu-submenu-open
,
...
@@ -106,6 +174,7 @@
...
@@ -106,6 +174,7 @@
font-size
:
14px
;
font-size
:
14px
;
height
:
36px
;
height
:
36px
;
line-height
:
36px
;
line-height
:
36px
;
.tree-add-img
{
.tree-add-img
{
width
:
16px
;
width
:
16px
;
height
:
16px
;
height
:
16px
;
...
@@ -124,14 +193,22 @@
...
@@ -124,14 +193,22 @@
}
}
}
}
.left-content-close
{
position
:
relative
;
.tree-wrapper
{
display
:
none
;
}
}
.right-content
{
.right-content
{
flex
:
1
;
flex
:
1
;
.net-topo-header
{
.net-topo-header
{
height
:
42px
;
height
:
42px
;
line-height
:
42px
;
line-height
:
42px
;
background
:
rgba
(
243
,
243
,
243
,
1
)
;
background
:
rgba
(
243
,
243
,
243
,
1
);
border
:
1px
solid
rgba
(
234
,
234
,
234
,
1
);
border
:
1px
solid
rgba
(
234
,
234
,
234
,
1
);
border-left
:
none
;
border-left
:
none
;
padding-right
:
42px
;
padding-right
:
42px
;
text-align
:
right
;
text-align
:
right
;
...
@@ -179,7 +256,7 @@
...
@@ -179,7 +256,7 @@
.tooltip-content
{
.tooltip-content
{
width
:
251px
;
width
:
251px
;
background
:
#345fa6
;
background
:
#345fa6
;
box-shadow
:
inset
0px
3px
6px
rgba
(
0
,
0
,
0
,
0
.16
);
box-shadow
:
inset
0px
3px
6px
rgba
(
0
,
0
,
0
,
0
.16
);
opacity
:
1
;
opacity
:
1
;
border-radius
:
7px
;
border-radius
:
7px
;
padding
:
22px
24px
;
padding
:
22px
24px
;
...
...
src/styles/view/biz/netTopology/index.scss
View file @
abbc2778
...
@@ -2,6 +2,69 @@
...
@@ -2,6 +2,69 @@
height
:
100%
;
height
:
100%
;
display
:
flex
;
display
:
flex
;
.view-header
{
height
:
42px
;
line-height
:
42px
;
background
:
rgba
(
243
,
243
,
243
,
1
);
border
:
1px
solid
rgba
(
234
,
234
,
234
,
1
);
border-left
:
none
;
padding-right
:
42px
;
text-align
:
right
;
padding-top
:
2px
;
z-index
:
1
;
position
:
absolute
;
width
:
108%
;
}
.view-header-close
{
height
:
42px
;
line-height
:
42px
;
background
:
#f3f3f3
;
/* border: 1px solid #eaeaea; */
border-left
:
none
;
padding-right
:
42px
;
text-align
:
right
;
padding-top
:
2px
;
position
:
relative
;
z-index
:
5
;
width
:
270%
;
/* left: 30%; */
/* margin-left: 10px; */
/* float: left; */
top
:
2px
;
}
.image-sytle
{
height
:
20px
;
}
.left-view
{
display
:
inline-block
;
width
:
36px
;
height
:
36px
;
background
:
rgba
(
255
,
255
,
255
,
1
);
border
:
1px
solid
rgba
(
234
,
234
,
234
,
1
);
opacity
:
1
;
border-radius
:
4px
0px
0px
4px
;
cursor
:
pointer
;
padding
:
8px
;
position
:
relative
;
}
.right-view
{
display
:
inline-block
;
width
:
36px
;
height
:
36px
;
background
:
rgba
(
255
,
255
,
255
,
1
);
border
:
1px
solid
rgba
(
234
,
234
,
234
,
1
);
opacity
:
1
;
border-radius
:
4px
0px
0px
4px
;
cursor
:
pointer
;
padding
:
8px
;
position
:
relative
;
}
.left-content
{
.left-content
{
width
:
300px
;
width
:
300px
;
position
:
relative
;
position
:
relative
;
...
@@ -15,7 +78,7 @@
...
@@ -15,7 +78,7 @@
height
:
42px
;
height
:
42px
;
line-height
:
42px
;
line-height
:
42px
;
background
:
#f3f3f3
;
background
:
#f3f3f3
;
border
:
1px
solid
rgba
(
234
,
234
,
234
,
1
);
border
:
1px
solid
rgba
(
234
,
234
,
234
,
1
);
border-right
:
none
;
border-right
:
none
;
display
:
flex
;
display
:
flex
;
align-items
:
center
;
align-items
:
center
;
...
@@ -40,16 +103,17 @@
...
@@ -40,16 +103,17 @@
.ant-tree
{
.ant-tree
{
height
:
calc
(
100%
-
42px
);
height
:
calc
(
100%
-
42px
);
padding-left
:
24px
;
padding-left
:
24px
;
border
:
1px
solid
rgba
(
234
,
234
,
234
,
1
);
border
:
1px
solid
rgba
(
234
,
234
,
234
,
1
);
border-top
:
none
;
border-top
:
none
;
padding-top
:
7px
;
padding-top
:
7px
;
//overflow-x: scroll;
//overflow-x: scroll;
.ant-tree-title
{
.ant-tree-title
{
font-size
:
16px
;
font-size
:
16px
;
font-weight
:
bold
;
font-weight
:
bold
;
}
}
li
.ant-tree-node-content-wrapper
{
li
.ant-tree-node-content-wrapper
{
width
:
82%
;
width
:
82%
;
overflow
:
hidden
;
overflow
:
hidden
;
text-overflow
:
ellipsis
;
text-overflow
:
ellipsis
;
...
@@ -58,6 +122,7 @@
...
@@ -58,6 +122,7 @@
li
.ant-tree-node-content-wrapper.ant-tree-node-selected
{
li
.ant-tree-node-content-wrapper.ant-tree-node-selected
{
background-color
:
rgba
(
230
,
247
,
255
,
1
);
background-color
:
rgba
(
230
,
247
,
255
,
1
);
}
}
li
span
.ant-tree-switcher.ant-tree-switcher_open
:after
{
li
span
.ant-tree-switcher.ant-tree-switcher_open
:after
{
display
:
inline-block
;
display
:
inline-block
;
width
:
17px
;
width
:
17px
;
...
@@ -81,6 +146,7 @@
...
@@ -81,6 +146,7 @@
background-size
:
cover
;
background-size
:
cover
;
vertical-align
:
sub
;
vertical-align
:
sub
;
}
}
.ant-tree-child-tree
{
.ant-tree-child-tree
{
.ant-tree-switcher
:before
{
.ant-tree-switcher
:before
{
display
:
inline-block
;
display
:
inline-block
;
...
@@ -101,6 +167,7 @@
...
@@ -101,6 +167,7 @@
}
}
.tree-right
{
.tree-right
{
.ant-menu-item
:hover
,
.ant-menu-item
:hover
,
.ant-menu-item-active
,
.ant-menu-item-active
,
.ant-menu
:not
(
.ant-menu-inline
)
.ant-menu-submenu-open
,
.ant-menu
:not
(
.ant-menu-inline
)
.ant-menu-submenu-open
,
...
@@ -116,6 +183,7 @@
...
@@ -116,6 +183,7 @@
line-height
:
36px
;
line-height
:
36px
;
margin-left
:
-70px
;
margin-left
:
-70px
;
background-color
:
white
;
background-color
:
white
;
.tree-add-img
{
.tree-add-img
{
width
:
16px
;
width
:
16px
;
height
:
16px
;
height
:
16px
;
...
@@ -134,14 +202,22 @@
...
@@ -134,14 +202,22 @@
}
}
}
}
.left-content-close
{
position
:
relative
;
.tree-wrapper
{
display
:
none
;
}
}
.right-content
{
.right-content
{
flex
:
1
;
flex
:
1
;
.net-topo-header
{
.net-topo-header
{
height
:
42px
;
height
:
42px
;
line-height
:
42px
;
line-height
:
42px
;
background
:
rgba
(
243
,
243
,
243
,
1
)
;
background
:
rgba
(
243
,
243
,
243
,
1
);
border
:
1px
solid
rgba
(
234
,
234
,
234
,
1
);
border
:
1px
solid
rgba
(
234
,
234
,
234
,
1
);
border-left
:
none
;
border-left
:
none
;
padding-right
:
42px
;
padding-right
:
42px
;
text-align
:
right
;
text-align
:
right
;
...
@@ -189,7 +265,7 @@
...
@@ -189,7 +265,7 @@
.tooltip-content
{
.tooltip-content
{
width
:
251px
;
width
:
251px
;
background
:
#345fa6
;
background
:
#345fa6
;
box-shadow
:
inset
0px
3px
6px
rgba
(
0
,
0
,
0
,
0
.16
);
box-shadow
:
inset
0px
3px
6px
rgba
(
0
,
0
,
0
,
0
.16
);
opacity
:
1
;
opacity
:
1
;
border-radius
:
7px
;
border-radius
:
7px
;
padding
:
22px
24px
;
padding
:
22px
24px
;
...
@@ -235,21 +311,25 @@
...
@@ -235,21 +311,25 @@
-webkit-transform
:
scale
(
0
.3
);
-webkit-transform
:
scale
(
0
.3
);
transform
:
scale
(
0
.3
);
transform
:
scale
(
0
.3
);
}
}
25
%
{
25
%
{
opacity
:
0
.5
;
opacity
:
0
.5
;
-webkit-transform
:
scale
(
0
.3
);
-webkit-transform
:
scale
(
0
.3
);
transform
:
scale
(
0
.3
);
transform
:
scale
(
0
.3
);
}
}
50
%
{
50
%
{
opacity
:
1
;
opacity
:
1
;
-webkit-transform
:
scale
(
0
.3
);
-webkit-transform
:
scale
(
0
.3
);
transform
:
scale
(
0
.3
);
transform
:
scale
(
0
.3
);
}
}
75
%
{
75
%
{
opacity
:
0
.5
;
opacity
:
0
.5
;
-webkit-transform
:
scale
(
0
.5
);
-webkit-transform
:
scale
(
0
.5
);
transform
:
scale
(
0
.5
);
transform
:
scale
(
0
.5
);
}
}
100
%
{
100
%
{
opacity
:
0
.3
;
opacity
:
0
.3
;
-webkit-transform
:
scale
(
0
.8
);
-webkit-transform
:
scale
(
0
.8
);
...
...
src/view/bank/dynamicRing/TreeComponent.js
View file @
abbc2778
...
@@ -243,6 +243,25 @@ class TreeComponent extends Component {
...
@@ -243,6 +243,25 @@ class TreeComponent extends Component {
});
});
}
}
// 视图切换
toggleView
=
(
value
)
=>
{
if
(
value
===
'left'
)
{
this
.
setState
({
isTreeDisplay
:
true
,
activeView
:
'left'
});
}
else
{
this
.
setState
({
isTreeDisplay
:
false
,
activeView
:
'detail'
});
}
//拓扑图刷新
const
{
selectedKeys
}
=
this
.
state
;
this
.
initTopologyData
(
selectedKeys
[
0
],
''
);
}
renderTreeNodes
=
(
data
)
=>
{
renderTreeNodes
=
(
data
)
=>
{
let
operableTreeData
=
deepCopy
(
data
);
let
operableTreeData
=
deepCopy
(
data
);
return
operableTreeData
.
map
((
item
)
=>
{
return
operableTreeData
.
map
((
item
)
=>
{
...
...
src/view/bank/dynamicRing/index.js
View file @
abbc2778
import
React
,
{
Component
}
from
'react'
;
import
React
,
{
Component
}
from
'react'
;
import
PropTypes
from
'prop-typ
es'
;
import
classnames
from
'classnam
es'
;
import
{
message
}
from
'amos-framework'
;
import
{
message
}
from
'amos-framework'
;
import
AmosWebSocket
from
'amos-websocket'
;
import
AmosWebSocket
from
'amos-websocket'
;
import
TopologyComponent
from
'./TopologyComponent'
;
import
TopologyComponent
from
'./TopologyComponent'
;
import
TreeComponent
from
'./TreeComponent'
;
import
TreeComponent
from
'./TreeComponent'
;
import
{
getDyTopoAction
,
updateDyTopoAction
}
from
'./../../../services/dynamicRingService'
;
import
{
getDyTopoAction
,
updateDyTopoAction
}
from
'./../../../services/dynamicRingService'
;
import
SysWsURL
from
'./../../../consts/wsUrlConsts'
;
import
SysWsURL
from
'./../../../consts/wsUrlConsts'
;
class
DynamicRing
extends
Component
{
class
DynamicRing
extends
Component
{
constructor
(
props
)
{
constructor
(
props
)
{
super
(
props
);
super
(
props
);
this
.
state
=
{
this
.
state
=
{
selectedKeys
:
[],
selectedKeys
:
[],
wSelectedKeys
:
''
,
wSelectedKeys
:
''
,
isTreeDisplay
:
true
,
topologyData
:
{}
//拓扑图数据
topologyData
:
{}
//拓扑图数据
};
};
}
}
// 拓扑图数据初始化
// 拓扑图数据初始化
initTopologyData
=
(
id
,
value
=
''
)
=>
{
initTopologyData
=
(
id
,
value
=
''
)
=>
{
getDyTopoAction
(
id
).
then
(
data
=>
{
getDyTopoAction
(
id
).
then
(
data
=>
{
if
(
value
===
'refresh'
)
{
if
(
value
===
'refresh'
)
{
message
.
success
(
'拓扑图刷新成功!'
);
message
.
success
(
'拓扑图刷新成功!'
);
...
@@ -28,27 +28,27 @@ class DynamicRing extends Component {
...
@@ -28,27 +28,27 @@ class DynamicRing extends Component {
topologyData
:
data
topologyData
:
data
});
});
});
});
}
}
;
// 树选择
// 树选择
onSelect
=
(
selectedKeys
)
=>
{
onSelect
=
selectedKeys
=>
{
this
.
initTopologyData
(
selectedKeys
);
this
.
initTopologyData
(
selectedKeys
);
this
.
setState
({
this
.
setState
({
selectedKeys
,
selectedKeys
,
wSelectedKeys
:
''
wSelectedKeys
:
''
});
});
}
}
;
// 节点数据改变
// 节点数据改变
nodeChange
=
(
e
)
=>
{
nodeChange
=
e
=>
{
// console.log(e.model.toJson());
// console.log(e.model.toJson());
this
.
updateTopologyData
=
JSON
.
parse
(
e
.
model
.
toJson
());
this
.
updateTopologyData
=
JSON
.
parse
(
e
.
model
.
toJson
());
}
}
;
// 保存节点数据
// 保存节点数据
saveTopologyData
=
()
=>
{
saveTopologyData
=
()
=>
{
const
{
selectedKeys
}
=
this
.
state
;
const
{
selectedKeys
}
=
this
.
state
;
const
{
nodeDataArray
,
linkDataArray
}
=
this
.
updateTopologyData
;
const
{
nodeDataArray
,
linkDataArray
}
=
this
.
updateTopologyData
;
const
params
=
{
const
params
=
{
treeid
:
selectedKeys
,
treeid
:
selectedKeys
,
nodeData
:
nodeDataArray
,
nodeData
:
nodeDataArray
,
...
@@ -57,60 +57,74 @@ class DynamicRing extends Component {
...
@@ -57,60 +57,74 @@ class DynamicRing extends Component {
updateDyTopoAction
(
params
).
then
(
data
=>
{
updateDyTopoAction
(
params
).
then
(
data
=>
{
message
.
success
(
'拓扑图保存成功!'
);
message
.
success
(
'拓扑图保存成功!'
);
});
});
}
}
;
// 刷新节点
// 刷新节点
refreshTopologyData
=
()
=>
{
refreshTopologyData
=
()
=>
{
const
{
selectedKeys
}
=
this
.
state
;
const
{
selectedKeys
}
=
this
.
state
;
this
.
initTopologyData
(
selectedKeys
,
'refresh'
);
this
.
initTopologyData
(
selectedKeys
,
'refresh'
);
}
}
;
// 选择节点
// 选择节点
nodeSelectionChanged
=
(
e
)
=>
{
nodeSelectionChanged
=
e
=>
{
// console.log('e',e);
// console.log('e',e);
if
(
e
.
isSelected
)
{
}
if
(
e
.
isSelected
)
{
}
}
};
// // webSocket 接收消息
// // webSocket 接收消息
handleData
=
(
data
)
=>
{
handleData
=
data
=>
{
this
.
onSelect
(
data
);
this
.
onSelect
(
data
);
this
.
setState
({
this
.
setState
({
wSelectedKeys
:
data
wSelectedKeys
:
data
});
});
}
};
// 视图切换
toggleView
=
value
=>
{
if
(
value
===
'left'
)
{
this
.
setState
({
isTreeDisplay
:
true
,
activeView
:
'left'
});
}
else
{
this
.
setState
({
isTreeDisplay
:
false
,
activeView
:
'detail'
});
}
//拓扑图刷新
const
{
selectedKeys
}
=
this
.
state
;
this
.
initTopologyData
(
selectedKeys
[
0
],
''
);
};
render
()
{
render
()
{
const
{
topologyData
,
wSelectedKeys
}
=
this
.
state
;
const
{
topologyData
,
wSelectedKeys
,
isTreeDisplay
}
=
this
.
state
;
return
(
return
(
<
div
className
=
"dy-wrapper"
>
<
div
className
=
"dy-wrapper"
>
<
AmosWebSocket
<
AmosWebSocket
ref
=
{
node
=>
(
this
.
aws
=
node
)}
url
=
{
SysWsURL
.
dyTopoURI
}
onMessage
=
{
this
.
handleData
}
reconnect
debug
/>
ref
=
{
node
=>
this
.
aws
=
node
}
<
div
className
=
{
classnames
({
'left-content'
:
isTreeDisplay
,
'left-content-close'
:
!
isTreeDisplay
})}
>
url
=
{
SysWsURL
.
dyTopoURI
}
<
div
className
=
{
classnames
({
'view-header'
:
isTreeDisplay
,
'view-header-close'
:
!
isTreeDisplay
})}
>
onMessage
=
{
this
.
handleData
}
<
div
className
=
"left-view"
>
reconnect
<
img
className
=
"image-sytle"
src
=
"/src/assets/bizView/netTopology/left-view.png"
alt
=
"左视图"
onClick
=
{()
=>
this
.
toggleView
(
'left'
)}
/
>
debug
<
/div
>
/>
<
div
className
=
"right-view"
>
<
div
className
=
"left-content"
>
<
img
className
=
"image-sytle"
src
=
"/src/assets/bizView/netTopology/detail-view.png"
alt
=
"详细视图"
onClick
=
{()
=>
this
.
toggleView
(
'detail'
)}
/
>
<
TreeComponent
<
/div
>
onSelect
=
{
this
.
onSelect
}
<
/div
>
wSelectedKeys
=
{
wSelectedKeys
}
<
TreeComponent
onSelect
=
{
this
.
onSelect
}
wSelectedKeys
=
{
wSelectedKeys
}
/
>
/
>
<
/div
>
<
/div
>
<
div
className
=
"right-content"
>
<
div
className
=
"right-content"
>
<
div
className
=
"net-topo-header"
>
<
div
className
=
"net-topo-header"
>
<
div
className
=
"net-topo-save"
>
<
div
className
=
"net-topo-save"
>
<
img
src
=
"/src/assets/bizView/netTopology/save.png"
alt
=
"保存"
onClick
=
{
this
.
saveTopologyData
}
/
>
<
img
src
=
"/src/assets/bizView/netTopology/save.png"
alt
=
"保存"
onClick
=
{
this
.
saveTopologyData
}
/
>
<
/div
>
<
/div
>
<
div
className
=
"net-topo-refresh"
>
<
div
className
=
"net-topo-refresh"
>
<
img
src
=
"/src/assets/bizView/netTopology/refresh.png"
alt
=
"刷新"
onClick
=
{
this
.
refreshTopologyData
}
/
>
<
img
src
=
"/src/assets/bizView/netTopology/refresh.png"
alt
=
"刷新"
onClick
=
{
this
.
refreshTopologyData
}
/
>
<
/div
>
<
/div
>
<
/div
>
<
/div
>
<
div
className
=
"net-topo-content"
>
<
div
className
=
"net-topo-content"
>
<
TopologyComponent
<
TopologyComponent
topologyData
=
{
topologyData
}
nodeChange
=
{
this
.
nodeChange
}
nodeSelectionChanged
=
{
this
.
nodeSelectionChanged
}
/
>
topologyData
=
{
topologyData
}
nodeChange
=
{
this
.
nodeChange
}
nodeSelectionChanged
=
{
this
.
nodeSelectionChanged
}
/
>
<
/div
>
<
/div
>
<
/div
>
<
/div
>
<
/div
>
<
/div
>
...
@@ -118,8 +132,6 @@ class DynamicRing extends Component {
...
@@ -118,8 +132,6 @@ class DynamicRing extends Component {
}
}
}
}
DynamicRing
.
propTypes
=
{
DynamicRing
.
propTypes
=
{};
};
export
default
DynamicRing
;
export
default
DynamicRing
;
src/view/bank/netTopology/TreeComponent.js
View file @
abbc2778
...
@@ -244,6 +244,7 @@ class TreeComponent extends Component {
...
@@ -244,6 +244,7 @@ class TreeComponent extends Component {
}
}
renderTreeNodes
=
(
data
)
=>
{
renderTreeNodes
=
(
data
)
=>
{
let
operableTreeData
=
deepCopy
(
data
);
let
operableTreeData
=
deepCopy
(
data
);
return
operableTreeData
.
map
((
item
)
=>
{
return
operableTreeData
.
map
((
item
)
=>
{
if
(
item
.
isAdd
)
{
if
(
item
.
isAdd
)
{
...
@@ -287,9 +288,9 @@ class TreeComponent extends Component {
...
@@ -287,9 +288,9 @@ class TreeComponent extends Component {
return
(
return
(
<
div
className
=
{
classnames
(
'tree-wrapper'
,
className
)}
>
<
div
className
=
{
classnames
(
'tree-wrapper'
,
className
)}
>
<
div
className
=
"tree-btn"
>
<
div
className
=
"tree-btn"
>
<
div
className
=
"add-topo"
onClick
=
{
this
.
addTopology
}
>
{
/**
<div className="add-topo" onClick={this.addTopology}>
<img src="/src/assets/bizView/netTopology/add-topo.png" alt="添加拓扑图" />
<img src="/src/assets/bizView/netTopology/add-topo.png" alt="添加拓扑图" />
<
/div
>
</div>
*/
}
<
/div
>
<
/div
>
<
Tree
<
Tree
selectedKeys
=
{
selectedKeys
}
selectedKeys
=
{
selectedKeys
}
...
@@ -297,7 +298,7 @@ class TreeComponent extends Component {
...
@@ -297,7 +298,7 @@ class TreeComponent extends Component {
onSelect
=
{
this
.
onSelect
}
onSelect
=
{
this
.
onSelect
}
onExpand
=
{
this
.
onExpand
}
onExpand
=
{
this
.
onExpand
}
autoExpandParent
=
{
autoExpandParent
}
autoExpandParent
=
{
autoExpandParent
}
onRightClick
=
{
this
.
treeNodeonRightClick
}
//
onRightClick={this.treeNodeonRightClick}
>
>
{
this
.
renderTreeNodes
(
treeData
)}
{
this
.
renderTreeNodes
(
treeData
)}
<
/Tree
>
<
/Tree
>
...
...
src/view/bank/netTopology/index.js
View file @
abbc2778
...
@@ -4,11 +4,11 @@ import { message } from 'amos-framework';
...
@@ -4,11 +4,11 @@ import { message } from 'amos-framework';
import
AmosWebSocket
from
'amos-websocket'
;
import
AmosWebSocket
from
'amos-websocket'
;
import
TopologyComponent
from
'./TopologyComponent'
;
import
TopologyComponent
from
'./TopologyComponent'
;
import
TreeComponent
from
'./TreeComponent'
;
import
TreeComponent
from
'./TreeComponent'
;
import
{
getNetTopoAction
,
updateNetTopoAction
}
from
'./../../../services/netTopologyService'
;
import
{
getNetTopoAction
,
updateNetTopoAction
}
from
'./../../../services/netTopologyService'
;
import
SysWsURL
from
'./../../../consts/wsUrlConsts'
;
import
SysWsURL
from
'./../../../consts/wsUrlConsts'
;
import
PamsTable
from
'./pamsTable/index'
;
import
PamsTable
from
'./pamsTable/index'
;
import
{
UUID
}
from
'amos-tool'
;
import
{
UUID
}
from
'amos-tool'
;
import
classnames
from
'classnames'
;
class
NetTopology
extends
Component
{
class
NetTopology
extends
Component
{
constructor
(
props
)
{
constructor
(
props
)
{
...
@@ -18,12 +18,13 @@ class NetTopology extends Component {
...
@@ -18,12 +18,13 @@ class NetTopology extends Component {
wSelectedKeys
:
''
,
wSelectedKeys
:
''
,
topologyData
:
{},
//拓扑图数据
topologyData
:
{},
//拓扑图数据
pamsDisplay
:
false
,
pamsDisplay
:
false
,
pamsTableContent
:
[]
pamsTableContent
:
[],
isTreeDisplay
:
true
};
};
}
}
// 拓扑图数据初始化
// 拓扑图数据初始化
initTopologyData
=
(
id
,
value
=
''
)
=>
{
initTopologyData
=
(
id
,
value
=
''
)
=>
{
getNetTopoAction
(
id
).
then
(
data
=>
{
getNetTopoAction
(
id
).
then
(
data
=>
{
if
(
value
===
'refresh'
)
{
if
(
value
===
'refresh'
)
{
message
.
success
(
'拓扑图刷新成功!'
);
message
.
success
(
'拓扑图刷新成功!'
);
...
@@ -32,27 +33,27 @@ class NetTopology extends Component {
...
@@ -32,27 +33,27 @@ class NetTopology extends Component {
topologyData
:
data
topologyData
:
data
});
});
});
});
}
}
;
// 树选择
// 树选择
onSelect
=
(
selectedKeys
)
=>
{
onSelect
=
selectedKeys
=>
{
this
.
initTopologyData
(
selectedKeys
);
this
.
initTopologyData
(
selectedKeys
);
this
.
setState
({
this
.
setState
({
selectedKeys
,
selectedKeys
,
wSelectedKeys
:
''
wSelectedKeys
:
''
});
});
}
}
;
// 节点数据改变
// 节点数据改变
nodeChange
=
(
e
)
=>
{
nodeChange
=
e
=>
{
// console.log(e.model.toJson());
// console.log(e.model.toJson());
this
.
updateTopologyData
=
JSON
.
parse
(
e
.
model
.
toJson
());
this
.
updateTopologyData
=
JSON
.
parse
(
e
.
model
.
toJson
());
}
}
;
// 保存节点数据
// 保存节点数据
saveTopologyData
=
()
=>
{
saveTopologyData
=
()
=>
{
const
{
selectedKeys
}
=
this
.
state
;
const
{
selectedKeys
}
=
this
.
state
;
const
{
nodeDataArray
,
linkDataArray
}
=
this
.
updateTopologyData
;
const
{
nodeDataArray
,
linkDataArray
}
=
this
.
updateTopologyData
;
const
params
=
{
const
params
=
{
treeid
:
selectedKeys
,
treeid
:
selectedKeys
,
nodeData
:
nodeDataArray
,
nodeData
:
nodeDataArray
,
...
@@ -61,86 +62,95 @@ class NetTopology extends Component {
...
@@ -61,86 +62,95 @@ class NetTopology extends Component {
updateNetTopoAction
(
params
).
then
(
data
=>
{
updateNetTopoAction
(
params
).
then
(
data
=>
{
message
.
success
(
'拓扑图保存成功!'
);
message
.
success
(
'拓扑图保存成功!'
);
});
});
}
}
;
// 刷新节点
// 刷新节点
refreshTopologyData
=
()
=>
{
refreshTopologyData
=
()
=>
{
const
{
selectedKeys
}
=
this
.
state
;
const
{
selectedKeys
}
=
this
.
state
;
this
.
initTopologyData
(
selectedKeys
,
'refresh'
);
this
.
initTopologyData
(
selectedKeys
,
'refresh'
);
}
}
;
// 选择节点
// 选择节点
nodeSelectionChanged
=
(
e
)
=>
{
nodeSelectionChanged
=
e
=>
{
console
.
log
(
'e'
,
e
);
console
.
log
(
'e'
,
e
);
if
(
e
.
isSelected
)
{
if
(
e
.
isSelected
)
{
this
.
setState
({
pamsDisplay
:
true
});
this
.
setState
({
pamsDisplay
:
true
});
console
.
log
(
e
.
data
,
"device"
);
console
.
log
(
e
.
data
,
'device'
);
const
pamsTableContent
=
[
<
PamsTable
data
=
{
e
.
data
}
key
=
{
UUID
.
uuid
(
'16'
)}
><
/PamsTable>]
;
const
pamsTableContent
=
[
<
PamsTable
data
=
{
e
.
data
}
key
=
{
UUID
.
uuid
(
'16'
)}
><
/PamsTable>]
;
this
.
setState
({
pamsTableContent
});
this
.
setState
({
pamsTableContent
});
}
else
{
}
else
{
console
.
log
(
'没进来'
);
console
.
log
(
'没进来'
);
this
.
setState
({
pamsDisplay
:
false
});
this
.
setState
({
pamsDisplay
:
false
});
}
}
}
}
;
//pams底部表
//pams底部表
renderPamsTable
=
()
=>
{
renderPamsTable
=
()
=>
{
const
{
pamsTableContent
}
=
this
.
state
;
const
{
pamsTableContent
}
=
this
.
state
;
return
pamsTableContent
;
return
pamsTableContent
;
}
}
;
// // webSocket 接收消息
// // webSocket 接收消息
handleData
=
(
data
)
=>
{
handleData
=
data
=>
{
this
.
onSelect
(
data
);
this
.
onSelect
(
data
);
this
.
setState
({
this
.
setState
({
wSelectedKeys
:
data
wSelectedKeys
:
data
});
});
}
};
// 视图切换
toggleView
=
value
=>
{
if
(
value
===
'left'
)
{
this
.
setState
({
isTreeDisplay
:
true
,
activeView
:
'left'
});
}
else
{
this
.
setState
({
isTreeDisplay
:
false
,
activeView
:
'detail'
});
}
//拓扑图刷新
const
{
selectedKeys
}
=
this
.
state
;
this
.
initTopologyData
(
selectedKeys
[
0
],
''
);
};
render
()
{
render
()
{
const
{
topologyData
,
wSelectedKeys
,
selectedKeys
,
pams
Display
}
=
this
.
state
;
const
{
topologyData
,
wSelectedKeys
,
selectedKeys
,
pamsDisplay
,
isTree
Display
}
=
this
.
state
;
return
(
return
(
<
div
className
=
"net-wrapper"
>
<
div
className
=
"net-wrapper"
>
<
AmosWebSocket
<
AmosWebSocket
ref
=
{
node
=>
(
this
.
aws
=
node
)}
url
=
{
SysWsURL
.
netTopoURI
}
onMessage
=
{
this
.
handleData
}
reconnect
debug
/>
ref
=
{
node
=>
this
.
aws
=
node
}
<
div
className
=
{
classnames
({
'left-content'
:
isTreeDisplay
,
'left-content-close'
:
!
isTreeDisplay
})}
>
url
=
{
SysWsURL
.
netTopoURI
}
<
div
className
=
{
classnames
({
'view-header'
:
isTreeDisplay
,
'view-header-close'
:
!
isTreeDisplay
})}
>
onMessage
=
{
this
.
handleData
}
<
div
className
=
"left-view"
>
reconnect
<
img
className
=
"image-sytle"
src
=
"/src/assets/bizView/netTopology/left-view.png"
alt
=
"左视图"
onClick
=
{()
=>
this
.
toggleView
(
'left'
)}
/
>
debug
<
/div
>
/>
<
div
className
=
"right-view"
>
<
div
className
=
"left-content"
>
<
img
className
=
"image-sytle"
src
=
"/src/assets/bizView/netTopology/detail-view.png"
alt
=
"详细视图"
onClick
=
{()
=>
this
.
toggleView
(
'detail'
)}
/
>
<
TreeComponent
<
/div
>
onSelect
=
{
this
.
onSelect
}
<
/div
>
wSelectedKeys
=
{
wSelectedKeys
}
<
TreeComponent
onSelect
=
{
this
.
onSelect
}
wSelectedKeys
=
{
wSelectedKeys
}
/
>
/
>
<
/div
>
<
/div
>
<
div
className
=
"right-content"
>
<
div
className
=
"right-content"
>
<
div
className
=
"net-topo-header"
>
<
div
className
=
"net-topo-header"
>
<
div
className
=
"net-topo-save"
>
<
div
className
=
"net-topo-save"
>
<
img
src
=
"/src/assets/bizView/netTopology/save.png"
alt
=
"保存"
onClick
=
{
this
.
saveTopologyData
}
/
>
<
img
src
=
"/src/assets/bizView/netTopology/save.png"
alt
=
"保存"
onClick
=
{
this
.
saveTopologyData
}
/
>
<
/div
>
<
/div
>
<
div
className
=
"net-topo-refresh"
>
<
div
className
=
"net-topo-refresh"
>
<
img
src
=
"/src/assets/bizView/netTopology/refresh.png"
alt
=
"刷新"
onClick
=
{
this
.
refreshTopologyData
}
/
>
<
img
src
=
"/src/assets/bizView/netTopology/refresh.png"
alt
=
"刷新"
onClick
=
{
this
.
refreshTopologyData
}
/
>
<
/div
>
<
/div
>
<
/div
>
<
/div
>
<
div
className
=
"net-topo-content"
style
=
{{
height
:
pamsDisplay
?
'calc(100% - 342px)'
:
'calc(100% - 42px) '
,
overflow
:
'auto'
}}
>
<
div
className
=
"net-topo-content"
style
=
{{
height
:
pamsDisplay
?
'calc(100% - 342px)'
:
'calc(100% - 42px) '
,
overflow
:
'auto'
}}
>
<
TopologyComponent
<
TopologyComponent
topologyData
=
{
topologyData
}
nodeChange
=
{
this
.
nodeChange
}
nodeSelectionChanged
=
{
this
.
nodeSelectionChanged
}
/
>
topologyData
=
{
topologyData
}
nodeChange
=
{
this
.
nodeChange
}
nodeSelectionChanged
=
{
this
.
nodeSelectionChanged
}
/
>
<
/div
>
<
/div
>
{
{
pamsDisplay
?
this
.
renderPamsTable
()
:
null
}
pamsDisplay
?
this
.
renderPamsTable
()
:
null
}
<
/div
>
<
/div
>
<
/div
>
<
/div
>
);
);
}
}
}
}
NetTopology
.
propTypes
=
{
NetTopology
.
propTypes
=
{};
};
export
default
NetTopology
;
export
default
NetTopology
;
src/view/bizview/pams/index.js
View file @
abbc2778
...
@@ -69,8 +69,8 @@ class Pams extends Component {
...
@@ -69,8 +69,8 @@ class Pams extends Component {
this
.
state
.
cityLine
=
JSON
.
parse
(
this
.
props
.
location
.
state
.
cityLine
);
this
.
state
.
cityLine
=
JSON
.
parse
(
this
.
props
.
location
.
state
.
cityLine
);
this
.
viewlineItem
();
this
.
viewlineItem
();
}
}
}
}
componentWillReceiveProps
(
nextProps
)
{
componentWillReceiveProps
(
nextProps
)
{
if
(
nextProps
.
location
.
state
)
{
if
(
nextProps
.
location
.
state
)
{
this
.
state
.
cityLine
=
JSON
.
parse
(
nextProps
.
location
.
state
.
cityLine
);
this
.
state
.
cityLine
=
JSON
.
parse
(
nextProps
.
location
.
state
.
cityLine
);
...
@@ -245,6 +245,10 @@ class Pams extends Component {
...
@@ -245,6 +245,10 @@ class Pams extends Component {
activeView
:
'detail'
activeView
:
'detail'
});
});
}
}
//刷新视图
const
{
selectedKeys
}
=
this
.
state
;
this
.
initTopologyData
(
selectedKeys
[
0
],
''
);
}
}
//webSocket 接收消息
//webSocket 接收消息
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment