diff --git a/src/assets/css/components/index.scss b/src/assets/css/components/index.scss index 847a2740..1855d0ab 100644 --- a/src/assets/css/components/index.scss +++ b/src/assets/css/components/index.scss @@ -38,6 +38,8 @@ @import './views/charts/chartEchartAppRelateDomain'; @import './views/charts/ChartOneSituationStatistics'; @import './views/charts/ChartTwoSituationStatistics'; +@import './views/charts/chartAlarmInfo'; +@import './views/chartHeader'; //@import '../chart'; diff --git a/src/assets/css/components/views/chartHeader.scss b/src/assets/css/components/views/chartHeader.scss new file mode 100644 index 00000000..63106ea3 --- /dev/null +++ b/src/assets/css/components/views/chartHeader.scss @@ -0,0 +1,42 @@ +.cn-chart-header-button{ + display: flex; + .cn-chart-header-button-all{ + border: 1px solid #0091FF; + color: #0091FF; + background-color: #FFFFFF; + } + .cn-chart-header-button-critical{ + border: 1px solid #0091FF; + color: #0091FF; + background-color: #FFFFFF; + + } + .cn-chart-header-button-high{ + border: 1px solid #0091FF; + background-color: #FFFFFF; + color: #0091FF; + } + .cn-chart-header-button-low{ + border: 1px solid #0091FF; + background-color: #FFFFFF; + color: #0091FF; + } + .cn-chart-header-button-info{ + border: 1px solid #0091FF; + background-color: #FFFFFF; + color: #0091FF; + } + .cn-chart-header-button-medium{ + border: 1px solid #0091FF; + background-color: #FFFFFF; + color: #0091FF; + } + .el-button--default{ + height: 24px; + border-radius: 2px 0 0 2px; + min-height:24px; + display: flex; + justify-content: center; + align-items: center; + } +} \ No newline at end of file diff --git a/src/assets/css/components/views/charts/ChartOneSituationStatistics.scss b/src/assets/css/components/views/charts/ChartOneSituationStatistics.scss index ce720ee7..902e83eb 100644 --- a/src/assets/css/components/views/charts/ChartOneSituationStatistics.scss +++ b/src/assets/css/components/views/charts/ChartOneSituationStatistics.scss @@ -1,10 +1,28 @@ -.situation-statistics-main { - display: flex; - align-items: center; - margin-left: 50px; - margin-top: 20px; - - .situation-statistics-main-right{ - margin-left: 40px; - } - } \ No newline at end of file +.chart-one-situation-statistics{ + padding-top: 22px; + .situation-statistics-main { + display: flex; + align-items: center; + margin-left: 33px; + .situation-statistics-main-left{ + display: block; + width: 76px; + height: 76px; + .el-progress__text span{ + font-size: 16px; + } + } + .situation-statistics-main-right{ + margin-left: 22px; + :first-child{ + font-size: 18px; + color: #333; + } + :last-child{ + margin-top: 5px; + font-size: 14px; + color: #666666; + } + } + } +} \ No newline at end of file diff --git a/src/assets/css/components/views/charts/ChartTwoSituationStatistics.scss b/src/assets/css/components/views/charts/ChartTwoSituationStatistics.scss index 847b3c16..884972b8 100644 --- a/src/assets/css/components/views/charts/ChartTwoSituationStatistics.scss +++ b/src/assets/css/components/views/charts/ChartTwoSituationStatistics.scss @@ -1,19 +1,28 @@ .chart-two-situation-statistics{ + padding-top: 22px; .situation-statistics-top { display: flex; align-items: center; - - .situation-statistics-main-right{ - margin-left: 40px; + margin-left: 33px; + padding-top: 22px; + .situation-statistics-main-left{ + display: block; + .el-progress__text span{ + font-size: 16px; + } } - } - .situation-statistics-bottom { - display: flex; - align-items: center; - .situation-statistics-main-right{ - margin-left: 40px; + margin-left: 22px; + :first-child{ + font-size: 18px; + color: #333; + } + :last-child{ + margin-top: 5px; + font-size: 14px; + color: #666666; + } } - } + } } \ No newline at end of file diff --git a/src/assets/css/components/views/charts/chartAlarmInfo.scss b/src/assets/css/components/views/charts/chartAlarmInfo.scss new file mode 100644 index 00000000..a67a9aa8 --- /dev/null +++ b/src/assets/css/components/views/charts/chartAlarmInfo.scss @@ -0,0 +1,98 @@ +.cn-chart-alarm-info { + width: 100%; + height: 100%; + margin-left: 30px; + position: relative; + .cn-chart-alarm-info-mainContent{ + height: calc(100% - 40px) ; + width: 100%; + .cn-chart-alarm-content { + display: flex; + justify-content: flex-start; + align-items: center; + width: 100%; + height: calc(100% / 9); + border-bottom: 1px solid #E7EAED ; + .cn-alarm-info-main { + display: flex; + .cn-alarm-info-main-left{ + position: relative; + display: flex; + justify-content: center; + align-items: center; + .cn-chart-alarm-info-icon { + width: 30px; + height: 30px; + border-radius: 50%; + display: flex; + justify-content: center; + align-items: center; + } + .cn-icon-alert{ + width: 12px; + position: absolute; + top: 13px; + left: 7px; + } + } + .cn-alarm-info-textContent{ + margin-left: 17px; + .cn-alarm-info-main-title { + font-size: 19px; + line-height: 19px; + } + .cn-alarm-info-bottom { + display: flex; + font-size: 14px; + line-height: 14px; + text-align: center; + margin-top: 10px; + + + .cn-alarm-info-bottom-middle { + display: flex; + margin-left: 20px; + height: 14px; + .cn-alarm-info-bottom-time { + color: #999999; + line-height: 14px; + font-size: 12px; + } + } + + .cn-alarm-info-bottom-right { + display: flex; + justify-content: center; + align-items: center; + margin-left: 17px; + .cn-alarm-info-bottom-time { + color: #999999; + } + } + + .cn-alarm-info-bottom-type { + width: auto; + height: 16px; + font-size: 12px; + border: 1px solid; + font-weight: 400; + } + + .cn-alarm-info-bottom-circle { + display: inline-block; + width: 5px; + height: 5px; + border-radius: 50%; + } + } + + } + + } + } + } + .cn-chart-alarm-info-pagination{ + height: 40px; + width: 100%; + } +} \ No newline at end of file diff --git a/src/assets/css/components/views/charts/panel.scss b/src/assets/css/components/views/charts/panel.scss index b5645b24..52b26691 100644 --- a/src/assets/css/components/views/charts/panel.scss +++ b/src/assets/css/components/views/charts/panel.scss @@ -590,3 +590,4 @@ font-size: 12px; } } + diff --git a/src/utils/api.js b/src/utils/api.js index 96433455..77237b9c 100644 --- a/src/utils/api.js +++ b/src/utils/api.js @@ -95,7 +95,7 @@ export const api = { listBasic: '/interface/detection/performance/list/basic', overviewBasic: '/interface/detection/performance/detail/overview/basic' } - } + }, } /* panel */ diff --git a/src/views/charts/Chart.vue b/src/views/charts/Chart.vue index 9a585195..4051874c 100644 --- a/src/views/charts/Chart.vue +++ b/src/views/charts/Chart.vue @@ -184,6 +184,7 @@ v-else-if="isSingleSupportStatistics" :chart-info="chartInfo" :chart-data="chartData" + :query-params="queryParams" @showLoading="showLoading" :entity="entity" > @@ -192,9 +193,21 @@ v-else-if="isTwoSupportStatistics" :chart-info="chartInfo" :chart-data="chartData" + :query-params="queryParams" @showLoading="showLoading" :entity="entity" > + + + @@ -226,6 +239,7 @@ import ChartRelationShip from '@/views/charts/charts/ChartRelationShip' import ChartSanKey from '@/views/charts/charts/ChartSanKey' import ChartOneSituationStatistics from '@/views/charts/charts/ChartOneSituationStatistics' import ChartTwoSituationStatistics from '@/views/charts/charts/ChartTwoSituationStatistics' +import ChartAlarmInfo from '@/views/charts/charts/ChartAlarmInfo' import { isEcharts, isEchartsLine, @@ -260,7 +274,8 @@ import { isAppRelatedDomain, isBlock, isSingleSupportStatistics, - isTwoSupportStatistics + isTwoSupportStatistics, + isAlarmInfo } from './charts/tools' import _ from 'lodash' @@ -292,7 +307,13 @@ export default { ChartEchartIpHostedDomain, ChartEchartAppRelateDomain, ChartOneSituationStatistics, - ChartTwoSituationStatistics + ChartTwoSituationStatistics, + ChartAlarmInfo + }, + data(){ + return{ + tabHandleClickType:'' + } }, props: { chartInfo: Object, @@ -306,7 +327,8 @@ export default { entity: Object, isError: Boolean, table: Object, - orderPieTable: Object + orderPieTable: Object, + tabHandleClickType:String }, computed: { isNoData () { @@ -320,7 +342,8 @@ export default { !this.isActiveIpTable && !this.isMap && !this.isSingleSupportStatistics && - !this.isTwoSupportStatistics + !this.isTwoSupportStatistics && + !this.isAlarmInfo ) }, chartOption () { @@ -329,7 +352,7 @@ export default { } else { return getOption(this.chartInfo.type) } - } + }, }, methods: { resize () { @@ -339,17 +362,26 @@ export default { showLoading (show) { this.$emit('showLoading', show) }, + getAlarmInfo(url,extraParams){ + this.$emit('getChartData',url,extraParams) + }, initEchartsWithTable () { this.$refs['chart' + this.chartInfo.id] && this.$refs['chart' + this.chartInfo.id].initEchartsWithTable( `chart${this.chartInfo.id}` ) - } + }, }, watch: { chartData: { deep: true, handler (n) {} + }, + tabHandleClickType:{ + deep:true, + handler(n){ + this.tabHandleClickType = n + } } }, setup (props) { @@ -390,8 +422,9 @@ export default { isAppBasicInfo: isAppBasicInfo(props.chartInfo.type), isAppRelatedDomain: isAppRelatedDomain(props.chartInfo.type), isSingleSupportStatistics: isSingleSupportStatistics(props.chartInfo.type), - isTwoSupportStatistics: isTwoSupportStatistics(props.chartInfo.type) + isTwoSupportStatistics: isTwoSupportStatistics(props.chartInfo.type), + isAlarmInfo: isAlarmInfo(props.chartInfo.type), } - } + }, } diff --git a/src/views/charts/ChartHeader.vue b/src/views/charts/ChartHeader.vue index e299c896..aa528860 100644 --- a/src/views/charts/ChartHeader.vue +++ b/src/views/charts/ChartHeader.vue @@ -1,124 +1,241 @@ @@ -153,7 +156,8 @@ export default { tableColumns: [], // table字段 tableData: [], // table的所有数据 currentPageData: [] // table当前页的数据 - } + }, + tabHandleClickType:'' } }, computed: { @@ -290,6 +294,9 @@ export default { this.emitter.emit('chart-pageNo') this.getChartData(null, {}, true, chartTimeFilter) }, + tabHandleClick(value){ + this.tabHandleClickType = value + }, showFullscreen (show) { this.$emit('showFullscreen', show, this.chartInfo) }, diff --git a/src/views/charts/charts/ChartAlarmInfo.vue b/src/views/charts/charts/ChartAlarmInfo.vue new file mode 100644 index 00000000..02497834 --- /dev/null +++ b/src/views/charts/charts/ChartAlarmInfo.vue @@ -0,0 +1,160 @@ + + + diff --git a/src/views/charts/charts/ChartOneSituationStatistics.vue b/src/views/charts/charts/ChartOneSituationStatistics.vue index 1ad7c981..305032c8 100644 --- a/src/views/charts/charts/ChartOneSituationStatistics.vue +++ b/src/views/charts/charts/ChartOneSituationStatistics.vue @@ -1,22 +1,17 @@ @@ -32,24 +28,8 @@ export default { name: 'ChartTwoSituationStatistics', props: { chartInfo: Object, - chartData: [Array, Object] + chartData: [Array, Object], }, - data () { - return { - result: { - encryptedDns1: { - num: 1800, - all: 10000, - type: 'doh' - }, - encryptedDns2: { - num: 13500, - all: 22000, - type: 'dot' - } - } - } - } - + } diff --git a/src/views/charts/charts/tools.js b/src/views/charts/charts/tools.js index f2960e1c..867fab12 100644 --- a/src/views/charts/charts/tools.js +++ b/src/views/charts/charts/tools.js @@ -150,6 +150,10 @@ export function isDomainWhois (type) { export function isDomainDnsRecord (type) { return type === 62 } +/* 告警信息 */ +export function isAlarmInfo (type) { + return type === 84 +} /* 近期挖矿事件 */ export function isCryptocurrencyEventList (type) { return type === 85