Toggle navigation
Toggle navigation
This project
Loading...
Sign in
monitor_v3
/
hg-monitor-web
·
Commits
Go to a project
GitLab
Go to group
Project
Activity
Files
Commits
Pipelines
0
Builds
0
Graphs
Milestones
Issues
0
Merge Requests
0
Members
Labels
Wiki
Forks
Network
Create a new issue
Download as
Plain Diff
Browse Files
Authored by
鲁尚清
3 years ago
Commit
b34a3f60b3865f018ed11d065b151f3fcf3c5cba
2 parents
a5200c46
76dd5932
master
...
joke
master-500-dev
master-500-dev-0327
master-500-dev-LH
master-500-dev-XuHaoJie
master-500-dev-joke
master-500-dev-lushangqing
master-500-dev-lzc
master-500-dev-xwx
master-500-dev-yuanjinpeng
master-500-dev-ztq
master-500-dev-ztq1
master-500-log
master-500-log-ztq
master-500-prod
master-500-prod-joke-new
master-500-prod-lushangqing
master-V32-LH
master-V32-XuHaoJie
master-V32-lgh
master-joke
master-mj
master-mj-610
master-mj-joke
master-mj-yuanjinpeng
master-mj-ztq
master-prod
master-prod-500-lushangqing
master-prod-lgh
master-prod-lushangqing
master-prod-xwx
master-prod-xwx2
master-v32-joke
master-v32-lushangqing
master-v32-lzc
master-v32-xwx
master-v32-ztq
master-v330
master-yuanjinpeng
mater-ztq
wangfeng
wangfeng-500-dev
wangfeng-mj
tag-master-v320
Merge branch 'master' of
http://192.168.1.136:82/monitor_v3/hg-monitor-web
into …
…master-v32-lushangqing
Hide whitespace changes
Inline
Side-by-side
Showing
34 changed files
with
3648 additions
and
113 deletions
hg-monitor-web-base/src/main/resources/static/src/controller/activewarning.js
hg-monitor-web-base/src/main/resources/static/src/controller/ali_cloud_rds.js
hg-monitor-web-base/src/main/resources/static/src/controller/bizreslist.js
hg-monitor-web-base/src/main/resources/static/src/controller/common.js
hg-monitor-web-base/src/main/resources/static/src/controller/commonCols.js
hg-monitor-web-base/src/main/resources/static/src/controller/commonDetail.js
hg-monitor-web-base/src/main/resources/static/src/controller/domainindex.js
hg-monitor-web-base/src/main/resources/static/src/controller/dutyIndex.js
hg-monitor-web-base/src/main/resources/static/src/controller/globalSearch.js
hg-monitor-web-base/src/main/resources/static/src/controller/historywarning.js
hg-monitor-web-base/src/main/resources/static/src/controller/host_minicomputer_server.js
hg-monitor-web-base/src/main/resources/static/src/controller/ipIndex.js
hg-monitor-web-base/src/main/resources/static/src/controller/main-biz-card.js
hg-monitor-web-base/src/main/resources/static/src/controller/main-nx.js
hg-monitor-web-base/src/main/resources/static/src/controller/main-topo.js
hg-monitor-web-base/src/main/resources/static/src/controller/main.js
hg-monitor-web-base/src/main/resources/static/src/controller/resManageIndex.js
hg-monitor-web-base/src/main/resources/static/src/controller/resindex.js
hg-monitor-web-base/src/main/resources/static/src/views/duty/index.html
hg-monitor-web-base/src/main/resources/static/src/views/template/detail/host_minicomputer.html
hg-monitor-web-base/src/main/resources/static/vue3/src/components/common/document/index.html
hg-monitor-web-base/src/main/resources/static/vue3/src/components/common/document/index.js
hg-monitor-web-base/src/main/resources/static/vue3/src/script/global.js
hg-monitor-web-zj/src/main/resources/static/src/controller/activewarning.js
hg-monitor-web-zj/src/main/resources/static/src/controller/historywarning.js
hg-monitor-web-zj/src/main/resources/static/src/controller/resindex.js
hg-monitor-web-zj/src/main/resources/static/src/views/layout.html
hg-monitor-web-zj/src/main/resources/static/src/views/res/list.html
hg-monitor-web-zj/src/main/resources/static/vue3/src/components/page/operationMaintenance/user/index.js
hg-monitor-web-zj/src/main/resources/static/vue3/src/views/analysis/index.html
hg-monitor-web-zj/src/main/resources/static/vue3/src/views/dp/index.js
hg-monitor-web-zj/src/main/resources/static/vue3/src/views/template/index.js
hg-monitor-web-zj/src/main/resources/static/vue3/src/views/zjdaping/components/navTabs/index.js
hg-monitor-web-zj/src/main/resources/static/vue3/src/views/zjdaping/index.js
hg-monitor-web-base/src/main/resources/static/src/controller/activewarning.js
View file @
b34a3f6
...
...
@@ -76,7 +76,7 @@ layui.define(['table', 'form', 'laydate', 'admin', 'layer', 'laytpl', 'common',
});
//绑定业务下拉选择数据
admin
.
req
({
url
:
domainName
+
'/api-web/home/business/find
UserBusTypeAll?table=b_alarm
'
,
url
:
domainName
+
'/api-web/home/business/find
AllBusType
'
,
success
:
function
(
response
)
{
if
(
response
&&
response
.
success
)
{
busTypeList
=
response
.
data
;
...
...
@@ -102,7 +102,7 @@ layui.define(['table', 'form', 'laydate', 'admin', 'layer', 'laytpl', 'common',
show
:
true
,
list
:
[
'ALL'
,
'REVERSE'
,
'CLEAR'
]
},
height
:
'
170px
'
,
height
:
'
auto
'
,
tree
:
{
show
:
true
,
showFolderIcon
:
true
,
...
...
hg-monitor-web-base/src/main/resources/static/src/controller/ali_cloud_rds.js
View file @
b34a3f6
...
...
@@ -24,6 +24,8 @@ layui.define(['commonDetail','common'], function (exports) {
var
xnxxKpi
=
"KPIE2174352,KPIC0A94965"
;
//运行状态信息
var
yxztxx
=
"KPIE4B51D5C,KPI7F91F142"
;
//配置信息
var
pzxx
=
""
;
reload
()
...
...
@@ -36,7 +38,9 @@ layui.define(['commonDetail','common'], function (exports) {
// 屏蔽KPI3B6A0393(连接数使用率),增加KPIC0A94965(已打开会话数)
commonDetail
.
renderText
(
"ali_cloud_rds_xnxxinfo"
,
resId
,
xnxxKpi
);
//运行状态信息
commonDetail
.
renderText
(
"ali_cloud_rds_yxztinfo"
,
resId
,
yxztxx
);
commonDetail
.
renderText
(
"ali_cloud_rds_linkinfo"
,
resId
,
yxztxx
);
//配置信息
commonDetail
.
renderText
(
"ali_cloud_rds_setinfo"
,
resId
,
pzxx
);
// CPU使用率
commonDetail
.
renderGauge
(
"ali_cloud_rds_cpu_rate"
,
resId
,
"KPI7054BC34"
);
// 内存使用率
...
...
hg-monitor-web-base/src/main/resources/static/src/controller/bizreslist.js
View file @
b34a3f6
...
...
@@ -758,7 +758,7 @@ layui.define(['laytpl', 'admin', 'form', 'table', 'soulTable', 'sessions', 'comm
showFolderIcon
:
true
,
showLine
:
true
,
indent
:
20
,
expandedKeys
:
[
-
3
]
,
expandedKeys
:
true
,
strict
:
false
},
data
:
data
...
...
hg-monitor-web-base/src/main/resources/static/src/controller/common.js
View file @
b34a3f6
...
...
@@ -914,8 +914,7 @@ layui.define(['xmSelect', 'md5'], function (exports) {
var
sessions
=
layui
.
sessions
;
accessToken
=
sessions
.
getToken
()[
'access_token'
];
});
var
parseData
=
JSON
.
parse
(
data
[
'cols'
]);
var
cols
=
parseData
[
0
];
var
cols
=
data
[
'cols'
][
0
];
$
.
each
(
cols
,
function
(
i
,
e
)
{
if
(
e
[
'isChild'
])
{
if
(
e
[
'isChild'
]
&&
typeof
e
[
'isChild'
]
===
'function'
)
{
...
...
hg-monitor-web-base/src/main/resources/static/src/controller/commonCols.js
View file @
b34a3f6
...
...
@@ -366,37 +366,37 @@ layui.define(['soulTable', 'commonDetail', 'common', 'laytpl', 'view', 'admin',
"HUAWEI_CLOUD_PHYSICSHOST"
:
[
//{type: 'numbers', title: '序号', align: 'center', fixed: 'left'},
{
field
:
'resName'
,
title
:
'资源名称'
,
minWidth
:
250
,
sort
:
true
,
field
:
'resName'
,
title
:
'资源名称'
,
minWidth
:
x_
250
,
sort
:
true
,
templet
:
'#resindex_resName'
},
{
field
:
'ip'
,
title
:
'IP地址'
,
width
:
130
,
align
:
'center'
,
sort
:
true
},
{
field
:
'ip'
,
title
:
'IP地址'
,
minWidth
:
x_
130
,
align
:
'center'
,
sort
:
true
},
{
field
:
'cpuRate'
,
title
:
'CPU使用率'
,
align
:
'center'
,
minWidth
:
x_130
,
templet
:
'#cpuRateTpl'
,
sort
:
true
},
{
field
:
'memoryRate'
,
title
:
'内存使用率'
,
align
:
'center'
,
minWidth
:
x_130
,
templet
:
'#memoryRateTpl'
,
sort
:
true
},
{
field
:
'resTypeName'
,
title
:
'资源类型'
,
width
:
101
,
align
:
'center'
},
{
field
:
'adminName'
,
title
:
'负责人'
,
width
:
123
,
align
:
'center'
,
sort
:
true
},
{
field
:
'adminPhone'
,
title
:
'负责人电话'
,
width
:
118
,
align
:
'center'
,
sort
:
true
},
{
field
:
'state'
,
title
:
'资源状态'
,
width
:
98
,
align
:
'center'
,
sort
:
true
,
templet
:
'#resStateTpl'
},
{
field
:
'health'
,
title
:
'健康状态'
,
width
:
83
,
align
:
'center'
,
sort
:
true
,
templet
:
'#healthTpl'
},
{
field
:
'lastColTime'
,
title
:
'最近采集时间'
,
width
:
161
,
align
:
'center'
,
sort
:
true
},
{
field
:
'resTypeName'
,
title
:
'资源类型'
,
minWidth
:
x_110
,
align
:
'center'
},
{
field
:
'adminName'
,
title
:
'负责人'
,
minWidth
:
x_120
,
align
:
'center'
,
sort
:
true
},
{
field
:
'adminPhone'
,
title
:
'负责人电话'
,
minWidth
:
x_120
,
align
:
'center'
,
sort
:
true
},
{
field
:
'state'
,
title
:
'资源状态'
,
minWidth
:
x_120
,
align
:
'center'
,
sort
:
true
,
templet
:
'#resStateTpl'
},
{
field
:
'health'
,
title
:
'健康状态'
,
minWidth
:
x_120
,
align
:
'center'
,
sort
:
true
,
templet
:
'#healthTpl'
},
{
field
:
'lastColTime'
,
title
:
'最近采集时间'
,
minWidth
:
x_160
,
align
:
'center'
,
sort
:
true
},
// 2021-11-22 徐毫杰 连接状态无数据改成展示主机状态
{
field
:
'hostState'
,
title
:
'主机状态'
,
align
:
'center'
,
minWidth
:
x_110
,
templet
:
'#hostStateTpl'
,
sort
:
true
}
],
"HUAWEI_CLOUD_VIRTUALHOST"
:
[
//{type: 'numbers', title: '序号', align: 'center', fixed: 'left'},
{
field
:
'resName'
,
title
:
'资源名称'
,
minWidth
:
250
,
sort
:
true
,
field
:
'resName'
,
title
:
'资源名称'
,
minWidth
:
x_
250
,
sort
:
true
,
templet
:
'#resindex_resName'
},
{
field
:
'ip'
,
title
:
'IP地址'
,
width
:
130
,
align
:
'center'
,
sort
:
true
},
{
field
:
'ip'
,
title
:
'IP地址'
,
minWidth
:
x_
130
,
align
:
'center'
,
sort
:
true
},
{
field
:
'cpuRate'
,
title
:
'CPU使用率'
,
align
:
'center'
,
minWidth
:
x_130
,
templet
:
'#cpuRateTpl'
,
sort
:
true
},
{
field
:
'memoryRate'
,
title
:
'内存使用率'
,
align
:
'center'
,
minWidth
:
x_130
,
templet
:
'#memoryRateTpl'
,
sort
:
true
},
{
field
:
'resTypeName'
,
title
:
'资源类型'
,
width
:
101
,
align
:
'center'
},
{
field
:
'adminName'
,
title
:
'负责人'
,
width
:
123
,
align
:
'center'
,
sort
:
true
},
{
field
:
'adminPhone'
,
title
:
'负责人电话'
,
width
:
118
,
align
:
'center'
,
sort
:
true
},
{
field
:
'state'
,
title
:
'资源状态'
,
width
:
98
,
align
:
'center'
,
sort
:
true
,
templet
:
'#resStateTpl'
},
{
field
:
'health'
,
title
:
'健康状态'
,
width
:
83
,
align
:
'center'
,
sort
:
true
,
templet
:
'#healthTpl'
},
{
field
:
'lastColTime'
,
title
:
'最近采集时间'
,
width
:
161
,
align
:
'center'
,
sort
:
true
},
{
field
:
'linkState'
,
title
:
'连接状态'
,
align
:
'center'
,
width
:
85
,
templet
:
'#linkStateTpl'
,
sort
:
true
}
{
field
:
'resTypeName'
,
title
:
'资源类型'
,
minWidth
:
x_110
,
align
:
'center'
},
{
field
:
'adminName'
,
title
:
'负责人'
,
minWidth
:
x_120
,
align
:
'center'
,
sort
:
true
},
{
field
:
'adminPhone'
,
title
:
'负责人电话'
,
minWidth
:
x_130
,
align
:
'center'
,
sort
:
true
},
{
field
:
'state'
,
title
:
'资源状态'
,
minWidth
:
x_120
,
align
:
'center'
,
sort
:
true
,
templet
:
'#resStateTpl'
},
{
field
:
'health'
,
title
:
'健康状态'
,
minWidth
:
x_120
,
align
:
'center'
,
sort
:
true
,
templet
:
'#healthTpl'
},
{
field
:
'lastColTime'
,
title
:
'最近采集时间'
,
minWidth
:
x_160
,
align
:
'center'
,
sort
:
true
},
{
field
:
'linkState'
,
title
:
'连接状态'
,
align
:
'center'
,
minWidth
:
x_120
,
templet
:
'#linkStateTpl'
,
sort
:
true
}
],
"HUAWEI_CLOUD_STORAGE"
:
[
//{type: 'numbers', title: '序号', align: 'center', fixed: 'left'},
...
...
hg-monitor-web-base/src/main/resources/static/src/controller/commonDetail.js
View file @
b34a3f6
...
...
@@ -3159,7 +3159,7 @@ layui.define(['laytpl', 'admin', 'form', 'table', 'echarts', 'sessions', 'xmSele
showFolderIcon
:
true
,
showLine
:
true
,
indent
:
20
,
expandedKeys
:
[
-
3
]
,
expandedKeys
:
true
,
strict
:
false
},
data
:
response
.
data
,
...
...
hg-monitor-web-base/src/main/resources/static/src/controller/domainindex.js
View file @
b34a3f6
...
...
@@ -1618,7 +1618,7 @@ layui.define(['tree', 'laypage', 'laytpl', 'admin', 'form', 'table', 'treeTable'
showFolderIcon
:
true
,
showLine
:
true
,
indent
:
20
,
expandedKeys
:
[
-
3
]
,
expandedKeys
:
true
,
strict
:
false
},
data
:
data
...
...
hg-monitor-web-base/src/main/resources/static/src/controller/dutyIndex.js
View file @
b34a3f6
...
...
@@ -33,7 +33,7 @@ layui.define(['table', 'form', 'admin', 'layer', 'common', 'sessions', 'treeTabl
var
exchangeSelect
;
//时间段下拉框
var
dataTimeSelect
;
//判断
调
班还是换班状态
//判断
替
班还是换班状态
var
exchangeSign
=
1
;
//初始化时间
...
...
@@ -388,12 +388,12 @@ layui.define(['table', 'form', 'admin', 'layer', 'common', 'sessions', 'treeTabl
var
changeUserName
=
''
;
var
changeUserAccount
=
''
;
//
调
班
//
替
班
if
(
exchangeSign
==
1
)
{
//如果已经选择了
调
班对象,不能再选择其他对象
//如果已经选择了
替
班对象,不能再选择其他对象
var
judge
=
iSExchange
(
id
);
if
(
!
judge
)
{
layer
.
msg
(
'
调班过程中不能再次调
班!'
,
{
icon
:
7
,
time
:
3000
});
layer
.
msg
(
'
替班过程中不能再次替
班!'
,
{
icon
:
7
,
time
:
3000
});
return
;
}
var
changeUserId
=
exchangeSelect
.
getValue
(
'value'
)
?
exchangeSelect
.
getValue
(
'value'
)
:
''
;
...
...
@@ -482,7 +482,7 @@ layui.define(['table', 'form', 'admin', 'layer', 'common', 'sessions', 'treeTabl
});
}
//是否已
调
班
//是否已
替
班
function
iSExchange
(
id
){
var
value
=
false
;
admin
.
req
({
...
...
hg-monitor-web-base/src/main/resources/static/src/controller/globalSearch.js
View file @
b34a3f6
...
...
@@ -210,7 +210,7 @@ layui.define(['admin', 'table', 'common', 'sessions', 'form'], function (exports
showFolderIcon
:
true
,
showLine
:
true
,
indent
:
20
,
expandedKeys
:
[
-
3
]
,
expandedKeys
:
true
,
strict
:
false
},
data
:
data
...
...
hg-monitor-web-base/src/main/resources/static/src/controller/historywarning.js
View file @
b34a3f6
...
...
@@ -55,7 +55,7 @@ layui.define(['table', 'form', 'laydate', 'admin', 'layer', 'laytpl', 'common',
//绑定业务下拉选择数据
admin
.
req
({
url
:
domainName
+
'/api-web/home/business/find
UserBusTypeAll?table=b_alarm_his
'
,
url
:
domainName
+
'/api-web/home/business/find
AllBusType
'
,
success
:
function
(
response
)
{
if
(
response
&&
response
.
success
)
{
busTypeList
=
response
.
data
;
...
...
@@ -80,7 +80,7 @@ layui.define(['table', 'form', 'laydate', 'admin', 'layer', 'laytpl', 'common',
show
:
true
,
list
:
[
'ALL'
,
'REVERSE'
,
'CLEAR'
]
},
height
:
'
170px
'
,
height
:
'
auto
'
,
tree
:
{
show
:
true
,
showFolderIcon
:
true
,
...
...
hg-monitor-web-base/src/main/resources/static/src/controller/host_minicomputer_server.js
View file @
b34a3f6
...
...
@@ -98,7 +98,7 @@ layui.define(['admin', 'table', 'common','sessions','commonDetail'], function (e
var
data
=
res
.
map
;
var
jbxx
=
data
.
jbxx
;
var
tabletop
=
'<table id="table-assets-base-info" class="layui-table"><tbody>'
;
var
tableTh
=
'<thead><tr style="background-color: #d0ddec;"><th class="layui-table-cell" style="color: rgb(30,159,255);
">属性</th><th class="layui-table-cell" style="color: rgb(30,159,255);">内容</th><th class="layui-table-cell"style="color: rgb(30,159,255);">属性</th><th class="layui-table-cell" style="color: rgb(30,159,255
);">内容</th></tr></thead>'
var
tableTh
=
'<thead><tr style="background-color: #d0ddec;"><th class="layui-table-cell" style="color: rgb(30,159,255);
background-color: rgb(235,245,249);">属性</th><th class="layui-table-cell" style="color: rgb(30,159,255);background-color: rgb(235,245,249);">内容</th><th class="layui-table-cell"style="color: rgb(30,159,255);background-color: rgb(235,245,249);">属性</th><th class="layui-table-cell" style="color: rgb(30,159,255);background-color: rgb(235,245,249
);">内容</th></tr></thead>'
var
tablebottom
=
"</tbody></table>"
;
var
tableContent
=
''
;
// 将数组转换为二位数组
...
...
@@ -148,12 +148,15 @@ layui.define(['admin', 'table', 'common','sessions','commonDetail'], function (e
}
}
td
+=
'<td style="width: 30%" data-idx="'
+
idx
+
'" data-type="value" data-source="'
+
dataSource
+
'" data-propgroup="'
+
v
.
propGroup
+
'" '
+
td
+=
'<td
class="layui-td-value"
style="width: 30%" data-idx="'
+
idx
+
'" data-type="value" data-source="'
+
dataSource
+
'" data-propgroup="'
+
v
.
propGroup
+
'" '
+
'data-propkey="'
+
v
.
propKey
+
'" data-sort="'
+
v
.
sort
+
'" data-parentpropkey="'
+
v
.
parentPropKey
+
'" '
+
'data-id="'
+
v
.
id
+
'" data-dataresource="'
+
v
.
dataResource
+
'">'
+
val
+
'</td>'
;
});
tableContent
+=
'<tr>'
+
td
+
'</tr>'
;
});
if
(
jbxx
.
length
==
0
){
tableContent
=
'<tr style="background-color: white;"> <td class="layui-td-value" colspan="4" style="text-align: center;color: #999;background-color: white">无数据</td> </tr>'
;
}
$
(
"#hostminicomputer_property"
).
html
(
tabletop
+
tableTh
+
tableContent
+
tablebottom
);
$
(
".layui-td-title"
).
css
(
"backgroundColor"
,
"#F1F6F9"
)
if
(
data
.
data
&&
data
.
data
.
length
>
0
)
{
//有分区信息
...
...
hg-monitor-web-base/src/main/resources/static/src/controller/ipIndex.js
View file @
b34a3f6
...
...
@@ -141,7 +141,7 @@ layui.define(['table', 'form', 'admin', 'layer', 'common', 'sessions', 'laytpl',
$
.
each
(
li
,
function
(
i
,
v
)
{
var
name
=
v
.
split
(
"_"
)[
0
];
var
number
=
v
.
split
(
"_"
)[
1
];
str
+=
name
+
'
有'
+
number
+
'个C类段'
+
',
'
;
str
+=
name
+
'
C类地址段共'
+
number
+
'个'
+
',
'
;
});
if
(
str
!=
""
){
str
=
str
.
substring
(
0
,
str
.
length
-
1
);
...
...
hg-monitor-web-base/src/main/resources/static/src/controller/main-biz-card.js
View file @
b34a3f6
...
...
@@ -1653,8 +1653,8 @@ layui.define(['common', 'swiper', 'admin','commonDetail','mxClient','sessions','
return
d
.
userName
+
'请求'
+
d
.
dutyTime
+
' '
+
d
.
dutyDuration
+
'与您的值班时间'
+
d
.
changeDutyTime
.
split
(
" "
)[
0
]
+
' '
+
d
.
changeDutyDuration
.
split
(
" "
)[
0
]
+
'进行换班,请确认'
;
}
else
{
//xx请求与您值班时间2021-09-26 18:00-8:00进行调班,请确认!
return
d
.
userName
+
'请求与您值班时间'
+
d
.
dutyTime
+
' '
+
d
.
dutyDuration
+
'进行调班,请确认!'
;
//xx请求与您值班时间2021-09-26 18:00-8:00进行替班,请确认!
return
d
.
userName
+
'请求与您值班时间'
+
d
.
dutyTime
+
' '
+
d
.
dutyDuration
+
'进行替班,请确认!'
;
}
}
},{
...
...
@@ -1665,7 +1665,7 @@ layui.define(['common', 'swiper', 'admin','commonDetail','mxClient','sessions','
if
(
d
.
dutyChangeType
==
'2'
)
{
return
'换班'
;
}
else
{
return
'
调
班'
;
return
'
替
班'
;
}
}
...
...
hg-monitor-web-base/src/main/resources/static/src/controller/main-nx.js
View file @
b34a3f6
...
...
@@ -1673,8 +1673,8 @@ layui.define(['common', 'swiper', 'admin','commonDetail','mxClient','sessions','
return
d
.
userName
+
'请求'
+
d
.
dutyTime
+
' '
+
d
.
dutyDuration
+
'与您的值班时间'
+
d
.
changeDutyTime
.
split
(
" "
)[
0
]
+
' '
+
d
.
changeDutyDuration
.
split
(
" "
)[
0
]
+
'进行换班,请确认'
;
}
else
{
//xx请求与您值班时间2021-09-26 18:00-8:00进行调班,请确认!
return
d
.
userName
+
'请求与您值班时间'
+
d
.
dutyTime
+
' '
+
d
.
dutyDuration
+
'进行调班,请确认!'
;
//xx请求与您值班时间2021-09-26 18:00-8:00进行替班,请确认!
return
d
.
userName
+
'请求与您值班时间'
+
d
.
dutyTime
+
' '
+
d
.
dutyDuration
+
'进行替班,请确认!'
;
}
}
},{
...
...
@@ -1685,7 +1685,7 @@ layui.define(['common', 'swiper', 'admin','commonDetail','mxClient','sessions','
if
(
d
.
dutyChangeType
==
'2'
)
{
return
'换班'
;
}
else
{
return
'
调
班'
;
return
'
替
班'
;
}
}
...
...
hg-monitor-web-base/src/main/resources/static/src/controller/main-topo.js
View file @
b34a3f6
...
...
@@ -304,8 +304,8 @@ layui.define(['common', 'swiper', 'admin', 'commonDetail', 'mxClient', 'sessions
return
d
.
userName
+
'请求'
+
d
.
dutyTime
+
' '
+
d
.
dutyDuration
+
'与您的值班时间'
+
d
.
changeDutyTime
.
split
(
" "
)[
0
]
+
' '
+
d
.
changeDutyDuration
.
split
(
" "
)[
0
]
+
'进行换班,请确认'
;
}
else
{
//xx请求与您值班时间2021-09-26 18:00-8:00进行调班,请确认!
return
d
.
userName
+
'请求与您值班时间'
+
d
.
dutyTime
+
' '
+
d
.
dutyDuration
+
'进行调班,请确认!'
;
//xx请求与您值班时间2021-09-26 18:00-8:00进行替班,请确认!
return
d
.
userName
+
'请求与您值班时间'
+
d
.
dutyTime
+
' '
+
d
.
dutyDuration
+
'进行替班,请确认!'
;
}
}
},{
...
...
@@ -316,7 +316,7 @@ layui.define(['common', 'swiper', 'admin', 'commonDetail', 'mxClient', 'sessions
if
(
d
.
dutyChangeType
==
'2'
)
{
return
'换班'
;
}
else
{
return
'
调
班'
;
return
'
替
班'
;
}
}
...
...
hg-monitor-web-base/src/main/resources/static/src/controller/main.js
View file @
b34a3f6
...
...
@@ -905,8 +905,8 @@ layui.define(['common', 'swiper', 'admin','commonDetail','mxClient','msgTips','l
return
d
.
userName
+
'请求'
+
d
.
dutyTime
+
' '
+
d
.
dutyDuration
+
'与您的值班时间'
+
d
.
changeDutyTime
.
split
(
" "
)[
0
]
+
' '
+
d
.
changeDutyDuration
.
split
(
" "
)[
0
]
+
'进行换班,请确认'
;
}
else
{
//xx请求与您值班时间2021-09-26 18:00-8:00进行调班,请确认!
return
d
.
userName
+
'请求与您值班时间'
+
d
.
dutyTime
+
' '
+
d
.
dutyDuration
+
'进行调班,请确认!'
;
//xx请求与您值班时间2021-09-26 18:00-8:00进行替班,请确认!
return
d
.
userName
+
'请求与您值班时间'
+
d
.
dutyTime
+
' '
+
d
.
dutyDuration
+
'进行替班,请确认!'
;
}
}
},{
...
...
@@ -917,7 +917,7 @@ layui.define(['common', 'swiper', 'admin','commonDetail','mxClient','msgTips','l
if
(
d
.
dutyChangeType
==
'2'
)
{
return
'换班'
;
}
else
{
return
'
调
班'
;
return
'
替
班'
;
}
}
...
...
hg-monitor-web-base/src/main/resources/static/src/controller/resManageIndex.js
View file @
b34a3f6
...
...
@@ -950,7 +950,7 @@ layui.define(['common', 'tree', 'laypage', 'laytpl', 'upload', 'admin', 'form',
showFolderIcon
:
true
,
showLine
:
true
,
indent
:
20
,
expandedKeys
:
[
-
3
]
,
expandedKeys
:
true
,
strict
:
false
},
data
:
data
...
...
hg-monitor-web-base/src/main/resources/static/src/controller/resindex.js
View file @
b34a3f6
...
...
@@ -349,7 +349,6 @@ layui.define(['common', 'tree', 'laypage', 'laytpl', 'admin', 'form', 'table', '
//加载虚拟化数据(平台、资源池、物理机、虚拟机)
function
loadVirtualizationView
(
parentNode
,
data
,
node
,
options
)
{
$
(
'#res_coll_protocol_select_div'
).
show
();
//绑定业务
// common.bizTypeSelect("treetableBizTypes", function () {
// form.render("select");
...
...
@@ -1338,7 +1337,6 @@ layui.define(['common', 'tree', 'laypage', 'laytpl', 'admin', 'form', 'table', '
limit
:
-
1
}
}).
done
(
function
(
res
)
{
$
(
'#res_coll_protocol_select_div'
).
show
();
xmSelect
.
render
({
el
:
'#collProtocolSelect'
,
filterable
:
true
...
...
@@ -1373,14 +1371,12 @@ layui.define(['common', 'tree', 'laypage', 'laytpl', 'admin', 'form', 'table', '
}
})
})
}
else
{
$
(
'#res_coll_protocol_select_div'
).
hide
();
}
if
(
resType
===
'HOST_MINICOMPUTER_PARTITION'
)
{
$
(
"#res_minicomputer"
).
parent
().
parent
().
removeClass
(
"hide"
);
var
minicomputerStr
=
''
;
minicomputerStr
=
'<option value="">=小型机服务器=</option>'
;
let
url
=
`
$
{
common
.
domainName
}
/api-web/
home
/
res
-
list
/
hostMinicomputerPartitionParents
?
access_token
=
$
{
accessToken
}
`
let
url
=
`
$
{
common
.
domainName
}
/api-web/
home
/
res
-
list
/
HOST_MINICOMPUTER
?
access_token
=
$
{
accessToken
}
&
page
=
1
&
limit
=
30
&
resCategory
=
resources
`
$
.
ajax
({
url
:
url
,
method
:
'get'
,
...
...
hg-monitor-web-base/src/main/resources/static/src/views/duty/index.html
View file @
b34a3f6
...
...
@@ -102,10 +102,10 @@
<
/div
>
<
div
class
=
"duty-td-div-line"
>
{{
#
if
(
item
.
list
.
length
!=
1
){
}}
<
div
class
=
"table-duty-td-name-
lef
t"
lay
-
filter
=
"duty-name"
data
-
id
=
"{{ item.list[0].id }}"
data
-
dutytime
=
"{{ item.list[0].dutyTime }}"
data
-
dutyduration
=
"{{ item.list[0].dutyDuration }}"
data
-
dutycena
=
"{{ item.list[0].dutyCena }}"
data
-
remark
=
"{{ item.list[0].remark }}"
data
-
userid
=
"{{ item.list[0].userId }}"
data
-
username
=
"{{ item.list[0].userName }}"
data
-
useraccount
=
"{{ item.list[0].userAccount }}"
>
<
div
class
=
"table-duty-td-name-
righ
t"
lay
-
filter
=
"duty-name"
data
-
id
=
"{{ item.list[0].id }}"
data
-
dutytime
=
"{{ item.list[0].dutyTime }}"
data
-
dutyduration
=
"{{ item.list[0].dutyDuration }}"
data
-
dutycena
=
"{{ item.list[0].dutyCena }}"
data
-
remark
=
"{{ item.list[0].remark }}"
data
-
userid
=
"{{ item.list[0].userId }}"
data
-
username
=
"{{ item.list[0].userName }}"
data
-
useraccount
=
"{{ item.list[0].userAccount }}"
>
<
sapn
>
{{
item
.
list
[
0
].
userName
}}
<
/sapn
>
<
/div
>
<
div
class
=
"table-duty-td-name-
righ
t"
lay
-
filter
=
"duty-name"
data
-
id
=
"{{ item.list[1].id }}"
<
div
class
=
"table-duty-td-name-
lef
t"
lay
-
filter
=
"duty-name"
data
-
id
=
"{{ item.list[1].id }}"
data
-
dutytime
=
"{{ item.list[1].dutyTime }}"
data
-
dutyduration
=
"{{ item.list[1].dutyDuration }}"
data
-
dutycena
=
"{{ item.list[1].dutyCena }}"
data
-
remark
=
"{{ item.list[1].remark }}"
...
...
@@ -178,7 +178,7 @@
<
div
class
=
"layui-form-item"
>
<
label
class
=
"layui-form-label"
style
=
"width: 150px"
>
调换类型:
<
/label
>
<
div
class
=
"layui-input-block"
style
=
"margin-left: 150px"
>
<
input
type
=
"radio"
name
=
"dutyType"
lay
-
filter
=
"radio-duty-type-exchange"
value
=
"0"
title
=
"
调
班"
checked
>
<
input
type
=
"radio"
name
=
"dutyType"
lay
-
filter
=
"radio-duty-type-exchange"
value
=
"0"
title
=
"
替
班"
checked
>
<
input
type
=
"radio"
name
=
"dutyType"
lay
-
filter
=
"radio-duty-type-exchange"
value
=
"1"
title
=
"换班"
>
<
/div
>
<
/div
>
...
...
hg-monitor-web-base/src/main/resources/static/src/views/template/detail/host_minicomputer.html
View file @
b34a3f6
...
...
@@ -14,7 +14,7 @@
<div
class=
"lay-row"
>
<div
class=
"lay-row-item"
>
<h5
class=
"lay-row-title"
>
属性信息
</h5>
<div
class=
"layui-form
-pane
"
id=
"hostminicomputer_property"
></div>
<div
class=
"layui-form
layui-border-box
"
id=
"hostminicomputer_property"
></div>
</div>
</div>
<div
class=
"lay-row"
>
...
...
@@ -35,6 +35,17 @@
</div>
</article>
<textarea
id=
"host_minicomputer_param_id"
style=
"display: none;"
>
{{d}}
</textarea>
<style>
#hostminicomputer_property
tr
:hover
{
background-color
:
white
!important
;
}
#hostminicomputer_property
.layui-td-title
:hover
{
background-color
:
rgb
(
241
,
246
,
249
);
!important;
}
#hostminicomputer_property
.layui-td-value
{
pointer-events
:
none
!important
;
}
</style>
<script>
layui
.
use
(
'host_minicomputer_server'
,
function
(
fn
)
{
var
$
=
layui
.
$
;
...
...
hg-monitor-web-base/src/main/resources/static/vue3/src/components/common/document/index.html
View file @
b34a3f6
...
...
@@ -104,16 +104,17 @@
<cm-table-page
:columns=
"columns"
:dataList=
"dataList"
@
loaddata=
"getPage"
:showIndex=
"true"
:showBorder=
"false"
:showSelection=
"false"
:showTools=
"isEditName"
:showPage=
"false"
:height=
"height -
5
4"
>
:showPage=
"false"
:height=
"height -
8
4"
>
<template
#
default=
"{row,prop,column}"
>
<div
class=
"fileName-div"
style=
"display: flex; align-items: center;"
v-if=
"isEditName && prop == 'fileName'"
@
click=
"getFile(row)"
>
<
!--<
div class="fileName-div" style="display: flex; align-items: center;" v-if="isEditName && prop == 'fileName'" @click="getFile(row)">
<i :class="['iconfont', iconclass[row.type] == undefined ? 'icon-wenjian' : iconclass[row.type]]" style="font-size: 22px;margin-right: 10px;"></i>
<div>
<span @click.stop="editFileName(row,index)" v-if="isInput!=row.id">{{row.fileName}}</span>
</div>
<el-input @click.stop="" @blur="reNameFile(row,true)" v-if="isInput==row.id" type="text" v-model="row.fileName"></el-input>
</div>
</div>-->
</template>
<template
#
tools=
"{scope}"
>
...
...
@@ -134,9 +135,7 @@
</el-button>
</li>
</ul>
</div>
</div>
</template>
</cm-table-page>
...
...
hg-monitor-web-base/src/main/resources/static/vue3/src/components/common/document/index.js
View file @
b34a3f6
...
...
@@ -181,9 +181,7 @@ export default {
},
render
:
function
(
row
)
{
let
cls
=
iconclass
[
row
.
type
]
==
undefined
?
'icon-wenjian'
:
iconclass
[
row
.
type
];
// let inputFileName=row.fileName;
// return `<i class="iconfont ${cls}" style="font-size: 22px;margin-right: 10px;"></i><input value="${inputFileName}"></input>`
return
`
<
i
class
=
"iconfont ${cls}"
style
=
"font-size: 22px;margin-right: 10px;"
><
/i><span>${row.fileName}</
span
>
`
return
`
<
div
style
=
"cursor: pointer"
><
i
class
=
"iconfont ${cls}"
style
=
"font-size: 22px;margin-right: 10px;"
><
/i><span>${row.fileName}</
span
><
/div>
`
}
},
{
...
...
hg-monitor-web-base/src/main/resources/static/vue3/src/script/global.js
View file @
b34a3f6
...
...
@@ -135,7 +135,7 @@ global.openBlankWindow = (url, width, height) => {
let
lyaui
=
global
.
layui
;
lyaui
.
layer
.
open
({
type
:
2
,
title
:
''
,
title
:
''
,
area
:
[
width
,
height
],
content
:
url
//这里content是一个URL,如果你不想让iframe出现滚动条,你还可以content: ['http://sentsin.com', 'no']
});
...
...
@@ -151,7 +151,18 @@ global.viewer = (path, proxy) => {
if
(
res
&&
res
.
success
)
{
global
.
openBlankWindow
(
"/src/lib/extend/pdfjs/web/viewer.html?test="
+
encodeURIComponent
(
res
.
str
));
}
else
{
global
.
showMsg
((
res
.
msg
==
undefined
||
res
.
msg
==
''
||
res
.
msg
==
null
)
?
"该文档不支持预览!"
:
res
.
msg
,
"error"
)
var
access_token
=
'access_token='
+
proxy
.
$http
.
getToken
();
let
viewUrl
=
`
/
api
-
web
/
openoffice
/
downloadByPath
?
path
=
$
{
encodeURIComponent
(
path
)}
&
$
{
access_token
}
`
;
let
mimeType
=
res
.
object
;
// TODO 浏览器不能播放视频
// 图片视频
// if (mimeType.indexOf("image") != -1 || mimeType.indexOf("video") != -1) {
// global.openBlankWindow( sessionStorage.getItem('domainName') + viewUrl);
// return;
// }
global
.
confirm
(
"文档不支持预览,是否下载!"
,
function
()
{
proxy
.
$http
.
downloadFile
(
viewUrl
,
{});
});
}
})
}
...
...
@@ -161,13 +172,7 @@ global.viewer = (path, proxy) => {
* @param path
*/
global
.
viewResTopo
=
(
resId
)
=>
{
// let url = `${sessionStorage.getItem('graphEditorOrigin')}/jgraph/grapheditor/index.html?access_token=${localStorage.getItem('access_token')}&id=${topoId}`;
// let height = window.innerHeight;
// let width = window.innerWidth;
// global.openBlankWindow(url, width, height);
let
lyaui
=
global
.
layui
;
lyaui
.
common
.
viewResTopo
(
resId
)
}
...
...
@@ -202,18 +207,18 @@ global.openCmdbAssets = (resTypeId, resId, proxy) => {
}
global
.
openDetail
=
(
resId
,
resType
,
proxy
)
=>
{
let
lyaui
=
global
.
layui
;
let
lyaui
=
global
.
layui
;
let
editFlag
=
false
;
let
provider
=
''
;
let
name
=
''
;
let
name
=
''
;
let
ip
=
''
;
let
resTypeName
=
''
;
let
adminName
=
''
;
let
manageIp
=
''
;
let
collProtocol
=
''
;
// 获取资源详情
// 获取资源详情
proxy
.
$http
.
get
(
`
/
api
-
web
/
v32
/
res
/
detail
/
$
{
resId
}
`
,
{},
function
(
res
)
{
if
(
res
&&
res
.
map
)
{
let
data
=
res
.
map
;
...
...
@@ -226,14 +231,11 @@ global.openDetail = (resId, resType, proxy) => {
collProtocol
=
data
.
collProtocol
;
name
=
data
.
resName
;
lyaui
.
commonCols
.
detailPage
(
resId
,
resType
,
editFlag
,
provider
,
name
,
ip
,
resTypeName
,
adminName
,
manageIp
,
collProtocol
);
lyaui
.
commonCols
.
detailPage
(
resId
,
resType
,
editFlag
,
provider
,
name
,
ip
,
resTypeName
,
adminName
,
manageIp
,
collProtocol
);
}
});
}
/**
...
...
hg-monitor-web-zj/src/main/resources/static/src/controller/activewarning.js
0 → 100644
View file @
b34a3f6
//活动告警
layui
.
define
([
'table'
,
'form'
,
'laydate'
,
'admin'
,
'layer'
,
'laytpl'
,
'common'
,
'sessions'
,
'commonDetail'
,
'soulTable'
,
'treeTable'
],
function
(
exports
)
{
var
$
=
layui
.
$
;
var
form
=
layui
.
form
;
var
layer
=
layui
.
layer
;
var
admin
=
layui
.
admin
;
var
table
=
layui
.
table
;
var
laydate
=
layui
.
laydate
;
var
laytpl
=
layui
.
laytpl
;
var
treeTable
=
layui
.
treeTable
;
var
common
=
layui
.
common
;
var
commonDetail
=
layui
.
commonDetail
;
var
domainName
=
common
.
domainName
;
var
todayStr
=
''
;
//对外暴露的接口
exports
(
'activewarning'
,
function
()
{
var
sessions
=
layui
.
sessions
;
var
accessToken
=
sessions
.
getToken
()[
'access_token'
];
var
router
=
layui
.
router
();
var
alarmLevel
=
router
.
search
.
level
;
//告警级别
var
checkList
=
common
.
checkPermission
(
accessToken
);
var
resId
=
router
.
search
.
resId
;
//资源Id
var
kpiId
=
router
.
search
.
kpiId
;
//指标Id
var
bizId
=
router
.
search
.
bizId
;
//业务Id
var
alarmNo
=
router
.
search
.
alarmNo
;
//告警编号
var
busIdSelect
;
var
busTypeList
=
[];
if
(
!
bizId
){
bizId
=
''
;
}
if
(
resId
)
{
resId
=
decodeURIComponent
(
resId
);
}
if
(
alarmNo
)
{
$
(
"#activewarningkw"
).
val
(
alarmNo
);
}
var
netFlag
=
router
.
search
.
netFlag
;
//网络标识
var
resType
=
router
.
search
.
restype
?
router
.
search
.
restype
:
''
;
//资源类型
var
soulTable
=
layui
.
soulTable
;
var
sortKey
=
''
;
if
(
$
(
"#alarmLevelSearchBox"
).
val
())
{
alarmLevel
=
$
(
"#alarmLevelSearchBox"
).
val
()
}
//回显告警级别
$
(
"#alarmLevelSearchBox"
).
val
(
alarmLevel
);
form
.
render
(
"select"
);
function
initDate
()
{
//开始时间
var
start
=
laydate
.
render
({
elem
:
'#activewarningStartdate'
,
trigger
:
'click'
,
done
:
function
(
value
,
date
)
{
date
.
month
--
;
end
.
config
.
min
=
date
;
var
endDate
=
$
(
"#activewarningEnddate"
).
val
();
if
(
endDate
!=
null
&&
endDate
!=
""
)
{
reloadTable
();
}
}
});
//结束时间
var
end
=
laydate
.
render
({
elem
:
'#activewarningEnddate'
,
trigger
:
'click'
,
done
:
function
(
value
,
date
)
{
date
.
month
--
;
start
.
config
.
max
=
date
;
var
benginDate
=
$
(
"#activewarningStartdate"
).
val
();
if
(
benginDate
!=
null
&&
benginDate
!=
""
)
{
reloadTable
();
}
}
});
//绑定业务下拉选择数据
admin
.
req
({
url
:
domainName
+
'/api-web/home/business/findUserBusTypeAll?table=b_alarm'
,
success
:
function
(
response
)
{
if
(
response
&&
response
.
success
)
{
busTypeList
=
response
.
data
;
var
bizList
=
response
.
data
.
map
(
item
=>
{
return
{
name
:
item
.
busTypeName
,
value
:
item
.
busId
,
parentId
:
item
.
parentId
}
});
var
bizTree
=
common
.
pidToChildren
(
bizList
,
'value'
,
'parentId'
);
// 影响业务下拉框
busIdSelect
=
xmSelect
.
render
({
el
:
'#bisTypeSearchBox'
,
name
:
'bizId'
,
tips
:
'=所属业务='
,
//开启搜索
filterable
:
true
,
clickClose
:
true
,
initValue
:
[
bizId
.
split
(
','
)[
0
]],
toolbar
:
{
show
:
true
,
list
:
[
'ALL'
,
'REVERSE'
,
'CLEAR'
]
},
height
:
'170px'
,
tree
:
{
show
:
true
,
showFolderIcon
:
true
,
showLine
:
true
,
strict
:
true
,
//间距
indent
:
20
,
},
model
:
{
label
:
{
type
:
'text'
}
},
data
:
bizTree
,
on
:
function
(
data
)
{
if
(
data
.
arr
.
length
!=
0
)
{
var
str
=
''
;
$
.
each
(
data
.
arr
,
function
(
i
,
v
)
{
str
+=
v
.
value
+
','
;
})
bizId
=
str
.
substring
(
0
,
str
.
length
-
1
);
}
else
{
bizId
=
''
;
}
form
.
render
();
reloadTable
();
}
});
if
(
busIdSelect
){
//追加样式
$
(
'#bisTypeSearchBox'
).
find
(
'.xm-body'
).
eq
(
0
).
css
(
"width"
,
"230px"
);
}
}
else
{
layer
.
msg
(
'获取业务失败'
,
{
icon
:
2
});
}
},
error
:
function
()
{
layer
.
msg
(
'获取业务失败'
,
{
icon
:
2
});
}
});
$
.
ajax
({
url
:
common
.
domainName
+
'/api-web/manage/kpi/findKpiInAlarm?access_token='
+
accessToken
+
'&tableName=b_alarm'
,
type
:
"get"
,
success
:
function
(
res
)
{
var
kpis
=
res
.
data
;
var
html
=
'<option value="">=指标名称=</option>'
$
.
each
(
kpis
,
function
(
i
,
e
)
{
html
+=
'<option value="'
+
e
.
kpiId
+
'">'
+
e
.
kpiName
+
'</option>'
})
$
(
"#alarmKpiSearchBox"
).
html
(
''
);
$
(
"#alarmKpiSearchBox"
).
append
(
html
);
form
.
render
();
}
})
$
.
ajax
({
url
:
`
$
{
common
.
domainName
}
/api-web/m
anage
/
restype
/
list
?
access_token
=
$
{
accessToken
}
`
,
method
:
'GET'
,
success
:
function
(
res
)
{
// 资源类型下拉框
var
resTypeList
=
res
.
data
.
map
(
item
=>
{
return
{
name
:
item
.
resTypeName
,
value
:
item
.
resTypeCode
,
parentId
:
item
.
parentId
}
});
var
resTypeTree
=
treeTable
.
pidToChildren
(
resTypeList
,
"value"
,
"parentId"
);
xmSelect
.
render
({
el
:
'#resTypeSearchBox'
,
name
:
"resType"
,
tips
:
'=资源类型='
,
filterable
:
true
,
radio
:
true
,
clickClose
:
true
,
initValue
:
[
resType
],
toolbar
:
{
show
:
true
,
list
:
[
'CLEAR'
]
},
tree
:
{
show
:
true
,
showFolderIcon
:
true
,
showLine
:
true
,
strict
:
false
,
indent
:
20
},
model
:
{
label
:
{
type
:
'text'
}
},
height
:
'200px'
,
data
:
resTypeTree
,
on
:
function
(
data
)
{
if
(
data
.
isAdd
){
if
(
data
.
arr
.
length
!=
0
)
{
resType
=
data
.
arr
[
0
].
value
;
}
else
{
resType
=
''
;
}
reloadTable
();
}
}
});
}
});
}
//回车搜索
$
(
'#activewarningkw, input[name="durationVal"]'
).
keydown
(
function
(
e
)
{
if
(
e
.
keyCode
===
13
)
{
reloadTable
();
}
});
//选择框搜索事件
bindSelectEvent
();
initDate
();
function
initToolBarClickEvent
()
{
//告警消除
$
(
"#clearBtn"
).
unbind
(
'click'
).
on
(
'click'
,
function
()
{
if
(
$
.
inArray
(
'app:alarm:clear'
,
checkList
)
==
-
1
)
{
layer
.
msg
(
'暂无权限!'
,
{
icon
:
7
,
time
:
3000
});
return
;
}
var
ids
=
[];
var
data
=
table
.
checkStatus
(
'activewarningTable'
).
data
;
if
(
data
.
length
==
0
)
{
layer
.
msg
(
'请最少选择一项数据'
,
{
icon
:
7
,
time
:
2000
});
return
;
}
//选中的告警ID放到集合中
$
.
each
(
data
,
function
(
i
,
obj
)
{
ids
.
push
(
obj
.
id
)
});
//获取以往告警消除意见
admin
.
req
({
url
:
common
.
domainName
+
'/api-web/home/alarm/clear/reason'
,
type
:
"get"
,
data
:{
alarmId
:
ids
.
toString
()
},
done
:
function
(
data
)
{
var
clearReson
=
"暂无参考处理方案,请输入处理方案"
;
var
hisReason
=
""
;
var
reasonlist
=
data
.
reason
;
if
(
reasonlist
&&
reasonlist
.
length
>
0
){
hisReason
=
"参考方案:\n"
;
$
.
each
(
reasonlist
,
function
(
i
,
v
)
{
var
idx
=
i
+
1
;
hisReason
+=
idx
+
":"
+
v
+
"\n"
;
});
}
layer
.
prompt
({
id
:
"alarms_clear_id"
,
title
:
'告警消除'
,
area
:
[
'400px'
],
formType
:
2
,
value
:
hisReason
},
function
(
text
,
index
)
{
admin
.
req
({
url
:
common
.
domainName
+
'/api-web/home/alarm/clear'
,
type
:
"post"
,
data
:
{
ids
:
ids
.
toString
(),
reason
:
text
,
access_token
:
accessToken
,
noticeFlag
:
$
(
'input[name="noticeFlag"]:checked'
).
val
()
}
,
done
:
function
(
res
)
{
//如果消除成功,关闭弹出框然后重新加载页面
if
(
res
.
success
)
{
layer
.
close
(
index
);
layer
.
msg
(
'告警已消除!'
,
{
icon
:
1
,
time
:
2000
});
reloadTable
();
}
else
{
layer
.
msg
(
'告警消除失败,请与管理员联系!'
,
{
icon
:
7
,
time
:
3000
});
}
}
});
});
$
(
"#alarms_clear_id"
).
find
(
'textarea.layui-layer-input'
).
attr
(
"placeholder"
,
clearReson
);
$
(
"#alarms_clear_id"
).
append
(
'<div style="padding-top: 15px;"><span>是否通知:</span> '
+
'<input type="radio" name="noticeFlag" value="true" title="是" > 是'
+
'<input type="radio" name="noticeFlag" value="false" title="否" checked="" style="margin-left: 20px;"> 否</div> '
);
}
});
});
//告警关闭
$
(
"#closeBtn"
).
unbind
(
'click'
).
on
(
"click"
,
function
()
{
if
(
$
.
inArray
(
'app:alarm:close'
,
checkList
)
==
-
1
)
{
layer
.
msg
(
'暂无权限!'
,
{
icon
:
7
,
time
:
3000
});
return
;
}
var
ids
=
[];
var
data
=
table
.
checkStatus
(
'activewarningTable'
).
data
;
var
alarmStatus
=
true
;
if
(
data
.
length
==
0
)
{
layer
.
msg
(
'请最少选择一项数据'
,
{
icon
:
7
,
time
:
2000
});
return
;
}
//选中的告警ID放到集合中
$
.
each
(
data
,
function
(
i
,
obj
)
{
var
status
=
JSON
.
stringify
(
obj
.
alarmStatus
);
if
(
status
&&
status
==
'1'
)
{
alarmStatus
=
false
;
}
ids
.
push
(
obj
.
id
)
});
if
(
!
alarmStatus
)
{
layer
.
msg
(
'已关闭的告警不可重复关闭!'
,
{
icon
:
7
,
time
:
3000
});
return
;
}
layer
.
prompt
({
id
:
"alarms_cloes_id"
,
formType
:
2
,
title
:
'告警关闭'
,
area
:
[
'400px'
]
},
function
(
value
,
index
)
{
if
(
value
===
""
)
{
layer
.
msg
(
'请填写关闭意见'
,
{
icon
:
7
,
time
:
3000
});
}
if
(
$
(
'#closeDuration'
).
val
()
===
""
)
{
layer
.
msg
(
'请填写关闭时长'
,
{
icon
:
7
,
time
:
3000
});
return
;
}
admin
.
req
({
url
:
common
.
domainName
+
'/api-web/home/alarm/close'
,
type
:
"post"
,
data
:
{
ids
:
ids
.
toString
(),
reason
:
value
,
duration
:
$
(
'#closeDuration'
).
val
()
*
60
,
closeType
:
$
(
'input[name="closeType"]:checked'
).
val
(),
noticeFlag
:
$
(
'input[name="noticeFlag"]:checked'
).
val
(),
kpiAllFlag
:
$
(
'input[name="kpiAllFlag"]:checked'
).
val
(),
access_token
:
accessToken
}
,
done
:
function
(
res
)
{
if
(
res
.
success
)
{
layer
.
close
(
index
);
layer
.
msg
(
'关闭成功'
,
{
icon
:
1
,
time
:
2000
},
function
()
{
reloadTable
();
});
}
else
{
layer
.
msg
(
'告警关闭失败,请与管理员联系!'
,
{
icon
:
7
,
time
:
3000
});
}
}
});
});
$
(
"#alarms_cloes_id"
).
find
(
'textarea.layui-layer-input'
).
attr
(
"placeholder"
,
"请输入关闭意见(必填)"
);
// /[^(\d||/.)]/g,''
$
(
"#alarms_cloes_id"
).
append
(
'<br/>'
+
'<input type="number" id="closeDuration" class="layui-input" min="0" oninput="if(value.length>5)value=value.slice(0,5)" onkeyup="value=value.replace(/(\\d*\\.\\d).*/,\'$1\')" placeholder="输入关闭时长,单位小时(必填)"/>'
);
$
(
"#alarms_cloes_id"
).
append
(
'<br/><div style="line-height: 38px;"><span>关闭类型:</span> '
+
'<input type="radio" name="closeType" value="0" title="关闭告警" checked=""> 关闭告警'
+
'<input type="radio" name="closeType" value="1" title="关闭通知" style="margin-left: 20px;"> 关闭通知</div> '
);
$
(
"#alarms_cloes_id"
).
append
(
'<div style="line-height: 38px;"><span>是否关闭该指标所有告警/通知:</span> '
+
'<input type="radio" name="kpiAllFlag" value="true" title="是"> 是'
+
'<input type="radio" name="kpiAllFlag" value="false" title="否" checked="" style="margin-left: 20px;"> 否</div> '
);
$
(
"#alarms_cloes_id"
).
append
(
'<div style="line-height: 38px;"><span>是否通知:</span> '
+
'<input type="radio" name="noticeFlag" value="true" title="是"> 是'
+
'<input type="radio" name="noticeFlag" value="false" title="否" checked="" style="margin-left: 20px;"> 否</div> '
);
});
//告警确认
$
(
"#confirmBtn"
).
unbind
(
'click'
).
on
(
"click"
,
function
()
{
if
(
$
.
inArray
(
'app:alarm:confirm'
,
checkList
)
==
-
1
)
{
layer
.
msg
(
'暂无权限!'
,
{
icon
:
7
,
time
:
3000
});
return
;
}
var
ids
=
[];
var
data
=
table
.
checkStatus
(
'activewarningTable'
).
data
;
if
(
data
.
length
==
0
)
{
layer
.
msg
(
'请最少选择一项数据'
,
{
icon
:
7
,
time
:
2000
});
return
;
}
$
.
each
(
data
,
function
(
i
,
obj
)
{
ids
.
push
(
obj
.
id
)
});
layer
.
prompt
({
id
:
"alarms_confirm_id"
,
formType
:
2
,
title
:
'告警确认'
,
area
:
[
'400px'
]
},
function
(
value
,
index
)
{
if
(
value
===
""
)
{
layer
.
msg
(
'请填确认意见'
,
{
icon
:
7
,
time
:
3000
});
}
admin
.
req
({
url
:
common
.
domainName
+
'/api-web/home/alarm/confirm'
,
type
:
"post"
,
data
:
{
ids
:
ids
.
toString
(),
reason
:
value
,
level
:
$
(
'input[name="confrimlevel"]:checked'
).
val
(),
access_token
:
accessToken
}
,
done
:
function
(
res
)
{
if
(
res
.
success
)
{
layer
.
close
(
index
);
layer
.
msg
(
'告警确认成功'
,
{
icon
:
1
,
time
:
2000
},
function
()
{
reloadTable
();
});
}
else
{
layer
.
msg
(
'告警确认失败,请与管理员联系!'
,
{
icon
:
7
,
time
:
3000
});
}
}
});
});
$
(
"#alarms_confirm_id"
).
find
(
'textarea.layui-layer-input'
).
attr
(
"placeholder"
,
"请输入意见(必填)"
);
$
(
"#alarms_confirm_id"
).
append
(
'<br/> '
+
'<input type="radio" name="confrimlevel" value="0" title="紧急" checked=""> 紧急'
+
'<input type="radio" name="confrimlevel" value="1" title="非常紧急" style="margin-left: 20px;"> 非常紧急'
+
'<input type="radio" name="confrimlevel" value="2" title="不紧急" style="margin-left: 20px;"> 不紧急'
);
});
//告警恢复
$
(
"#resumeBtn"
).
unbind
(
'click'
).
on
(
"click"
,
function
()
{
if
(
$
.
inArray
(
'app:alarm:resume'
,
checkList
)
==
-
1
)
{
layer
.
msg
(
'暂无权限!'
,
{
icon
:
7
,
time
:
3000
});
return
;
}
var
ids
=
[];
var
closeIds
=
[];
var
data
=
table
.
checkStatus
(
'activewarningTable'
).
data
;
var
resumeStatus
=
true
;
if
(
data
.
length
==
0
)
{
layer
.
msg
(
'请最少选择一项数据'
,
{
icon
:
7
,
time
:
2000
});
return
;
}
var
msg
=
""
;
//选中的告警ID放到集合中
$
.
each
(
data
,
function
(
i
,
obj
)
{
var
alarmStatus
=
JSON
.
stringify
(
obj
.
alarmStatus
);
//已关闭的告警才可以恢复,告警状态,0告警,1关闭
if
(
alarmStatus
&&
alarmStatus
==
'0'
)
{
resumeStatus
=
false
;
msg
=
'只能恢复已关闭状态的告警,请重新选择!'
;
}
ids
.
push
(
obj
.
id
);
closeIds
.
push
(
obj
.
closeId
);
});
if
(
!
resumeStatus
)
{
layer
.
msg
(
msg
,
{
icon
:
7
,
time
:
3000
});
return
;
}
layer
.
prompt
({
title
:
'恢复说明(必填)'
,
formType
:
2
},
function
(
text
,
index
)
{
admin
.
req
({
url
:
common
.
domainName
+
'/api-web/home/alarm/resume'
,
type
:
"post"
,
data
:
{
ids
:
ids
.
toString
(),
reason
:
text
,
closeId
:
closeIds
.
toString
(),
resumeType
:
'0'
,
//0告警关闭,1历史告警
access_token
:
accessToken
}
,
done
:
function
(
res
)
{
//如果消除成功,关闭弹出框然后重新加载页面
if
(
res
.
success
)
{
layer
.
close
(
index
);
layer
.
msg
(
'告警已恢复!'
,
{
icon
:
1
,
time
:
3000
},
function
()
{
reloadTable
();
});
}
else
{
layer
.
msg
(
'告警恢复失败,请与管理员联系!'
,
{
icon
:
7
,
time
:
3000
});
}
}
});
})
});
//导出
$
(
"#exportAarmBtn"
).
unbind
(
'click'
).
on
(
"click"
,
function
()
{
if
(
$
.
inArray
(
'app:alarm:export'
,
checkList
)
==
-
1
)
{
layer
.
msg
(
'暂无权限!'
,
{
icon
:
7
,
time
:
3000
});
return
;
}
var
data
=
table
.
checkStatus
(
'activewarningTable'
).
data
;
if
(
data
.
length
==
0
)
{
//确认提示框
layer
.
confirm
(
'当前没选择告警,将全量导出数据,请确认'
,
{
btn
:
[
'确定'
,
'取消'
]
//按钮
},
function
()
{
var
url
=
common
.
domainName
+
'/api-web/home/alarm/exportExcel?access_token='
+
accessToken
;
window
.
open
(
url
);
layer
.
closeAll
();
});
}
else
{
var
ids
=
[];
//讲选中的告警ID放到集合中
$
.
each
(
data
,
function
(
i
,
obj
)
{
ids
.
push
(
obj
.
id
);
});
ids
=
ids
.
toString
();
var
url
=
common
.
domainName
+
'/api-web/home/alarm/exportExcel?alarmIds='
+
ids
+
"&access_token="
+
accessToken
;
window
.
open
(
url
)
}
});
//发送通知
$
(
"#sendNoticeBtn"
).
unbind
(
'click'
).
on
(
"click"
,
function
()
{
if
(
$
.
inArray
(
'app:alarm:sendnotice'
,
checkList
)
==
-
1
)
{
layer
.
msg
(
'暂无权限!'
,
{
icon
:
7
,
time
:
3000
});
return
;
}
var
ids
=
[];
var
resIds
=
[];
var
data
=
table
.
checkStatus
(
'activewarningTable'
).
data
;
if
(
data
.
length
==
0
)
{
layer
.
msg
(
'请最少选择一项数据'
,
{
icon
:
7
,
time
:
2000
});
return
;
}
if
(
data
.
length
>
1
)
{
layer
.
msg
(
'请最多选择一项数据'
,
{
icon
:
7
,
time
:
2000
});
return
;
}
//将选中的告警ID放到集合中
$
.
each
(
data
,
function
(
i
,
obj
)
{
ids
.
push
(
obj
.
id
);
resIds
.
push
(
obj
.
resId
);
});
admin
.
req
({
url
:
common
.
domainName
+
'/api-web/home/alarm/subscribe/user/'
+
resIds
.
toString
()
,
done
:
function
(
res
)
{
if
(
res
.
data
&&
res
.
data
.
length
>
0
)
{
var
username
=
''
;
var
begin
=
'<div style="padding: 0 5px 0 5px;"><table class="layui-table"><thead>'
+
'<tr><th></th><th>名称</th><th>电话</th><th>邮箱</th></tr></thead><tbody>'
;
var
end
=
'</tbody></table></div>'
;
$
.
each
(
res
.
data
,
function
(
i
,
v
)
{
username
+=
'<tr><td><input class="userName" type="checkbox" data-name="'
+
v
.
username
+
'" checked></td><td>'
+
v
.
nickname
+
'</td><td>'
+
v
.
phone
+
'</td><td>'
+
v
.
email
+
'</td></tr>'
;
});
//获取告警通知接收人
var
reciveUsers
=
begin
+
username
+
end
;
layer
.
open
({
type
:
1
,
title
:
"通知接收人"
,
shade
:
0.8
,
area
:
[
'600px'
,
'390px'
]
,
id
:
'lay_users'
//设定一个id,防止重复弹出
,
content
:
reciveUsers
,
btn
:
[
'发送'
,
'关闭'
]
,
yes
:
function
()
{
var
names
=
[];
$
(
"input[class='userName']:checked"
).
each
(
function
(
i
){
names
.
push
(
$
(
this
).
attr
(
"data-name"
));
});
if
(
names
.
length
<
1
){
layer
.
msg
(
'请最少选择一个用户'
,
{
icon
:
7
,
time
:
2000
});
return
;
}
admin
.
req
({
url
:
common
.
domainName
+
'/api-web/home/alarm/sendnotice'
,
type
:
"post"
,
data
:
{
ids
:
ids
.
toString
(),
names
:
names
.
toString
(),
access_token
:
accessToken
}
,
done
:
function
(
res
)
{
layer
.
closeAll
();
if
(
res
.
success
)
{
layer
.
msg
(
'发送成功'
,
{
icon
:
1
,
time
:
2000
});
}
else
{
layer
.
msg
(
'发送失败,稍后再试'
,
{
icon
:
7
,
time
:
2000
});
}
}
});
}
});
}
else
{
layer
.
msg
(
'未获取到接收所选通知的用户!'
,
{
icon
:
7
,
time
:
2000
});
}
}
});
});
}
//告警处理及时率
getAlarmCount
();
var
activeAlarmTable
;
//获取配置的列
common
.
getTableCols
({
domId
:
'activewarningTable'
,
moduleId
:
'activewarning'
,
resType
:
''
},
function
(
retCols
)
{
var
cols
=
[
{
type
:
'checkbox'
,
fixed
:
'left'
}
,
{
field
:
'alarmLevel'
,
title
:
'级别'
,
align
:
'center'
,
width
:
120
,
sort
:
true
,
templet
:
`
<
div
>
{{
#
if
(
d
.
alarmLevel
==
3
)
{
}}
<
span
class
=
"layui-table-warn"
style
=
"width: 100%;"
>
严重
<
/span> {{
#
}
else
if
(
d
.
alarmLevel
==
2
)
{
}}
<
span
class
=
"layui-table-close"
style
=
"width: 100%;"
>
重要
<
/span> {{
#
}
else
if
(
d
.
alarmLevel
==
1
)
{
}}
<
span
class
=
"layui-table-normal"
style
=
"width: 100%;"
>
一般
<
/span> {{
#
}
}}
<
/div
>
`
}
,
{
field
:
'alarmNo'
,
title
:
'告警编号'
,
align
:
'center'
,
width
:
140
,
sort
:
true
,
}
,
{
field
:
'resName'
,
title
:
'资源名称'
,
width
:
230
,
sort
:
true
,
templet
:
`
<
div
>
{{
#
if
(
d
.
confirmStatus
==
0
||
d
.
confirmStatus
==
null
)
{
}}
<
i
lay
-
tips
=
"新的告警未确认,告警确认后消失!"
class
=
"shake iconfont"
style
=
"color: red;font-size: 28px;"
>&
#
xe68b
;
<
/i
>
{{
#
}
}}
<
span
data
-
resid
=
"{{d.resId}}"
data
-
restype
=
"{{d.resType}}"
data
-
warn
-
zymc
=
"{{d.id}}"
data
-
ip
=
"{{d.ip}}"
data
-
resname
=
"{{d.resName}}"
data
-
pingenable
=
"{{d.pingEnable}}"
class
=
"layui-table-link"
>
{{
d
.
resName
}}
<
/span
>
<
a
class
=
"layui-icon layui-icon-picture reslist-view-topo hide"
data
-
resid
=
"{{d.resId}}"
style
=
"color: #FEB61E; font-size: 14px; margin-left: 10px;"
lay
-
tips
=
"查看资源拓扑"
><
/a
>
<
/div
>
`
}
,
{
field
:
'kpiName'
,
title
:
'指标名称'
,
align
:
'center'
,
width
:
120
,
sort
:
true
,
templet
:
`
<
div
>
{{
#
var
kpiName
=
d
.
kpiName
==
'TYPE'
?
'ERRPT'
:
d
.
kpiName
;
if
(
d
.
kpiIdent
!=
1
)
{
if
(
d
.
isWarning
!=
1
)
{
}}
<
div
>
{{
kpiName
}}
<
/div> {{
#
}
else
{
}}
<
div
><
span
data
-
ident
=
"{{d.kpiIdent}}"
data
-
trend
=
"{{d.isTrend}}"
data
-
warning
=
"{{d.isWarning}}"
data
-
resid
=
"{{d.resId}}"
data
-
flag
=
"{{d.flag}}"
data
-
kpi
=
"{{d.kpiId}}"
data
-
warn
-
zbmc
=
"{{d.id}}"
data
-
name
=
"{{kpiName}}"
class
=
"layui-table-link"
>
{{
kpiName
}}
<
/span></
div
>
{{
#
}
}
else
{
}}
<
div
><
span
data
-
ident
=
"{{d.kpiIdent}}"
data
-
trend
=
"{{d.isTrend}}"
data
-
warning
=
"{{d.isWarning}}"
data
-
resid
=
"{{d.resId}}"
data
-
flag
=
"{{d.flag}}"
data
-
kpi
=
"{{d.kpiId}}"
data
-
warn
-
zbmc
=
"{{d.id}}"
data
-
name
=
"{{kpiName}}"
class
=
"layui-table-link"
>
{{
kpiName
}}
<
/span></
div
>
{{
#
}
}}
<
/div>
`
}
,
{
field
:
'alarmContent'
,
title
:
'告警内容'
,
align
:
'center'
,
width
:
500
}
,
{
field
:
'alarmResource'
,
title
:
'告警来源'
,
align
:
'center'
,
minWidth
:
120
,
templet
:
`
<
div
>
{{
#
if
(
d
.
alarmResource
==
1
)
{
}}
<
div
>
华为告警
<
/div
>
{{
#
}
else
{
}}
<
div
>
监控系统
<
/div
>
{{
#
}
}}
<
/div>
`
}
,
{
field
:
'updateTime'
,
title
:
'告警时间'
,
align
:
'center'
,
minWidth
:
180
,
sort
:
true
}
,
{
field
:
'alarmTime'
,
title
:
'首次告警时间'
,
align
:
'center'
,
minWidth
:
180
,
sort
:
true
}
,
{
field
:
'durationStr'
,
title
:
'持续时间'
,
align
:
'center'
,
width
:
190
}
,
{
field
:
'alarmRepeatCnt'
,
title
:
'告警次数'
,
align
:
'center'
,
width
:
180
}
,
{
field
:
'nickName'
,
title
:
'通知人'
,
align
:
'center'
,
width
:
180
}
,
{
field
:
'adminName'
,
title
:
'负责人'
,
align
:
'center'
,
width
:
180
}
,
{
field
:
'noticeTime'
,
title
:
'通知时间'
,
align
:
'center'
,
width
:
180
,
hide
:
true
}
,
{
title
:
'操作'
,
align
:
'center'
,
minWidth
:
100
,
templet
:
'<div><span data-warn-view="{{d.id}}" class="layui-table-link">查看</span> <span data-warn-path="{{d.id}}" class="layui-table-link">轨迹</span></div>'
}
];
if
(
retCols
)
{
cols
=
retCols
;
}
//渲染表格
activeAlarmTable
=
table
.
render
({
elem
:
'#activewarningTable'
,
url
:
domainName
+
'/api-web/home/alarm/alarmListPage'
,
id
:
'activewarningTable'
,
toolbar
:
'#activeAlarmtoolbar'
//开启头部工具栏,并为其绑定左侧模板
,
defaultToolbar
:
[
'filter'
]
,
where
:
{
access_token
:
accessToken
,
kpiName
:
$
(
"#activewarningkw"
).
val
(),
busId
:
bizId
,
resId
:
resId
,
kpiId
:
kpiId
,
alarmStatus
:
$
(
"#alarmStatusSearchBox"
).
val
(),
alarmLevel
:
alarmLevel
,
confirmStatus
:
$
(
"#alarmConfirmSearchBox"
).
val
(),
beginTime
:
$
(
"#activewarningStartdate"
).
val
(),
endTime
:
$
(
"#activewarningEnddate"
).
val
(),
sortKey
:
sortKey
,
alarmKpi
:
$
(
"#alarmKpiSearchBox"
).
val
(),
durationVal
:
$
(
'#inline-condition-duration input[name="durationVal"]'
).
val
(),
durationUnit
:
$
(
'#inline-condition-duration select[name="durationUnit"]'
).
val
(),
netFlag
:
netFlag
,
resType
:
resType
}
,
height
:
'full-245'
,
cellMinWidth
:
80
,
page
:
{
layout
:
[
'count'
,
'prev'
,
'page'
,
'next'
,
'limit'
,
'skip'
]
,
theme
:
'#1E9FFF'
}
,
even
:
true
,
drag
:
{
toolbar
:
false
}
,
cols
:
[
cols
],
done
:
function
(
res
,
curr
,
count
)
{
soulTable
.
render
(
this
)
var
groupurl
=
domainName
+
'/api-web/home/alarm/countAlarmNumByAlarmLevel?alarmTimeDay='
+
todayStr
+
'&access_token='
+
accessToken
;
$
.
ajax
({
url
:
groupurl
,
type
:
'get'
,
data
:
{
access_token
:
accessToken
,
kpiName
:
$
(
"#activewarningkw"
).
val
(),
busId
:
bizId
,
resId
:
resId
,
kpiId
:
kpiId
,
alarmStatus
:
$
(
"#alarmStatusSearchBox"
).
val
(),
alarmLevel
:
alarmLevel
,
confirmStatus
:
$
(
"#alarmConfirmSearchBox"
).
val
(),
beginTime
:
$
(
"#activewarningStartdate"
).
val
(),
endTime
:
$
(
"#activewarningEnddate"
).
val
(),
sortKey
:
sortKey
,
alarmKpi
:
$
(
"#alarmKpiSearchBox"
).
val
(),
durationVal
:
$
(
'#inline-condition-duration input[name="durationVal"]'
).
val
(),
durationUnit
:
$
(
'#inline-condition-duration select[name="durationUnit"]'
).
val
(),
netFlag
:
netFlag
,
resType
:
resType
},
success
:
function
(
res
)
{
var
map
=
res
.
map
;
if
(
map
)
{
layui
.
use
(
'laytpl'
,
function
()
{
var
laytpl
=
layui
.
laytpl
;
var
getTpl
=
document
.
getElementById
(
"alarm-count-id-tpl"
).
innerHTML
;
laytpl
(
getTpl
).
render
(
map
,
function
(
html
)
{
$
(
'#alarm-count-id'
).
html
(
html
);
});
//告警升级量 悬浮提示
var
alarmUpRate
,
alarmDealRate
;
$
(
"#alarm_level_up_area_id"
).
hover
(
function
()
{
alarmUpRate
=
layer
.
tips
(
"活动告警中升级的告警总量及占比"
,
'#alarm_level_up_area_id'
,
{
tips
:
[
1
]});
},
function
()
{
layer
.
close
(
alarmUpRate
);
});
//告警处理及时率
$
(
"#alarm_deal_rate_area_id"
).
hover
(
function
()
{
alarmDealRate
=
layer
.
tips
(
"活动告警中及时处理的告警量占比"
,
'#alarm_deal_rate_area_id'
,
{
tips
:
[
1
]});
},
function
()
{
layer
.
close
(
alarmDealRate
);
});
$
(
'[data-warn-zymc]'
).
unbind
(
'click'
).
on
(
'click'
,
function
()
{
//先去查找资源有没有权限
var
resId
=
$
(
this
).
data
(
"resid"
);
var
resType
=
$
(
this
).
data
(
"restype"
);
var
ip
=
$
(
this
).
data
(
"ip"
)
?
$
(
this
).
data
(
"ip"
)
:
""
;
var
resName
=
$
(
this
).
data
(
"resname"
);
var
pingEnable
=
$
(
this
).
data
(
"pingenable"
);
//获取pingEnable的值 joke add 20200619
var
resTypeName
=
''
;
var
adminName
=
''
;
var
manageIp
=
''
;
var
collProtocol
=
''
;
var
sign
=
'false'
;
$
.
ajax
({
url
:
common
.
domainName
+
"/api-web/home/resource/findById?resId="
+
resId
+
'&access_token='
+
accessToken
,
async
:
false
,
type
:
'get'
,
success
:
function
(
res
)
{
sign
=
res
.
str
;
var
data
=
res
.
object
;
resType
=
data
.
resType
;
adminName
=
data
.
adminName
;
manageIp
=
data
.
manageIp
;
collProtocol
=
data
.
collProtocol
;
resTypeName
=
data
.
resTypeName
;
}
})
if
(
sign
==
'false'
){
layer
.
msg
(
'当前用户暂无此资源权限!'
,
{
icon
:
7
,
time
:
3000
});
return
false
;
}
let
title
=
resName
;
if
(
title
&&
title
!==
''
)
{
title
+=
'|'
;
}
if
(
resTypeName
&&
resType
!==
'HOST_X86SERVER'
)
{
title
+=
resTypeName
+
'|'
;
}
if
(
ip
)
{
if
(
resType
===
'HOST_X86SERVER'
)
{
if
(
collProtocol
&&
(
collProtocol
.
split
(
","
).
length
>
1
||
collProtocol
===
'SSH'
))
{
title
+=
'应用IP-'
+
ip
+
'|'
;
}
}
else
{
title
+=
ip
+
'|'
;
}
}
if
(
resType
===
'HOST_X86SERVER'
&&
collProtocol
&&
collProtocol
.
indexOf
(
'SNMP'
)
!==
-
1
)
{
if
(
manageIp
)
{
title
+=
'管理IP-'
+
manageIp
+
'|'
;
}
}
if
(
adminName
)
{
title
+=
adminName
+
'|'
;
}
if
(
title
.
length
>
0
)
{
title
=
title
.
substr
(
0
,
title
.
length
-
1
);
}
if
(
pingEnable
==
'2'
)
{
//如果pingEnable为2,则进入ping状态详情页面
commonDetail
.
openNewWin
(
'template/detail/pingIndex'
,
title
,
{
'resId'
:
resId
},
false
);
}
else
{
//否则进入监控详情页面
commonDetail
.
openDetail
(
resId
,
resType
,
title
);
}
});
//指标名称点击事件
$
(
'[data-warn-zbmc]'
).
unbind
(
"click"
).
on
(
'click'
,
function
()
{
var
name
=
$
(
this
).
data
(
"name"
);
var
params
=
{
resId
:
$
(
this
).
data
(
"resid"
),
kpiId
:
$
(
this
).
data
(
"kpi"
),
flag
:
$
(
this
).
data
(
"flag"
),
name
:
name
,
warning
:
$
(
this
).
data
(
"warning"
),
ident
:
$
(
this
).
data
(
"ident"
),
trend
:
$
(
this
).
data
(
"trend"
)
};
common
.
openLineChart
(
name
,
params
);
});
//告警操作日志
$
(
'[data-warn-view]'
).
unbind
(
'click'
).
on
(
'click'
,
function
()
{
admin
.
req
({
url
:
common
.
domainName
+
'/api-web/home/alarm/info'
,
data
:
{
alarmId
:
$
(
this
).
data
(
'warn-view'
),
access_token
:
accessToken
}
}).
done
(
function
(
res
)
{
laytpl
(
$
(
'#warnViewWinTpl'
).
html
()).
render
(
res
.
obj
,
function
(
html
)
{
layer
.
open
({
area
:
'750px'
,
title
:
[
'告警操作信息'
,
'font-size:18px;'
],
type
:
1
,
content
:
html
});
});
});
});
//告警轨迹
$
(
'[data-warn-path]'
).
unbind
(
'click'
).
on
(
'click'
,
function
()
{
var
id
=
$
(
this
).
attr
(
'data-warn-path'
);
var
view
=
layui
.
view
;
var
params
=
{
"warnId"
:
id
};
view
(
'commonViewModel'
).
render
(
"template/detail/warn_gj"
).
then
(
function
(
res
)
{
layer
.
open
({
title
:
[
'告警轨迹'
,
'font-size:18px;'
],
type
:
1
,
area
:
[
'900px'
,
'650px'
],
content
:
laytpl
(
res
.
body
).
render
(
JSON
.
stringify
(
params
))
});
});
});
});
//点击严重重要一般统计告警
$
(
"#alarm-count-id"
).
find
(
".warn-count-item"
).
unbind
(
'click'
).
on
(
"click"
,
function
()
{
var
alarmLevel
=
$
(
this
).
attr
(
"alarm-level"
);
if
(
alarmLevel
!=
''
&&
alarmLevel
!=
null
&&
alarmLevel
!=
undefined
)
{
$
(
"#alarmLevelSearchBox"
).
val
(
alarmLevel
)
layui
.
form
.
render
(
'select'
);
reloadTable
();
}
else
{
$
(
"#alarmLevelSearchBox"
).
val
(
""
);
layui
.
form
.
render
(
'select'
);
if
(
alarmLevel
===
''
)
{
reloadTable
();
}
}
});
initToolBarClickEvent
();
//表格排序监听 joke add 20200408
table
.
on
(
'sort(activewarningTable)'
,
function
(
obj
)
{
//有些时候,你可能需要根据当前排序的字段,重新向服务端发送请求,从而实现服务端排序,如:
if
(
obj
.
type
!=
null
)
{
sortKey
=
obj
.
field
+
' '
+
obj
.
type
;
}
else
{
sortKey
=
''
;
}
reloadTable
(
'sort'
);
})
}
}
})
//触发拖动列事件,参数为保存按钮的id
common
.
dragCols
(
"activewarning_cols_save"
);
//保存列顺序
$
(
"#activewarning_cols_save"
).
unbind
(
"click"
).
on
(
"click"
,
function
()
{
var
params
=
{
domId
:
'activewarningTable'
,
moduleId
:
'activewarning'
,
resType
:
''
,
cols
:
JSON
.
stringify
(
activeAlarmTable
.
config
.
cols
)
}
common
.
saveTableCols
(
params
);
});
resTopo
();
}
});
});
//绑定下拉搜索事件
function
bindSelectEvent
()
{
//选择业务搜索
form
.
on
(
'select(bisTypeSearch)'
,
function
(
data
)
{
bizId
=
data
.
value
;
reloadTable
();
});
//选择业务搜索
form
.
on
(
'select(alarmKpiSearch)'
,
function
(
data
)
{
reloadTable
();
});
// 告警状态
form
.
on
(
'select(alarmStatusSearch)'
,
function
(
data
)
{
reloadTable
();
});
//告警级别
form
.
on
(
'select(alarmLevelSearch)'
,
function
(
data
)
{
reloadTable
();
});
// 告警确认
form
.
on
(
'select(alarmConfirmSearch)'
,
function
(
data
)
{
reloadTable
();
});
}
$
(
"#todayOrAllBtn"
).
unbind
().
on
(
"click"
,
function
()
{
var
$that
=
$
(
this
);
var
str
=
$
(
this
).
text
();
if
(
str
.
indexOf
(
"今日"
)
>
-
1
){
$that
.
text
(
"全部告警"
)
todayStr
=
common
.
getToday
(
'day'
);
}
else
{
todayStr
=
''
$that
.
text
(
"今日告警"
)
}
reloadTable
();
})
//刷新表格
function
reloadTable
(
type
)
{
if
(
type
!=
'sort'
){
sortKey
=
''
;
}
activeAlarmTable
.
reload
({
page
:
{
curr
:
1
}
,
where
:
{
access_token
:
accessToken
,
kpiName
:
$
(
"#activewarningkw"
).
val
(),
busId
:
bizId
,
resId
:
resId
,
kpiId
:
kpiId
,
alarmStatus
:
$
(
"#alarmStatusSearchBox"
).
val
(),
alarmLevel
:
$
(
"#alarmLevelSearchBox"
).
val
(),
confirmStatus
:
$
(
"#alarmConfirmSearchBox"
).
val
(),
beginTime
:
$
(
"#activewarningStartdate"
).
val
(),
endTime
:
$
(
"#activewarningEnddate"
).
val
(),
sortKey
:
sortKey
,
alarmKpi
:
$
(
"#alarmKpiSearchBox"
).
val
(),
durationVal
:
$
(
'#inline-condition-duration input[name="durationVal"]'
).
val
(),
durationUnit
:
$
(
'#inline-condition-duration select[name="durationUnit"]'
).
val
(),
alarmTimeDay
:
todayStr
,
resType
:
resType
}
});
}
//获取告警统计信息
function
getAlarmCount
()
{
admin
.
req
({
url
:
common
.
domainName
+
"/api-web/home/alarm/countByAlarmLevel"
,
type
:
"get"
,
done
:
function
(
data
)
{
var
alarms
=
data
.
data
;
if
(
data
.
code
==
0
)
{
$
.
each
(
alarms
,
function
(
i
,
v
)
{
if
(
v
.
alarmLevel
==
5
)
{
//及时率
$
(
"#alarm_dealRate"
).
html
(
v
.
alarmNum
+
"%"
);
}
});
}
else
{
console
.
error
(
"接口请求失败"
)
console
.
log
(
data
.
msg
);
}
}
})
}
form
.
render
(
null
,
'activewarning-form'
);
//60秒倒计时
(
function
()
{
var
autoBtn
=
$
(
'#activewarningAutoFlush'
);
var
timer
=
null
;
function
autoFlush
(
target
)
{
var
el
=
target
.
find
(
'span'
);
var
checked
=
target
.
find
(
'input'
).
prop
(
'checked'
);
localStorage
.
setItem
(
'alarm_auto__flush'
,
checked
);
function
fn
()
{
var
second
=
el
.
data
(
'second'
);
var
checked
=
target
.
find
(
'input'
).
prop
(
'checked'
);
if
(
!
checked
)
{
return
;
}
--
second
;
el
.
data
(
'second'
,
second
);
el
.
html
(
second
+
'秒'
);
timer
=
setTimeout
(
fn
,
1000
);
if
(
second
<=
0
)
{
clearTimeout
(
timer
);
reloadTable
()
$
(
el
).
data
(
'second'
,
60
);
$
(
el
).
text
(
"60秒"
);
fn
();
}
}
if
(
checked
)
{
timer
=
setTimeout
(
fn
,
1000
);
}
else
{
clearTimeout
(
timer
);
}
}
form
.
on
(
"checkbox(warnActiveAutoFlush)"
,
function
(
data
)
{
autoFlush
(
autoBtn
);
})
/*autoBtn.change(function () {
autoFlush(autoBtn);
});*/
var
auto
=
localStorage
.
getItem
(
'alarm_auto__flush'
)
auto
=
auto
?
auto
:
false
;
autoBtn
.
find
(
'input'
).
prop
(
'checked'
,
auto
);
autoFlush
(
autoBtn
);
admin
.
on
(
'hash(*)'
,
function
(
router
)
{
if
(
router
.
href
===
'/activewarning'
)
{
autoFlush
(
autoBtn
);
}
else
{
clearTimeout
(
timer
);
}
});
})();
function
resTopo
()
{
//绑定鼠标移入移出事件
$
(
'table tr'
).
hover
(
function
(
obj
)
{
$
(
obj
.
currentTarget
).
find
(
'.reslist-view-topo'
).
removeClass
(
'hide'
);
},
function
(
obj
)
{
$
(
obj
.
currentTarget
).
find
(
'.reslist-view-topo'
).
addClass
(
'hide'
);
})
// 加入/移出收藏夹
$
(
'a.reslist-view-topo'
).
unbind
(
'click'
).
on
(
'click'
,
function
()
{
common
.
viewResTopo
(
$
(
this
).
data
(
'resid'
));
});
}
});
});
\ No newline at end of file
...
...
hg-monitor-web-zj/src/main/resources/static/src/controller/historywarning.js
0 → 100644
View file @
b34a3f6
layui
.
define
([
'table'
,
'form'
,
'laydate'
,
'admin'
,
'layer'
,
'laytpl'
,
'common'
,
'sessions'
,
"commonDetail"
,
'soulTable'
],
function
(
exports
)
{
var
$
=
layui
.
$
;
var
form
=
layui
.
form
;
var
layer
=
layui
.
layer
;
var
admin
=
layui
.
admin
;
var
table
=
layui
.
table
;
var
laydate
=
layui
.
laydate
;
var
laytpl
=
layui
.
laytpl
;
var
common
=
layui
.
common
;
var
commonDetail
=
layui
.
commonDetail
;
var
domainName
=
common
.
domainName
;
var
soulTable
=
layui
.
soulTable
;
//对外暴露的接口
exports
(
'historywarning'
,
function
()
{
var
sessions
=
layui
.
sessions
;
var
router
=
layui
.
router
();
var
accessToken
=
sessions
.
getToken
()[
'access_token'
];
var
sortKey
=
''
;
var
checkList
=
common
.
checkPermission
(
accessToken
);
var
alarmNo
=
router
.
search
.
alarmNo
;
//告警编号
var
bizId
=
''
;
//业务Id
var
busIdSelect
;
var
busTypeList
=
[];
if
(
alarmNo
)
{
$
(
"#historywarningkw"
).
val
(
alarmNo
);
}
function
initDate
()
{
var
start
=
laydate
.
render
({
elem
:
'#historywarningStartdate'
,
trigger
:
'click'
,
done
:
function
(
value
,
date
)
{
date
.
month
--
;
end
.
config
.
min
=
date
;
var
endDate
=
$
(
"#historywarningEnddate"
).
val
();
if
(
endDate
!=
null
&&
endDate
!=
""
)
{
reloadTable
();
}
}
});
var
end
=
laydate
.
render
({
elem
:
'#historywarningEnddate'
,
trigger
:
'click'
,
done
:
function
(
value
,
date
)
{
date
.
month
--
;
start
.
config
.
max
=
date
;
var
benginDate
=
$
(
"#historywarningStartdate"
).
val
();
if
(
benginDate
!=
null
&&
benginDate
!=
""
)
{
reloadTable
();
}
}
});
//绑定业务下拉选择数据
admin
.
req
({
url
:
domainName
+
'/api-web/home/business/findUserBusTypeAll?table=b_alarm_his'
,
success
:
function
(
response
)
{
if
(
response
&&
response
.
success
)
{
busTypeList
=
response
.
data
;
var
bizList
=
response
.
data
.
map
(
item
=>
{
return
{
name
:
item
.
busTypeName
,
value
:
item
.
busId
,
parentId
:
item
.
parentId
}
});
var
bizTree
=
common
.
pidToChildren
(
bizList
,
'value'
,
'parentId'
);
// 影响业务下拉框
busIdSelect
=
xmSelect
.
render
({
el
:
'#historyBisTypeSearchBox'
,
name
:
'bizId'
,
tips
:
'=所属业务='
,
//开启搜索
filterable
:
true
,
clickClose
:
true
,
initValue
:
[
bizId
.
split
(
','
)[
0
]],
toolbar
:
{
show
:
true
,
list
:
[
'ALL'
,
'REVERSE'
,
'CLEAR'
]
},
height
:
'170px'
,
tree
:
{
show
:
true
,
showFolderIcon
:
true
,
showLine
:
true
,
strict
:
true
,
//间距
indent
:
20
,
},
model
:
{
label
:
{
type
:
'text'
}
},
data
:
bizTree
,
on
:
function
(
data
)
{
if
(
data
.
arr
.
length
!=
0
)
{
var
str
=
''
;
$
.
each
(
data
.
arr
,
function
(
i
,
v
)
{
str
+=
v
.
value
+
','
;
})
bizId
=
str
.
substring
(
0
,
str
.
length
-
1
);
}
else
{
bizId
=
''
;
}
form
.
render
();
reloadTable
();
}
});
if
(
busIdSelect
){
//追加样式
$
(
'#historyBisTypeSearchBox'
).
find
(
'.xm-body'
).
eq
(
0
).
css
(
"width"
,
"230px"
);
}
}
else
{
layer
.
msg
(
'获取业务失败'
,
{
icon
:
2
});
}
},
error
:
function
()
{
layer
.
msg
(
'获取业务失败'
,
{
icon
:
2
});
}
});
$
.
ajax
({
url
:
common
.
domainName
+
'/api-web/manage/kpi/findKpiInAlarm?access_token='
+
accessToken
+
'&tableName=b_alarm_his'
,
type
:
"get"
,
success
:
function
(
res
)
{
var
kpis
=
res
.
data
;
var
html
=
'<option value="">=指标名称=</option>'
$
.
each
(
kpis
,
function
(
i
,
e
)
{
html
+=
'<option value="'
+
e
.
kpiId
+
'">'
+
e
.
kpiName
+
'</option>'
})
$
(
"#alarmKpiHisSearchBox"
).
html
(
''
);
$
(
"#alarmKpiHisSearchBox"
).
append
(
html
);
form
.
render
();
}
})
}
//回车事件
$
(
'#historywarningkw, input[name="durationVal"]'
).
keydown
(
function
(
e
)
{
if
(
e
.
keyCode
===
13
)
{
reloadTable
();
}
});
//选择框搜索事件
bindSelectEvent
();
initDate
();
function
initHistoryBtnCLick
()
{
//告警恢复
$
(
"#historyResumeBtn"
).
unbind
(
"click"
).
on
(
"click"
,
function
()
{
if
(
$
.
inArray
(
'app:alarm:resume'
,
checkList
)
==
-
1
)
{
layer
.
msg
(
'暂无权限!'
,
{
icon
:
7
,
time
:
3000
});
return
;
}
var
ids
=
[];
var
closeIds
=
[];
var
data
=
table
.
checkStatus
(
'historywarningTable'
).
data
;
var
resumeStatus
=
true
;
if
(
data
.
length
==
0
)
{
layer
.
msg
(
'请最少选择一项数据'
,
{
icon
:
7
,
time
:
2000
});
return
;
}
var
msg
=
""
;
//选中的告警ID放到集合中
$
.
each
(
data
,
function
(
i
,
obj
)
{
ids
.
push
(
obj
.
id
);
closeIds
.
push
(
obj
.
closeId
);
});
if
(
!
resumeStatus
)
{
layer
.
msg
(
msg
,
{
icon
:
7
,
time
:
3000
});
return
;
}
layer
.
prompt
({
title
:
'恢复说明(必填)'
,
formType
:
2
},
function
(
text
,
index
)
{
admin
.
req
({
url
:
common
.
domainName
+
'/api-web/home/alarm/resume'
,
type
:
"post"
,
data
:
{
ids
:
ids
.
toString
(),
reason
:
text
,
closeId
:
closeIds
.
toString
(),
resumeType
:
'1'
,
//0告警关闭,1历史告警
access_token
:
accessToken
}
,
done
:
function
(
res
)
{
//如果消除成功,关闭弹出框然后重新加载页面
if
(
res
.
success
)
{
layer
.
close
(
index
);
layer
.
msg
(
'告警已恢复!'
,
{
icon
:
1
,
time
:
3000
},
function
()
{
reloadTable
();
});
}
else
{
layer
.
msg
(
'告警恢复失败,请与管理员联系!'
,
{
icon
:
7
,
time
:
3000
});
}
}
});
})
});
}
//渲染表格
var
historywarningTable
;
//获取配置的列
common
.
getTableCols
({
domId
:
'historywarningTable'
,
moduleId
:
'historywarning'
,
resType
:
''
},
function
(
retCols
)
{
var
cols
;
if
(
retCols
)
{
cols
=
retCols
;
}
else
{
cols
=
[
{
type
:
'checkbox'
,
fixed
:
'left'
}
,
{
field
:
'alarmLevel'
,
title
:
'级别'
,
align
:
'center'
,
width
:
120
,
sort
:
true
,
templet
:
`
<
div
>
{{
#
if
(
d
.
alarmLevel
==
3
)
{
}}
<
span
class
=
"layui-table-warn"
style
=
"width: 100%;"
>
严重
<
/span
>
{{
#
}
else
if
(
d
.
alarmLevel
==
2
)
{
}}
<
span
class
=
"layui-table-close"
style
=
"width: 100%;"
>
重要
<
/span
>
{{
#
}
else
if
(
d
.
alarmLevel
==
1
)
{
}}
<
span
class
=
"layui-table-normal"
style
=
"width: 100%;"
>
一般
<
/span
>
{{
#
}
}}
<
/div>
`
}
,
{
field
:
'alarmNo'
,
title
:
'告警编号'
,
align
:
'center'
,
width
:
140
,
sort
:
true
,
}
,
{
field
:
'resName'
,
title
:
'资源名称'
,
width
:
230
,
sort
:
true
,
templet
:
'<div><span data-hiswarn-zymc="{{d.id}}" data-resid="{{d.resId}}" data-restype="{{d.resType}}" data-ip="{{d.ip}}" data-resname="{{d.resName}}" class="layui-table-link">{{d.resName}}</span></div>'
}
,
{
field
:
'kpiName'
,
title
:
'指标名称'
,
align
:
'center'
,
width
:
150
,
sort
:
true
,
templet
:
'#historywarngingKpiNameTpl'
}
,
{
field
:
'alarmContent'
,
title
:
'告警内容'
,
align
:
'center'
,
width
:
500
}
,
{
field
:
'alarmResource'
,
title
:
'告警来源'
,
align
:
'center'
,
minWidth
:
100
,
templet
:
`
<
div
>
{{
#
if
(
d
.
alarmResource
==
1
)
{
}}
<
div
>
华为告警
<
/div
>
{{
#
}
else
{
}}
<
div
>
监控系统
<
/div
>
{{
#
}
}}
<
/div>
`
}
,
{
field
:
'updateTime'
,
title
:
'告警时间'
,
align
:
'center'
,
minWidth
:
180
,
sort
:
true
}
,
{
field
:
'alarmTime'
,
title
:
'首次告警时间'
,
align
:
'center'
,
minWidth
:
180
,
sort
:
true
}
,
{
field
:
'durationStr'
,
title
:
'持续时间'
,
align
:
'center'
,
width
:
190
}
,
{
title
:
'操作'
,
align
:
'center'
,
minWidth
:
100
,
templet
:
'<div><span history-data-warn-view="{{d.id}}" class="layui-table-link">查看</span> <span history-data-warn-path="{{d.id}}" class="layui-table-link">轨迹</span></div>'
}
];
}
historywarningTable
=
table
.
render
({
elem
:
'#historywarningTable'
,
url
:
domainName
+
'/api-web/home/alarm/alarmListPage'
,
toolbar
:
'#hisAlarmtoolbar'
//开启头部工具栏,并为其绑定左侧模板
,
defaultToolbar
:
[
'filter'
]
,
where
:
{
access_token
:
accessToken
,
hisFlag
:
true
,
kpiName
:
$
(
"#historywarningkw"
).
val
(),
busId
:
bizId
,
alarmStatus
:
$
(
"#historyAlarmStatusSearchBox"
).
val
(),
alarmLevel
:
$
(
"#historyAlarmLevelSearchBox"
).
val
(),
confirmStatus
:
$
(
"#historyAlarmConfirmSearchBox"
).
val
(),
beginTime
:
$
(
"#historywarningStartdate"
).
val
(),
endTime
:
$
(
"#historywarningEnddate"
).
val
(),
durationVal
:
$
(
'#his_inline-condition-duration input[name="durationVal"]'
).
val
(),
durationUnit
:
$
(
'#his_inline-condition-duration select[name="durationUnit"]'
).
val
(),
sortKey
:
sortKey
,
alarmKpi
:
$
(
"#alarmKpiHisSearchBox"
).
val
(),
}
,
height
:
'full-245'
,
cellMinWidth
:
80
,
page
:
{
layout
:
[
'count'
,
'prev'
,
'page'
,
'next'
,
'limit'
,
'skip'
]
,
theme
:
'#1E9FFF'
}
,
even
:
true
,
drag
:
{
toolbar
:
false
}
,
cols
:
[
cols
],
done
:
function
(
res
,
curr
,
count
)
{
soulTable
.
render
(
this
)
initHistoryBtnCLick
();
var
groupurl
=
domainName
+
'/api-web/home/alarm/countAlarmNumByAlarmLevel?access_token='
+
accessToken
;
$
.
ajax
({
url
:
groupurl
,
type
:
'get'
,
data
:
{
access_token
:
accessToken
,
hisFlag
:
true
,
kpiName
:
$
(
"#historywarningkw"
).
val
(),
busId
:
bizId
,
alarmStatus
:
$
(
"#historyAlarmStatusSearchBox"
).
val
(),
alarmLevel
:
''
,
confirmStatus
:
$
(
"#historyAlarmConfirmSearchBox"
).
val
(),
beginTime
:
$
(
"#historywarningStartdate"
).
val
(),
endTime
:
$
(
"#historywarningEnddate"
).
val
(),
durationVal
:
$
(
'#his_inline-condition-duration input[name="durationVal"]'
).
val
(),
durationUnit
:
$
(
'#his_inline-condition-duration select[name="durationUnit"]'
).
val
(),
sortKey
:
sortKey
,
alarmKpi
:
$
(
"#alarmKpiHisSearchBox"
).
val
(),
},
success
:
function
(
res
)
{
var
map
=
res
.
map
;
if
(
!
isEmptyObject
(
map
))
{
layui
.
use
(
'laytpl'
,
function
()
{
var
laytpl
=
layui
.
laytpl
;
var
getTpl
=
document
.
getElementById
(
"his-alarm-count-id-tpl"
).
innerHTML
;
laytpl
(
getTpl
).
render
(
map
,
function
(
html
)
{
$
(
'#his-alarm-count-id'
).
html
(
html
);
});
});
}
//告警操作日志
$
(
'[history-data-warn-view]'
).
unbind
(
"click"
).
on
(
'click'
,
function
()
{
admin
.
req
({
url
:
common
.
domainName
+
'/api-web/home/alarm/info'
,
data
:
{
alarmId
:
$
(
this
).
attr
(
'history-data-warn-view'
),
access_token
:
accessToken
}
}).
done
(
function
(
res
)
{
laytpl
(
$
(
'#warnViewWinTpl'
).
html
()).
render
(
res
.
obj
,
function
(
html
)
{
layer
.
open
({
area
:
[
'80%'
,
'90%'
],
title
:
[
'告警操作信息'
,
'font-size:18px;'
],
type
:
1
,
content
:
html
});
});
});
});
//告警轨迹
$
(
'[history-data-warn-path]'
).
unbind
(
"click"
).
on
(
'click'
,
function
()
{
var
id
=
$
(
this
).
attr
(
'history-data-warn-path'
);
var
view
=
layui
.
view
;
var
params
=
{
"warnId"
:
id
};
view
(
'commonViewModel'
).
render
(
"template/detail/warn_gj"
).
then
(
function
(
res
)
{
layer
.
open
({
title
:
[
'告警轨迹'
,
'font-size:18px;'
],
type
:
1
,
area
:
[
'80%'
,
'90%'
],
content
:
laytpl
(
res
.
body
).
render
(
JSON
.
stringify
(
params
))
});
});
});
//资源名称,查看详细
$
(
'[data-hiswarn-zymc]'
).
unbind
(
"click"
).
on
(
'click'
,
function
()
{
var
resId
=
$
(
this
).
data
(
"resid"
);
var
resType
=
$
(
this
).
data
(
"restype"
);
var
ip
=
$
(
this
).
data
(
"ip"
)
?
$
(
this
).
data
(
"ip"
)
:
""
;
var
resName
=
$
(
this
).
data
(
"resname"
);
var
pingEnable
=
$
(
this
).
data
(
"pingenable"
);
//获取pingEnable的值 joke add 20200619
var
resTypeName
=
''
;
var
adminName
=
''
;
var
manageIp
=
''
;
var
collProtocol
=
''
;
var
sign
=
'false'
;
$
.
ajax
({
url
:
common
.
domainName
+
"/api-web/home/resource/findById?resId="
+
resId
+
'&access_token='
+
accessToken
,
async
:
false
,
type
:
'get'
,
success
:
function
(
res
)
{
sign
=
res
.
str
;
var
data
=
res
.
object
;
resType
=
data
.
resType
;
adminName
=
data
.
adminName
;
manageIp
=
data
.
manageIp
;
collProtocol
=
data
.
collProtocol
;
resTypeName
=
data
.
resTypeName
;
}
})
if
(
sign
==
'false'
){
layer
.
msg
(
'当前用户暂无此资源权限!'
,
{
icon
:
7
,
time
:
3000
});
return
false
;
}
let
title
=
resName
;
if
(
title
&&
title
!==
''
)
{
title
+=
'|'
;
}
if
(
resTypeName
&&
resType
!==
'HOST_X86SERVER'
)
{
title
+=
resTypeName
+
'|'
;
}
if
(
ip
)
{
if
(
resType
===
'HOST_X86SERVER'
)
{
if
(
collProtocol
&&
(
collProtocol
.
split
(
","
).
length
>
1
||
collProtocol
===
'SSH'
))
{
title
+=
'应用IP-'
+
ip
+
'|'
;
}
}
else
{
title
+=
ip
+
'|'
;
}
}
if
(
resType
===
'HOST_X86SERVER'
&&
collProtocol
&&
collProtocol
.
indexOf
(
'SNMP'
)
!==
-
1
)
{
if
(
manageIp
)
{
title
+=
'管理IP-'
+
manageIp
+
'|'
;
}
}
if
(
adminName
)
{
title
+=
adminName
+
'|'
;
}
if
(
title
.
length
>
0
)
{
title
=
title
.
substr
(
0
,
title
.
length
-
1
);
}
if
(
pingEnable
==
'2'
)
{
//如果pingEnable为2,则进入ping状态详情页面
commonDetail
.
openNewWin
(
'template/detail/pingIndex'
,
title
,
{
'resId'
:
resId
},
false
);
}
else
{
//否则进入监控详情页面
commonDetail
.
openDetail
(
resId
,
resType
,
title
);
}
});
//指标性能曲线图
$
(
' [data-warn-zbmc]'
).
unbind
(
"click"
).
on
(
'click'
,
function
()
{
var
name
=
$
(
this
).
data
(
"name"
);
var
params
=
{
resId
:
$
(
this
).
data
(
"resid"
),
kpiId
:
$
(
this
).
data
(
"kpi"
),
flag
:
$
(
this
).
data
(
"flag"
),
name
:
name
,
warning
:
$
(
this
).
data
(
"warning"
),
ident
:
$
(
this
).
data
(
"ident"
),
trend
:
$
(
this
).
data
(
"trend"
)
};
common
.
openLineChart
(
name
,
params
);
});
//表格排序监听 joke add 20200408
table
.
on
(
'sort(historywarningTable)'
,
function
(
obj
)
{
//有些时候,你可能需要根据当前排序的字段,重新向服务端发送请求,从而实现服务端排序,如:
if
(
obj
.
type
!=
null
)
{
sortKey
=
obj
.
field
+
' '
+
obj
.
type
;
}
else
{
sortKey
=
''
;
}
reloadTable
(
'sort'
);
})
//点击严重重要一般统计告警
$
(
"#his-alarm-count-id"
).
find
(
".warn-count-item"
).
unbind
(
"click"
).
on
(
"click"
,
function
()
{
var
alarmLevel
=
$
(
this
).
attr
(
"alarm-level"
);
if
(
alarmLevel
!=
''
&&
alarmLevel
!=
null
&&
alarmLevel
!=
undefined
)
{
$
(
"#historyAlarmLevelSearchBox"
).
val
(
alarmLevel
)
layui
.
form
.
render
(
'select'
);
reloadTable
();
}
else
{
$
(
"#historyAlarmLevelSearchBox"
).
val
(
""
);
layui
.
form
.
render
(
'select'
);
reloadTable
();
}
});
}
});
//触发拖动列事件,参数为保存按钮的id
common
.
dragCols
(
"historywarning_cols_save"
);
//保存列顺序
$
(
"#historywarning_cols_save"
).
unbind
(
"click"
).
on
(
"click"
,
function
()
{
var
params
=
{
domId
:
'historywarningTable'
,
moduleId
:
'historywarning'
,
resType
:
''
,
cols
:
JSON
.
stringify
(
historywarningTable
.
config
.
cols
)
}
common
.
saveTableCols
(
params
);
});
}
});
});
function
isEmptyObject
(
e
)
{
var
t
;
for
(
t
in
e
)
return
!
1
;
return
!
0
}
//绑定下拉搜索事件
function
bindSelectEvent
()
{
form
.
on
(
'select(alarmKpiHisSearch)'
,
function
(
data
)
{
reloadTable
();
});
// 告警状态
form
.
on
(
'select(historyAlarmStatusSearch)'
,
function
(
data
)
{
reloadTable
();
});
//告警级别
form
.
on
(
'select(historyAlarmLevelSearch)'
,
function
(
data
)
{
reloadTable
();
});
// 告警确认
form
.
on
(
'select(historyAlarmConfirmSearch)'
,
function
(
data
)
{
reloadTable
();
});
}
//刷新表格
function
reloadTable
(
type
)
{
if
(
type
!=
'sort'
){
sortKey
=
''
;
}
historywarningTable
.
reload
({
page
:
{
curr
:
1
}
,
where
:
{
access_token
:
accessToken
,
kpiName
:
$
(
"#historywarningkw"
).
val
(),
busId
:
bizId
,
alarmStatus
:
$
(
"#historyAlarmStatusSearchBox"
).
val
(),
alarmLevel
:
$
(
"#historyAlarmLevelSearchBox"
).
val
(),
confirmStatus
:
$
(
"#historyAlarmConfirmSearchBox"
).
val
(),
beginTime
:
$
(
"#historywarningStartdate"
).
val
(),
endTime
:
$
(
"#historywarningEnddate"
).
val
(),
durationVal
:
$
(
'#his_inline-condition-duration input[name="durationVal"]'
).
val
(),
durationUnit
:
$
(
'#his_inline-condition-duration select[name="durationUnit"]'
).
val
(),
sortKey
:
sortKey
,
alarmKpi
:
$
(
"#alarmKpiHisSearchBox"
).
val
(),
}
});
}
/* //获取告警统计信息
function getAlarmCount() {
admin.req({
url: common.domainName + "/api-web/home/alarm/countByAlarmLevel?hisFlag=true"
, type: "get"
, done: function (data) {
var alarms = data.data;
if (data.code === 0) {
let total = 0;
$.each(alarms,function (i,v) {
if(v.alarmLevel<4){
total+=v.alarmNum;
}
if(v.alarmLevel == 3){//严重告警
$("#history_alarm_serious").text(v.alarmNum);
}
if(v.alarmLevel == 2){//重要告警
$("#history_alarm_important").text(v.alarmNum);
}
if(v.alarmLevel == 1){//一般告警
$("#history_alarm_commonly").text(v.alarmNum);
}
});
$("#history_alarm_total").text(total);
} else {
console.log(data.msg);
}
}
});
}*/
form
.
render
(
null
,
'historywarning-form'
);
(
function
()
{
var
autoBtn
=
$
(
'#historywarningAutoFlush'
);
var
timer
=
null
;
function
autoFlush
(
target
)
{
var
el
=
target
.
find
(
'span'
);
var
checked
=
target
.
find
(
'input'
).
prop
(
'checked'
);
localStorage
.
setItem
(
'auto__flush'
,
checked
);
function
fn
()
{
var
second
=
el
.
data
(
'second'
);
var
checked
=
target
.
find
(
'input'
).
prop
(
'checked'
);
if
(
!
checked
)
{
return
;
}
--
second
;
el
.
data
(
'second'
,
second
);
el
.
html
(
second
+
'秒'
);
timer
=
setTimeout
(
fn
,
1000
);
if
(
second
<=
0
)
{
clearTimeout
(
timer
);
reloadTable
()
$
(
el
).
data
(
'second'
,
60
);
$
(
el
).
text
(
"60秒"
)
fn
();
//layui.index.render();
}
}
if
(
checked
)
{
timer
=
setTimeout
(
fn
,
1000
);
}
else
{
clearTimeout
(
timer
);
}
}
/*autoBtn.change(function () {
autoFlush(autoBtn);
});*/
form
.
on
(
"checkbox(hisWarnActiveAutoFlush)"
,
function
(
data
)
{
autoFlush
(
autoBtn
);
})
var
auto
=
localStorage
.
getItem
(
'auto__flush'
)
auto
=
auto
?
auto
:
false
;
autoBtn
.
find
(
'input'
).
prop
(
'checked'
,
auto
);
autoFlush
(
autoBtn
);
admin
.
on
(
'hash(*)'
,
function
(
router
)
{
if
(
router
.
href
===
'/historywarning'
)
{
autoFlush
(
autoBtn
);
}
else
{
clearTimeout
(
timer
);
}
});
})();
});
});
\ No newline at end of file
...
...
hg-monitor-web-zj/src/main/resources/static/src/controller/resindex.js
0 → 100644
View file @
b34a3f6
//资源视图
layui
.
define
([
'common'
,
'tree'
,
'laypage'
,
'laytpl'
,
'admin'
,
'form'
,
'table'
,
'sessions'
,
"commonDetail"
,
'tableTree'
,
'soulTable'
,
'commonCols'
],
function
(
exports
)
{
var
$
=
layui
.
$
;
var
common
=
layui
.
common
;
var
table
=
layui
.
table
;
//对外暴露的接口
exports
(
'resindex'
,
function
(
data
)
{
var
laytpl
=
layui
.
laytpl
;
var
tree
=
layui
.
tree
;
var
form
=
layui
.
form
;
var
view
=
layui
.
view
;
var
router
=
layui
.
router
();
var
soulTable
=
layui
.
soulTable
;
var
tableTree
=
layui
.
tableTree
;
var
commonCols
=
layui
.
commonCols
;
var
admin
=
layui
.
admin
;
var
commonDetail
=
layui
.
commonDetail
;
var
domainName
=
common
.
domainName
;
var
resTypeSelectExclude
=
[
'HOST_MINICOMPUTER'
,
'HOST_MINICOMPUTER_SERVER'
,
'HOST_BMC'
,
'HOST_X86SERVER'
]
var
curTreeNode
=
''
;
var
currentResType
=
''
;
//当前选中节点的资源类型
var
accessToken
;
var
sortKey
=
''
;
// 资源类型视图表格
var
resListTable
;
var
parentResListTable
;
var
bizId
=
''
;
var
busIdSelect
;
var
busTypeList
=
[];
var
collProtocols
=
''
;
var
editFlag
=
false
;
if
(
data
.
choose
==
'1'
)
{
editFlag
=
true
;
$
(
".choose-resKpiInfo"
).
show
();
}
else
{
// 隐藏左侧菜单
$
(
'#LAY_app_flexible'
).
click
();
}
function
autoHeight
(
el
)
{
// var height = el.parents('.layui-card').height();
// el.css('min-height', height - 75);
}
var
sessions
=
layui
.
sessions
;
accessToken
=
sessions
.
getToken
().
access_token
;
//点击卡片
$
(
'#resindexTable'
).
on
(
'click'
,
'[data-res-card]'
,
function
()
{
var
nodeId
=
$
(
this
).
attr
(
"data-res-card"
);
currentResType
=
nodeId
;
//将当前点击的资源类型付给参数
selectedTreeNode
(
'[data-id="'
+
currentResType
+
'"]'
,
'[data-id="'
+
currentResType
.
split
(
'_'
)[
0
]
+
'"]'
);
renderList
(
currentResType
,
''
);
// renderList($(this).data("res-card"));
// $("div[data-id='"+nodeId+"']").find(".layui-tree-entry:first span.layui-tree-txt").trigger("click")
});
// 树收缩事件
$
(
'#resindex-leftree-shrink'
).
on
(
'click'
,
function
()
{
$
(
".resIndexLeft"
).
animate
({
width
:
0
,
minWidth
:
0
,
marginLeft
:
0
},
300
,
function
()
{
$
(
"#resindex-leftree_btn"
).
show
();
$
(
'#resindex-leftree-shrink'
).
hide
();
});
});
//获取全部协议
function
initProtocolSelect
()
{
admin
.
req
({
url
:
common
.
domainName
+
'/api-web/manage/protocol/page'
,
data
:
{
access_token
:
accessToken
,
startTime
:
''
,
endTime
:
''
,
keyword
:
''
,
hasParam
:
''
,
limit
:
-
1
}
}).
done
(
function
(
res
)
{
xmSelect
.
render
({
el
:
'#collProtocolSelect'
,
filterable
:
true
,
tips
:
'=采集协议='
,
name
:
'collProtocols'
,
prop
:
{
name
:
'protocolName'
,
value
:
'protocolCode'
,
}
,
model
:
{
label
:
{
type
:
'block'
,
block
:
{
//最大显示数量, 0:不限制
showCount
:
1
,
//是否显示删除图标
showIcon
:
true
,
}
}
}
,
data
:
res
.
data
,
hide
:
function
()
{
var
selectValue
=
xmSelect
.
get
(
'#collProtocolSelect'
,
true
).
getValue
(
'value'
);
collProtocols
=
selectValue
.
join
(
','
);
form
.
render
()
reloadTable
();
}
})
})
}
//树展开事件
$
(
"#resindex-leftree_btn"
).
on
(
"click"
,
function
()
{
$
(
"#resindex-leftree_btn"
).
hide
();
$
(
"#resindex-leftree-shrink"
).
show
();
$
(
".resIndexLeft"
).
animate
({
minWidth
:
170
,
marginLeft
:
10
},
300
);
});
var
loading
=
layer
.
load
(
2
,
{
shade
:
0.2
});
//统计
function
renderIndex
(
resType
)
{
$
(
'#resIndexContent'
).
show
();
$
(
'#resListContent'
).
hide
();
$
(
'#resDetailContent'
).
empty
();
$
(
'#resDetailContent'
).
hide
();
$
(
'#treeTableContent'
).
hide
();
//如果是阿里云,则显示阿里云的列表
if
(
resType
&&
resType
==
'ALI_CLOUD_PLAT'
){
$
(
".resindexlist"
).
show
();
renderTableList
(
"ALI_CLOUD_PLAT"
);
}
else
{
$
(
".resindexlist"
).
hide
();
}
var
resindexTable
=
$
(
'#resindexTable'
);
autoHeight
(
resindexTable
);
window
.
setResizeEvents
(
'autoHeight'
,
autoHeight
);
admin
.
req
({
url
:
common
.
domainName
+
'/api-web/home/resource/healthByResType?pResType='
+
resType
,
}).
done
(
function
(
res
)
{
laytpl
(
$
(
'#resindexTpl'
).
html
()).
render
({
list
:
res
.
data
},
function
(
html
)
{
resindexTable
.
html
(
html
);
});
});
}
admin
.
req
({
url
:
common
.
domainName
+
'/api-web/home/resType/getTree?notExist=machineroom&table=resources&exist=HOST_MINICOMPUTER_SERVER'
,
type
:
'get'
,
sync
:
true
,
done
:
function
(
res
)
{
layer
.
close
(
loading
);
loadResTree
(
res
.
data
);
//joke add 20200407,如果没有资源树,则默认资源页给提示无数据 开始
if
(
res
.
data
.
length
===
0
)
{
var
resindexTable
=
$
(
'#resindexTable'
);
autoHeight
(
resindexTable
);
laytpl
(
$
(
'#resindexTpl'
).
html
()).
render
({
list
:
res
.
data
},
function
(
html
)
{
resindexTable
.
html
(
html
);
});
}
loadParamSelect
();
//joke add 20200407,如果没有资源树,则默认资源页给提示无数据 开始
}
}).
error
(
function
()
{
layer
.
close
(
loading
);
//joke add 20200407
//树无数据提示
tree
.
render
({
elem
:
'#resindextree'
,
showLine
:
false
,
data
:
new
Array
()
});
//右侧无数据提示
var
resindexTable
=
$
(
'#resindexTable'
);
autoHeight
(
resindexTable
);
laytpl
(
$
(
'#resindexTpl'
).
html
()).
render
({
list
:
new
Array
()},
function
(
html
)
{
resindexTable
.
html
(
html
);
});
});
//不带分页的列表
function
renderTableList
(
resType
)
{
//渲染表格
var
resTableList
;
//获取配置的列
common
.
getTableCols
({
domId
:
'resTableList'
,
moduleId
:
'resIndex'
,
resType
:
resType
},
function
(
retCols
)
{
var
cols
;
if
(
retCols
)
{
cols
=
retCols
;
}
else
{
cols
=
commonCols
.
resTypeCls
[
resType
];
}
resTableList
=
table
.
render
({
elem
:
'#resindexList'
,
id
:
'resindexList'
,
url
:
common
.
domainName
+
'/api-web/home/res-list/'
+
resType
,
toolbar
:
'<div><button id="resTableIndex_cols_save" class="layui-btn layui-btn-primary layui-btn-xs toolbar-btn" lay-tips="保存列顺序"><i class="iconfont"></i></button></div>'
,
where
:
{
access_token
:
accessToken
,
resCategory
:
'resources'
}
,
height
:
'100'
,
cellMinWidth
:
80
,
page
:
false
,
cols
:
[
cols
]
,
done
:
function
(
res
,
curr
,
count
)
{
//2021/10/18 徐毫杰 阿里云服务器更改样式
if
(
resType
==
'ALI_CLOUD_PLAT'
){
$
(
'.layui-table-view'
).
height
(
170
);
$
(
'.layui-table-main'
).
height
(
70
);
}
//调用收藏方法
resFavorites
();
resTopo
();
commonCols
.
colsClickEvent
(
editFlag
);
//触发拖动列事件,参数为保存按钮的id
common
.
dragCols
(
"resTableIndex_cols_save"
);
//保存列顺序
$
(
"#resTableIndex_cols_save"
).
unbind
(
"click"
).
on
(
"click"
,
function
()
{
var
params
=
{
domId
:
'resTableList'
,
moduleId
:
'resIndex'
,
resType
:
resType
,
cols
:
resTableList
.
config
.
cols
}
common
.
saveTableCols
(
params
);
});
}
});
});
}
//左侧树
function
loadResTree
(
data
)
{
//默认展开全部一级节点
$
.
each
(
data
,
function
(
i
,
v
)
{
v
.
spread
=
true
;
})
tree
.
render
({
elem
:
'#resindextree'
,
showLine
:
false
,
data
:
data
,
click
:
function
(
node
)
{
if
(
node
.
data
.
children
.
length
==
1
)
{
$
(
'[data-id="'
+
node
.
data
.
children
[
0
].
id
+
'"]'
).
find
(
'.layui-tree-iconClick:first'
).
click
()
}
curTreeNode
=
node
;
currentResType
=
node
.
data
.
id
;
var
el
=
null
;
if
(
node
.
data
.
children
)
{
el
=
$
(
node
.
elem
[
0
]).
find
(
'>.layui-tree-entry .layui-tree-txt'
);
}
else
{
el
=
$
(
node
.
elem
[
0
]).
find
(
'.layui-tree-txt'
);
}
var
action
=
'removeClass'
;
if
(
!
el
.
hasClass
(
'tree-node-select'
)
&&
node
.
state
===
'open'
)
{
action
=
'addClass'
;
el
.
parents
(
'.layui-tree'
).
find
(
'.tree-node-select'
).
removeClass
(
'tree-node-select'
);
}
el
[
action
](
'tree-node-select'
);
// 决定显示那个视图
var
optionsStr
=
JSON
.
parse
(
node
.
data
.
code
)[
'options'
];
if
(
optionsStr
&&
optionsStr
!=
""
)
{
options
=
JSON
.
parse
(
optionsStr
);
var
callback
=
options
.
viewCallBack
;
var
fun
=
eval
(
callback
);
// 获取回调方法
if
(
$
.
isFunction
(
fun
))
{
fun
.
call
(
this
,
data
,
node
.
data
,
options
);
}
}
}
});
if
(
data
.
length
>
0
)
{
var
optionsStr
=
JSON
.
parse
(
data
[
0
].
code
)[
'options'
];
if
(
optionsStr
&&
optionsStr
!=
""
)
{
options
=
JSON
.
parse
(
optionsStr
);
var
callback
=
options
.
viewCallBack
;
var
fun
=
eval
(
callback
);
// 获取回调方法
if
(
$
.
isFunction
(
fun
))
{
fun
.
call
(
this
,
data
,
data
[
0
],
options
);
currentResType
=
data
[
0
].
id
;
curTreeNode
=
data
[
0
];
}
}
}
}
//回选树节点
function
selectedTreeNode
(
target
,
parentTarget
)
{
var
el
=
$
(
target
).
find
(
'.layui-tree-txt'
).
eq
(
0
);
var
action
=
'removeClass'
;
if
(
!
el
.
hasClass
(
'tree-node-select'
))
{
action
=
'addClass'
;
el
.
parents
(
'.layui-tree'
).
find
(
'.tree-node-select'
).
removeClass
(
'tree-node-select'
);
}
el
[
action
](
'tree-node-select'
);
el
.
parents
(
'.layui-tree'
).
find
(
parentTarget
).
find
(
".layui-tree-set"
).
addClass
(
"layui-tree-spread"
);
el
.
parents
(
'.layui-tree'
).
find
(
parentTarget
).
find
(
".layui-tree-pack"
).
show
();
}
//资源详细页
function
loadResDetailInfo
(
parentNode
,
data
,
node
,
options
)
{
var
resId
=
data
.
id
;
var
resType
=
data
.
pid
;
renderDetail
(
resId
,
resType
);
}
//子节点统计
function
loadChildResTypeCount
(
parentNode
,
data
,
node
,
options
)
{
var
resId
=
data
.
id
;
for
(
var
i
=
0
;
i
<
parentNode
.
length
;
i
++
)
{
if
(
parentNode
.
id
==
data
.
id
)
{
resId
=
''
;
break
;
}
}
renderIndex
(
resId
);
}
//资源视图列表
function
openResourceView
(
parentNode
,
data
,
node
,
options
)
{
renderList
(
data
.
id
);
}
//资源视图父级列表
function
openParentResourceView
(
parentNode
,
data
,
node
,
options
)
{
renderParentList
(
data
.
id
);
}
//加载虚拟化数据(平台、资源池、物理机、虚拟机)
function
loadVirtualizationView
(
parentNode
,
data
,
node
,
options
)
{
$
(
'#res_coll_protocol_select_div'
).
show
();
//绑定业务
// common.bizTypeSelect("treetableBizTypes", function () {
// form.render("select");
// });
//$('#treetableBizTypes').val('');
//绑定采集协议
admin
.
req
({
url
:
domainName
+
'/api-web/manage/protocol/page'
,
data
:
{
access_token
:
accessToken
,
startTime
:
''
,
endTime
:
''
,
keyword
:
''
,
hasParam
:
''
,
limit
:
-
1
}
}).
done
(
function
(
res
)
{
xmSelect
.
render
({
el
:
'#collProtocolSelect'
,
filterable
:
true
,
tips
:
'=采集协议='
,
name
:
'collProtocols'
,
prop
:
{
name
:
'protocolName'
,
value
:
'protocolCode'
,
}
,
model
:
{
label
:
{
type
:
'block'
,
block
:
{
//最大显示数量, 0:不限制
showCount
:
1
,
//是否显示删除图标
showIcon
:
true
,
}
}
}
,
data
:
res
.
data
,
hide
:
function
()
{
var
selectValue
=
xmSelect
.
get
(
'#collProtocolSelect'
,
true
).
getValue
(
'value'
);
collProtocols
=
selectValue
.
join
(
','
);
form
.
render
()
reloadTable
();
if
(
collProtocols
)
{
xmSelect
.
get
(
'#collProtocolSelect'
,
true
).
setValue
([]);
collProtocols
=
''
;
form
.
render
();
}
}
})
})
//绑定业务下拉选择数据
admin
.
req
({
url
:
domainName
+
'/api-web/home/business/findAllBusType'
,
success
:
function
(
response
)
{
if
(
response
&&
response
.
success
)
{
busTypeList
=
response
.
data
;
var
bizList
=
response
.
data
.
map
(
item
=>
{
return
{
name
:
item
.
busTypeName
,
value
:
item
.
busId
,
parentId
:
item
.
parentId
}
});
var
bizTree
=
common
.
pidToChildren
(
bizList
,
'value'
,
'parentId'
);
// 影响业务下拉框
busIdSelect
=
xmSelect
.
render
({
el
:
'#treetableBizTypes'
,
name
:
'bizId'
,
tips
:
'=所属业务='
,
//开启搜索
filterable
:
true
,
initValue
:
[
bizId
.
split
(
','
)[
0
]],
toolbar
:
{
show
:
true
,
list
:
[
'ALL'
,
'REVERSE'
,
'CLEAR'
]
},
height
:
'400px'
,
tree
:
{
show
:
true
,
showFolderIcon
:
true
,
showLine
:
true
,
strict
:
true
,
//间距
indent
:
20
,
},
data
:
bizTree
,
on
:
function
(
data
)
{
if
(
data
.
arr
.
length
!=
0
)
{
var
str
=
''
;
$
.
each
(
data
.
arr
,
function
(
i
,
v
)
{
str
+=
v
.
value
+
','
;
})
bizId
=
str
.
substring
(
0
,
str
.
length
-
1
);
}
else
{
bizId
=
''
;
}
form
.
render
();
renderTreeTable
(
curTreeNode
.
data
.
id
)
}
});
if
(
busIdSelect
){
//追加样式
$
(
'#treetableBizTypes'
).
find
(
'.xm-body'
).
eq
(
0
).
css
(
"width"
,
"230px"
);
}
}
else
{
layer
.
msg
(
'获取业务失败'
,
{
icon
:
2
});
}
},
error
:
function
()
{
layer
.
msg
(
'获取业务失败'
,
{
icon
:
2
});
}
});
if
(
data
.
id
!=
'VIRTUALIZATION_VMWARE'
&&
data
.
id
!=
'VIRTUALIZATION_HUAWEI'
)
{
$
(
"#virtual_platform_div_id"
).
show
();
//绑定虚拟化平台
common
.
virtualPlatFormSelect
(
"virtual_platForm_select"
,
""
,
function
()
{
form
.
render
(
"select"
);
},
data
.
id
.
match
(
/
(
VIRTUALIZATION_
((?!
_
)
.
)
+
)(
.*
)
/
)[
1
]);
$
(
'#virtual_platForm_select'
).
val
(
''
);
}
//初始化业务下拉数据
if
(
busIdSelect
)
{
busIdSelect
.
setValue
([]);
bizId
=
''
;
form
.
render
();
}
renderTreeTable
(
data
.
id
);
}
//加载weblogic
function
loadWeblogicView
(
parentNode
,
data
,
node
,
options
)
{
// //绑定业务
//common.bizTypeSelect("treetableBizTypes", function () {
// form.render("select");
// });
// $('#treetableBizTypes').val('');
//绑定业务下拉选择数据
admin
.
req
({
url
:
domainName
+
'/api-web/home/business/findAllBusType'
,
success
:
function
(
response
)
{
if
(
response
&&
response
.
success
)
{
busTypeList
=
response
.
data
;
var
bizList
=
response
.
data
.
map
(
item
=>
{
return
{
name
:
item
.
busTypeName
,
value
:
item
.
busId
,
parentId
:
item
.
parentId
}
});
var
bizTree
=
common
.
pidToChildren
(
bizList
,
'value'
,
'parentId'
);
// 影响业务下拉框
busIdSelect
=
xmSelect
.
render
({
el
:
'#treetableBizTypes'
,
name
:
'bizId'
,
tips
:
'=所属业务='
,
//开启搜索
filterable
:
true
,
initValue
:
[
bizId
.
split
(
','
)[
0
]],
toolbar
:
{
show
:
true
,
list
:
[
'ALL'
,
'REVERSE'
,
'CLEAR'
]
},
height
:
'400px'
,
tree
:
{
show
:
true
,
showFolderIcon
:
true
,
showLine
:
true
,
strict
:
true
,
//间距
indent
:
20
,
},
data
:
bizTree
,
on
:
function
(
data
)
{
if
(
data
.
arr
.
length
!=
0
)
{
var
str
=
''
;
$
.
each
(
data
.
arr
,
function
(
i
,
v
)
{
str
+=
v
.
value
+
','
;
})
bizId
=
str
.
substring
(
0
,
str
.
length
-
1
);
}
else
{
bizId
=
''
;
}
form
.
render
();
renderTreeTable
(
curTreeNode
.
data
.
id
);
}
});
if
(
busIdSelect
){
//追加样式
$
(
'#treetableBizTypes'
).
find
(
'.xm-body'
).
eq
(
0
).
css
(
"width"
,
"230px"
);
}
}
else
{
layer
.
msg
(
'获取业务失败'
,
{
icon
:
2
});
}
},
error
:
function
()
{
layer
.
msg
(
'获取业务失败'
,
{
icon
:
2
});
}
});
renderParentList
(
data
.
id
);
}
// //业务选择事件
// form.on('select(resListBizTypes)', function (data) {
// // renderList(currentResType);
// reloadTable();
// });
//绑定业务下拉选择数据
admin
.
req
({
url
:
domainName
+
'/api-web/home/business/findAllBusType'
,
success
:
function
(
response
)
{
if
(
response
&&
response
.
success
)
{
busTypeList
=
response
.
data
;
var
bizList
=
response
.
data
.
map
(
item
=>
{
return
{
name
:
item
.
busTypeName
,
value
:
item
.
busId
,
parentId
:
item
.
parentId
}
});
var
bizTree
=
common
.
pidToChildren
(
bizList
,
'value'
,
'parentId'
);
// 影响业务下拉框
busIdSelect
=
xmSelect
.
render
({
el
:
'#resListBizTypes'
,
name
:
'bizId'
,
tips
:
'=所属业务='
,
//开启搜索
filterable
:
true
,
initValue
:
[
bizId
.
split
(
','
)[
0
]],
toolbar
:
{
show
:
true
,
list
:
[
'ALL'
,
'REVERSE'
,
'CLEAR'
]
},
height
:
'400px'
,
tree
:
{
show
:
true
,
showFolderIcon
:
true
,
showLine
:
true
,
strict
:
true
,
//间距
indent
:
20
,
},
data
:
bizTree
,
on
:
function
(
data
)
{
if
(
data
.
arr
.
length
!=
0
)
{
var
str
=
''
;
$
.
each
(
data
.
arr
,
function
(
i
,
v
)
{
str
+=
v
.
value
+
','
;
})
bizId
=
str
.
substring
(
0
,
str
.
length
-
1
);
}
else
{
bizId
=
''
;
}
form
.
render
();
reloadTable
();
}
});
if
(
busIdSelect
){
//追加样式
$
(
'#resListBizTypes'
).
find
(
'.xm-body'
).
eq
(
0
).
css
(
"width"
,
"230px"
);
}
}
else
{
layer
.
msg
(
'获取业务失败'
,
{
icon
:
2
});
}
},
error
:
function
()
{
layer
.
msg
(
'获取业务失败'
,
{
icon
:
2
});
}
});
//连接状态
form
.
on
(
'select(link_state)'
,
function
(
data
)
{
// renderList(currentResType);
reloadTable
();
});
//集群选择事件
form
.
on
(
'select(res_cluster)'
,
function
(
data
)
{
// renderList(currentResType); new
reloadTable
();
});
//资源池选择事件
form
.
on
(
'select(res_colony)'
,
function
(
data
)
{
// renderList(currentResType); new
reloadTable
();
});
//资源状态
form
.
on
(
'select(resStatus)'
,
function
(
data
)
{
// renderList(currentResType);
reloadTable
();
});
//资源连接状态
form
.
on
(
'select(state)'
,
function
(
data
)
{
reloadTable
();
});
//资源池选择事件
form
.
on
(
'select(res_platform)'
,
function
(
data
)
{
// renderList(currentResType);
reloadTable
();
});
//阿里云平台选择事件
form
.
on
(
'select(aliyun_plantform)'
,
function
(
data
)
{
// renderList(currentResType);
reloadTable
();
});
//厂商选择事件
form
.
on
(
'select(res_vendor)'
,
function
(
data
)
{
// renderList(currentResType);
reloadTable
();
});
//小型服务器选择事件
form
.
on
(
'select(res_minicomputer)'
,
function
(
data
)
{
reloadTable
();
});
//资源池选择事件
form
.
on
(
'select(sub_restype)'
,
function
(
data
)
{
if
(
data
.
value
){
loadRightResTypeSelectEvent
(
data
.
value
,
"normal"
)
}
else
{
loadRightResTypeSelectEvent
(
currentResType
,
"normal"
)
}
// renderList(currentResType);
reloadTable
();
});
//回车搜索
$
(
'#resindex_keyword'
).
keydown
(
function
(
e
)
{
if
(
e
.
keyCode
===
13
)
{
// renderList(currentResType);
reloadTable
();
return
false
;
}
});
//资源详细信息
function
renderDetail
(
resId
,
resType
)
{
$
(
'#resIndexContent'
).
hide
();
$
(
'#resListContent'
).
hide
();
$
(
'#resDetailContent'
).
show
();
$
(
'#treeTableContent'
).
hide
();
var
url
=
common
.
detailPath
(
resType
,
resId
);
view
(
'commonViewModel'
).
render
(
url
).
then
(
function
(
res
)
{
var
params
=
{
"resId"
:
resId
,
"resType"
:
resType
};
laytpl
(
res
.
body
).
render
(
JSON
.
stringify
(
params
),
function
(
html
)
{
$
(
"#resDetailContent"
).
html
(
html
);
});
});
}
//树表格
function
renderTreeTable
(
resType
)
{
$
(
'#resIndexContent'
).
hide
();
$
(
'#resListContent'
).
hide
();
$
(
'#resDetailContent'
).
empty
();
$
(
'#resDetailContent'
).
hide
();
$
(
'#treeTableContent'
).
show
();
$
(
".top-head-info"
).
removeClass
(
"hide"
);
if
(
"MIDDLEWARE_WEBLOGIC"
==
resType
){
$
(
"#res_platform_id"
).
hide
()
}
if
(
resType
.
indexOf
(
"VIRTUALIZATION"
)
>-
1
){
$
(
"#tree_linkstate_area"
).
hide
()
}
if
(
resType
==
'VIRTUALIZATION_VMWARE'
||
resType
==
'VIRTUALIZATION_HUAWEI'
||
resType
==
'MIDDLEWARE_WEBLOGIC'
)
{
$
(
"#virtual_platform_div_id"
).
hide
();
}
var
index
=
layer
.
load
(
2
);
//加载层
var
cols
=
commonCols
.
resTypeCls
[
resType
];
admin
.
req
({
url
:
common
.
domainName
+
"/api-web/home/virtual-res-list/"
+
resType
,
type
:
"get"
,
data
:
{
ptId
:
$
(
"#virtual_platForm_select"
).
val
(),
busId
:
bizId
,
keyWords
:
$
(
"#treetable_keyword"
).
val
(),
health
:
$
(
"#treetable_resStatus"
).
val
(),
state
:
$
(
"#treetable_res_state"
).
val
(),
resCategory
:
'resources'
,
collProtocols
:
collProtocols
}
,
done
:
function
(
res
)
{
layer
.
close
(
index
);
if
(
res
.
code
==
0
)
{
//渲染表格
var
tableTreeVirtual
;
//获取配置的列
common
.
getTableCols
({
domId
:
'tableTreeVirtual'
,
moduleId
:
'resIndex'
,
resType
:
resType
},
function
(
retCols
)
{
if
(
retCols
)
{
cols
=
retCols
;
}
tableTreeVirtual
=
table
.
render
({
elem
:
'#virtual_platform_treeTable'
,
autoColumnWidth
:
false
,
page
:
false
,
limit
:
9999
,
data
:
res
.
data
,
tree
:
{
iconIndex
:
1
},
cols
:
[
cols
]
,
height
:
'full-220'
,
done
:
function
(
res
)
{
soulTable
.
render
(
this
);
//调用收藏方法
resFavorites
();
resTopo
();
common
.
treeTableDragCols
(
'#virtual_platform_treeTable'
,
'#resTreeList-top-head-info-tpl'
);
loadRightResTypeSelectEvent
(
curTreeNode
.
data
.
id
,
"tree"
)
// 保存列顺序
$
(
'#virtual_platform_treeTable'
).
next
().
find
(
'.btn_save_cols'
).
unbind
(
'click'
).
on
(
'click'
,
function
(){
common
.
saveTableCols
({
domId
:
'tableTreeVirtual'
,
moduleId
:
'resIndex'
,
resType
:
resType
,
cols
:
tableTreeVirtual
.
config
.
cols
});
});
commonCols
.
colsClickEvent
(
editFlag
);
}
});
/**
/**表格的增删改都会回调此方法
* 与table.on(tool(lay-filter))用法一致。
**/
/*tableTreeVirtual.on('tool(tableEvent)',function (obj) {
if(!obj.data.treeList){
var field = obj.field; //单元格字段
var value = obj.value; //修改后的值
var data = obj.data; //当前行数据
var event = obj.event; //当前单元格事件属性值
var subResType = '';
if(data.resType == 'VIRTUALIZATION_VMWARE' || data.resType == 'VIRTUALIZATION_HUAWEI'){
subResType = data.resType=='VIRTUALIZATION_VMWARE'?'VIRTUALIZATION_VMWARE_CLUSTER':'VIRTUALIZATION_HUAWEI_CLUSTER';
}else if(data.resType.indexOf('CLUSTER')>-1){
subResType = data.resType=='VIRTUALIZATION_VMWARE_CLUSTER'?'VIRTUALIZATION_VMWARE_PHYSICSHOST':'VIRTUALIZATION_HUAWEI_PHYSICSHOST';
}else if(data.resType.indexOf('PHYSICSHOST')>-1){
subResType = data.resType=='VIRTUALIZATION_VMWARE_PHYSICSHOST'?'VIRTUALIZATION_VMWARE_VHOST':'VIRTUALIZATION_HUAWEI_VHOST';
}else{
subResType = data.resType
}
if(event === 'loadChildren'){
$.ajax({
url: common.domainName + "/api-web/home/virtual-res-list/" + subResType
, type: "get"
, data: {
ptId: $("#virtual_platForm_select").val(),
health: $("#treetable_resStatus").val(),
busId: $("#treetableBizTypes").val(),
keyWords: $("#treetable_keyword").val(),
state: $("#treetable_state").val(),
access_token:accessToken,
parentId:data.resId
}
,success:function (res) {
if(res.data.length>0){
obj.loadChildren(res.data);
commonCols.colsClickEvent();
}
}
})
}
}
});*/
//统计总数
// $('#virtual_platform_treeTable').next().find('.layui-table-box').after(laytpl($('#treetable-countTpl').html()).render(res.data.length));
});
}
else
{
console
.
log
(
data
.
msg
);
}
//关键字回车事件
$
(
'#treetable_keyword'
).
keydown
(
function
(
e
)
{
if
(
e
.
keyCode
===
13
)
{
renderTreeTable
(
curTreeNode
.
data
.
id
)
return
false
;
}
});
//选择资源状态
form
.
on
(
'select(treetable_resStatus)'
,
function
(
data
)
{
renderTreeTable
(
curTreeNode
.
data
.
id
);
});
// //选择业务
// form.on('select(treetableBizTypes)', function (data) {
// renderTreeTable(curTreeNode.data.id);
// });
//选择平台
form
.
on
(
'select(virtual_platForm_select)'
,
function
(
data
)
{
renderTreeTable
(
curTreeNode
.
data
.
id
);
});
//选择资源连接状态
form
.
on
(
'select(treetable_state)'
,
function
(
data
)
{
renderTreeTable
(
curTreeNode
.
data
.
id
);
});
form
.
on
(
'select(treetable_res_state)'
,
function
(
data
)
{
renderTreeTable
(
curTreeNode
.
data
.
id
);
});
commonCols
.
colsClickEvent
(
editFlag
);
}
}).
error
(
function
()
{
layer
.
close
(
index
);
});
}
// //绑定业务下拉选择数据
// common.bizTypeSelect("resListBizTypes", function () {
// form.render("select");
// });
//绑定业务下拉选择数据
admin
.
req
({
url
:
domainName
+
'/api-web/home/business/findAllBusType'
,
success
:
function
(
response
)
{
if
(
response
&&
response
.
success
)
{
busTypeList
=
response
.
data
;
var
bizList
=
response
.
data
.
map
(
item
=>
{
return
{
name
:
item
.
busTypeName
,
value
:
item
.
busId
,
parentId
:
item
.
parentId
}
});
var
bizTree
=
common
.
pidToChildren
(
bizList
,
'value'
,
'parentId'
);
// 影响业务下拉框
busIdSelect
=
xmSelect
.
render
({
el
:
'#resListBizTypes'
,
name
:
'bizId'
,
tips
:
'=所属业务='
,
//开启搜索
filterable
:
true
,
initValue
:
[
bizId
.
split
(
','
)[
0
]],
toolbar
:
{
show
:
true
,
list
:
[
'ALL'
,
'REVERSE'
,
'CLEAR'
]
},
height
:
'400px'
,
tree
:
{
show
:
true
,
showFolderIcon
:
true
,
showLine
:
true
,
strict
:
true
,
//间距
indent
:
20
,
},
data
:
bizTree
,
on
:
function
(
data
)
{
if
(
data
.
arr
.
length
!=
0
)
{
var
str
=
''
;
$
.
each
(
data
.
arr
,
function
(
i
,
v
)
{
str
+=
v
.
value
+
','
;
})
bizId
=
str
.
substring
(
0
,
str
.
length
-
1
);
}
else
{
bizId
=
''
;
}
form
.
render
();
reloadTable
();
}
});
if
(
busIdSelect
){
//追加样式
$
(
'#resListBizTypes'
).
find
(
'.xm-body'
).
eq
(
0
).
css
(
"width"
,
"230px"
);
}
}
else
{
layer
.
msg
(
'获取业务失败'
,
{
icon
:
2
});
}
},
error
:
function
()
{
layer
.
msg
(
'获取业务失败'
,
{
icon
:
2
});
}
});
form
.
render
(
null
,
'res-list-form'
);
//父级资源列表
function
renderParentList
(
resType
)
{
$
(
'#resIndexContent'
).
hide
();
$
(
'#resListContent'
).
show
();
$
(
'#resDetailContent'
).
empty
();
$
(
'#resDetailContent'
).
hide
();
$
(
'#treeTableContent'
).
hide
();
//加载查询条件
renderSerach
(
resType
,
true
);
// , {field: 'state', title: '连接状态', minWidth: 100, align: 'center', templet: '#resListContentTpl'}];
if
(
resType
&&
resType
!=
'PASSWORD_SERVER'
&&
!
/VIRTUALIZATION_
((?!
_
)
.
)
+_
(
PHYSICSHOST|VHOST
)
/
.
test
(
resType
)){
$
(
'#link_state_div'
).
show
();
$
(
'#host_state_div'
).
hide
();
$
(
'#power_state_div'
).
hide
();
}
else
if
(
/VIRTUALIZATION_
((?!
_
)
.
)
+_PHYSICSHOST/
.
test
(
resType
)){
$
(
'#link_state_div'
).
hide
();
$
(
'#host_state_div'
).
show
();
$
(
'#power_state_div'
).
hide
();
}
else
if
(
/VIRTUALIZATION_
((?!
_
)
.
)
+_VHOST/
.
test
(
resType
)){
$
(
'#link_state_div'
).
hide
();
$
(
'#host_state_div'
).
hide
();
$
(
'#power_state_div'
).
show
();
}
//渲染表格
var
cols
=
commonCols
.
resTypeCls
[
resType
];
//获取配置的列
common
.
getTableCols
({
domId
:
'parentResListTable'
,
moduleId
:
'resIndex'
,
resType
:
resType
},
function
(
retCols
)
{
if
(
retCols
){
cols
=
retCols
;
}
parentResListTable
=
table
.
render
({
elem
:
'#resListTable'
,
id
:
'resListTable'
,
toolbar
:
'#resList-top-head-info-tpl'
//开启头部工具栏,并为其绑定左侧模板
,
defaultToolbar
:
[
'filter'
]
,
drag
:
{
toolbar
:
false
}
,
url
:
common
.
domainName
+
'/api-web/home/res-list/'
+
resType
,
where
:
{
access_token
:
accessToken
,
resName
:
$
(
"#resindex_keyword"
).
val
(),
busId
:
bizId
,
resHealth
:
$
(
"#resStatus"
).
val
(),
colonlyId
:
$
(
"#res_colony"
).
val
(),
parentId
:
$
(
"#res_cluster"
).
val
(),
sortKey
:
sortKey
,
state
:
$
(
"#state"
).
val
(),
linkState
:
$
(
"#link_state"
).
val
(),
hostState
:
$
(
"#host_state"
).
val
(),
powerState
:
$
(
"#power_state"
).
val
(),
resCategory
:
'resources'
}
,
height
:
'full-165'
,
cellMinWidth
:
80
,
page
:
{
layout
:
[
'count'
,
'prev'
,
'page'
,
'next'
,
'limit'
,
'skip'
]
,
theme
:
'#1E9FFF'
}
,
autoSort
:
false
,
limit
:
150
,
limits
:
[
150
,
200
,
300
]
,
cols
:
[
cols
]
,
done
:
function
(
res
,
curr
,
count
)
{
//更改样式
function
noClick
(
$that
)
{
$that
.
css
(
"color"
,
"#666"
);
$that
.
css
(
"text-decoration"
,
"none"
);
$that
.
attr
(
"lay-tips"
,
"未监控到数据"
);
}
// 共享设备,厂商是H3C、HDS的设备不让点击并且提示暂无监控信息
var
$hsc_
=
$
(
'span[data-restype="STORAGE_SHARE"][data-provider="H3C"]'
);
$
.
each
(
$hsc_
,
function
(
i
,
v
)
{
noClick
(
$
(
this
));
});
var
$hds
=
$
(
'span[data-restype="STORAGE_SHARE"][data-provider="HDS"]'
);
$
.
each
(
$hds
,
function
(
i
,
v
)
{
noClick
(
$
(
this
));
});
//华为云,阿里云不让点击,并且提示暂无监控信息
// var $hds = $('span[data-restype="HUAWEI_CLOUD_PLAT"]');
// $.each($hds, function (i, v) {
// noClick($(this));
// });
// var $hds = $('span[data-restype="ALI_CLOUD_PLAT"]');
// $.each($hds, function (i, v) {
// noClick($(this));
// });
soulTable
.
render
(
this
)
//调用收藏方法
resFavorites
();
resTopo
();
commonCols
.
colsClickEvent
(
editFlag
);
//表格排序监听 joke add 20200408
table
.
on
(
'sort(resListTable)'
,
function
(
obj
)
{
//有些时候,你可能需要根据当前排序的字段,重新向服务端发送请求,从而实现服务端排序,如:
if
(
obj
.
type
!=
null
)
{
if
(
obj
.
field
==
'ip'
)
{
sortKey
=
'INET_ATON('
+
obj
.
field
+
') '
+
obj
.
type
;
}
else
{
sortKey
=
obj
.
field
+
' '
+
obj
.
type
;
}
}
else
{
sortKey
=
''
;
}
reloadTable
();
})
//触发拖动列事件,参数为保存按钮的id
common
.
dragCols
(
"parentResIndex_cols_save"
);
//保存列顺序
$
(
"#parentResIndex_cols_save"
).
unbind
(
"click"
).
on
(
"click"
,
function
()
{
var
params
=
{
domId
:
'parentResListTable'
,
moduleId
:
'resIndex'
,
resType
:
resType
,
cols
:
parentResListTable
.
config
.
cols
}
common
.
saveTableCols
(
params
);
});
// 渲染统计数据
loadRightResTypeSelectEvent
(
resType
,
"normal"
);
}
});
});
}
//资源列表
function
renderList
(
resType
,
id
)
{
$
(
'#resIndexContent'
).
hide
();
$
(
'#resListContent'
).
show
();
$
(
'#resDetailContent'
).
empty
();
$
(
'#resDetailContent'
).
hide
();
$
(
'#treeTableContent'
).
hide
();
//加载查询条件
renderSerach
(
resType
);
// , {field: 'state', title: '连接状态', minWidth: 100, align: 'center', templet: '#resListContentTpl'}];
if
(
resType
&&
resType
!=
'PASSWORD_SERVER'
&&
!
/VIRTUALIZATION_
((?!
_
)
.
)
+_
(
PHYSICSHOST|VHOST
)
/
.
test
(
resType
)){
$
(
'#link_state_div'
).
show
();
$
(
'#host_state_div'
).
hide
();
$
(
'#power_state_div'
).
hide
();
}
else
if
(
/VIRTUALIZATION_
((?!
_
)
.
)
+_PHYSICSHOST/
.
test
(
resType
)){
$
(
'#link_state_div'
).
hide
();
$
(
'#host_state_div'
).
show
();
$
(
'#power_state_div'
).
hide
();
}
else
if
(
/VIRTUALIZATION_
((?!
_
)
.
)
+_VHOST/
.
test
(
resType
)){
$
(
'#link_state_div'
).
hide
();
$
(
'#host_state_div'
).
hide
();
$
(
'#power_state_div'
).
show
();
}
var
cols
=
commonCols
.
resTypeCls
[
resType
];
//获取配置的列
common
.
getTableCols
({
domId
:
'resListTable'
,
moduleId
:
'resIndex'
,
resType
:
resType
},
function
(
retCols
)
{
if
(
retCols
)
{
cols
=
retCols
;
}
resListTable
=
table
.
render
({
elem
:
'#resListTable'
,
id
:
'resListTable'
,
toolbar
:
'<div><button id="resIndex_cols_save" class="layui-btn layui-btn-primary layui-btn-xs toolbar-btn" lay-tips="保存列顺序"><i class="iconfont"></i></button></div>'
//开启头部工具栏,并为其绑定左侧模板
,
defaultToolbar
:
[
'filter'
]
,
drag
:
{
toolbar
:
false
}
,
url
:
common
.
domainName
+
'/api-web/home/res-list/'
+
resType
,
where
:
{
access_token
:
accessToken
,
resName
:
$
(
"#resindex_keyword"
).
val
()
!==
''
?
$
(
"#resindex_keyword"
).
val
()
:
id
,
busId
:
bizId
,
resHealth
:
$
(
"#resStatus"
).
val
(),
colonlyId
:
$
(
"#res_colony"
).
val
(),
parentId
:
$
(
"#res_cluster"
).
val
(),
sortKey
:
sortKey
,
state
:
$
(
"#state"
).
val
(),
linkState
:
$
(
"#link_state"
).
val
(),
hostState
:
$
(
"#host_state"
).
val
(),
powerState
:
$
(
"#power_state"
).
val
(),
provider
:
$
(
"#res_vendor"
).
val
(),
resCategory
:
'resources'
}
,
height
:
'full-165'
,
cellMinWidth
:
80
,
page
:
{
layout
:
[
'count'
,
'prev'
,
'page'
,
'next'
,
'limit'
,
'skip'
]
,
theme
:
'#1E9FFF'
}
,
autoSort
:
false
,
limit
:
150
,
limits
:
[
150
,
200
,
300
]
,
cols
:
[
cols
]
,
done
:
function
(
res
,
curr
,
count
)
{
soulTable
.
render
(
this
)
//调用收藏方法
resFavorites
();
resTopo
();
commonCols
.
colsClickEvent
(
editFlag
);
//表格排序监听 joke add 20200408
table
.
on
(
'sort(resListTable)'
,
function
(
obj
)
{
//有些时候,你可能需要根据当前排序的字段,重新向服务端发送请求,从而实现服务端排序,如:
if
(
obj
.
type
!=
null
)
{
sortKey
=
obj
.
field
+
' '
+
obj
.
type
;
}
else
{
sortKey
=
''
;
}
reloadTable
();
})
//触发拖动列事件,参数为保存按钮的id
common
.
dragCols
(
"resIndex_cols_save"
);
//保存列顺序
$
(
"#resIndex_cols_save"
).
unbind
(
"click"
).
on
(
"click"
,
function
()
{
var
params
=
{
domId
:
'resListTable'
,
moduleId
:
'resIndex'
,
resType
:
resType
,
cols
:
resListTable
.
config
.
cols
}
common
.
saveTableCols
(
params
);
$
(
this
).
addClass
(
"hide"
);
});
}
});
});
}
function
getResCount
(
resType
)
{
admin
.
req
({
url
:
common
.
domainName
+
"/api-web/home/res-list/count/"
+
resType
,
type
:
"get"
,
done
:
function
(
data
)
{
var
rest
=
data
.
map
;
if
(
data
.
code
===
0
)
{
$
(
"#resGoodCount"
).
text
(
"优:"
+
rest
.
good
);
$
(
"#resWorseCount"
).
text
(
"良:"
+
rest
.
worse
);
$
(
"#resWorstCount"
).
text
(
"中:"
+
rest
.
worst
);
}
else
{
console
.
log
(
data
.
msg
);
}
}
});
}
//加载资源池、集群等查询条件
function
renderSerach
(
resType
,
subflag
)
{
//清空查询条件 joke add 20200409 开始
$
(
'#resindex_keyword'
).
val
(
''
);
$
(
'#resStatus'
).
val
(
''
);
// $('#resListBizTypes').val('');
if
(
xmSelect
.
get
(
"#resListBizTypes"
)
&&
xmSelect
.
get
(
"#resListBizTypes"
)[
0
]){
xmSelect
.
get
(
"#resListBizTypes"
)[
0
].
setValue
([]);
}
$
(
"#aliyun_plantform"
).
val
(
''
);
$
(
'#res_colony'
).
val
(
''
);
$
(
'#res_cluster'
).
val
(
''
);
$
(
'#state'
).
val
(
''
);
$
(
'#link_state'
).
val
(
''
);
//虚拟化查询条件清空
$
(
"#virtual_platForm_select"
).
val
(
''
);
$
(
"#treetable_resStatus"
).
val
(
''
);
//$("#treetableBizTypes").val('');
if
(
xmSelect
.
get
(
"#treetableBizTypes"
)
&&
xmSelect
.
get
(
"#treetableBizTypes"
)[
0
]){
xmSelect
.
get
(
"#treetableBizTypes"
)[
0
].
setValue
([]);
}
// if(xmSelect.get("#collProtocolSelect") && xmSelect.get("#collProtocolSelect")[0]){
// xmSelect.get("#collProtocolSelect")[0].setValue([]);
// }
$
(
"#treetable_keyword"
).
val
(
''
);
$
(
"#treetable_state"
).
val
(
''
);
$
(
"#host_state"
).
val
(
''
);
$
(
"#power_state"
).
val
(
''
);
if
(
busIdSelect
){
busIdSelect
.
setValue
([]);
bizId
=
''
;
}
form
.
render
(
'select'
);
form
.
render
();
//清空查询条件 joke add 20200409 结束
var
targetId
=
''
;
var
searchType
=
""
;
var
optons
=
""
;
//阿里云显示平台
if
(
/ALI_CLOUD/
.
test
(
resType
)){
$
(
"#aliyun_plantform"
).
parent
().
parent
().
removeClass
(
"hide"
);
form
.
render
(
"select"
);
}
else
{
$
(
"#aliyun_plantform"
).
parent
().
parent
().
addClass
(
"hide"
);
}
//华为云物理机,加载华为云集群查询条件
if
(
resType
==
'HUAWEI_CLOUD_PHYSICSHOST'
)
{
optons
=
"<option value=''>=所属集群=</option>"
searchType
=
"HUAWEI_CLOUD_CLUSTER"
;
targetId
=
"res_cluster"
;
$
(
"#res_cluster_id"
).
show
();
}
else
if
(
"MIDDLEWARE_WEBLOGIC"
==
resType
)
{
optons
=
"<option value=''>=所属控制台=</option>"
searchType
=
"MIDDLEWARE_WEBLOGIC"
;
targetId
=
'res_cluster'
$
(
"#res_cluster_id"
).
show
();
}
else
{
$
(
"#res_cluster_id"
).
hide
();
}
//vmware虚拟机 joke add 20200528
if
(
/VIRTUALIZATION_
((?!
_
)
.
)
+_
(
PHYSICSHOST|VHOST
)
/
.
test
(
resType
))
{
$
(
"#res_platform_id"
).
show
();
//绑定虚拟化平台
common
.
virtualPlatFormSelect
(
"res_platform"
,
""
,
function
()
{
form
.
render
(
"select"
);
},
resType
.
match
(
/
(
VIRTUALIZATION_
((?!
_
)
.
)
+
)
_
(
PHYSICSHOST|VHOST
)
/
)[
1
]);
}
else
{
$
(
"#res_platform_id"
).
hide
();
}
//华为云的集群、虚拟化物理机、虚拟机,查询条件绑定资源池
if
(
resType
==
'HUAWEI_CLOUD_CLUSTER'
||
/VIRTUALIZATION_
((?!
_
)
.
)
+_
(
PHYSICSHOST|VHOST
)
/
.
test
(
resType
))
{
optons
=
"<option value=''>=所属资源池=</option>"
if
(
/VIRTUALIZATION_
((?!
_
)
.
)
+_
(
PHYSICSHOST|VHOST
)
/
.
test
(
resType
))
{
searchType
=
"VIRTUALIZATION_"
+
resType
.
match
(
/VIRTUALIZATION_
(((?!
_
)
.
)
+
)
_
(
PHYSICSHOST|VHOST
)
/
)[
1
]
+
"_CLUSTER"
;
}
if
(
resType
==
'HUAWEI_CLOUD_CLUSTER'
)
{
searchType
=
"HUAWEI_CLOUD_COLONY"
;
}
targetId
=
"res_colony"
;
$
(
"#res_colony_id"
).
show
();
}
else
{
$
(
"#res_colony_id"
).
hide
();
}
if
(
"MIDDLEWARE_WEBLOGIC"
==
resType
)
{
$
(
"#res_platform_id"
).
hide
()
}
if
(
resType
==
'VIRTUALIZATION_VMWARE'
||
resType
==
'VIRTUALIZATION_HUAWEI'
||
resType
==
'MIDDLEWARE_WEBLOGIC'
)
{
$
(
"#virtual_platform_div_id"
).
hide
();
}
if
(
resType
==
'HOST_BMC'
)
{
$
(
"#res_vendor"
).
parent
().
parent
().
removeClass
(
"hide"
);
var
providerStr
=
''
;
$
.
ajax
({
url
:
`
$
{
common
.
domainName
}
/api-web/m
anage
/
ddic
/
findSucDdics
/
provider
?
access_token
=
$
{
accessToken
}
`
,
method
:
'POST'
,
success
:
function
(
res
)
{
if
(
res
&&
res
.
data
)
{
var
ddiclist
=
res
.
data
;
$
.
each
(
ddiclist
,
function
(
i
,
v
)
{
providerStr
+=
'<option value="'
+
v
.
ddicCode
+
'">'
+
v
.
ddicName
+
'</option>'
;
});
$
(
"#res_vendor"
).
append
(
providerStr
)
form
.
render
(
"select"
);
}
}
})
}
else
{
$
(
"#res_vendor"
).
parent
().
parent
().
addClass
(
"hide"
);
}
if
(
/HUAWEI_CLOUD_VIRTUALHOST/
.
test
(
resType
)
||
/ALI_CLOUD_ECS/
.
test
(
resType
)
||
/VIRTUALIZATION_VMWARE_VHOST/
.
test
(
resType
)){
//绑定采集协议
admin
.
req
({
url
:
domainName
+
'/api-web/manage/protocol/page'
,
data
:
{
access_token
:
accessToken
,
startTime
:
''
,
endTime
:
''
,
keyword
:
''
,
hasParam
:
''
,
limit
:
-
1
}
}).
done
(
function
(
res
)
{
$
(
'#res_coll_protocol_select_div'
).
show
();
xmSelect
.
render
({
el
:
'#collProtocolSelect'
,
filterable
:
true
,
tips
:
'=采集协议='
,
name
:
'collProtocols'
,
prop
:
{
name
:
'protocolName'
,
value
:
'protocolCode'
,
}
,
model
:
{
label
:
{
type
:
'block'
,
block
:
{
//最大显示数量, 0:不限制
showCount
:
1
,
//是否显示删除图标
showIcon
:
true
,
}
}
}
,
data
:
res
.
data
,
hide
:
function
()
{
var
selectValue
=
xmSelect
.
get
(
'#collProtocolSelect'
,
true
).
getValue
(
'value'
);
collProtocols
=
selectValue
.
join
(
','
);
form
.
render
()
reloadTable
();
if
(
collProtocols
)
{
xmSelect
.
get
(
'#collProtocolSelect'
,
true
).
setValue
([]);
collProtocols
=
''
;
form
.
render
();
}
}
})
})
}
else
{
$
(
'#res_coll_protocol_select_div'
).
hide
();
}
if
(
resType
===
'HOST_MINICOMPUTER_PARTITION'
)
{
$
(
"#res_minicomputer"
).
parent
().
parent
().
removeClass
(
"hide"
);
var
minicomputerStr
=
''
;
minicomputerStr
=
'<option value="">=小型机服务器=</option>'
;
let
url
=
`
$
{
common
.
domainName
}
/api-web/
home
/
res
-
list
/
hostMinicomputerPartitionParents
?
access_token
=
$
{
accessToken
}
`
$
.
ajax
({
url
:
url
,
method
:
'get'
,
success
:
function
(
res
)
{
if
(
res
&&
res
.
data
)
{
var
list
=
res
.
data
;
$
.
each
(
list
,
function
(
i
,
v
)
{
minicomputerStr
+=
'<option value="'
+
v
.
resId
+
'">'
+
v
.
resName
+
'</option>'
;
});
$
(
"#res_minicomputer"
).
empty
();
$
(
"#res_minicomputer"
).
append
(
minicomputerStr
)
form
.
render
(
"select"
);
}
}
})
}
else
{
$
(
"#res_minicomputer"
).
parent
().
parent
().
addClass
(
"hide"
);
}
if
(
targetId
&&
searchType
)
{
var
url
=
"/api-web/home/res-list/"
+
searchType
+
"?page=1&limit=50"
;
if
(
searchType
==
'MIDDLEWARE_WEBLOGIC'
){
url
+=
'&parentId=null&parentType=parent'
}
admin
.
req
({
url
:
common
.
domainName
+
url
}).
done
(
function
(
res
)
{
if
(
res
.
data
)
{
$
.
each
(
res
.
data
,
function
(
i
,
v
)
{
optons
+=
'<option value="'
+
v
.
resId
+
'">'
+
v
.
resName
+
'</option>'
;
});
}
$
(
'#'
+
targetId
).
html
(
optons
);
form
.
render
(
"select"
);
})
}
if
(
subflag
&&
!
resTypeSelectExclude
.
includes
(
resType
)){
if
(
/ALI_CLOUD_/
.
test
(
resType
)
||
/HUAWEI_CLOUD_/
.
test
(
resType
))
{
return
;
}
$
(
"#res_sub_restype"
).
parent
().
parent
().
removeClass
(
"hide"
);
$
(
".top-head-info"
).
removeClass
(
"hide"
);
var
url
=
`
$
{
common
.
domainName
}
/api-web/
bResource
/
finsResTypeListByParentId
?
resType
=
$
{
resType
}
`
admin
.
req
({
url
:
url
}).
done
(
function
(
res
)
{
var
subhtml
=
'<option value="">=资源类型=</option>'
;
if
(
res
.
data
)
{
$
.
each
(
res
.
data
,
function
(
i
,
v
)
{
subhtml
+=
'<option value="'
+
v
.
name
+
'">'
+
v
.
val
+
'</option>'
;
});
}
$
(
'#res_sub_restype'
).
html
(
subhtml
);
form
.
render
(
"select"
);
})
}
else
{
if
(
!
$
(
"#resListContent"
).
find
(
".top-head-info"
).
hasClass
(
"hide"
)){
$
(
"#resListContent"
).
find
(
".top-head-info"
).
addClass
(
"hide"
)
}
if
(
!
$
(
"#res_sub_restype"
).
parent
().
parent
().
hasClass
(
"hide"
)){
$
(
"#res_sub_restype"
).
parent
().
parent
().
addClass
(
"hide"
);
}
}
form
.
render
();
}
//加载右侧资源类型下拉框
function
loadRightResTypeSelectEvent
(
resType
,
type
)
{
layer
.
closeAll
(
'tips'
);
var
counturl
=
`
$
{
common
.
domainName
}
/api-web/
bResource
/
resCountInfomation
?
resType
=
$
{
resType
}
`
admin
.
req
({
url
:
counturl
,
data
:{
access_token
:
accessToken
,
subResType
:
$
(
"#res_sub_restype"
).
val
(),
resCategory
:
'resources'
,
resName
:
$
(
"#resindex_keyword"
).
val
(),
busId
:
bizId
,
health
:
$
(
"#resStatus"
).
val
(),
colonlyId
:
$
(
"#res_colony"
).
val
(),
parentId
:
$
(
"#res_cluster"
).
val
()
?
$
(
"#res_cluster"
).
val
()
:
$
(
'#res_minicomputer'
).
val
(),
state
:
$
(
"#state"
).
val
(),
linkState
:
$
(
"#link_state"
).
val
(),
hostState
:
$
(
"#host_state"
).
val
(),
powerState
:
$
(
"#power_state"
).
val
(),
ptId
:
$
(
"#res_platform"
).
val
(),
provider
:
$
(
"#res_vendor"
).
val
()
}
}).
done
(
function
(
res
)
{
var
str
=
''
;
var
domStr
=
'resListContent'
var
fun
=
reloadTable
;
if
(
type
==
'tree'
){
str
=
'tree_'
domStr
=
'treeTableContent'
fun
=
renderTreeTable
}
var
map
=
res
.
object
;
$
.
each
(
map
,
function
(
key
,
values
){
$
(
"#"
+
str
+
key
+
"_res"
).
html
(
map
[
key
])
});
$
(
"#"
+
domStr
).
find
(
".info-box-count .num span"
).
unbind
().
on
(
"click"
,
function
()
{
var
val
=
$
(
this
).
data
(
"value"
),
target
=
$
(
this
).
data
(
"target"
);
if
(
val
&&
target
){
$
(
"#"
+
target
).
val
(
val
);
form
.
render
(
"select"
);
fun
(
resType
);
}
else
{
$
(
'#resindex_keyword'
).
val
(
''
);
$
(
'#resStatus'
).
val
(
''
);
// $('#resListBizTypes').val('');
$
(
'#res_colony'
).
val
(
''
);
$
(
'#res_cluster'
).
val
(
''
);
$
(
'#state'
).
val
(
''
);
$
(
'#link_state'
).
val
(
''
);
$
(
"#virtual_platForm_select"
).
val
(
''
);
$
(
"#treetable_keyword"
).
val
(
''
);
$
(
"#treetable_resStatus"
).
val
(
''
);
$
(
"#treetable_res_state"
).
val
(
''
);
form
.
render
(
"select"
);
fun
(
resType
);
if
(
busIdSelect
){
busIdSelect
.
setValue
([
]);
bizId
=
''
;
form
.
render
();
}
}
})
form
.
render
(
"select"
);
form
.
render
();
})
}
//重新load表格
function
reloadTable
()
{
resListTable
=
parentResListTable
=
table
.
reload
(
'resListTable'
,
{
page
:
{
curr
:
1
}
,
where
:
{
//请求参数(注意:这里面的参数可任意定义,并非下面固定的格式)
access_token
:
accessToken
,
resName
:
$
(
"#resindex_keyword"
).
val
(),
busId
:
bizId
,
resHealth
:
$
(
"#resStatus"
).
val
(),
colonlyId
:
$
(
"#res_colony"
).
val
(),
parentId
:
$
(
"#res_cluster"
).
val
()
?
$
(
"#res_cluster"
).
val
()
:
$
(
'#res_minicomputer'
).
val
(),
sortKey
:
sortKey
,
state
:
$
(
"#state"
).
val
(),
linkState
:
$
(
"#link_state"
).
val
(),
hostState
:
$
(
"#host_state"
).
val
(),
powerState
:
$
(
"#power_state"
).
val
(),
ptId
:
$
(
"#res_platform"
).
val
(),
subResType
:
$
(
"#res_sub_restype"
).
val
(),
provider
:
$
(
"#res_vendor"
).
val
(),
resCategory
:
'resources'
,
collProtocols
:
collProtocols
,
platform
:
$
(
"#aliyun_plantform"
).
val
(),
}
})
}
//对比分析调用当前页面 开始
function
tabDom
(
resName
,
kpiName
,
name
,
info
)
{
//<div class="choose-tab"><span>浙江税务_出口退税_sc_134-内存使用率</span><a href="javascript:;">x</a></div>
var
html
=
'<div class="choose-tab">'
+
'<input type="hidden" name="chooseDataInfo">'
+
'<span>'
+
resName
+
'-'
+
kpiName
+
'</span>'
+
'<a href="javascript:;">x</a>'
+
'</div>'
var
$dom
=
$
(
html
)
$dom
.
find
(
"input[type=hidden][name=chooseDataInfo]"
).
val
(
info
);
$
(
".choose-resKpiInfo>.layui-card-header"
).
append
(
$dom
);
}
//获取选中的数据
function
getCheckData
()
{
var
arr
=
[];
$
.
each
(
$
(
"input[type=hidden][name=chooseDataInfo]"
),
function
(
i
,
e
)
{
arr
.
push
(
JSON
.
parse
(
e
.
value
))
})
return
arr
;
}
//从当前路由中获取数据参数自动定位
function
loadParamSelect
()
{
if
(
router
.
search
.
resType
)
{
currentResType
=
router
.
search
.
resType
;
var
currentResId
=
router
.
search
.
resId
?
router
.
search
.
resId
:
''
;
selectedTreeNode
(
'[data-id="'
+
currentResType
+
'"]'
,
'[data-id="'
+
currentResType
.
split
(
'_'
)[
0
]
+
'"]'
);
renderList
(
currentResType
,
currentResId
);
}
}
//资源收藏
function
resFavorites
()
{
//绑定鼠标移入移出事件
$
(
'table tr'
).
hover
(
function
(
obj
)
{
$
(
obj
.
currentTarget
).
find
(
'.layui-icon-rate'
).
removeClass
(
'hide'
);
},
function
(
obj
)
{
$
(
obj
.
currentTarget
).
find
(
'.layui-icon-rate'
).
addClass
(
'hide'
);
})
// 加入/移出收藏夹
$
(
'a.layui-icon-rate'
).
unbind
(
'click'
).
on
(
'click'
,
rate
);
function
rate
()
{
var
$aDom
=
$
(
this
);
var
resId
=
$aDom
.
data
(
'id'
);
var
favIdList
=
$aDom
.
data
(
'favid'
)
&&
$aDom
.
data
(
'favid'
)
!=
'null'
?
$aDom
.
data
(
'favid'
).
split
(
','
)
:
[];
admin
.
req
({
url
:
common
.
domainName
+
'/api-web/favorites/treeSelectData'
}).
done
(
function
(
response
)
{
var
data
=
response
.
data
;
if
(
data
.
length
==
0
)
{
var
selectValue
=
''
;
saveFavs
(
$aDom
,
selectValue
,
resId
,
'true'
)
}
else
if
(
data
.
length
==
1
)
{
var
selectValue
=
data
[
0
].
value
;
saveFavs
(
$aDom
,
selectValue
,
resId
,
'false'
);
}
else
{
layer
.
open
({
type
:
'1'
,
title
:
'选择收藏夹'
,
id
:
'layer-select-favorites'
,
content
:
'<div class="div-select-favorites"><div id="slt-favorites-tree"></div></div>'
,
offset
:
'150px'
,
area
:
[
'20%'
,
'25%'
],
btn
:
[
'选择'
,
'取消'
],
resize
:
false
,
success
:
function
()
{
admin
.
req
({
url
:
common
.
domainName
+
'/api-web/favorites/treeSelectData'
}).
done
(
function
(
response
)
{
xmSelect
.
render
({
el
:
'#slt-favorites-tree'
,
radio
:
true
,
clickClose
:
true
,
autoRow
:
true
,
filterable
:
true
,
height
:
'200px'
,
toolbar
:
{
show
:
true
,
},
model
:
{
label
:
{
type
:
'text'
}
},
tree
:
{
show
:
true
,
showFolderIcon
:
true
,
showLine
:
true
,
indent
:
20
,
expandedKeys
:
true
,
strict
:
false
},
data
:
data
});
});
},
yes
:
function
(
layerIndex
)
{
var
selectValue
=
xmSelect
.
get
(
'#slt-favorites-tree'
,
true
).
getValue
(
'value'
);
if
(
favIdList
.
length
===
0
&&
selectValue
.
length
===
0
)
{
layer
.
msg
(
'请选择一个收藏夹!'
,
{
icon
:
0
,
time
:
3000
});
return
false
;
}
var
favIds
=
selectValue
.
join
(
','
);
layer
.
load
(
2
);
saveFavs
(
$aDom
,
favIds
,
resId
,
'false'
,
layerIndex
);
}
});
}
})
}
//移出收藏夹
$
(
'a.layui-icon-rate-solid'
).
unbind
(
'click'
).
on
(
'click'
,
rateSolidClick
);
function
rateSolidClick
()
{
var
$aDom
=
$
(
this
);
var
resId
=
$aDom
.
data
(
'id'
);
var
favId
=
''
;
saveFavs
(
$aDom
,
favId
,
resId
,
'false'
);
}
//添加收藏夹/移出收藏夹
function
saveFavs
(
$aDom
,
favIds
,
resId
,
flag
,
layerIndex
)
{
admin
.
req
({
url
:
common
.
domainName
+
'/api-web/favorites/save/fav'
,
type
:
'POST'
,
data
:
{
favIds
:
favIds
,
resId
:
resId
,
flag
:
flag
},
error
:
function
()
{
layer
.
closeAll
(
'loading'
);
}
}).
done
(
function
(
response
)
{
layer
.
closeAll
(
'loading'
);
if
(
response
.
success
)
{
if
(
favIds
!=
''
||
(
flag
==
'true'
&&
favIds
==
''
))
{
$aDom
.
removeClass
(
'layui-icon-rate'
);
$aDom
.
removeClass
(
'hide'
);
$aDom
.
addClass
(
'layui-icon-rate-solid'
);
$aDom
.
unbind
(
'click'
).
on
(
'click'
,
rateSolidClick
);
$aDom
.
attr
(
'lay-tips'
,
'移出收藏夹'
);
$aDom
.
css
(
'color'
,
'#FEB61E'
).
css
(
'font-size'
,
'14px'
).
css
(
'margin-left'
,
'10px'
);
$aDom
.
data
(
'favid'
,
favIds
);
}
else
{
$aDom
.
removeClass
(
'layui-icon-rate-solid'
);
$aDom
.
addClass
(
'layui-icon-rate'
);
$aDom
.
unbind
(
'click'
).
on
(
'click'
,
rate
);
$aDom
.
addClass
(
'hide'
);
$aDom
.
attr
(
'lay-tips'
,
'加入收藏夹'
);
$aDom
.
css
(
'font-size'
,
'14px'
);
$aDom
.
data
(
'favid'
,
''
);
}
layer
.
close
(
layerIndex
);
}
else
{
layer
.
msg
(
'保存失败!'
,
{
icon
:
2
,
time
:
3000
});
}
});
}
}
function
resTopo
()
{
//绑定鼠标移入移出事件
$
(
'table tr'
).
hover
(
function
(
obj
)
{
$
(
obj
.
currentTarget
).
find
(
'.reslist-view-topo'
).
removeClass
(
'hide'
);
$
(
obj
.
currentTarget
).
find
(
'.reslist-assets-details'
).
removeClass
(
'hide'
);
},
function
(
obj
)
{
$
(
obj
.
currentTarget
).
find
(
'.reslist-view-topo'
).
addClass
(
'hide'
);
$
(
obj
.
currentTarget
).
find
(
'.reslist-assets-details'
).
addClass
(
'hide'
);
})
// 加入/移出收藏夹
$
(
'a.reslist-view-topo'
).
unbind
(
'click'
).
on
(
'click'
,
function
()
{
common
.
viewResTopo
(
$
(
this
).
data
(
'resid'
));
});
// 查看资产配置信息
$
(
'a.reslist-assets-details'
).
unbind
(
'click'
).
on
(
'click'
,
function
()
{
var
$that
=
$
(
this
);
var
resId
=
$that
.
data
(
"resid"
);
var
resType
=
$that
.
data
(
"restype"
);
var
resName
=
$that
.
data
(
"name"
)?
$that
.
data
(
"name"
):
''
;
var
ip
=
$that
.
data
(
"ip"
)?
$that
.
data
(
"ip"
):
''
;
var
name
=
resName
+
" "
+
ip
;
var
url
=
'assets/assetsProperty'
;
var
params
=
{
"resId"
:
resId
,
"resType"
:
resType
};
//资产配置信息弹窗大小设置
var
AREA_DEFAULT
=
[
'80%'
,
'80%'
];
var
AREA_DEFAULT_SMALL
=
[
'70%'
,
'80%'
];
var
AREA_DEFAULT_BIG
=
[
'90%'
,
'80%'
];
var
area
=
AREA_DEFAULT_SMALL
;
// if(resType==''){
// area=AREA_DEFAULT_SMALL;
// }
common
.
openWin
(
url
,
name
,
params
,
null
,
null
,
null
,
area
);
});
}
return
{
getData
:
getCheckData
};
});
});
\ No newline at end of file
...
...
hg-monitor-web-zj/src/main/resources/static/src/views/layout.html
View file @
b34a3f6
...
...
@@ -58,7 +58,7 @@
<
li
class
=
"layui-nav-item"
>
<
div
id
=
"toYTHView_div"
>
<
dd
layadmin
-
event
=
"toYTHViewScreen"
title
=
"一体化
控制
台"
><
a
><
img
src
=
"/src/style/img/icon-yitihuadaping.png"
style
=
"width: 16px;height: 16px"
><
/a></
dd
>
<
dd
layadmin
-
event
=
"toYTHViewScreen"
title
=
"一体化
监控
台"
><
a
><
img
src
=
"/src/style/img/icon-yitihuadaping.png"
style
=
"width: 16px;height: 16px"
><
/a></
dd
>
<
/div
>
<
/li
>
...
...
@@ -724,7 +724,7 @@
{{
#
var
linkStateHtml
=
''
;
var
linkStateTips
=
'无连接信息'
;
if
(
d
.
linkStateList
&&
d
.
linkStateList
.
length
)
{
if
(
d
.
linkStateList
&&
d
.
linkStateList
.
length
>=
0
)
{
linkStateTips
=
''
;
if
(
d
.
linkStateList
.
length
==
1
)
{
var
linkState
=
d
.
linkStateList
[
0
];
...
...
@@ -737,22 +737,43 @@
data
-
message
=
"${d.message}"
data
-
state
=
"${d.state}"
data
-
id
=
"${d.resId}_bizdanger"
class
=
"layui-btn
showTip
layui-btn-danger layui-bg-red layui-btn-radius layui-btn-xs p-0-15 cant-click"
>
class
=
"layui-btn layui-btn-danger layui-bg-red layui-btn-radius layui-btn-xs p-0-15 cant-click"
>
失败
<
/button>`
;
}
}
else
{
linkStateTips
+=
`
<
ul
class
=
'ul-link-state-tips'
>
`
;
layui
.
each
(
d
.
linkStateList
,
function
(
index
,
value
)
{
if
(
value
.
state
.
indexOf
(
'成功'
)
!==
-
1
)
{
linkStateTips
+=
`
<
li
class
=
'li-link-state-tips-green'
>
$
{
value
.
protocol
}
:
$
{
value
.
state
}
<
/li>`
;
linkStateHtml
+=
'<span class="layui-badge-dot layui-bg-green"></span>'
;
}
else
{
linkStateTips
+=
`
<
li
class
=
'li-link-state-tips-red'
>
$
{
value
.
protocol
}
:
$
{
value
.
state
}
<
/li>`
;
linkStateHtml
+=
'<span class="layui-badge-dot layui-bg-red"></span>'
;
if
(
d
.
linkStateList
.
length
==
0
){
if
(
d
.
hostState
==
'active'
||
d
.
hostState
==
'connected'
||
d
.
hostState
==
'正常'
){
linkStateHtml
=
'<button type="button" class="layui-btn layui-btn-radius layui-bg-green layui-btn-xs p-0-15 cant-click">成功</button>'
;
linkStateTips
+=
`
<
li
class
=
'li-link-state-tips-red'
>
自动发现
:
连接成功
<
/li>`
;
}
else
{
linkStateHtml
=
`
<
button
type
=
"button"
id
=
"${d.resId}_bizdanger"
data
-
message
=
"${d.message}"
data
-
state
=
"${d.state}"
data
-
id
=
"${d.resId}_bizdanger"
class
=
"layui-btn layui-btn-danger layui-bg-red layui-btn-radius layui-btn-xs p-0-15 cant-click"
>
失败
<
/button>`
;
if
(
d
.
hostState
!=
''
){
linkStateTips
+=
`
<
li
class
=
'li-link-state-tips-red'
>
自动发现
:
连接失败
<
/li>`
;
}
else
{
linkStateTips
+=
`
<
li
class
=
'li-link-state-tips-red'
>
ssh
:
连接失败
<
/li>`
;
}
}
});
linkStateTips
+=
'</ul>'
;
}
else
{
linkStateTips
+=
`
<
ul
class
=
'ul-link-state-tips'
>
`
;
layui
.
each
(
d
.
linkStateList
,
function
(
index
,
value
)
{
if
(
value
.
state
.
indexOf
(
'成功'
)
!==
-
1
)
{
linkStateTips
+=
`
<
li
class
=
'li-link-state-tips-green'
>
$
{
value
.
protocol
}
:
$
{
value
.
state
}
<
/li>`
;
linkStateHtml
+=
'<span class="layui-badge-dot layui-bg-green"></span>'
;
}
else
{
linkStateTips
+=
`
<
li
class
=
'li-link-state-tips-red'
>
$
{
value
.
protocol
}
:
$
{
value
.
state
}
<
/li>`
;
linkStateHtml
+=
'<span class="layui-badge-dot layui-bg-red"></span>'
;
}
});
linkStateTips
+=
'</ul>'
;
}
}
}
}}
...
...
hg-monitor-web-zj/src/main/resources/static/src/views/res/list.html
View file @
b34a3f6
<title>
资
源
视图
</title>
<title>
资
产
视图
</title>
<iframe
src=
"/vue3/index.html#/res/list"
class=
"layadmin-iframe"
style=
"height: 99.5%!important;"
/>
...
...
hg-monitor-web-zj/src/main/resources/static/vue3/src/components/page/operationMaintenance/user/index.js
View file @
b34a3f6
...
...
@@ -49,6 +49,8 @@ const assets = (props, {attrs, slots, emit}) => {
});
}
/**
* 新增资产
* <p>
...
...
@@ -89,6 +91,19 @@ const assets = (props, {attrs, slots, emit}) => {
showDialog
(
true
);
}
let
checkAssets
=
()
=>
{
let
data
=
btnType
.
value
.
data
;
let
size
=
0
;
data
.
forEach
(
function
(
v
){
if
(
!
v
.
value
||
v
.
value
==
''
||
v
.
value
==
null
){
size
++
;
}
})
return
size
==
data
.
length
;
}
/**
* 新增资产
* <p>
...
...
@@ -100,6 +115,11 @@ const assets = (props, {attrs, slots, emit}) => {
data
.
map
(
function
(
v
){
v
.
extend
=
JSON
.
stringify
(
v
.
extend
);
})
if
(
checkAssets
()){
proxy
.
$global
.
showMsg
(
`请填写资产信息,不能全部为空!`
,
'warning'
);
return
;
}
proxy
.
$http
.
post
(
`
/
api
-
web
/
person
/
assets
/
add
/
$
{
props
.
parentNode
.
id
}
`
,
data
,
function
(
res
)
{
if
(
res
&&
res
.
success
)
{
proxy
.
$global
.
showMsg
(
"添加成功"
);
...
...
@@ -121,6 +141,11 @@ const assets = (props, {attrs, slots, emit}) => {
data
.
map
(
function
(
v
){
v
.
extend
=
JSON
.
stringify
(
v
.
extend
);
})
if
(
checkAssets
()){
proxy
.
$global
.
showMsg
(
`请填写资产信息,不能全部为空!`
,
'warning'
);
return
;
}
proxy
.
$http
.
post
(
`
/
api
-
web
/
person
/
assets
/
edit
/
$
{
props
.
parentNode
.
id
}
`
,
data
,
function
(
res
)
{
if
(
res
&&
res
.
success
)
{
proxy
.
$global
.
showMsg
(
"编辑成功"
);
...
...
@@ -452,4 +477,4 @@ export default {
rules
,
}
}
}
\ No newline at end of file
}
...
...
hg-monitor-web-zj/src/main/resources/static/vue3/src/views/analysis/index.html
View file @
b34a3f6
<div
class=
"analysis-add-container"
>
<div
class=
"add-top-title"
style=
" padding: 20px 20px
20px 20px;font-size: 16px;color:#337ab7
"
>
<div
class=
"add-top-title"
style=
" padding: 20px 20px
0px 20px;font-weight: bold
"
>
比对分析场景
</div>
<div
class=
"analysis-drop"
v-if=
"!isShowLIst"
>
...
...
hg-monitor-web-zj/src/main/resources/static/vue3/src/views/dp/index.js
View file @
b34a3f6
...
...
@@ -132,7 +132,8 @@ export default {
if
(
this
.
$route
.
query
.
msgKey
){
document
.
getElementById
(
"goDP"
).
style
.
display
=
"block"
}
};
document
.
title
=
'电子税务局大屏'
;
},
unmounted
()
{
window
.
removeEventListener
(
'resize'
,
this
.
screenAdapter
)
...
...
hg-monitor-web-zj/src/main/resources/static/vue3/src/views/template/index.js
View file @
b34a3f6
...
...
@@ -16,7 +16,7 @@ export default {
},
setup
()
{
const
{
proxy
}
=
Vue
.
getCurrentInstance
();
let
height
=
Vue
.
ref
(
window
.
innerHeight
-
1
0
);
let
height
=
Vue
.
ref
(
window
.
innerHeight
-
2
0
);
const
treeData
=
Vue
.
ref
([]);
const
tableData
=
Vue
.
ref
([]);
...
...
hg-monitor-web-zj/src/main/resources/static/vue3/src/views/zjdaping/components/navTabs/index.js
View file @
b34a3f6
...
...
@@ -53,7 +53,7 @@ export default {
}
proxy
.
timer
=
setInterval
(
function
(){
proxy
.
preOrNext
(
0
);
},
1
0000
)
},
2
0000
)
}
const
preOrNext
=
(
val
)
=>
{
console
.
log
(
"click"
,
val
)
...
...
@@ -66,6 +66,7 @@ export default {
if
(
index
+
1
==
listArray
.
length
){
proxy
.
checkId
=
listArray
[
0
]
if
(
val
==
0
){
proxy
.
preNext
()
}
else
{
...
...
@@ -77,7 +78,7 @@ export default {
}
else
{
// proxy.checkId=listArray[index+1]
proxy
.
pre
Next
()
proxy
.
click
Next
()
}
}
...
...
@@ -86,25 +87,23 @@ export default {
if
(
val
==
'left'
){
if
(
index
==
0
){
proxy
.
checkId
=
listArray
[
listArray
.
length
-
1
]
proxy
.
click
Next
()
proxy
.
pre
Next
()
}
else
{
proxy
.
checkId
=
listArray
[
index
-
1
]
if
(
index
%
5
==
0
){
proxy
.
preNext
()
}
}
}
else
{
if
(
index
>=
4
){
proxy
.
clickNext
()
if
((
index
+
1
)
%
5
==
0
){
proxy
.
clickNext
()
}
}
proxy
.
checkId
=
listArray
[
index
+
1
]
}
}
proxy
.
clickTabs
(
proxy
.
checkId
)
...
...
@@ -142,13 +141,23 @@ export default {
proxy
.
prePage
();
}
const
nextPage
=
()
=>
{
if
(
proxy
.
currentPage
==
proxy
.
pageNum
-
1
)
return
;
proxy
.
currentPage
++
;
if
(
proxy
.
currentPage
==
proxy
.
pageNum
){
return
;
}
else
if
(
proxy
.
currentPage
==
2
){
proxy
.
currentPage
=
0
;
}
else
{
proxy
.
currentPage
++
;
}
}
const
prePage
=
()
=>
{
if
(
proxy
.
currentPage
==
0
)
return
;
proxy
.
currentPage
--
;
if
(
proxy
.
currentPage
==
0
){
proxy
.
currentPage
=
2
;
}
else
{
proxy
.
currentPage
--
;
}
}
const
clickTabs
=
(
val
)
=>
{
proxy
.
checkId
=
val
;
...
...
@@ -170,7 +179,7 @@ export default {
dataShow
:
function
(){
let
start
=
this
.
currentPage
*
this
.
pageSize
;
let
end
=
Math
.
min
((
this
.
currentPage
+
1
)
*
this
.
pageSize
,
this
.
listArray
.
length
)
return
this
.
listArray
.
slice
(
start
,
end
)
return
this
.
listArray
.
slice
(
start
,
end
)
;
},
isDiv
:
function
(){
let
length
=
this
.
dataShow
.
length
;
...
...
hg-monitor-web-zj/src/main/resources/static/vue3/src/views/zjdaping/index.js
View file @
b34a3f6
...
...
@@ -59,6 +59,7 @@ export default {
setInterval
(
function
(){
getDateTime
();
},
1000
);
document
.
title
=
'监控一体化视图'
})
let
getDateTime
=
()
=>
{
...
...
Please
register
or
login
to post a comment