2021-12-14 16:42:45 +08:00
|
|
|
<template>
|
2021-12-28 21:23:18 +08:00
|
|
|
<div class="cn-entity--list" :style="{zIndex: !isCollapse ? 1 : 'unset'}">
|
2021-12-16 18:22:47 +08:00
|
|
|
<!-- 左侧下拉按钮 -->
|
|
|
|
|
<div class="cn-entity__collapse">
|
2021-12-28 21:23:18 +08:00
|
|
|
<span @click="switchCollapse" :class="{'reg-down': !isCollapse}"><i class="cn-icon cn-icon-arrow-right"></i></span>
|
2021-12-16 18:22:47 +08:00
|
|
|
</div>
|
|
|
|
|
<div class="cn-entity__case">
|
|
|
|
|
<div class="cn-entity__icon"><i :class="iconClass"></i></div>
|
|
|
|
|
<div class="cn-entity__row">
|
|
|
|
|
<div class="cn-entity__header">{{entityData.ipAddr || entityData.domainName || entityData.appName || 'Unknown'}}</div>
|
|
|
|
|
<div class="cn-entity__body">
|
|
|
|
|
<div class="body__basic-info">
|
|
|
|
|
<div class="basic-info">
|
|
|
|
|
<template v-if="entityData.entityType === 'ip'">
|
|
|
|
|
<div class="basic-info__item">
|
2021-12-31 10:55:49 +08:00
|
|
|
<i class="cn-icon cn-icon-country"></i>
|
|
|
|
|
<span>{{$t('overall.country')}} : </span>
|
2021-12-16 18:22:47 +08:00
|
|
|
<span>{{entityData.ipLocationCountry || '-'}}</span>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="basic-info__item">
|
|
|
|
|
<i class="cn-icon cn-icon-position"></i>
|
2021-12-31 10:55:49 +08:00
|
|
|
<span>{{$t('overall.region')}} : </span>
|
2021-12-16 18:22:47 +08:00
|
|
|
<span>{{entityData.ipLocationProvince ? (entityData.ipLocationProvince + ', ' + entityData.ipLocationCity) : '-'}}</span>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="basic-info__item">
|
|
|
|
|
<i class="cn-icon cn-icon-cloud"></i>
|
2021-12-31 10:55:49 +08:00
|
|
|
<span>{{$t('entities.asn')}} : </span>
|
2021-12-16 18:22:47 +08:00
|
|
|
<span>{{entityData.ipAsn || '-'}}</span>
|
|
|
|
|
</div>
|
|
|
|
|
</template>
|
|
|
|
|
<template v-else-if="entityData.entityType === 'domain'">
|
|
|
|
|
<div class="basic-info__item">
|
|
|
|
|
<i class="cn-icon cn-icon-category"></i>
|
|
|
|
|
<span>{{$t('entities.domainDetail.categoryGroup')}} : </span>
|
|
|
|
|
<span>{{entityData.domainCategoryGroup || '-'}}</span>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="basic-info__item">
|
|
|
|
|
<i class="cn-icon cn-icon-sub-category"></i>
|
|
|
|
|
<span>{{$t('entities.category')}} : </span>
|
|
|
|
|
<span>{{entityData.domainCategory || '-'}}</span>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="basic-info__item">
|
|
|
|
|
<i class="cn-icon cn-icon-credit"></i>
|
|
|
|
|
<span>{{$t('entities.reputationLevel')}} : </span>
|
|
|
|
|
<span>{{entityData.domainReputationScore || '-'}}</span>
|
|
|
|
|
</div>
|
|
|
|
|
</template>
|
|
|
|
|
<template v-else-if="entityData.entityType === 'app'">
|
|
|
|
|
<div class="basic-info__item">
|
|
|
|
|
<i class="cn-icon cn-icon-id"></i>
|
|
|
|
|
<span>{{$t('entities.category')}} : </span>
|
|
|
|
|
<span>{{entityData.appId || '-'}}</span>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="basic-info__item">
|
|
|
|
|
<i class="cn-icon cn-icon-category"></i>
|
|
|
|
|
<span>{{$t('entities.subcategory')}} : </span>
|
|
|
|
|
<span>{{entityData.appCategory || '-'}}</span>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="basic-info__item">
|
|
|
|
|
<i class="cn-icon cn-icon-sub-category"></i>
|
|
|
|
|
<span>{{$t('entities.risk')}} : </span>
|
|
|
|
|
<span>{{entityData.appSubategory || '-'}}</span>
|
|
|
|
|
</div>
|
|
|
|
|
</template>
|
|
|
|
|
<!-- 通用字段 -->
|
|
|
|
|
<div class="basic-info__item">
|
|
|
|
|
<i class="cn-icon cn-icon-rise"></i>
|
2021-12-16 23:03:39 +08:00
|
|
|
<span>{{$t('entities.sentThroughput')}} : </span>
|
2022-01-05 23:56:27 +08:00
|
|
|
<span>{{entityData.bytesSentRate ? unitConvert(entityData.bytesSentRate, unitTypes.byte).join(' ') + 'ps' : '-'}}</span>
|
2021-12-16 18:22:47 +08:00
|
|
|
</div>
|
|
|
|
|
<div class="basic-info__item">
|
|
|
|
|
<i class="cn-icon cn-icon-fall"></i>
|
2021-12-16 23:03:39 +08:00
|
|
|
<span>{{$t('entities.receivedThroughput')}} : </span>
|
2022-01-05 23:56:27 +08:00
|
|
|
<span>{{entityData.bytesReceivedRate ? unitConvert(entityData.bytesReceivedRate, unitTypes.byte).join(' ') + 'ps' : '-'}}</span>
|
2021-12-16 18:22:47 +08:00
|
|
|
</div>
|
|
|
|
|
<div class="basic-info__item">
|
|
|
|
|
<i class="cn-icon cn-icon-entity-alert"></i>
|
2021-12-16 23:03:39 +08:00
|
|
|
<span>{{$t('entities.recentAlert')}} : </span>
|
2021-12-16 18:22:47 +08:00
|
|
|
<span>{{entityData.alertCount || '-'}}</span>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="basic-info__item">
|
|
|
|
|
<i class="cn-icon cn-icon-safe"></i>
|
2021-12-16 23:03:39 +08:00
|
|
|
<span>{{$t('entities.recentSecurity')}} : </span>
|
2021-12-16 18:22:47 +08:00
|
|
|
<span>{{entityData.securityCount || '-'}}</span>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
2022-01-03 22:46:22 +08:00
|
|
|
<div
|
|
|
|
|
class="show-detail"
|
|
|
|
|
:style="{visibility: !isCollapse ? 'visible' : 'hidden'}"
|
|
|
|
|
@click="showDetail"
|
|
|
|
|
>{{$t('overall.detail')}}>></div>
|
2021-12-16 18:22:47 +08:00
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
2021-12-28 21:23:18 +08:00
|
|
|
<el-collapse-transition>
|
|
|
|
|
<div class="cn-entity__detail-overview" v-show="!isCollapse">
|
|
|
|
|
<el-divider></el-divider>
|
|
|
|
|
<detail-overview
|
|
|
|
|
:entity="entityData"
|
2022-01-05 23:56:27 +08:00
|
|
|
:time-filter="timeFilter"
|
2021-12-28 21:23:18 +08:00
|
|
|
></detail-overview>
|
|
|
|
|
</div>
|
|
|
|
|
</el-collapse-transition>
|
2021-12-16 18:22:47 +08:00
|
|
|
</div>
|
|
|
|
|
</div>
|
2021-12-14 16:42:45 +08:00
|
|
|
</template>
|
|
|
|
|
|
|
|
|
|
<script>
|
2021-12-16 18:22:47 +08:00
|
|
|
import entityListMixin from './entityListMixin'
|
2021-12-28 21:23:18 +08:00
|
|
|
import DetailOverview from '@/views/entityExplorer/entityList/detailOverview/DetailOverview'
|
2022-01-05 23:56:27 +08:00
|
|
|
import { unitTypes } from '@/utils/constants'
|
|
|
|
|
import unitConvert from '@/utils/unit-convert'
|
2021-12-14 16:42:45 +08:00
|
|
|
export default {
|
2021-12-16 18:22:47 +08:00
|
|
|
name: 'Row',
|
2021-12-17 20:56:25 +08:00
|
|
|
props: {
|
2021-12-31 10:40:37 +08:00
|
|
|
index: Number,
|
|
|
|
|
timeFilter: Object
|
2021-12-17 20:56:25 +08:00
|
|
|
},
|
2021-12-28 21:23:18 +08:00
|
|
|
components: {
|
|
|
|
|
DetailOverview
|
|
|
|
|
},
|
2021-12-16 23:03:39 +08:00
|
|
|
mixins: [entityListMixin],
|
|
|
|
|
data () {
|
|
|
|
|
return {
|
2021-12-28 21:23:18 +08:00
|
|
|
isCollapse: true // 是否是折叠状态
|
2021-12-16 23:03:39 +08:00
|
|
|
}
|
|
|
|
|
},
|
2022-01-05 23:56:27 +08:00
|
|
|
setup () {
|
|
|
|
|
return {
|
|
|
|
|
unitConvert,
|
|
|
|
|
unitTypes
|
|
|
|
|
}
|
|
|
|
|
},
|
2021-12-16 23:03:39 +08:00
|
|
|
methods: {
|
2021-12-28 21:23:18 +08:00
|
|
|
/* 切换折叠状态 */
|
|
|
|
|
switchCollapse () {
|
2021-12-16 23:03:39 +08:00
|
|
|
this.isCollapse = !this.isCollapse
|
2021-12-28 21:23:18 +08:00
|
|
|
this.$emit('switchCollapse', this.isCollapse, this.index)
|
2021-12-17 20:56:25 +08:00
|
|
|
},
|
2021-12-28 21:23:18 +08:00
|
|
|
/* 设为折叠状态 */
|
|
|
|
|
collapse () {
|
|
|
|
|
this.isCollapse = true
|
2021-12-16 23:03:39 +08:00
|
|
|
}
|
|
|
|
|
}
|
2021-12-14 16:42:45 +08:00
|
|
|
}
|
|
|
|
|
</script>
|