CN-1087 fix: 实体关系探索架子
This commit is contained in:
@@ -27,6 +27,10 @@ const routes = [
|
|||||||
path: '/entityDetail',
|
path: '/entityDetail',
|
||||||
component: () => import('@/views/entityExplorer/EntityDetail')
|
component: () => import('@/views/entityExplorer/EntityDetail')
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
path: '/entityGraph',
|
||||||
|
component: () => import('@/views/entityExplorer/EntityGraph')
|
||||||
|
},
|
||||||
{
|
{
|
||||||
path: '/detection',
|
path: '/detection',
|
||||||
redirect: '/detection/securityEvent'
|
redirect: '/detection/securityEvent'
|
||||||
|
|||||||
@@ -90,7 +90,7 @@ export const entityType = {
|
|||||||
|
|
||||||
export const entityDetailTabsName = {
|
export const entityDetailTabsName = {
|
||||||
informationAggregation: 'informationAggregation',
|
informationAggregation: 'informationAggregation',
|
||||||
domainNameResolution: 'domainNameResolution',
|
relatedEntity: 'relatedEntity',
|
||||||
openPort: 'openPort',
|
openPort: 'openPort',
|
||||||
digitalCertificate: 'digitalCertificate',
|
digitalCertificate: 'digitalCertificate',
|
||||||
securityEvent: 'securityEvent',
|
securityEvent: 'securityEvent',
|
||||||
|
|||||||
@@ -13,7 +13,7 @@
|
|||||||
<i v-if="tab.warnFlag" :class="tab.warnIcon" class="tab-pane-warn--icon"></i>
|
<i v-if="tab.warnFlag" :class="tab.warnIcon" class="tab-pane-warn--icon"></i>
|
||||||
</template>
|
</template>
|
||||||
<information-aggregation v-if="tab.name === entityDetailTabsName.informationAggregation && tab.name === activeTab" @toggleLoading="setLoading" :entity="entity"></information-aggregation>
|
<information-aggregation v-if="tab.name === entityDetailTabsName.informationAggregation && tab.name === activeTab" @toggleLoading="setLoading" :entity="entity"></information-aggregation>
|
||||||
<domain-name-resolution v-else-if="tab.name === entityDetailTabsName.domainNameResolution && tab.name === activeTab" @toggleLoading="setLoading" :entity="entity" :timeFilter="oneDayTimeFilter"></domain-name-resolution>
|
<domain-name-resolution v-else-if="tab.name === entityDetailTabsName.relatedEntity && tab.name === activeTab" @toggleLoading="setLoading" :entity="entity" :timeFilter="oneDayTimeFilter"></domain-name-resolution>
|
||||||
<digital-certificate v-else-if="tab.name === entityDetailTabsName.digitalCertificate && tab.name === activeTab" @toggleLoading="setLoading" :timeFilter="oneDayTimeFilter" />
|
<digital-certificate v-else-if="tab.name === entityDetailTabsName.digitalCertificate && tab.name === activeTab" @toggleLoading="setLoading" :timeFilter="oneDayTimeFilter" />
|
||||||
<security-event v-else-if="tab.name === entityDetailTabsName.securityEvent && tab.name === activeTab" @toggleLoading="setLoading" :timeFilter="oneDayTimeFilter" @checkWarn="setWarn" />
|
<security-event v-else-if="tab.name === entityDetailTabsName.securityEvent && tab.name === activeTab" @toggleLoading="setLoading" :timeFilter="oneDayTimeFilter" @checkWarn="setWarn" />
|
||||||
<performance-event v-else-if="tab.name === entityDetailTabsName.performanceEvent && tab.name === activeTab" @toggleLoading="setLoading" :timeFilter="oneDayTimeFilter" @checkWarn="setWarn" />
|
<performance-event v-else-if="tab.name === entityDetailTabsName.performanceEvent && tab.name === activeTab" @toggleLoading="setLoading" :timeFilter="oneDayTimeFilter" @checkWarn="setWarn" />
|
||||||
@@ -80,7 +80,7 @@ export default {
|
|||||||
const entityType = props.entity.entityType
|
const entityType = props.entity.entityType
|
||||||
|
|
||||||
const tabs = reactive([
|
const tabs = reactive([
|
||||||
{ name: entityDetailTabsName.domainNameResolution, label: i18n.global.t('entities.relatedEntity'), icon: 'cn-icon cn-icon-domain-name-resolution' },
|
{ name: entityDetailTabsName.relatedEntity, label: i18n.global.t('entities.relatedEntity'), icon: 'cn-icon cn-icon-domain-name-resolution' },
|
||||||
{ name: entityDetailTabsName.openPort, label: i18n.global.t('entities.openPort'), icon: 'cn-icon cn-icon-open-port' },
|
{ name: entityDetailTabsName.openPort, label: i18n.global.t('entities.openPort'), icon: 'cn-icon cn-icon-open-port' },
|
||||||
// { name: entityDetailTabsName.digitalCertificate, label: i18n.global.t('entities.digitalCertificate'), icon: 'cn-icon cn-icon-digital-certificate' },
|
// { name: entityDetailTabsName.digitalCertificate, label: i18n.global.t('entities.digitalCertificate'), icon: 'cn-icon cn-icon-digital-certificate' },
|
||||||
{ name: entityDetailTabsName.securityEvent, label: i18n.global.t('overall.securityEvent'), icon: 'cn-icon cn-icon-security-event', warnIcon: 'cn-icon cn-icon-warn', warnFlag: false },
|
{ name: entityDetailTabsName.securityEvent, label: i18n.global.t('overall.securityEvent'), icon: 'cn-icon cn-icon-security-event', warnIcon: 'cn-icon cn-icon-warn', warnFlag: false },
|
||||||
|
|||||||
38
src/views/entityExplorer/EntityGraph.vue
Normal file
38
src/views/entityExplorer/EntityGraph.vue
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
<template>
|
||||||
|
<div class="entity-graph">
|
||||||
|
<div class="entity-graph__chart"></div>
|
||||||
|
<div class="entity-graph__detail">
|
||||||
|
<ip-list v-if="mode === 'ipList'"></ip-list>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import IpList from '@/views/entityExplorer/entityGraphDetail/IpList'
|
||||||
|
export default {
|
||||||
|
name: 'EntityRelationship',
|
||||||
|
components: {
|
||||||
|
IpList
|
||||||
|
},
|
||||||
|
data () {
|
||||||
|
return {
|
||||||
|
mode: 'ipList' // ipList, ipDetail, domainList, domainDetail, appList, appDetail
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
<style lang="scss">
|
||||||
|
.entity-graph {
|
||||||
|
display: flex;
|
||||||
|
|
||||||
|
.entity-graph__chart {
|
||||||
|
width: calc(100% - 360px);
|
||||||
|
}
|
||||||
|
|
||||||
|
.entity-graph__detail {
|
||||||
|
width: 360px;
|
||||||
|
border-left: 1px solid #E2E5EC;
|
||||||
|
overflow: auto;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
13
src/views/entityExplorer/entityGraphDetail/IpList.vue
Normal file
13
src/views/entityExplorer/entityGraphDetail/IpList.vue
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
<template>
|
||||||
|
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
name: 'IpList'
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
|
||||||
|
</style>
|
||||||
Reference in New Issue
Block a user