diff --git a/src/components/common/TimeRange/DateTimeRange.vue b/src/components/common/TimeRange/DateTimeRange.vue index 23af905d..61db490e 100644 --- a/src/components/common/TimeRange/DateTimeRange.vue +++ b/src/components/common/TimeRange/DateTimeRange.vue @@ -129,7 +129,8 @@ export default { showDetail () { let str = '' if (this.dateRangeValue !== -1) { - str = this.dateRangeArr.find(item => item.value === this.dateRangeValue).name + const rangeItem = this.dateRangeArr.find(item => item.value === this.dateRangeValue) + str = rangeItem ? rangeItem.name : this.dateRangeArr[0].name } return str } diff --git a/src/components/layout/Header.vue b/src/components/layout/Header.vue index 604d19ec..865ed28e 100644 --- a/src/components/layout/Header.vue +++ b/src/components/layout/Header.vue @@ -409,10 +409,10 @@ export default { const endTimeParam = query.endTime // 若url携带了,使用携带的值,否则使用默认值。 - const dateRangeValue = rangeParam ? parseInt(query.range) : 60 + const dateRangeValue = rangeParam ? parseInt(rangeParam) : 60 const chartTimeFilter = ref({ dateRangeValue }) if (!startTimeParam || !endTimeParam) { - const { startTime, endTime } = getNowTime(60) + const { startTime, endTime } = getNowTime(dateRangeValue) chartTimeFilter.value.startTime = startTime chartTimeFilter.value.endTime = endTime } else { diff --git a/src/mixins/relatedServer.js b/src/mixins/relatedServer.js index de837708..a8a5ee2d 100644 --- a/src/mixins/relatedServer.js +++ b/src/mixins/relatedServer.js @@ -17,7 +17,7 @@ export default { // 请求数据 relationshipUrlOne => 路由 refOne => ref getRelatedServerDataOne (relationshipUrlOne, refOne) { this.loadingRelationshipOne = true - axios.get(relationshipUrlOne, { params: this.getQueryParams() }).then(response => { + axios.get(relationshipUrlOne, { params: this.getQueryParams(DEFAULT_TIME_FILTER_RANGE.entity.relatedEntity) }).then(response => { if (response.status === 200) { const relationshipDataOne = [] if (response.data.data.result.length > 0) { @@ -33,7 +33,7 @@ export default { }, getRelatedServerDataTwo (relationshipUrlTow, refTow) { this.loadingRelationshipTwo = true - axios.get(relationshipUrlTow, { params: this.getQueryParams() }).then(response => { + axios.get(relationshipUrlTow, { params: this.getQueryParams(DEFAULT_TIME_FILTER_RANGE.entity.relatedEntity) }).then(response => { if (response.status === 200) { const relationshipDataTwo = [] if (response.data.data.result.length > 0) { diff --git a/src/utils/constants.js b/src/utils/constants.js index 8a364103..5ed7d4e8 100644 --- a/src/utils/constants.js +++ b/src/utils/constants.js @@ -98,6 +98,11 @@ export const entityType = { ip: 'IP' } +export const knowledgeCardUpdateRecordType = { + updateRecord: 'updateRecord', + intelligenceLearning: 'intelligenceLearning' +} + export const entityDetailTabsName = { informationAggregation: 'informationAggregation', relatedEntity: 'relatedEntity', @@ -213,7 +218,7 @@ export const detectionPageType = { } export const listScrollPath = [ - '/entity', + '/entityExplorer', '/detection/performanceEvent', '/detection/securityEvent' ] diff --git a/src/views/charts/Panel.vue b/src/views/charts/Panel.vue index a47f6242..4e1328e8 100644 --- a/src/views/charts/Panel.vue +++ b/src/views/charts/Panel.vue @@ -66,9 +66,9 @@ export default { isEntityDetail: Boolean, typeName: String }, - /*components: { + /* components: { DnsScreen - },*/ + }, */ data () { return { chartList: [], // 普通panel的chart diff --git a/src/views/charts2/Panel.vue b/src/views/charts2/Panel.vue index d02cbfe1..422de46c 100644 --- a/src/views/charts2/Panel.vue +++ b/src/views/charts2/Panel.vue @@ -300,10 +300,10 @@ export default { const endTimeParam = query.endTime // 优先级:url > config.js > 默认值。 - const dateRangeValue = rangeParam ? parseInt(query.range) : (DEFAULT_TIME_FILTER_RANGE.dashboard || 60) + const dateRangeValue = rangeParam ? parseInt(rangeParam) : (DEFAULT_TIME_FILTER_RANGE.dashboard || 60) const timeFilter = ref({ dateRangeValue }) if (!startTimeParam || !endTimeParam) { - const { startTime, endTime } = getNowTime(60) + const { startTime, endTime } = getNowTime(dateRangeValue) timeFilter.value.startTime = getSecond(startTime) timeFilter.value.endTime = getSecond(endTime) // 如果没有时间参数,就将参数写入url diff --git a/src/views/charts2/chart-mixin.js b/src/views/charts2/chart-mixin.js index d3687a96..ad556b1d 100644 --- a/src/views/charts2/chart-mixin.js +++ b/src/views/charts2/chart-mixin.js @@ -1,4 +1,5 @@ -import { entityDetailRelatedEntitiesShowSize } from '@/utils/constants' +import { entityDetailRelatedEntitiesShowSize, entityDetailTabsName } from '@/utils/constants' +import { getSecond } from '@/utils/date-util' export default { props: { @@ -28,6 +29,59 @@ export default { } } }, + getParamsByTabType (tabType) { + let params = { + resource: this.entity.entityName + } + let dataRangeValue = 60 * 24 * 7 + switch (tabType) { + case entityDetailTabsName.relatedEntity: + dataRangeValue = DEFAULT_TIME_FILTER_RANGE.entity.relatedEntity + break + case entityDetailTabsName.performanceEvent: + dataRangeValue = DEFAULT_TIME_FILTER_RANGE.entity.performanceEvent + break + case entityDetailTabsName.securityEvent: + dataRangeValue = DEFAULT_TIME_FILTER_RANGE.entity.securityEvent + break + case entityDetailTabsName.openPort: + dataRangeValue = DEFAULT_TIME_FILTER_RANGE.entity.openPort + break + case entityDetailTabsName.informationAggregation: + dataRangeValue = DEFAULT_TIME_FILTER_RANGE.entity.informationAggregation + break + case entityDetailTabsName.behaviorPattern: + dataRangeValue = DEFAULT_TIME_FILTER_RANGE.entity.behaviorPattern + break + default: + dataRangeValue = 60 * 24 * 7 + } + + if (dataRangeValue !== 0) { + const endTime = window.$dayJs.tz().valueOf() + const startTime = endTime - dataRangeValue * 60 * 1000 + params = { + ...params, + startTime: getSecond(startTime), + endTime: getSecond(endTime) + } + } + return params + }, + getParams () { + const range = this.timeFilter.dateRangeValue + let params = { + resource: this.entity.entityName + } + if (range !== 0) { + params = { + ...params, + startTime: getSecond(this.timeFilter.startTime), + endTime: getSecond(this.timeFilter.endTime) + } + } + return params + }, handleShowDataNum (showListInfo, allList) { if (allList.length <= entityDetailRelatedEntitiesShowSize) { showListInfo.num = allList.length diff --git a/src/views/charts2/charts/entityDetail/EntityDetailLine.vue b/src/views/charts2/charts/entityDetail/EntityDetailLine.vue index 0d2d27d2..fa1a2aea 100644 --- a/src/views/charts2/charts/entityDetail/EntityDetailLine.vue +++ b/src/views/charts2/charts/entityDetail/EntityDetailLine.vue @@ -124,12 +124,12 @@ export default { const rangeParam = query.range const startTimeParam = query.startTime const endTimeParam = query.endTime - // 若url携带了,使用携带的值,否则使用默认值。 - const dateRangeValue = rangeParam ? parseInt(query.range) : 60 + // 优先级:url > config.js > 默认值。 + const dateRangeValue = rangeParam ? parseInt(rangeParam) : (DEFAULT_TIME_FILTER_RANGE.entity.trafficLine || 60) const timeFilter = ref({ dateRangeValue }) if (!startTimeParam || !endTimeParam) { - const { startTime, endTime } = getNowTime(60) + const { startTime, endTime } = getNowTime(dateRangeValue) timeFilter.value.startTime = startTime timeFilter.value.endTime = endTime } else { diff --git a/src/views/charts2/charts/entityDetail/EntityDetailTabs.vue b/src/views/charts2/charts/entityDetail/EntityDetailTabs.vue index 84fa19a8..8f679b2c 100644 --- a/src/views/charts2/charts/entityDetail/EntityDetailTabs.vue +++ b/src/views/charts2/charts/entityDetail/EntityDetailTabs.vue @@ -14,13 +14,13 @@ {{ tab.tag }} - - - - - - - + + + + + + + @@ -58,12 +58,7 @@ export default { }, data () { return { - timer: null, - // 最近一天的时间 - oneDayTimeFilter: { - startTime: window.$dayJs.tz().valueOf() - 1440 * 60 * 1000, - endTime: window.$dayJs.tz().valueOf() - } + timer: null } }, watch: { @@ -114,22 +109,17 @@ export default { }, methods: { initData () { - const params = { - resource: this.entity.entityName - // startTime: getSecond(this.oneDayTimeFilter.startTime), - // endTime: getSecond(this.oneDayTimeFilter.endTime) - } - const url = this.getUrlByEntityType(this.entity.entityType) - const informationAggregation = axios.get(`${api.entity.informationAggregation}/${this.entity.entityType}?resource=${this.entity.entityName}&pageSize=100&pageNo=1`, { params: params }) - const openPort = axios.get(url, { params: params }) - // const security = axios.get(`${api.entity.security}/${this.entity.entityType}`, { params: params }) - // const performance = axios.get(`${api.entity.performance}/${this.entityType}`, { params: params }) + const informationAggregation = axios.get(`${api.entity.informationAggregation}/${this.entity.entityType}?resource=${this.entity.entityName}&pageSize=100&pageNo=1`, { params: this.getParamsByTabType(entityDetailTabsName.informationAggregation) }) + const openPort = axios.get(url, { params: this.getParamsByTabType(entityDetailTabsName.openPort) }) + const security = axios.get(`${api.entity.security}/${this.entity.entityType}`, { params: this.getParamsByTabType(entityDetailTabsName.securityEvent) }) + const performance = axios.get(`${api.entity.performance}/${this.entityType}`, { params: this.getParamsByTabType(entityDetailTabsName.performanceEvent) }) - Promise.all([informationAggregation, openPort]).then(response => { - if (response[0].status === 200) { + Promise.allSettled([informationAggregation, openPort, security, performance]).then(response => { + const informationAggregationResponse = response[0].value + if (informationAggregationResponse.status === 200) { const list = [] - response[0].data.data.result.forEach(r => { + informationAggregationResponse.data.data.result.forEach(r => { Object.keys(r).forEach(k => { const aggregation = { createTime: r[k].createTime, @@ -152,40 +142,43 @@ export default { } }) }) - this.initSetTag(entityDetailTabsName.informationAggregation, list.length) } - if (response[1].status === 200) { - this.initSetTag(entityDetailTabsName.openPort, response[1].data.data.result.length) + const openPortResponse = response[1].value + if (openPortResponse.status === 200) { + this.initSetTag(entityDetailTabsName.openPort, openPortResponse.data.data.result.length) } - // if (response[2].status === 200) { - // this.initSetTag(entityDetailTabsName.securityEvent, response[2].data.data.result.length) + // let securityResponse = response[2].value + // if (securityResponse.status === 200) { + // this.initSetTag(entityDetailTabsName.securityEvent, securityResponse.data.data.result.length) // } - // if (response[3].status === 200) { - // this.initSetTag(entityDetailTabsName.performanceEvent, response[3].data.data.result.length) + // let performanceResponse = response[3].value + // if (performanceResponse.status === 200) { + // this.initSetTag(entityDetailTabsName.performanceEvent, performanceResponse.data.data.result.length) // } this.initSetTag(entityDetailTabsName.securityEvent, 0) this.initSetTag(entityDetailTabsName.performanceEvent, 0) }) + const relatedEntityParams = this.getParamsByTabType(entityDetailTabsName.relatedEntity) // 域名解析 if (this.entity.entityType === 'app') { - const ipsOfApp = axios.get(api.entity.domainNameResolutionAboutIpsOfApp, { params: params }) - const domainsOfApp = axios.get(api.entity.domainNameResolutionAboutDomainsOfApp, { params: params }) + const ipsOfApp = axios.get(api.entity.domainNameResolutionAboutIpsOfApp, { params: relatedEntityParams }) + const domainsOfApp = axios.get(api.entity.domainNameResolutionAboutDomainsOfApp, { params: relatedEntityParams }) this.promiseData(ipsOfApp, domainsOfApp) } if (this.entity.entityType === 'ip') { - const appsOfIp = axios.get(api.entity.domainNameResolutionAboutAppsOfIp, { params: params }) - const domainsOfIp = axios.get(api.entity.domainNameResolutionAboutDomainsOfIp, { params: params }) - const behaviorPattern = axios.get(api.entity.behaviorPattern, { params: params }) + const appsOfIp = axios.get(api.entity.domainNameResolutionAboutAppsOfIp, { params: relatedEntityParams }) + const domainsOfIp = axios.get(api.entity.domainNameResolutionAboutDomainsOfIp, { params: relatedEntityParams }) + const behaviorPattern = axios.get(api.entity.behaviorPattern, { params: relatedEntityParams }) this.promiseData(appsOfIp, domainsOfIp, behaviorPattern) } if (this.entity.entityType === 'domain') { - const appsOfDomain = axios.get(api.entity.domainNameResolutionAboutAppsOfDomain, { params: params }) - const ipsOfDomain = axios.get(api.entity.domainNameResolutionAboutIpsOfDomain, { params: params }) - const fqdnsOfDomain = axios.get(api.entity.domainNameResolutionAboutFQDNsOfDomain, { params: params }) + const appsOfDomain = axios.get(api.entity.domainNameResolutionAboutAppsOfDomain, { params: relatedEntityParams }) + const ipsOfDomain = axios.get(api.entity.domainNameResolutionAboutIpsOfDomain, { params: relatedEntityParams }) + const fqdnsOfDomain = axios.get(api.entity.domainNameResolutionAboutFQDNsOfDomain, { params: relatedEntityParams }) this.promiseData(appsOfDomain, ipsOfDomain, fqdnsOfDomain) } }, diff --git a/src/views/charts2/charts/entityDetail/tabs/BehaviorPattern.vue b/src/views/charts2/charts/entityDetail/tabs/BehaviorPattern.vue index 7433e2fa..1b75e727 100644 --- a/src/views/charts2/charts/entityDetail/tabs/BehaviorPattern.vue +++ b/src/views/charts2/charts/entityDetail/tabs/BehaviorPattern.vue @@ -20,10 +20,10 @@