This repository has been archived on 2025-09-14. You can view files and clone it, but cannot push or open issues or pull requests.
Files
nezha-nezha-fronted/nezha-fronted/src/components/common/popBox/selectWalk.vue
chenjinsong ef664be5ef Merge remote-tracking branch 'origin/dev-3.1' into dev-3.1.1_theme
# Conflicts:
#	nezha-fronted/src/assets/css/common.scss
#	nezha-fronted/src/assets/css/common/tableCommon.scss
#	nezha-fronted/src/assets/stylus/main.scss
#	nezha-fronted/src/components/charts/chart-list.vue
#	nezha-fronted/src/components/charts/logs.vue
#	nezha-fronted/src/components/common/alert/alertLabel.vue
#	nezha-fronted/src/components/common/alert/alertRuleInfo.vue
#	nezha-fronted/src/components/common/bottomBox/bottomBox.vue
#	nezha-fronted/src/components/common/bottomBox/tabs/endpointQuery.vue
#	nezha-fronted/src/components/common/bottomBox/tabs/endpointQueryTab.vue
#	nezha-fronted/src/components/common/bottomBox/tabs/logBottomTab.vue
#	nezha-fronted/src/components/common/bottomBox/tabs/panelTabNew.vue
#	nezha-fronted/src/components/common/detailView/list/alertRule/alertRuleDetail.vue
#	nezha-fronted/src/components/common/detailView/list/asset/assetDetail.vue
#	nezha-fronted/src/components/common/detailView/list/dc/dcDetail.vue
#	nezha-fronted/src/components/common/detailView/list/endpoint/endpointDetail.vue
#	nezha-fronted/src/components/common/detailView/list/module/moduleDetail.vue
#	nezha-fronted/src/components/common/detailView/nzDetailView.vue
#	nezha-fronted/src/components/common/detailView/view/detailViewRight.vue
#	nezha-fronted/src/components/common/labelFilter/clickSearch.vue
#	nezha-fronted/src/components/common/multipleTime.vue
#	nezha-fronted/src/components/common/pickTime.vue
#	nezha-fronted/src/components/common/popBox/topToolMoreOptions.vue
#	nezha-fronted/src/components/common/project/L5/topoTooltip.vue
#	nezha-fronted/src/components/common/project/popData/Info.vue
#	nezha-fronted/src/components/common/rightBox/alertRuleBox.vue
#	nezha-fronted/src/components/common/table/alert/alertRuleTable.vue
#	nezha-fronted/src/components/common/table/alert/alertSilenceTable.vue
#	nezha-fronted/src/components/common/table/settings/userTable.vue
#	nezha-fronted/src/components/layout/header.vue
#	nezha-fronted/src/components/page/alert/alertMessage.vue
#	nezha-fronted/src/components/page/alert/nzAlertTag.vue
#	nezha-fronted/src/components/page/asset/components/operation.vue
#	nezha-fronted/src/components/page/config/mibBrowser.vue
#	nezha-fronted/src/components/page/dashboard/explore/exploreItem.vue
#	nezha-fronted/src/components/page/dashboard/explore/logTab.vue
#	nezha-fronted/src/components/page/dashboard/explore/promqlInput.vue
#	nezha-fronted/src/components/page/dashboard/overview/overview2.vue
#	nezha-fronted/src/components/page/dashboard/panel.vue
2021-11-01 18:24:01 +08:00

134 lines
4.4 KiB
Vue

<template>
<el-popover :disabled="disabled" @show="tempWalk.detailShow = false" v-if="popBox.show" :placement="placement" width="367" ref="selectWalkPopBox" popper-class="right-box-select-top right-public-box-dropdown-top nz-pop nz-pop-select-walk" transition="slide">
<div class="pop-item-wider" @click="tempWalk.detailShow = false">
<div v-if="tempWalk.detailShow" class="el-popover walk-pop" :style="{left: detailPopPosition.left, top: detailPopPosition.top}">
<p><span class="metirc-tip-list">Name&nbsp;:&nbsp;</span><span>{{tempWalk.name}}</span></p>
<p><span class="metirc-tip-list">OID&nbsp;:&nbsp;</span><span>{{tempWalk.objectID}}</span></p>
<p><span class="metirc-tip-list">MIB&nbsp;:&nbsp;</span><span>{{mibName(tempWalk.objectID)}}</span></p>
</div>
<div 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"
@node-click="hideDetail"
:default-checked-keys="currentWalk"
>
<div slot-scope="data" :class="getClass(data.data.objectID)" class="walk-tree-item">
<span>
<span v-if="!data.data.type"><i class="nz-icon nz-icon-reading"></i></span>
<span v-else>
<i v-if="data.data.type.toUpperCase() === 'IDENTIFIER'" class="el-icon-folder-opened"></i>
<i v-if="data.data.type.toUpperCase() === 'OBJECT' && data.data.subTree.length > 0" class="el-icon-folder-opened"></i>
<i v-if="data.data.type.toUpperCase() === 'OBJECT' && data.data.subTree.length == 0" class="nz-icon nz-icon-leaf"></i>
<i v-if="data.data.type.toUpperCase() === 'ENTRY'" class="nz-icon nz-icon-table-edit"></i>
<i v-if="data.data.type.toUpperCase() === 'TABLE'" class="nz-icon nz-icon-table"></i>
<span style="position: relative;" @click.stop="showDetail(data.data, $event)">
<i class="nz-icon nz-icon-info-normal metric-tip-icon"></i>
</span>
</span>
</span>
{{data.data.name}}
</div>
</el-tree>
</div>
</div>
<div slot="reference">
<slot name="trigger">
</slot>
</div>
</el-popover>
</template>
<script>
export default {
name: 'selectWalk',
props: {
placement: { type: String },
walkData: { type: Array },
currentWalk: { type: Array },
expandedWalk: { type: Array },
disabled: {type: Boolean, default: false }
},
data () {
return {
popBox: { show: true },
tempWalk: { detailShow: false, objectID: '' },
detailPopPosition: { top: '0', left: '0' }
}
},
computed: {
getClass () {
return (value) => {
if (!value) {
return ''
}
return this.currentWalk.indexOf(value) == -1 ? '' : 'walk-active'
}
},
mibName () {
return (value) => {
return value ? this.getMibName(value) : ''
}
}
},
methods: {
getMibName (oid) {
const node = this.$refs.walkTree.getNode(oid)
const mibName = getMibName(node)
function getMibName (n) {
if (n.parent && n.parent.parent) {
return getMibName(n.parent)
} else if (n.parent) {
return n.data.name
} else {
return ''
}
}
if (mibName) {
return mibName
} else {
return ''
}
},
change (data, tree) {
this.$emit('selectWalk', data.objectID)
},
show () {
this.popBox.show = true
},
hideDetail (data, num) {
this.tempWalk.detailShow = false
},
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) {
if (data.objectID) {
return false
}
return true
}
},
beforeDestroy () {
}
}
</script>