feat: 实体详情--安全事件、性能事件tab添加error处理

This commit is contained in:
刘洪洪
2023-05-08 14:39:53 +08:00
parent a3c2fcb1d8
commit 3b6fd3fb54
2 changed files with 107 additions and 91 deletions

View File

@@ -1,39 +1,43 @@
<template>
<chart-error v-if="showError" style="margin-top: 18px;margin-left: 8px;"></chart-error>
<chart-no-data v-if="isNoData && !showError"></chart-no-data>
<div
class="entity-detail-event-border"
v-for="item in eventList"
:key="item.eventId"
style="margin-bottom: 10px;">
<div class="cn-detection--list">
<div class="cn-detection__case" style="height: 46px">
<div class="cn-detection__icon" :style="`background-color: ${eventSeverityColor1[item.eventSecurity]}`"></div>
<div class="cn-detection__row">
<div class="cn-detection__header">
<div v-if="!isNoData && !showError">
<div
class="entity-detail-event-border"
v-for="item in eventList"
:key="item.eventId"
style="margin-bottom: 10px;">
<div class="cn-detection--list">
<div class="cn-detection__case" style="height: 46px">
<div class="cn-detection__icon" :style="`background-color: ${eventSeverityColor1[item.eventSecurity]}`"></div>
<div class="cn-detection__row">
<div class="cn-detection__header">
<span
class="detection-event-severity-color-block"
:style="`background-color: ${eventSeverityColor1[item.eventSeverity]}`">
</span>
<span class="detection-event-severity-block" style="margin-right: 30px">
<span class="detection-event-severity-block" style="margin-right: 30px">
{{ item.eventType || '-' }}
</span>
<div class="cn-detection__body">
<div class="body__basic-info">
<div class="basic-info">
<div class="basic-info__item" v-if="item.eventSeverity">
<i class="cn-icon cn-icon-severity-level"></i>
<span>{{ $t('network.severity') }}&nbsp;:&nbsp;&nbsp;</span>
<span>{{ item.eventSeverity || '-' }}</span>
</div>
<div class="basic-info__item">
<i class="cn-icon cn-icon-time2"></i>
<span>{{ $t('detection.list.startTime') }}&nbsp;:&nbsp;&nbsp;</span>
<span>{{ dateFormatByAppearance(item.startTime) || '-' }}</span>
</div>
<div class="basic-info__item">
<i class="cn-icon cn-icon-Duration"></i>
<span>{{ $t('overall.duration') }}&nbsp;:&nbsp;&nbsp;&nbsp;</span>
<span>{{ unitConvert(item.durationMs, 'time', null, null, 0).join(' ') || '-' }}</span>
<div class="cn-detection__body">
<div class="body__basic-info">
<div class="basic-info">
<div class="basic-info__item" v-if="item.eventSeverity">
<i class="cn-icon cn-icon-severity-level"></i>
<span>{{ $t('network.severity') }}&nbsp;:&nbsp;&nbsp;</span>
<span>{{ item.eventSeverity || '-' }}</span>
</div>
<div class="basic-info__item">
<i class="cn-icon cn-icon-time2"></i>
<span>{{ $t('detection.list.startTime') }}&nbsp;:&nbsp;&nbsp;</span>
<span>{{ dateFormatByAppearance(item.startTime) || '-' }}</span>
</div>
<div class="basic-info__item">
<i class="cn-icon cn-icon-Duration"></i>
<span>{{ $t('overall.duration') }}&nbsp;:&nbsp;&nbsp;&nbsp;</span>
<span>{{ unitConvert(item.durationMs, 'time', null, null, 0).join(' ') || '-' }}</span>
</div>
</div>
</div>
</div>
@@ -54,9 +58,11 @@ import { api } from '@/utils/api'
import { ref } from 'vue'
import { useRoute } from 'vue-router'
import chartMixin from '@/views/charts2/chart-mixin'
import ChartError from '@/components/common/Error'
export default {
name: 'PerformanceEvent',
components: { ChartError },
mixins: [chartMixin],
data () {
return {
@@ -67,6 +73,8 @@ export default {
},
setup () {
const { query } = useRoute()
const entityType = query.entityType
const entityName = query.entityName
// 获取url携带的range、startTime、endTime
const rangeParam = query.range
const startTimeParam = query.startTime
@@ -76,10 +84,7 @@ export default {
const dateRangeValue = rangeParam ? parseInt(query.range) : 60
const timeFilter = ref({ dateRangeValue })
if (!startTimeParam || !endTimeParam) {
const {
startTime,
endTime
} = getNowTime(60)
const { startTime, endTime } = getNowTime(60)
timeFilter.value.startTime = startTime
timeFilter.value.endTime = endTime
} else {
@@ -88,6 +93,8 @@ export default {
}
return {
entityType,
entityName,
timeFilter
}
},
@@ -98,6 +105,8 @@ export default {
unitConvert,
initData () {
const params = {
type: this.entityType,
name: this.entityName,
startTime: getSecond(this.timeFilter.startTime),
endTime: getSecond(this.timeFilter.endTime)
}

View File

@@ -1,64 +1,68 @@
<template>
<chart-error v-if="showError" style="margin-top: 18px;margin-left: 8px;"></chart-error>
<chart-no-data v-if="isNoData && !showError"></chart-no-data>
<div
class="entity-detail-event-border"
v-for="item in eventList"
:key="item.eventId"
style="margin-bottom: 10px;">
<div class="cn-detection--list">
<div class="cn-detection__case" style="height: 70px">
<div class="cn-detection__icon" :style="`background-color: ${eventSeverityColor1[item.eventSecurity]}`"></div>
<div class="cn-detection__row">
<div class="cn-detection__header">
<div v-if="!isNoData && !showError">
<div
class="entity-detail-event-border"
v-for="item in eventList"
:key="item.eventId"
style="margin-bottom: 10px;">
<div class="cn-detection--list">
<div class="cn-detection__case" style="height: 70px">
<div class="cn-detection__icon" :style="`background-color: ${eventSeverityColor1[item.eventSecurity]}`"></div>
<div class="cn-detection__row">
<div class="cn-detection__header">
<span
class="detection-event-severity-color-block"
:style="`background-color: ${eventSeverityColor1[item.eventSeverity]}`">
</span>
<span class="detection-event-severity-block">{{ item.securityType || '-' }}</span>
<i class="cn-icon cn-icon-attacker"></i>{{ item.offenderIp || '-' }}
<div class="domain">{{ item.offenderDomain }}</div>
<span class="line">-------</span>
<span class="circle"></span>
<i class="cn-icon cn-icon-attacked"></i>{{ item.victimIp || '-' }}
<div class="domain">{{ item.victimDomain }}</div>
</div>
<div class="cn-detection__body">
<div class="body__basic-info">
<div class="basic-info">
<div class="basic-info__item" v-if="item.eventSecurity">
<i class="cn-icon cn-icon-severity-level"></i>
<span>{{ $t('detection.list.eventSecurity') }}&nbsp;:&nbsp;&nbsp;</span>
<span>{{ item.eventSecurity || '-' }}</span>
</div>
<div class="basic-info__item" v-if="item.eventSeverity">
<i class="cn-icon cn-icon-severity-level"></i>
<span>{{ $t('network.severity') }}&nbsp;:&nbsp;&nbsp;</span>
<span>{{ item.eventSeverity || '-' }}</span>
</div>
<div class="basic-info__item" v-if="item.eventType">
<i class="cn-icon cn-icon-event-type"></i>
<span>{{ $t('detections.eventType') }}&nbsp;:&nbsp;&nbsp;</span>
<span>{{ item.eventType || '-' }}</span>
</div>
<div class="basic-info__item" v-if="item.malwareName">
<i class="cn-icon cn-icon-trojan"></i>
<span>{{ $t('detection.list.malwareName') }}&nbsp;:&nbsp;&nbsp;</span>
<span>{{ item.malwareName || '-' }}</span>
</div>
<div class="basic-info__item" v-if="item.cryptominingPool">
<i class="cn-icon cn-icon-mining-pool"></i>
<span>{{ $t('detection.list.cryptominingPool') }}&nbsp;:&nbsp;&nbsp;</span>
<span>{{ item.cryptominingPool || '-' }}</span>
</div>
<div class="basic-info__item">
<i class="cn-icon cn-icon-time2"></i>
<span>{{ $t('detection.list.startTime') }}&nbsp;:&nbsp;&nbsp;</span>
<span>{{ dateFormatByAppearance(item.startTime) || '-' }}</span>
</div>
<div class="basic-info__item">
<i class="cn-icon cn-icon-Duration"></i>
<span>{{ $t('overall.duration') }}&nbsp;:&nbsp;&nbsp;</span>
<span>{{ unitConvert(item.durationMs, 'time', null, null, 0).join(' ') || '-' }}</span>
<span class="detection-event-severity-block">{{ item.securityType || '-' }}</span>
<i class="cn-icon cn-icon-attacker"></i>{{ item.offenderIp || '-' }}
<div class="domain">{{ item.offenderDomain }}</div>
<span class="line">-------</span>
<span class="circle"></span>
<i class="cn-icon cn-icon-attacked"></i>{{ item.victimIp || '-' }}
<div class="domain">{{ item.victimDomain }}</div>
</div>
<div class="cn-detection__body">
<div class="body__basic-info">
<div class="basic-info">
<div class="basic-info__item" v-if="item.eventSecurity">
<i class="cn-icon cn-icon-severity-level"></i>
<span>{{ $t('detection.list.eventSecurity') }}&nbsp;:&nbsp;&nbsp;</span>
<span>{{ item.eventSecurity || '-' }}</span>
</div>
<div class="basic-info__item" v-if="item.eventSeverity">
<i class="cn-icon cn-icon-severity-level"></i>
<span>{{ $t('network.severity') }}&nbsp;:&nbsp;&nbsp;</span>
<span>{{ item.eventSeverity || '-' }}</span>
</div>
<div class="basic-info__item" v-if="item.eventType">
<i class="cn-icon cn-icon-event-type"></i>
<span>{{ $t('detections.eventType') }}&nbsp;:&nbsp;&nbsp;</span>
<span>{{ item.eventType || '-' }}</span>
</div>
<div class="basic-info__item" v-if="item.malwareName">
<i class="cn-icon cn-icon-trojan"></i>
<span>{{ $t('detection.list.malwareName') }}&nbsp;:&nbsp;&nbsp;</span>
<span>{{ item.malwareName || '-' }}</span>
</div>
<div class="basic-info__item" v-if="item.cryptominingPool">
<i class="cn-icon cn-icon-mining-pool"></i>
<span>{{ $t('detection.list.cryptominingPool') }}&nbsp;:&nbsp;&nbsp;</span>
<span>{{ item.cryptominingPool || '-' }}</span>
</div>
<div class="basic-info__item">
<i class="cn-icon cn-icon-time2"></i>
<span>{{ $t('detection.list.startTime') }}&nbsp;:&nbsp;&nbsp;</span>
<span>{{ dateFormatByAppearance(item.startTime) || '-' }}</span>
</div>
<div class="basic-info__item">
<i class="cn-icon cn-icon-Duration"></i>
<span>{{ $t('overall.duration') }}&nbsp;:&nbsp;&nbsp;</span>
<span>{{ unitConvert(item.durationMs, 'time', null, null, 0).join(' ') || '-' }}</span>
</div>
</div>
</div>
</div>
@@ -91,6 +95,8 @@ export default {
},
setup () {
const { query } = useRoute()
const entityType = query.entityType
const entityName = query.entityName
// 获取url携带的range、startTime、endTime
const rangeParam = query.range
const startTimeParam = query.startTime
@@ -100,10 +106,7 @@ export default {
const dateRangeValue = rangeParam ? parseInt(query.range) : 60
const timeFilter = ref({ dateRangeValue })
if (!startTimeParam || !endTimeParam) {
const {
startTime,
endTime
} = getNowTime(60)
const { startTime, endTime } = getNowTime(60)
timeFilter.value.startTime = startTime
timeFilter.value.endTime = endTime
} else {
@@ -112,6 +115,8 @@ export default {
}
return {
entityType,
entityName,
timeFilter
}
},
@@ -122,6 +127,8 @@ export default {
unitConvert,
initData () {
const params = {
type: this.entityType,
name: this.entityName,
startTime: getSecond(this.timeFilter.startTime),
endTime: getSecond(this.timeFilter.endTime)
}