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
Email Patches
Plain Diff
Browse Files
Authored by
鲁尚清
3 years ago
Commit
e5d15d3882cadc29a4914b577a09a9689c099f17
1 parent
dbd1e682
wangfeng-mj
...
master-500-dev
master-500-dev-0327
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-mj
master-mj-610
master-mj-joke
master-mj-yuanjinpeng
master-mj-ztq
master-prod-500-lushangqing
wangfeng-500-dev
cmdb数据同步页列表接口、忽略接口、同步接口、纳入监控接口数据调用
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
369 additions
and
53 deletions
hg-monitor-web-base/src/main/resources/static/vue3/public/css/cmdbdatasync.css
hg-monitor-web-base/src/main/resources/static/vue3/src/views/cmdbdatasync/cmdbdatasyncEdit/index.html
hg-monitor-web-base/src/main/resources/static/vue3/src/views/cmdbdatasync/cmdbdatasyncEdit/index.js
hg-monitor-web-base/src/main/resources/static/vue3/src/views/cmdbdatasync/index.html
hg-monitor-web-base/src/main/resources/static/vue3/src/views/cmdbdatasync/index.js
hg-monitor-web-base/src/main/resources/static/vue3/public/css/cmdbdatasync.css
View file @
e5d15d3
...
...
@@ -15,4 +15,26 @@
}
.protocol-btn
i
{
color
:
#ffffff
;
}
.expand-container
{
padding
:
5px
10px
;
}
.expand-container
.margin-top
{
margin-top
:
10px
;
}
.expand-container
.el-descriptions__header
{
padding
:
5px
;
background
:
#F1F6F9
;
margin-bottom
:
0px
;
}
.expand-container
.el-descriptions__title
{
font-size
:
14px
;
font-weight
:
normal
;
}
.cmdb-descriptions
{
width
:
300px
;
}
.cmdb-descriptions
.star
{
font-size
:
14px
;
color
:
#d81e06
;
}
\ No newline at end of file
...
...
hg-monitor-web-base/src/main/resources/static/vue3/src/views/cmdbdatasync/cmdbdatasyncEdit/index.html
View file @
e5d15d3
...
...
@@ -15,7 +15,40 @@
:expands=
"tableData.expands"
:height=
"height - 110"
>
<template
#
expand=
"{scope}"
>
aaa{{scope.row.expand}}
<div
class=
"expand-container"
style=
"width:50%;"
>
<el-descriptions
class=
"margin-top"
:title=
"item.protocolName"
:column=
"1"
:size=
"''"
border
v-for=
"item in scope.row.extend"
:key=
"item.protocolId"
>
<template
#
extra
>
<!-- <el-button type="primary">Operation</el-button>-->
</template>
<el-descriptions-item
label-class-name=
"cmdb-descriptions"
v-for=
"itemChild in item.protocolParamList"
:key=
"itemChild.collParamId"
>
<template
#
label
>
<div
class=
"cell-item"
>
{{itemChild.paramName}}
<span
class=
"star"
>
*
</span>
</div>
</template>
<el-input
style=
"width: 220px;"
v-model=
"itemChild.defaultValue"
size=
"small"
/>
<!-- <el-input style="width: 220px;" v-if="itemChild.inputWay=='input'" v-model="itemChild.defaultValue" size="small"/>
<el-select size="small" v-else-if="itemChild.inputWay=='select'" v-model="itemChild.defaultValue" class="m-2" placeholder="请选择">
<el-option
v-for="itemDdic in optinos"
:key="itemDdic.ddicCode"
:label="itemDdic.ddicName"
:value="itemDdic.ddicCode"
/>
</el-select>
<span v-else>{{itemChild.defaultValue}}</span>-->
</el-descriptions-item>
</el-descriptions>
</div>
</template>
<template
#
default=
"{row,prop,column}"
>
<div>
...
...
@@ -31,7 +64,7 @@
</template>
<template
#
tools=
"{scope}"
>
<div
class=
"protocol-btn"
>
<span
class=
"icon-add"
@
click=
"addProtocol"
title=
"协议参数"
><i
class=
"el-icon-plus"
></i></span>
<span
class=
"icon-add"
@
click=
"addProtocol
(scope.row)
"
title=
"协议参数"
><i
class=
"el-icon-plus"
></i></span>
</div>
</template>
</cm-table-page>
...
...
hg-monitor-web-base/src/main/resources/static/vue3/src/views/cmdbdatasync/cmdbdatasyncEdit/index.js
View file @
e5d15d3
...
...
@@ -14,20 +14,56 @@ export default {
const
{
proxy
}
=
Vue
.
getCurrentInstance
();
let
height
=
Vue
.
ref
(
window
.
innerHeight
);
let
editTbaleData
=
Vue
.
ref
(
props
.
tableData
.
dataList
);
let
resType
=
Vue
.
ref
(
props
.
tableData
.
resType
);
// let columns=Vue.ref(props.tableData.columns);
// let getRowKeys=Vue.ref(props.tableData.getRowKeys);
// let expands=Vue.ref(props.tableData.expands);
//保存编辑
let
saveEdit
=
()
=>
{
//保存接口 todo
let
param
=
{
editTbaleData
:
editTbaleData
.
value
,
visibility
:
false
let
idList
=
''
;
let
idArr
=
[];
if
(
editTbaleData
.
value
&&
editTbaleData
.
value
.
length
>
0
){
editTbaleData
.
value
.
map
(
item
=>
{
idArr
.
push
(
item
.
id
)
})
}
emit
(
"callbackedit"
,
param
)
if
(
idArr
.
length
>
0
){
idList
=
idArr
.
join
(
','
)
}
/*let param={
// resType:resType.value,
// idList:idList,
bean:editTbaleData.value
}*/
let
data
=
editTbaleData
.
value
;
let
arr
=
[];
data
.
map
(
item
=>
{
arr
.
push
({
bean
:
item
,
proto
:
item
.
proto
})
})
let
param
=
arr
;
proxy
.
$http
.
post
(
'/api-web/cmdbSync/toMonitor1'
,
param
,
function
(
res
)
{
if
(
res
&&
res
.
success
)
{
proxy
.
$global
.
showMsg
(
'保存成功'
,
'error'
);
}
else
{
proxy
.
$global
.
showMsg
(
'保存失败'
,
'error'
);
}
let
backData
=
{
editTbaleData
:
editTbaleData
.
value
,
visibility
:
false
}
emit
(
"callbackedit"
,
backData
)
});
}
//添加协议
let
addProtocol
=
()
=>
{
let
clickResId
=
Vue
.
ref
(
''
);
let
addProtocol
=
(
row
)
=>
{
console
.
log
(
"^^^^^"
,
proxy
.
$global
.
layui
)
clickResId
.
value
=
row
.
resId
;
proxy
.
$global
.
layer
.
open
({
title
:
'资源协议'
,
id
:
'resManageChooseProtocolHtml'
,
...
...
@@ -39,20 +75,50 @@ export default {
proxy
.
$global
.
layui
.
view
(
'resManageChooseProtocolHtml'
).
render
(
'/baseconfig/protocol/index'
,{
'hasParam'
:
'1'
});
},
yes
:
function
(
index
,
layero
)
{
var
data
=
proxy
.
$global
.
layui
.
table
.
checkStatus
(
'protocol_table'
).
data
;
formData
.
ip
=
$
(
'#resManageAddForm'
).
find
(
'input[name="ip"]'
).
val
();
formData
.
port
=
$
(
'#resManageAddForm'
).
find
(
'input[name="port"]'
).
val
();
let
data
=
proxy
.
$global
.
layui
.
table
.
checkStatus
(
'protocol_table'
).
data
;
proxy
.
$global
.
layui
.
use
(
'resManageAdd'
,
function
(
fn
)
{
// console.log("&&&&!!!!",data,fn(row))
// console.log(fn(row).createProtocolDom)
})
let
ip
=
row
.
ip
;
let
port
=
row
.
port
;
if
(
data
.
length
>
0
){
createProtocolDom
(
data
,
false
);
form
.
render
()
layer
.
close
(
index
);
/*createProtocolDom(data,false);
proxy.$global.layui.form.render()*/
editTbaleData
.
value
.
map
(
item
=>
{
// item.bean=item;
if
(
item
.
resId
==
row
.
resId
){
let
arr
=
[]
data
.
map
(
v
=>
{
arr
=
arr
.
concat
(
v
.
protocolParamList
.
flat
());
})
item
.
extend
=
data
;
item
.
proto
=
arr
;
}
})
proxy
.
$global
.
layer
.
close
(
index
);
}
else
{
layer
.
msg
(
"无选中的数据或当"
,{
offset
:
'15px'
,
icon
:
7
,
time
:
2000
})
proxy
.
$global
.
layer
.
msg
(
"无选中的数据或当"
,{
offset
:
'15px'
,
icon
:
7
,
time
:
2000
})
return
false
;
}
}
})
}
//协议参数中select的字典数据
let
getSelectData
=
(
param
)
=>
{
proxy
.
$http
.
post
(
'/api-web/manage/ddic/findSucDdics/'
+
param
.
defaultValue
,
{},
function
(
res
)
{
if
(
res
&&
res
.
data
)
{
let
selectData
=
res
.
data
;
// protocolParamList
}
else
{
proxy
.
$global
.
showMsg
(
'暂无数据'
,
'error'
);
}
});
}
// 挂载完
Vue
.
onMounted
(()
=>
{
})
...
...
@@ -61,9 +127,12 @@ export default {
return
{
height
,
editTbaleData
,
resType
,
// columns,
saveEdit
,
addProtocol
,
clickResId
,
getSelectData
// getRowKeys,
// expands
}
...
...
hg-monitor-web-base/src/main/resources/static/vue3/src/views/cmdbdatasync/index.html
View file @
e5d15d3
...
...
@@ -8,21 +8,54 @@
<div
class=
"search"
>
<div
class=
"condition"
>
<el-form-item
>
<el-input
v-model=
"search.keyword"
placeholder=
"关键字"
></el-input>
<el-input
style=
"width:120px;"
v-model=
"search.keyword"
placeholder=
"关键字"
></el-input>
</el-form-item>
<el-form-item
>
<el-select
style=
"width:200px;"
v-model=
"search.provider"
class=
"m-2"
placeholder=
"厂商"
clearable
>
<el-option
v-for=
"item in providerData"
:key=
"item.ddicCode"
:label=
"item.ddicName"
:value=
"item.ddicCode"
/>
</el-select>
</el-form-item>
<el-form-item
>
<el-select
style=
"width:200px;"
v-model=
"search.system"
class=
"m-2"
placeholder=
"系统"
clearable
>
<el-option
v-for=
"item in systemData"
:key=
"item.ddicCode"
:label=
"item.ddicName"
:value=
"item.ddicCode"
/>
</el-select>
</el-form-item>
<el-form-item
>
<el-select
style=
"width:200px;"
v-model=
"search.resSyncState"
class=
"m-2"
placeholder=
"资源处理状态"
clearable
>
<el-option
v-for=
"item in resSyncStateData"
:key=
"item.ddicCode"
:label=
"item.ddicName"
:value=
"item.ddicCode"
/>
</el-select>
</el-form-item>
<el-form-item
>
<el-button
@
click=
"getDataList"
>
查询
</el-button>
</el-form-item>
<el-form-item
>
<el-button
@
click=
"handleEdit"
>
编辑
</el-button>
<el-button
@
click=
"handleEdit"
>
纳入监控
</el-button>
</el-form-item>
<el-form-item
>
<el-button
@
click=
"handleRefresh"
>
同步
</el-button>
</el-form-item>
<el-form-item
>
<el-button
@
click=
"handleIgnore"
>
忽略
</el-button>
</el-form-item>
</div>
</div>
<div
class=
"search-table"
>
<cm-table-page
:columns=
"tableData.columns"
:dataList=
"tableData.dataList"
<cm-table-page
v-if=
"tableData.count"
:columns=
"tableData.columns"
:dataList=
"tableData.dataList"
:showIndex=
"true"
:total=
"tableData.count"
@
loaddata =
"loaddata"
...
...
@@ -41,7 +74,6 @@
</template>
<template
#
tools=
"{scope}"
>
<div
class=
"list-handle"
>
<span
class=
"icon-bg"
@
click=
"handleEdit(1,scope.row)"
><i
class=
"el-icon-edit-outline"
title=
"编辑"
></i></span>
<span
class=
"icon-bg"
@
click=
"handleRefresh(1,scope.row)"
><i
class=
"el-icon-refresh"
title=
"同步"
></i></span>
</div>
</template>
...
...
hg-monitor-web-base/src/main/resources/static/vue3/src/views/cmdbdatasync/index.js
View file @
e5d15d3
...
...
@@ -18,36 +18,33 @@ export default {
let
defaultNode
=
Vue
.
ref
(
true
);
//默认节点
let
resType
=
Vue
.
ref
(
''
);
//选中的树节点值
let
handleNodeClick
=
(
data
,
node
)
=>
{
//点击树节点,根据某个字段获取列表 todo
console
.
log
(
"*(*(*(*"
,
data
,
node
)
proxy
.
$global
.
showMsg
(
data
.
id
,
'warning'
)
//点击树节点,根据某个字段获取列表
resType
.
value
=
data
.
value
;
defaultNode
.
value
=
false
;
getDataList
();
}
let
providerData
=
Vue
.
ref
([]);
//厂商
let
systemData
=
Vue
.
ref
([]);
//系统
let
resSyncStateData
=
Vue
.
ref
([]);
//资源处理状态
let
search
=
Vue
.
ref
({
keyword
:
''
,
pageNum
:
1
,
pageSize
:
20
,
resSyncState
:
''
,
system
:
''
,
provider
:
''
,
});
//表格字段
let
tableData
=
Vue
.
ref
({
count
:
0
,
dataList
:
[{
id
:
1
,
resName
:
'资源一'
},{
id
:
2
,
resName
:
'资源34'
}],
dataList
:
[],
columns
:
[
{
prop
:
'resName'
,
label
:
'资源名称'
,
sortable
:
true
,
align
:
'center'
,
width
:
'2
5
0'
width
:
'2
0
0'
},
{
prop
:
'resTypeName'
,
...
...
@@ -56,31 +53,98 @@ export default {
align
:
'center'
,
width
:
'200'
},
{
prop
:
'host'
,
label
:
'IP地址'
,
prop
:
'resCategory'
,
label
:
'资源分类'
,
sortable
:
true
,
align
:
'center'
,
width
:
'200'
},
{
prop
:
'type'
,
label
:
'日志来源'
,
width
:
'100'
},
{
prop
:
'ip'
,
label
:
'ip'
,
sortable
:
true
,
align
:
'center'
,
width
:
'200'
},
{
prop
:
'program'
,
label
:
'日志类型'
,
prop
:
'port'
,
label
:
'端口'
,
sortable
:
true
,
align
:
'center'
,
},
{
prop
:
'os'
,
label
:
'操作系统类型'
,
sortable
:
true
,
align
:
'center'
,
width
:
'130'
},
{
prop
:
'provider'
,
label
:
'厂商'
,
sortable
:
true
,
align
:
'center'
,
width
:
'100'
},
{
prop
:
'state'
,
label
:
'资源处理状态'
,
sortable
:
true
,
align
:
'center'
,
width
:
'130'
,
render
:
function
(
row
){
let
str
=
'已同步'
;
if
(
row
.
state
==
'1'
){
str
=
'纳入监控'
;
}
else
if
(
row
.
state
==
'2'
){
str
=
'忽略'
;
}
else
{
str
=
'已同步'
;
}
return
`
<
span
>
$
{
str
}
<
/span>
`
}
},
{
prop
:
'syncType'
,
label
:
'cmdb数据同步类型'
,
sortable
:
true
,
align
:
'center'
,
width
:
'200'
,
render
:
function
(
row
){
let
str
=
'自动同步'
;
if
(
row
.
syncType
==
'1'
){
str
=
'手动同步'
;
}
else
if
(
row
.
syncType
==
'2'
){
str
=
'自动覆盖同步'
;
}
else
if
(
row
.
syncType
==
'3'
){
str
=
'手动覆盖同步'
;
}
else
{
str
=
'自动同步'
;
}
return
`
<
span
>
$
{
str
}
<
/span>
`
}
},
{
prop
:
'resSyncDate'
,
label
:
'资源处理时间'
,
sortable
:
true
,
align
:
'center'
,
width
:
'200'
},
{
prop
:
'message'
,
label
:
'日志内容'
,
prop
:
'syncDate'
,
label
:
'CMDB数据同步时间'
,
sortable
:
true
,
align
:
'center'
,
width
:
'200'
},
{
prop
:
'remark'
,
label
:
'备注'
,
sortable
:
true
,
align
:
'center'
,
width
:
'200'
}
]
})
let
dialog
=
Vue
.
ref
({
...
...
@@ -94,6 +158,10 @@ export default {
}
let
hideDialog
=
(
flg
)
=>
{
dialog
.
value
.
show
=
flg
;
if
(
!
flg
){
// selectionData.value=[];
getDataList
();
}
}
//全选事件
let
selectionData
=
Vue
.
ref
([]);
//选择的数据
...
...
@@ -106,6 +174,7 @@ export default {
dialog
.
value
.
tableData
.
dataList
=
row
;
dialog
.
value
.
tableData
.
columns
=
tableData
.
value
.
columns
;
dialog
.
value
.
tableData
.
getRowKeys
=
'id'
;
dialog
.
value
.
tableData
.
resType
=
resType
.
value
;
let
arr
=
[];
row
.
map
(
item
=>
{
arr
.
push
(
item
.
id
)
...
...
@@ -126,18 +195,84 @@ export default {
}
}
}
//同步
todo
//同步
let
handleRefresh
=
(
flag
,
row
)
=>
{
let
ids
=
[];
let
isAll
=
false
;
if
(
flag
==
1
){
//单个同步 row-->对象
ids
.
push
(
row
.
id
);
isAll
=
true
;
}
else
{
//多选同步 selectionData.value-->数组
if
(
selectionData
.
value
.
length
>
0
){
//...
selectionData
.
value
.
map
(
item
=>
{
ids
.
push
(
item
.
id
)
})
isAll
=
true
;
}
else
{
proxy
.
$global
.
showMsg
(
'请选择数据'
,
'warning'
)
isAll
=
false
;
}
}
let
idList
=
''
;
if
(
ids
.
length
>
0
){
idList
=
ids
.
join
(
','
);
}
let
param
=
{
resType
:
resType
.
value
,
idList
:
idList
}
if
(
isAll
){
proxy
.
$http
.
get
(
`
/
api
-
web
/
cmdbSync
/
sync
`
,
param
,
function
(
res
)
{
if
(
res
&&
res
.
success
)
{
proxy
.
$global
.
showMsg
(
'同步成功'
,
'success'
);
selectionData
.
value
=
[];
}
else
{
proxy
.
$global
.
showMsg
(
'同步失败'
,
'error'
);
}
getDataList
();
});
}
else
{
proxy
.
$global
.
confirm
(
'确认同步该资源类型下所有资源?'
,
function
()
{
proxy
.
$http
.
get
(
`
/
api
-
web
/
cmdbSync
/
sync
`
,
param
,
function
(
res
)
{
if
(
res
&&
res
.
success
)
{
proxy
.
$global
.
showMsg
(
'同步成功'
,
'success'
);
selectionData
.
value
=
[];
}
else
{
proxy
.
$global
.
showMsg
(
'同步失败'
,
'error'
);
}
getDataList
();
});
})
}
}
//忽略
let
handleIgnore
=
()
=>
{
//多选忽略 selectionData.value-->数组
if
(
selectionData
.
value
.
length
>
0
){
let
idList
=
''
;
let
idArr
=
[]
selectionData
.
value
.
map
(
item
=>
{
idArr
.
push
(
item
.
id
)
})
if
(
idArr
.
length
>
0
){
idList
=
idArr
.
join
(
','
)
}
proxy
.
$http
.
get
(
`
/
api
-
web
/
cmdbSync
/
ignore
`
,
{
idList
:
idList
},
function
(
res
)
{
if
(
res
&&
res
.
success
)
{
proxy
.
$global
.
showMsg
(
'忽略成功'
,
'success'
);
selectionData
.
value
=
[];
}
else
{
proxy
.
$global
.
showMsg
(
'忽略失败'
,
'error'
);
}
getDataList
();
});
}
else
{
proxy
.
$global
.
showMsg
(
'请选择数据'
,
'warning'
)
}
}
//编辑返回数据
let
callbackedit
=
(
obj
)
=>
{
...
...
@@ -157,35 +292,55 @@ export default {
proxy
.
$http
.
post
(
`
/
api
-
web
/
attribute
/
getTree
`
,
{},
function
(
res
)
{
if
(
res
&&
res
.
data
)
{
treeData
.
value
=
res
.
data
;
getDataList
();
//获取列表数据
}
});
}
// 获取列表
todo
// 获取列表
let
getDataList
=
()
=>
{
if
(
defaultNode
.
value
){
if
(
defaultNode
.
value
&&
treeData
.
value
[
0
]
){
resType
.
value
=
treeData
.
value
[
0
].
children
[
0
].
value
;
}
let
params
=
{
resType
:
resType
.
value
,
pageNum
:
search
.
value
.
pageNum
,
pageSize
:
search
.
value
.
pageSize
,
keyword
:
search
.
value
.
keyword
page
:
search
.
value
.
pageNum
,
limit
:
search
.
value
.
pageSize
,
keyword
:
search
.
value
.
keyword
,
provider
:
search
.
value
.
provider
,
//厂商
system
:
search
.
value
.
system
,
//系统 linux
resSyncState
:
search
.
value
.
resSyncState
,
//资源处理状态 0 监控同步成功
}
proxy
.
$http
.
post
(
`
/
api
-
web
/
`
,
params
,
function
(
res
)
{
if
(
res
&&
res
.
object
)
{
tableData
.
value
.
dataList
=
res
.
object
;
tableData
.
value
.
count
=
parseInt
(
res
.
object
.
total
);
proxy
.
$http
.
get
(
`
/
api
-
web
/
cmdbSync
/
getPage
`
,
params
,
function
(
res
)
{
if
(
res
&&
res
.
data
)
{
tableData
.
value
.
dataList
=
res
.
data
;
tableData
.
value
.
count
=
parseInt
(
res
.
count
);
}
else
{
tableData
.
value
.
dataList
=
[];
tableData
.
value
.
count
=
0
;
}
});
}
//获取字典接口
let
getDdicCode
=
(
code
)
=>
{
proxy
.
$http
.
post
(
`
/
api
-
web
/
manage
/
ddic
/
findSucDdics
/
`
+
code
,
{},
function
(
res
)
{
if
(
res
&&
res
.
data
)
{
if
(
code
==
'resSyncState'
){
resSyncStateData
.
value
=
res
.
data
;
}
else
if
(
code
==
'provider'
){
providerData
.
value
=
res
.
data
;
}
else
if
(
code
==
'os'
){
systemData
.
value
=
res
.
data
;
}
}
});
}
// 挂载完
Vue
.
onMounted
(()
=>
{
// getDataList();//获取列表数据
getResData
();
//获取资源树数据
getDdicCode
(
'resSyncState'
);
getDdicCode
(
'provider'
);
getDdicCode
(
'os'
);
})
...
...
@@ -209,7 +364,12 @@ export default {
handleRefresh
,
callbackedit
,
goResDetail
,
resType
resType
,
getDdicCode
,
providerData
,
systemData
,
resSyncStateData
,
handleIgnore
}
}
...
...
Please
register
or
login
to post a comment