diff --git a/src/assets/css/components/index.scss b/src/assets/css/components/index.scss index 1855d0ab..0b02e46d 100644 --- a/src/assets/css/components/index.scss +++ b/src/assets/css/components/index.scss @@ -40,6 +40,7 @@ @import './views/charts/ChartTwoSituationStatistics'; @import './views/charts/chartAlarmInfo'; @import './views/chartHeader'; +@import './views/charts/chartMap'; //@import '../chart'; diff --git a/src/assets/css/components/views/charts/chartMap.scss b/src/assets/css/components/views/charts/chartMap.scss new file mode 100644 index 00000000..98e71c3b --- /dev/null +++ b/src/assets/css/components/views/charts/chartMap.scss @@ -0,0 +1,60 @@ +.cn-chart__map { + display: flex; + flex-direction: column; + height: 100%; + + .map-drawing { + flex: 1; + } + .map-chart__legends { + flex-basis: 116px; + display: flex; + justify-content: center; + align-items: flex-start; + padding: 0 30px; + + .map-chart__legend { + padding-bottom: 5px; + flex-grow: 0; + flex-shrink: 1; + display: flex; + flex-direction: column; + align-items: center; + border: 1px solid #E0E6EF; + border-left-color: transparent; + border-right-color: transparent;; + cursor: pointer; + + &:first-of-type { + border-left-color: #E0E6EF; + } + &:last-of-type { + border-right-color: #E0E6EF; + } + &.map-chart__legend--active { + border-color: #59ABFF; + + .legend__value { + color: #1890FF; + } + } + .legend__circle-marker { + flex: 0 0 12px; + margin: 12px 0 8px 0; + width: 12px; + border-radius: 50%; + } + .legend__value { + font-size: 18px; + font-weight: bold; + color: #333333; + } + .legend__name { + padding: 0 10px; + color: #666666; + font-size: 12px; + text-align: center; + } + } + } +} diff --git a/src/components/entities/EntityList.vue b/src/components/entities/EntityList.vue index d8aa77a3..ea95d659 100644 --- a/src/components/entities/EntityList.vue +++ b/src/components/entities/EntityList.vue @@ -126,7 +126,8 @@ import { get } from '@/utils/http' import { api } from '@/utils/api' import * as echarts from 'echarts' -import { getChartColor, entityListLineOption } from '@/views/charts/charts/chart-options' +import { entityListLineOption } from '@/views/charts/charts/chart-options' +import { getChartColor } from '@/views/charts/charts/tools' import { legendMapping } from '@/views/charts/charts/chart-table-title' import unitConvert from '@/utils/unit-convert' import { unitTypes } from '@/utils/constants' diff --git a/src/utils/api.js b/src/utils/api.js index 77237b9c..994dffe8 100644 --- a/src/utils/api.js +++ b/src/utils/api.js @@ -84,15 +84,17 @@ export const api = { victimLocation: '/interface/detection/security/filter/victimLocation', eventSeverity: '/interface/detection/security/filter/severity', listBasic: '/interface/detection/security/list/basic', + listCount: '/interface/detection/security/list/count', overviewBasic: '/interface/detection/security/detail/overview/basic', overviewEvent: '/interface/detection/security/detail/overview/event' }, performanceEvent: { eventSeverityTrend: '/interface/detection/performance/filter/severityTrend', - securityType: '/interface/detection/performance/filter/eventType', + eventType: '/interface/detection/performance/filter/eventType', eventSeverity: '/interface/detection/performance/filter/severity', activeEntity: '/interface/detection/performance/filter/activeEntity', listBasic: '/interface/detection/performance/list/basic', + listCount: '/interface/detection/performance/list/count', overviewBasic: '/interface/detection/performance/detail/overview/basic' } }, diff --git a/src/utils/constants.js b/src/utils/constants.js index 97dd5ef9..294518fb 100644 --- a/src/utils/constants.js +++ b/src/utils/constants.js @@ -130,7 +130,19 @@ export const unitTypes = { export const chartTableDefaultPageSize = 10 // table类型图表默认每页数据量 export const chartTableTopOptions = [10, 100] // table类型图表的TOP-N选项 export const chartActiveIpTableOrderOptions = ['machine'] // active ip table类型图表的order 选项 -// table类型图表的TOP-N选项 +// table类型图表column映射 +export const chartTableColumnMapping = { + sessions: 'overall.sessions', + packets: 'overall.packets', + bytes: 'overall.bytes', + clientIp: 'overall.clientIp', + serverIp: 'overall.serverIp', + domain: 'overall.domain', + appName: 'overall.appName', + queryRate: 'dns.queryRate', + dnsLatency: 'dns.averageResolveLatency', + responseFailRate: 'dns.responseFailureRate' +} export const chartPieTableTopOptions = [ { name: 'Sessions', value: 'sessions' }, { name: 'Packets', value: 'packets' }, @@ -170,6 +182,20 @@ export const detectionPageType = { performanceEvent: 'performanceEvent' } +export const dnsServerRole = { + RTDNS: 'RTDNS', + TLDNS: 'TLDNS', + OPRDNS: 'OPRDNS', + ADNS: 'ADNS', + SBDNS: 'SBDNS', + RTDNSM: 'RTDNSM' +} + +export const chartColor = ['#5370C6', '#90CC74', '#FAC858', '#EE6666', + '#73BFDE', '#3BA172', '#FC8452', '#9960B4', + '#E97CCC', '#FEA69E', '#0F8AB2', '#57CBAC', + '#5888BC', '#63B6AC', '#EDC6B2', '#D5746B'] + export const iso36112 = { [storageKey.iso36112Capital]: 'data/countriesWithCapital', [storageKey.iso36112WorldLow]: 'worldChinaLow', diff --git a/src/utils/date-util.js b/src/utils/date-util.js index c6ed5412..85c6c3f5 100644 --- a/src/utils/date-util.js +++ b/src/utils/date-util.js @@ -29,7 +29,7 @@ export function getMillisecond (time) { ms = Math.floor(time * (10 ** (0 - difference))) } } - return ms + return ms ? Number(ms) : null } // 初始化日期 export function getNowTime (interval) { @@ -40,3 +40,7 @@ export function getNowTime (interval) { endTime } } +// 日期格式转换 +export function rTime (date) { + return window.$dayJs.tz(new Date(date)).format('YYYY-MM-DD HH:mm:ss') +} diff --git a/src/utils/tools.js b/src/utils/tools.js index adb545ed..8427d3f9 100644 --- a/src/utils/tools.js +++ b/src/utils/tools.js @@ -444,12 +444,18 @@ export function lineToHump (name) { } // 下划线转换空格首位大写 export function lineToSpace (name) { + if (_.isEmpty(name)) { + return '' + } return _.upperFirst(name.replace(/\_(\w)/g, function (all, letter) { return ` ${letter.toUpperCase()}` })) } // 驼峰转换下划线 export function humpToLine (name) { + if (_.isEmpty(name)) { + return '' + } return name.replace(/([A-Z])/g, '_$1').toLowerCase() } // 搜索功能:对象转字符串 diff --git a/src/views/charts/Chart.vue b/src/views/charts/Chart.vue index 4051874c..ca7a957c 100644 --- a/src/views/charts/Chart.vue +++ b/src/views/charts/Chart.vue @@ -16,6 +16,7 @@ :chart-data="chartData" :query-params="queryParams" :entity="entity" + @query="query" @showLoading="showLoading" > @@ -79,7 +80,7 @@ >