perf: modulebox-walk-tree提示信息交互优化等
1.modulebox-walk-tree提示信息交互优化 2.alert-message列表labels不显示alertname和等级
This commit is contained in:
@@ -734,7 +734,7 @@ li{
|
|||||||
.el-tooltip__popper.is-light[x-placement^=top] .popper__arrow { /*覆盖tooltip小三角颜色*/
|
.el-tooltip__popper.is-light[x-placement^=top] .popper__arrow { /*覆盖tooltip小三角颜色*/
|
||||||
border-top-color: #ebeef5;
|
border-top-color: #ebeef5;
|
||||||
}
|
}
|
||||||
.nz-table.el-table--enable-row-hover .el-table__body tr:hover>td {
|
.el-table .el-table__body tr:hover>td {
|
||||||
background-color: #f0f0f0;
|
background-color: #f0f0f0;
|
||||||
}
|
}
|
||||||
.nz-table-gear {
|
.nz-table-gear {
|
||||||
@@ -911,6 +911,9 @@ li{
|
|||||||
padding: 0 !important;
|
padding: 0 !important;
|
||||||
box-shadow: 0 2px 12px 0 rgba(0,0,0,.1) !important;
|
box-shadow: 0 2px 12px 0 rgba(0,0,0,.1) !important;
|
||||||
}
|
}
|
||||||
|
.nz-pop-select-walk .pop-item-wider {
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
.right-box-title {
|
.right-box-title {
|
||||||
height: 36px;
|
height: 36px;
|
||||||
text-align: left;
|
text-align: left;
|
||||||
|
|||||||
@@ -43,11 +43,11 @@
|
|||||||
v-if="scope.row[item.prop].alertName">{{scope.row[item.prop].alertName + ' ' + $t('overall.active')}}</div>
|
v-if="scope.row[item.prop].alertName">{{scope.row[item.prop].alertName + ' ' + $t('overall.active')}}</div>
|
||||||
<template v-else>-</template>
|
<template v-else>-</template>
|
||||||
</template>
|
</template>
|
||||||
<div v-else-if="item.prop == 'type'" class="content-right-options">
|
<!--<div v-else-if="item.prop == 'type'" class="content-right-options">
|
||||||
<span v-if="scope.row[item.prop] == 1">Project</span>
|
<span v-if="scope.row[item.prop] == 1">Project</span>
|
||||||
<span v-if="scope.row[item.prop] == 2">Module</span>
|
<span v-if="scope.row[item.prop] == 2">Module</span>
|
||||||
<span v-if="scope.row[item.prop] == 3">Device</span>
|
<span v-if="scope.row[item.prop] == 3">Device</span>
|
||||||
</div>
|
</div>-->
|
||||||
<template v-else-if="item.prop == 'summary'">
|
<template v-else-if="item.prop == 'summary'">
|
||||||
<template v-if="scope.row[item.prop]">{{scope.row[item.prop]}}</template>
|
<template v-if="scope.row[item.prop]">{{scope.row[item.prop]}}</template>
|
||||||
<template v-else>-</template>
|
<template v-else>-</template>
|
||||||
@@ -61,7 +61,7 @@
|
|||||||
<span style="padding-left: 18px;" v-if="scope.row[item.prop] == 'medium'">{{severityData[0].value}}</span>
|
<span style="padding-left: 18px;" v-if="scope.row[item.prop] == 'medium'">{{severityData[0].value}}</span>
|
||||||
<span v-if="scope.row[item.prop] == 'low'"><i class="el-icon-arrow-down"></i> {{severityData[2].value}}</span>
|
<span v-if="scope.row[item.prop] == 'low'"><i class="el-icon-arrow-down"></i> {{severityData[2].value}}</span>
|
||||||
</span>
|
</span>
|
||||||
<div v-else-if="item.prop == 'linkObject'">
|
<!--<div v-else-if="item.prop == 'linkObject'">
|
||||||
<span v-if="(scope.row['type'] == 1 || scope.row['type'] == 2) && scope.row[item.prop]" class="link too-long-split"
|
<span v-if="(scope.row['type'] == 1 || scope.row['type'] == 2) && scope.row[item.prop]" class="link too-long-split"
|
||||||
@click="viewAlertType(scope.row['type'],scope.row[item.prop])" style="max-width: 125px;"
|
@click="viewAlertType(scope.row['type'],scope.row[item.prop])" style="max-width: 125px;"
|
||||||
:id="'link-obj-'+scope.row['type']+'-'+scope.row[item.prop].id">{{scope.row[item.prop].name}}</span>
|
:id="'link-obj-'+scope.row['type']+'-'+scope.row[item.prop].id">{{scope.row[item.prop].name}}</span>
|
||||||
@@ -69,7 +69,7 @@
|
|||||||
@click="viewAlertType(scope.row['type'],scope.row[item.prop].id)"
|
@click="viewAlertType(scope.row['type'],scope.row[item.prop].id)"
|
||||||
:id="'link-obj-'+scope.row['type']+'-'+scope.row[item.prop].id">{{scope.row[item.prop].host}}</span>
|
:id="'link-obj-'+scope.row['type']+'-'+scope.row[item.prop].id">{{scope.row[item.prop].host}}</span>
|
||||||
<span v-else>-</span>
|
<span v-else>-</span>
|
||||||
</div>
|
</div>-->
|
||||||
<div v-else-if="item.prop == 'state'">
|
<div v-else-if="item.prop == 'state'">
|
||||||
<span class="">
|
<span class="">
|
||||||
{{scope.row['state'] == 1 ? "Pending" : ""}}
|
{{scope.row['state'] == 1 ? "Pending" : ""}}
|
||||||
|
|||||||
@@ -74,7 +74,7 @@
|
|||||||
prop="element"
|
prop="element"
|
||||||
:label="$t('project.endpoint.element')">
|
:label="$t('project.endpoint.element')">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<el-popover trigger="hover" placement="right" v-if="typeof scope.row.metricTip != 'undefined' && scope.row.metricTip != null">
|
<el-popover trigger="click" placement="right" v-if="typeof scope.row.metricTip != 'undefined' && scope.row.metricTip != null">
|
||||||
<div>
|
<div>
|
||||||
<ul>
|
<ul>
|
||||||
<li><span class="metirc-tip-list">metric : </span><span>{{scope.row.metricTip.metric?scope.row.metricTip.metric:'--'}}</span></li>
|
<li><span class="metirc-tip-list">metric : </span><span>{{scope.row.metricTip.metric?scope.row.metricTip.metric:'--'}}</span></li>
|
||||||
|
|||||||
@@ -2,8 +2,7 @@
|
|||||||
<div class="export-xlsx">
|
<div class="export-xlsx">
|
||||||
<div>
|
<div>
|
||||||
<el-dropdown split-button type="primary" size="mini" class="dropdownBtn">
|
<el-dropdown split-button type="primary" size="mini" class="dropdownBtn">
|
||||||
<slot name="optionZone" class="option-button"></slot>
|
<slot name="optionZone" class="option-button"></slot><el-dropdown-menu slot="dropdown">
|
||||||
<el-dropdown-menu slot="dropdown">
|
|
||||||
<el-dropdown-item @click.native="showImportBox(1)" class="dropdown-content"><i class="el-icon-upload2"></i>{{$t('overall.importExcelLower')}}</el-dropdown-item>
|
<el-dropdown-item @click.native="showImportBox(1)" class="dropdown-content"><i class="el-icon-upload2"></i>{{$t('overall.importExcelLower')}}</el-dropdown-item>
|
||||||
<el-dropdown-item @click.native="showImportBox(2)" class="dropdown-content"><i class="el-icon-download"></i>{{$t('overall.exportExcelLower')}}</el-dropdown-item>
|
<el-dropdown-item @click.native="showImportBox(2)" class="dropdown-content"><i class="el-icon-download"></i>{{$t('overall.exportExcelLower')}}</el-dropdown-item>
|
||||||
</el-dropdown-menu>
|
</el-dropdown-menu>
|
||||||
|
|||||||
@@ -1,45 +1,41 @@
|
|||||||
<template>
|
<template>
|
||||||
<el-popover v-if="popBox.show" :placement="placement" width="367" ref="selectWalkPopBox" popper-class="nz-pop nz-pop-select-walk" transition="slide">
|
<el-popover @show="tempWalk.detailShow = false" v-if="popBox.show" :placement="placement" width="367" ref="selectWalkPopBox" popper-class="nz-pop nz-pop-select-walk" transition="slide">
|
||||||
<div>
|
<div class="pop-item-wider" @click="tempWalk.detailShow = false">
|
||||||
<div class="pop-item-wider">
|
<div v-if="tempWalk.detailShow" class="el-popover nz-pop walk-pop" :style="{left: detailPopPosition.left, top: detailPopPosition.top}">
|
||||||
<el-scrollbar class="select-walk-tree" ref="scrollbar">
|
<p><span class="metirc-tip-list">Name : </span><span>{{tempWalk.name}}</span></p>
|
||||||
<el-tree
|
<p><span class="metirc-tip-list">OID : </span><span>{{tempWalk.objectID}}</span></p>
|
||||||
ref="walkTree"
|
<p><span class="metirc-tip-list">MIB : </span><span>{{mibName(tempWalk.objectID)}}</span></p>
|
||||||
node-key="objectID"
|
|
||||||
:props="{label: 'name', children: 'subTree', disabled: disabledNode}"
|
|
||||||
:data="walkData"
|
|
||||||
:default-expanded-keys="expandedWalk"
|
|
||||||
:expand-on-click-node="false"
|
|
||||||
check-on-click-node
|
|
||||||
check-strictly
|
|
||||||
show-checkbox
|
|
||||||
@check="change"
|
|
||||||
:default-checked-keys="currentWalk"
|
|
||||||
>
|
|
||||||
<span slot-scope="{node, data}" :class="getClass(data.objectID)">
|
|
||||||
<span v-if="!data.type"><i class="el-icon-reading"></i></span>
|
|
||||||
<span v-else>
|
|
||||||
<i v-if="data.type.toUpperCase() == 'IDENTIFIER'" class="el-icon-folder-opened"></i>
|
|
||||||
<i v-if="data.type.toUpperCase() == 'OBJECT' && data.subTree.length > 0" class="el-icon-folder-opened"></i>
|
|
||||||
<i v-if="data.type.toUpperCase() == 'OBJECT' && data.subTree.length == 0" class="nz-icon nz-icon-leaf"></i>
|
|
||||||
<i v-if="data.type.toUpperCase() == 'ENTRY'" class="nz-icon nz-icon-table-edit"></i>
|
|
||||||
<i v-if="data.type.toUpperCase() == 'TABLE'" class="nz-icon nz-icon-table"></i>
|
|
||||||
<el-popover ref="walkDetail" trigger="click" placement="left" popper-class="nz-pop nz-pop-walk-detail">
|
|
||||||
<div>
|
|
||||||
<ul>
|
|
||||||
<li><span class="metirc-tip-list">Name : </span><span>{{data.name}}</span></li>
|
|
||||||
<li><span class="metirc-tip-list">OID : </span><span>{{data.objectID}}</span></li>
|
|
||||||
<li><span class="metirc-tip-list">MIB : </span><span>{{mibName(node)}}</span></li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
<span @click.stop slot="reference"><i class="nz-icon nz-icon-info-normal metric-tip-icon"></i></span>
|
|
||||||
</el-popover>
|
|
||||||
</span>
|
|
||||||
{{data.name}}
|
|
||||||
</span>
|
|
||||||
</el-tree>
|
|
||||||
</el-scrollbar>
|
|
||||||
</div>
|
</div>
|
||||||
|
<el-scrollbar class="select-walk-tree" ref="scrollbar">
|
||||||
|
<el-tree
|
||||||
|
ref="walkTree"
|
||||||
|
node-key="objectID"
|
||||||
|
:props="{label: 'name', children: 'subTree', disabled: disabledNode}"
|
||||||
|
:data="walkData"
|
||||||
|
:default-expanded-keys="expandedWalk"
|
||||||
|
:expand-on-click-node="false"
|
||||||
|
check-on-click-node
|
||||||
|
check-strictly
|
||||||
|
show-checkbox
|
||||||
|
@check="change"
|
||||||
|
:default-checked-keys="currentWalk"
|
||||||
|
>
|
||||||
|
<div slot-scope="{node, data}" class="walk-tree-item" :class="getClass(data.objectID)">
|
||||||
|
<span v-if="!data.type"><i class="el-icon-reading"></i></span>
|
||||||
|
<span v-else>
|
||||||
|
<i v-if="data.type.toUpperCase() == 'IDENTIFIER'" class="el-icon-folder-opened"></i>
|
||||||
|
<i v-if="data.type.toUpperCase() == 'OBJECT' && data.subTree.length > 0" class="el-icon-folder-opened"></i>
|
||||||
|
<i v-if="data.type.toUpperCase() == 'OBJECT' && data.subTree.length == 0" class="nz-icon nz-icon-leaf"></i>
|
||||||
|
<i v-if="data.type.toUpperCase() == 'ENTRY'" class="nz-icon nz-icon-table-edit"></i>
|
||||||
|
<i v-if="data.type.toUpperCase() == 'TABLE'" class="nz-icon nz-icon-table"></i>
|
||||||
|
<span @click.stop="showDetail(data, $event)" style="position: relative;">
|
||||||
|
<i class="nz-icon nz-icon-info-normal metric-tip-icon"></i>
|
||||||
|
</span>
|
||||||
|
</span>
|
||||||
|
{{data.name}}
|
||||||
|
</div>
|
||||||
|
</el-tree>
|
||||||
|
</el-scrollbar>
|
||||||
</div>
|
</div>
|
||||||
<div slot="reference">
|
<div slot="reference">
|
||||||
<slot name="trigger">
|
<slot name="trigger">
|
||||||
@@ -60,6 +56,8 @@
|
|||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
popBox: {show: false},
|
popBox: {show: false},
|
||||||
|
tempWalk: {detailShow: false, objectID: ''},
|
||||||
|
detailPopPosition: {top: "0", left: "0"}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
@@ -70,12 +68,13 @@
|
|||||||
},
|
},
|
||||||
mibName() {
|
mibName() {
|
||||||
return (value) => {
|
return (value) => {
|
||||||
return this.getMibName(value);
|
return value ? this.getMibName(value) : "";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods:{
|
methods:{
|
||||||
getMibName(node) {
|
getMibName(oid) {
|
||||||
|
let node = this.$refs.walkTree.getNode(oid);
|
||||||
let mibName = getMibName(node);
|
let mibName = getMibName(node);
|
||||||
function getMibName(n) {
|
function getMibName(n) {
|
||||||
if (n.parent && n.parent.parent) {
|
if (n.parent && n.parent.parent) {
|
||||||
@@ -94,10 +93,23 @@
|
|||||||
},
|
},
|
||||||
change(data, tree) {
|
change(data, tree) {
|
||||||
this.$emit("selectWalk", data.objectID);
|
this.$emit("selectWalk", data.objectID);
|
||||||
|
this.tempWalk.detailShow = false
|
||||||
},
|
},
|
||||||
show() {
|
show() {
|
||||||
this.popBox.show = true;
|
this.popBox.show = true;
|
||||||
},
|
},
|
||||||
|
showDetail(data, e) {
|
||||||
|
if (this.tempWalk.objectID != data.objectID) {
|
||||||
|
this.tempWalk.detailShow = false;
|
||||||
|
data.detailShow = !data.detailShow;
|
||||||
|
this.tempWalk = data;
|
||||||
|
} else {
|
||||||
|
data.detailShow = !data.detailShow;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.detailPopPosition.top = e.screenY-23 + "px";
|
||||||
|
this.detailPopPosition.left = e.screenX-16 + "px";
|
||||||
|
},
|
||||||
disabledNode(data) {
|
disabledNode(data) {
|
||||||
if (data.objectID) {
|
if (data.objectID) {
|
||||||
return false;
|
return false;
|
||||||
@@ -130,7 +142,32 @@
|
|||||||
.walk-active {
|
.walk-active {
|
||||||
color: $global-text-color-active;
|
color: $global-text-color-active;
|
||||||
}
|
}
|
||||||
|
.walk-tree-item {
|
||||||
|
height: 34px;
|
||||||
|
line-height: 34px;
|
||||||
|
}
|
||||||
.walk-detail {
|
.walk-detail {
|
||||||
z-index: 10000 !important;
|
z-index: 10000 !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.walk-pop {
|
||||||
|
position: fixed;
|
||||||
|
transform: translate(-100%, -100%);
|
||||||
|
}
|
||||||
|
.walk-pop::after {
|
||||||
|
content: '';
|
||||||
|
display: block;
|
||||||
|
width:0;
|
||||||
|
height:0;
|
||||||
|
overflow: hidden;
|
||||||
|
font-size: 0;
|
||||||
|
line-height: 0;
|
||||||
|
border: 5px;
|
||||||
|
border-style: dashed dashed dashed solid;
|
||||||
|
border-color: transparent transparent transparent #fff ;
|
||||||
|
position: absolute;
|
||||||
|
right: 0;
|
||||||
|
top: 50%;
|
||||||
|
transform: translate(10px, -50%);
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -82,6 +82,7 @@
|
|||||||
<template v-else-if="item.prop == 'labels'">
|
<template v-else-if="item.prop == 'labels'">
|
||||||
<el-tag @click="showTagDetail(scope.row.labels, key)"
|
<el-tag @click="showTagDetail(scope.row.labels, key)"
|
||||||
:class="{'link': key == 'asset' || key == 'endpoint' || key == 'project' || key == 'module' || key == 'datacenter'}"
|
:class="{'link': key == 'asset' || key == 'endpoint' || key == 'project' || key == 'module' || key == 'datacenter'}"
|
||||||
|
v-if="key != 'alertname' && key != 'severity'"
|
||||||
:type="tagType(key)"
|
:type="tagType(key)"
|
||||||
size="mini" v-for="(value, key) in scope.row.labels" class="alert-message-tag">{{key}}:{{value}}</el-tag>
|
size="mini" v-for="(value, key) in scope.row.labels" class="alert-message-tag">{{key}}:{{value}}</el-tag>
|
||||||
</template>
|
</template>
|
||||||
|
|||||||
Reference in New Issue
Block a user