Compare commits

...

17 Commits

Author SHA1 Message Date
lijinyang
53c24fe51b Update .gitlab-ci.yml 2023-02-14 15:02:20 +08:00
chenjinsong
2aa7f6edfb fix: 修复ip实体详情右上角饼图请求参数太长导致请求失败的问题 2023-02-10 15:23:19 +08:00
chenjinsong
6ed9c4f5fe fix: 修复detection顶部柱状图数据没有按时间排序的问题,修复app图逻辑问题 2023-02-10 14:20:07 +08:00
chenjinsong
6f8631f947 fix: whois字段问题 2023-02-09 17:15:21 +08:00
chenjinsong
63ab36f4d2 fix: 单位转换方法参数为0时不返回单位 2023-02-08 15:54:32 +08:00
chenjinsong
cccc1f0e6a CN-885 feat: whois字段调整 2023-02-08 15:24:18 +08:00
chenjinsong
4651709529 fix: logo变更、国际化切换按钮隐藏 2023-02-08 11:30:23 +08:00
chenjinsong
6ab98be4c8 fix: 修复加密DNS协议支持情况统计图表数据颠倒的问题 2023-02-08 10:55:11 +08:00
陈劲松
7b96f979a4 Merge branch 'cherry-pick-2b67cb4a' into '6suo'
fix: detection-performanceEvent去除对eventId的格式转换

See merge request cyber-narrator/cn-ui!20
2023-02-07 09:18:19 +00:00
刘洪洪
a59bff2cb7 fix: detection-performanceEvent去除对eventId的格式转换
(cherry picked from commit 2b67cb4a0b)
2023-02-07 17:18:13 +08:00
chenjinsong
04651581fe fix: 更新log外链链接 2023-02-03 18:46:08 +08:00
chenjinsong
84ca05dccc fix: 修复dns仪表盘切换时间不生效的问题 2023-02-03 16:38:24 +08:00
chenjinsong
780de66ddf fix: 隐藏代理和chart入口 2023-02-03 16:28:02 +08:00
chenjinsong
9205d7645d fix: 优化折线图效果 2023-02-03 16:26:46 +08:00
chenjinsong
ec486fe930 fix: 修复地图资源路径拼写错误的问题 2023-02-03 11:08:35 +08:00
chenjinsong
12c31b5bf6 feat: 6所相关内容,增加折线图左侧边距 2023-02-02 18:38:33 +08:00
chenjinsong
96591cb9ef feat: 6所相关内容 2023-02-02 17:55:03 +08:00
25 changed files with 117 additions and 76 deletions

View File

@@ -29,7 +29,7 @@ generate_git-log:
- public/index.html - public/index.html
- public/git-log.html - public/git-log.html
only: only:
- dev - 6suo
tags: tags:
- galaxy - galaxy
@@ -42,7 +42,7 @@ build_project:
- echo "npm run build" - echo "npm run build"
- cnpm run build - cnpm run build
only: only:
- dev - 6suo
- tags - tags
tags: tags:
- galaxy - galaxy
@@ -51,14 +51,14 @@ build_image:
stage: build_image stage: build_image
script: script:
- echo "docker build" - echo "docker build"
- sudo docker build --no-cache -t cn-ui:$CNUI_TAG . - sudo docker build --no-cache -t cn-ui-$CI_COMMIT_REF_NAME:$CNUI_TAG .
- echo "docker tag" - echo "docker tag"
- sudo docker tag cn-ui:$CNUI_TAG 192.168.40.153:9080/cyber-narrator/cn-ui:$CNUI_TAG - sudo docker tag cn-ui-$CI_COMMIT_REF_NAME:$CNUI_TAG 192.168.40.153:9080/cyber-narrator/cn-ui-$CI_COMMIT_REF_NAME:$CNUI_TAG
- echo "docker push" - echo "docker push"
- sudo docker push 192.168.40.153:9080/cyber-narrator/cn-ui:$CNUI_TAG - sudo docker push 192.168.40.153:9080/cyber-narrator/cn-ui-$CI_COMMIT_REF_NAME:$CNUI_TAG
when: on_success when: on_success
only: only:
- dev - 6suo
tags: tags:
- galaxy - galaxy
@@ -71,11 +71,11 @@ build_release_image:
- echo '提交的版本是' - echo '提交的版本是'
- echo $CI_COMMIT_REF_NAME - echo $CI_COMMIT_REF_NAME
- echo "docker build" - echo "docker build"
- sudo docker build --no-cache -t cn-ui:$CI_COMMIT_TAG . - sudo docker build --no-cache -t cn-ui-$CI_COMMIT_REF_NAME:$CI_COMMIT_TAG .
- echo "docker tag" - echo "docker tag"
- sudo docker tag cn-ui:$CI_COMMIT_TAG 192.168.40.153:9080/cyber-narrator/cn-ui:$CI_COMMIT_TAG - sudo docker tag cn-ui-$CI_COMMIT_REF_NAME:$CI_COMMIT_TAG 192.168.40.153:9080/cyber-narrator/cn-ui-$CI_COMMIT_REF_NAME:$CI_COMMIT_TAG
- echo "docker push" - echo "docker push"
- sudo docker push 192.168.40.153:9080/cyber-narrator/cn-ui:$CI_COMMIT_TAG - sudo docker push 192.168.40.153:9080/cyber-narrator/cn-ui-$CI_COMMIT_REF_NAME:$CI_COMMIT_TAG
only: only:
- tags - tags
tags: tags:

View File

@@ -1,4 +1,5 @@
var BASE_CONFIG = { var BASE_CONFIG = {
baseUrl: 'http://192.168.44.54:8090/', baseUrl: 'http://192.168.44.54:8093/',
version: '2.0.2021.05.11.19.43' version: '23.02.08',
logUrl: 'http://192.168.44.114:8088/superset/explore/?r=12&standalone=1'
} }

View File

@@ -6,7 +6,7 @@
<meta name="viewport" content="width=device-width,initial-scale=1.0"> <meta name="viewport" content="width=device-width,initial-scale=1.0">
<link rel="icon" href="<%= BASE_URL %>images/logo.svg"> <link rel="icon" href="<%= BASE_URL %>images/logo.svg">
<script src="config.js"></script> <script src="config.js"></script>
<title>Cyber Narrator</title> <title>域名解析服务监测系统</title>
</head> </head>
<body class="theme-light"> <body class="theme-light">
<noscript> <noscript>

View File

@@ -1,9 +1,7 @@
<template> <template>
<div class="logins"> <div class="logins">
<div class="inside"> <div class="inside">
<div class="title"> <div class="title">域名解析服务监测系统</div>
<img src="../public/images/logo-title.svg" />
</div>
<el-form class="login__box"> <el-form class="login__box">
<el-form-item> <el-form-item>
<el-input <el-input
@@ -193,12 +191,12 @@ export default {
} }
.title { .title {
margin-top: 65px; margin-top: 90px;
padding: 0 70px;
color: white;
font-size: 40px;
text-align: center; text-align: center;
} }
.title > img {
height: 135px;
}
.login__box { .login__box {
display: flex; display: flex;
justify-content: center; justify-content: center;

View File

@@ -98,6 +98,8 @@
.domain-detail-list { .domain-detail-list {
display: table; display: table;
width: 100%; width: 100%;
height: 100%;
overflow: auto;
.domain-detail-list__row { .domain-detail-list__row {
display: table-row; display: table-row;

View File

@@ -1,4 +1,5 @@
.cn-chart__whois { .cn-chart__whois {
overflow: auto; overflow: auto;
height: 100%;
} }

View File

@@ -7,7 +7,7 @@
display: flex; display: flex;
&.panel__time--scrolled-out { &.panel__time--scrolled-out {
position: fixed; position: fixed;
top: 70px; top: 120px;
padding-right: 10px; padding-right: 10px;
} }
&>div { &>div {
@@ -18,7 +18,7 @@
.chart-list { .chart-list {
&.chart-list--screen { &.chart-list--screen {
display: grid; display: grid;
height: calc(100vh - 90px); height: calc(100vh - 130px);
width: 100%; width: 100%;
grid-template-columns: repeat(30,1fr); grid-template-columns: repeat(30,1fr);
grid-template-rows: repeat(19,1fr); grid-template-rows: repeat(19,1fr);

View File

@@ -4,12 +4,12 @@
<div class="banner__left"> <div class="banner__left">
<span @click="shrink" class="shrink-button" :class="{'shrink-button--collapse': showMenu}"><i <span @click="shrink" class="shrink-button" :class="{'shrink-button--collapse': showMenu}"><i
class="cn-icon cn-icon-navigation"></i></span> class="cn-icon cn-icon-navigation"></i></span>
<img alt="loading..." height="26" :src="logo?logo:require('../../assets/img/logo-header.svg')" @click="jump('/panel/networkOverview', '', '', 0)" style="cursor: pointer"/> <span style="color: white; font-size: 20px;">域名解析服务监测系统</span>
</div> </div>
<!--个人操作--> <!--个人操作-->
<div class="personal"> <div class="personal">
<el-dropdown> <!-- <el-dropdown>
<div class="header-menu--item"><i class="cn-icon cn-icon-language"></i></div> <div class="header-menu&#45;&#45;item"><i class="cn-icon cn-icon-language"></i></div>
<template #dropdown> <template #dropdown>
<el-dropdown-menu> <el-dropdown-menu>
<el-dropdown-item> <el-dropdown-item>
@@ -24,7 +24,7 @@
</el-dropdown-item> </el-dropdown-item>
</el-dropdown-menu> </el-dropdown-menu>
</template> </template>
</el-dropdown> </el-dropdown>-->
<el-dropdown> <el-dropdown>
<div class='login-user header-menu--item'>{{ username }}&nbsp;<i class="cn-icon cn-icon-arrow-down"></i></div> <div class='login-user header-menu--item'>{{ username }}&nbsp;<i class="cn-icon cn-icon-arrow-down"></i></div>
<template #dropdown> <template #dropdown>

View File

@@ -19,6 +19,11 @@ const routes = [
path: '/panel/:typeName', path: '/panel/:typeName',
component: () => import('@/views/charts2/Panel') component: () => import('@/views/charts2/Panel')
}, },
{
name: 'dns6',
path: '/dns6/:typeName',
component: () => import('@/views/charts/Panel')
},
{ {
path: '/report/builtIn', path: '/report/builtIn',
component: () => import('@/views/report/reportTest') component: () => import('@/views/report/reportTest')

View File

@@ -318,11 +318,12 @@ export async function getI18n () {
/* 获得原始的3611-2 json字符串数据 */ /* 获得原始的3611-2 json字符串数据 */
export async function getIso36112JsonData (suffix) { export async function getIso36112JsonData (suffix) {
const url = `${window.location.protocol}//${window.location.host}/geojson/${suffix}.json`
const request = new Promise(resolve => { const request = new Promise(resolve => {
axios({ axios({ url }).then(response => {
url: `${window.location.protocol}//${window.location.host}:${window.location.port}/geojson/${suffix}.json`
}).then(response => {
resolve(response.data || response || null) resolve(response.data || response || null)
}).catch(err => {
console.error(err)
}) })
}) })
return await request return await request

View File

@@ -63,7 +63,8 @@ export const panelTypeAndRouteMapping = {
cryptocurrency: 7, cryptocurrency: 7,
ipDrillDownTest: 8, ipDrillDownTest: 8,
linkMonitor: 14, linkMonitor: 14,
linkMonitorDrillDown: 15 linkMonitorDrillDown: 15,
dns6: 18
} }
/* operationLog state 执行状态属性 值与名称之间的映射 */ /* operationLog state 执行状态属性 值与名称之间的映射 */
@@ -1554,7 +1555,7 @@ export const npmCategoryInfoMapping = [
// 整屏滚动的路径映射 // 整屏滚动的路径映射
export const wholeScreenRouterMapping = { export const wholeScreenRouterMapping = {
dns: '/panel/dnsServiceInsights' dns: '/dns6/dns6'
} }
export const themeData = [ export const themeData = [

View File

@@ -17,6 +17,9 @@ function asciiCompute (num, ascii = 1000, units, dot = 2) {
return ['', ''] return ['', '']
} }
num = Number(num) num = Number(num)
if (num === 0) {
return [0, '']
}
let carry = 0 let carry = 0
if (num > 1) { if (num > 1) {
const log = Math.log(num) / Math.log(ascii) const log = Math.log(num) / Math.log(ascii)

View File

@@ -38,21 +38,6 @@ export default {
i18n: 'overall.operationLog', i18n: 'overall.operationLog',
path: '/administration/operationLog', path: '/administration/operationLog',
icon: 'cn-icon cn-icon-operation-log' icon: 'cn-icon cn-icon-operation-log'
},
{
i18n: 'I18n',
path: '/administration/i18n',
icon: 'cn-icon cn-icon-i18n'
},
{
i18n: 'galaxyProxy.galaxyProxy',
path: '/administration/galaxyProxy',
icon: 'cn-icon cn-icon-proxy'
},
{
i18n: 'overall.chart',
path: '/administration/chart',
icon: 'cn-icon cn-icon-chart'
} }
] ]
} }

View File

@@ -23,7 +23,7 @@ export default {
const boxDom = document.getElementById('frame-box') const boxDom = document.getElementById('frame-box')
const dom = document.getElementById('frame') const dom = document.getElementById('frame')
const height = boxDom.offsetHeight const height = boxDom.offsetHeight
dom.src = `http://192.168.44.114:8088/superset/explore/?r=15&standalone=1&height=${height || 800}` dom.src = BASE_CONFIG.logUrl + '&height=' + (height + 100)
} }
} }
</script> </script>

View File

@@ -114,8 +114,8 @@ export default {
}, },
reload () { reload () {
this.copyDataList.forEach(item => { this.copyDataList.forEach(item => {
if (this.$refs['chart' + item.id]) { if (this.$refs['chart' + item.id] && this.$refs['chart' + item.id][0]) {
this.$refs['chart' + item.id].reload() this.$refs['chart' + item.id][0].reload()
} }
}) })
}, },

View File

@@ -11,20 +11,40 @@
<div class="domain-detail-list__content">{{ $_.get(chartData, "org") || '-'}}</div> <div class="domain-detail-list__content">{{ $_.get(chartData, "org") || '-'}}</div>
</div> </div>
<div class="domain-detail-list__row"> <div class="domain-detail-list__row">
<div class="domain-detail-list__label">Email</div> <div class="domain-detail-list__label">注册机构邮箱</div>
<div class="domain-detail-list__content">{{ $_.get(chartData, "email") || '-'}}</div> <div class="domain-detail-list__content">{{ $_.get(chartData, "email") || '-'}}</div>
</div> </div>
<div class="domain-detail-list__row"> <div class="domain-detail-list__row">
<div class="domain-detail-list__label">{{$t('overall.country')}}</div> <div class="domain-detail-list__label">注册机构电话</div>
<div class="domain-detail-list__content">{{ $_.get(chartData, "domainWhoisPhone") || '-'}}</div>
</div>
<div class="domain-detail-list__row">
<div class="domain-detail-list__label">注册国家</div>
<div class="domain-detail-list__content">{{ $_.get(chartData, "country") || '-'}}</div> <div class="domain-detail-list__content">{{ $_.get(chartData, "country") || '-'}}</div>
</div> </div>
<div class="domain-detail-list__row"> <div class="domain-detail-list__row">
<div class="domain-detail-list__label">{{$t('entities.creationDate')}}</div> <div class="domain-detail-list__label">注册地邮编</div>
<div class="domain-detail-list__content">{{ dateFormatByAppearance($_.get(chartData, "createTime") * 1) || '-'}}</div> <div class="domain-detail-list__content">{{ $_.get(chartData, "domainWhoisPostcode") || '-'}}</div>
</div> </div>
<div class="domain-detail-list__row"> <div class="domain-detail-list__row">
<div class="domain-detail-list__label">{{$t('entities.expirationDate')}}</div> <div class="domain-detail-list__label">{{$t('entities.creationDate')}}</div>
<div class="domain-detail-list__content">{{ dateFormatByAppearance($_.get(chartData, "expirationTime") * 1) || '-'}}</div> <div class="domain-detail-list__content">{{ $_.get(chartData, "createTime") ? dateFormatByAppearance($_.get(chartData, "createTime") * 1) : '-'}}</div>
</div>
<div class="domain-detail-list__row">
<div class="domain-detail-list__label">过期时间</div>
<div class="domain-detail-list__content">{{ $_.get(chartData, "expirationTime") ? dateFormatByAppearance($_.get(chartData, "expirationTime") * 1) : '-'}}</div>
</div>
<div class="domain-detail-list__row">
<div class="domain-detail-list__label">主办单位名称</div>
<div class="domain-detail-list__content">{{ $_.get(chartData, "domainIcpCompanyName") || '-'}}</div>
</div>
<div class="domain-detail-list__row">
<div class="domain-detail-list__label">主办单位性质</div>
<div class="domain-detail-list__content">{{ $_.get(chartData, "domainIcpCompanyType") || '-'}}</div>
</div>
<div class="domain-detail-list__row">
<div class="domain-detail-list__label">网站备案号</div>
<div class="domain-detail-list__content">{{ $_.get(chartData, "domainIcpSiteLicense") || '-'}}</div>
</div> </div>
</div> </div>
</div> </div>

View File

@@ -126,7 +126,7 @@ export default {
? legendMapping[ ? legendMapping[
`${this.entity && this.entity.ip ? 'ip_' : ''}${r.legend}` `${this.entity && this.entity.ip ? 'ip_' : ''}${r.legend}`
] ]
: (legendMapping[r.legend] ? legendMapping[r.legend] : humpToSpace(r.legend)), : (legendMapping[r.legend] ? legendMapping[r.legend] : r.legend),
data: r.values.map((v) => [ data: r.values.map((v) => [
Number(v[0]) * 1000, Number(v[0]) * 1000,
Number(v[1]), Number(v[1]),

View File

@@ -35,10 +35,12 @@ export default {
initEcharts (id) { initEcharts (id) {
this.initDom(id, 2) this.initDom(id, 2)
const chartParams = this.chartInfo.params const chartParams = this.chartInfo.params
const domains = this.chartData.map(function (item, i) { let domains = this.chartData.map(function (item, i) {
return item.domain return item.domain
}).join(',') }).join(',')
// 参数字符串限制长度在4300以内。经测试超过4600左右会报错
domains = domains.substring(0, 4300)
domains = domains.substring(0, domains.lastIndexOf(','))
const byType = new Promise(resolve => { const byType = new Promise(resolve => {
get(replaceUrlPlaceholder(chartParams.byCategoryUrl, { domains: domains })).then(response => { get(replaceUrlPlaceholder(chartParams.byCategoryUrl, { domains: domains })).then(response => {
if (response.code === 200) { if (response.code === 200) {
@@ -47,7 +49,7 @@ export default {
} else { } else {
// this.noData0 = false // this.noData0 = false
// chartOption = this.$_.cloneDeep(this.chartOption) // chartOption = this.$_.cloneDeep(this.chartOption)
const data = response.data.result.sort(reverseSortBy('uniqDomains')).map(d => { const originalData = response.data.result.sort(reverseSortBy('uniqDomains')).map(d => {
return { return {
data: d, data: d,
name: d.categoryName, name: d.categoryName,
@@ -55,6 +57,22 @@ export default {
unitType: chartParams.unitType unitType: chartParams.unitType
} }
}) })
const data = originalData.filter((d, i) => i < 5)
let otherValue = 0
originalData.forEach((d, i) => {
if (i > 4) {
otherValue += parseInt(d.uniqDomains)
}
})
data.push({
data: {
uniqDomains: otherValue,
categoryName: 'other'
},
name: 'other',
value: otherValue,
unitType: chartParams.unitType
})
this.chartOption.series[0].data = data this.chartOption.series[0].data = data
} }
} }

View File

@@ -202,10 +202,10 @@
</div> </div>
</div> </div>
<div class="content__data-protocol-value"> <div class="content__data-protocol-value">
<div class="content__data-protocol-value-title">{{$t('protocol.requestVolume')}}</div> <div class="content__data-protocol-value-title">{{$t('protocol.totalFlow')}}</div>
<div class="content__data-protocol-value-num">{{unitConvert($_.get(chartData, 'bytes'), chartInfo.params.unitType).join('')}}</div> <div class="content__data-protocol-value-num">{{unitConvert($_.get(chartData, 'count'), chartInfo.params.unitType).join('')}}</div>
</div> </div>
<div class="content__data-protocol-percent"><span>{{$t('protocol.proportion')}}</span>&nbsp;<span>{{unitConvert($_.get(chartData, 'bytesPercent'), unitTypes.percent).join('')}}</span></div> <div class="content__data-protocol-percent"><span>{{$t('protocol.proportion')}}</span>&nbsp;<span>{{unitConvert($_.get(chartData, 'countPercent'), unitTypes.percent).join('')}}</span></div>
</div> </div>
<div class="content__data-protocol"> <div class="content__data-protocol">
<div class="content__data-protocol-all"> <div class="content__data-protocol-all">
@@ -214,10 +214,10 @@
</div> </div>
</div> </div>
<div class="content__data-protocol-value"> <div class="content__data-protocol-value">
<div class="content__data-protocol-value-title">{{$t('protocol.totalFlow')}}</div> <div class="content__data-protocol-value-title">{{$t('protocol.requestVolume')}}</div>
<div class="content__data-protocol-value-num">{{unitConvert($_.get(chartData, 'count'), chartInfo.params.unitType).join('')}}</div> <div class="content__data-protocol-value-num">{{unitConvert($_.get(chartData, 'bytes'), unitTypes.byte).join('')}}</div>
</div> </div>
<div class="content__data-protocol-percent"><span>{{$t('protocol.proportion')}}</span>&nbsp;<span>{{unitConvert($_.get(chartData, 'countPercent'), unitTypes.percent).join('')}}</span></div> <div class="content__data-protocol-percent"><span>{{$t('protocol.proportion')}}</span>&nbsp;<span>{{unitConvert($_.get(chartData, 'bytesPercent'), unitTypes.percent).join('')}}</span></div>
</div> </div>
</div> </div>
</div> </div>

View File

@@ -64,11 +64,11 @@ export const legendMapping = {
ip_packets_sent_rate: i18n.global.t('trafficSummary.packetsPerSecondS2c'), ip_packets_sent_rate: i18n.global.t('trafficSummary.packetsPerSecondS2c'),
dnsLatency: i18n.global.t('dns.latency'), dnsLatency: i18n.global.t('dns.latency'),
queryRate: i18n.global.t('dns.query.rate'), queryRate: i18n.global.t('dns.query.rate'),
formatErrorRate: i18n.global.t('dns.formatErrorRate'), formatErrorRate: 'FormErr',
serverFailureRate: i18n.global.t('dns.serverFailureRate'), serverFailureRate: 'ServFail',
nonExistentDomainRate: i18n.global.t('dns.nonExistentDomainRate'), nonExistentDomainRate: 'NXDomain',
notImplementedRate: i18n.global.t('dns.notImplementedRate'), notImplementedRate: 'NotImp',
queryRefusedRate: i18n.global.t('dns.queryRefusedRate'), queryRefusedRate: 'Refused',
sequenceGapLossPercent: i18n.global.t('entity.ip.sequenceGapLossPercent'), sequenceGapLossPercent: i18n.global.t('entity.ip.sequenceGapLossPercent'),
establishLatency: i18n.global.t('entity.ip.establishLatency'), establishLatency: i18n.global.t('entity.ip.establishLatency'),
httpResponseLatency: i18n.global.t('entity.ip.httpResponseLatency'), httpResponseLatency: i18n.global.t('entity.ip.httpResponseLatency'),

View File

@@ -22,6 +22,9 @@ export const line = {
}, },
yAxis: { yAxis: {
type: 'value', type: 'value',
splitLine: {
show: false
},
axisLabel: { axisLabel: {
formatter: function (value) { formatter: function (value) {
return unitConvert(value, unitTypes.number, null, null, 0).join(' ') return unitConvert(value, unitTypes.number, null, null, 0).join(' ')
@@ -30,7 +33,7 @@ export const line = {
}, },
animation: false, animation: false,
grid: { grid: {
left: 55, left: 60,
bottom: 30, bottom: 30,
top: 20, top: 20,
right: 25 right: 25
@@ -62,7 +65,7 @@ export const line = {
{ {
name: '', name: '',
type: 'line', type: 'line',
smooth: false, smooth: true,
symbol: 'none', symbol: 'none',
data: [], data: [],
markLine: {} markLine: {}

View File

@@ -32,8 +32,8 @@ export default {
methods: { methods: {
reload () { reload () {
this.dnsScreenDataList.forEach(item => { this.dnsScreenDataList.forEach(item => {
if (this.$refs['chart' + item.id]) { if (this.$refs['chart' + item.id] && this.$refs['chart' + item.id][0]) {
this.$refs['chart' + item.id].getChartData() this.$refs['chart' + item.id][0].getChartData()
} }
}) })
} }

View File

@@ -247,7 +247,7 @@ export default {
handleData (prevRequest, request, _t) { handleData (prevRequest, request, _t) {
this.toggleLoading(true) this.toggleLoading(true)
Promise.all([prevRequest, request]).then(res => { Promise.all([prevRequest, request]).then(res => {
this.isNoData = (res[0].data.result.length && res[1].data.result.length) === 0 this.isNoData = res[0].data.result.length === 0 && res[1].data.result.length === 0
if (this.isNoData) { if (this.isNoData) {
this.appData = this.appData.map(t => { this.appData = this.appData.map(t => {
return { return {

View File

@@ -205,7 +205,7 @@ export default {
*/ */
initExpendTab () { initExpendTab () {
if (this.$route.query.eventId) { if (this.$route.query.eventId) {
if (parseFloat(this.$route.query.eventId) === this.detection.eventId) { if (this.$route.query.eventId === this.detection.eventId) {
const container = document.getElementById('cnContainer') const container = document.getElementById('cnContainer')
const dom = document.getElementsByClassName('cn-detection__case') const dom = document.getElementsByClassName('cn-detection__case')
// 未展开的item折叠块高度67+下边距10+底部线高度1兼容不同分辨率下的tab高度 // 未展开的item折叠块高度67+下边距10+底部线高度1兼容不同分辨率下的tab高度

View File

@@ -294,7 +294,7 @@ export default {
const chartDom = document.getElementById(`eventSeverityTrendBar${this.pageType}`) const chartDom = document.getElementById(`eventSeverityTrendBar${this.pageType}`)
const eventSeverityTrendOption = this.$_.cloneDeep(multipleBarOption) const eventSeverityTrendOption = this.$_.cloneDeep(multipleBarOption)
const xData = [] let xData = []
dataMap.forEach(function (value) { dataMap.forEach(function (value) {
// eventSeverityTrendOption.series[Number(getSeriesIndex(key))].data = value.map(v => Number(v[1])) // eventSeverityTrendOption.series[Number(getSeriesIndex(key))].data = value.map(v => Number(v[1]))
value.forEach(item => { value.forEach(item => {
@@ -303,6 +303,9 @@ export default {
} }
}) })
}) })
xData = xData.sort((a, b) => {
return new Date(a) - new Date(b)
})
eventSeverityTrendOption.series.forEach(serie => { eventSeverityTrendOption.series.forEach(serie => {
const seriesData = [] const seriesData = []
xData.forEach(item => { xData.forEach(item => {