From db566b47d56625be09fbff48e2f7245e14bf8ecc Mon Sep 17 00:00:00 2001 From: hanyuxia Date: Fri, 11 Mar 2022 17:36:55 +0800 Subject: [PATCH 1/4] =?UTF-8?q?CN-363=20=E6=B5=81=E9=87=8FDashboard?= =?UTF-8?q?=E7=9A=84APP=E5=92=8C=E5=9F=9F=E5=90=8D=E7=B1=BB=E5=88=AB?= =?UTF-8?q?=E4=BF=A1=E8=AA=89=E8=A1=A8=E4=B8=8B=E9=92=BB=E4=BF=A1=E6=81=AF?= =?UTF-8?q?=E6=98=BE=E7=A4=BA=E5=BC=82=E5=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/charts/charts/ChartEchartWithTable.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/views/charts/charts/ChartEchartWithTable.vue b/src/views/charts/charts/ChartEchartWithTable.vue index d2c6531b..0e68b92e 100644 --- a/src/views/charts/charts/ChartEchartWithTable.vue +++ b/src/views/charts/charts/ChartEchartWithTable.vue @@ -47,7 +47,7 @@ export default { }, methods: { handleQueryParams (queryParams) { - this.timeFilter = { + return this.timeFilter = { startTime: Number(queryParams.startTime) * 1000, endTime: Number(queryParams.endTime) * 1000 } From e8677c02b3dcb886ec7ba203369a2651e49dd8b9 Mon Sep 17 00:00:00 2001 From: chenjinsong <523037378@qq.com> Date: Fri, 11 Mar 2022 21:04:51 +0800 Subject: [PATCH 2/4] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E5=8F=AF=E6=8A=98?= =?UTF-8?q?=E5=8F=A0=E5=9B=BE=E8=A1=A8=E7=BB=84=E9=AB=98=E5=BA=A6=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/assets/css/components/views/charts/panel.scss | 3 +-- .../css/components/views/detections/detections.scss | 2 +- src/views/charts/PanelChartList.vue | 13 ++++--------- src/views/charts/charts/tools.js | 13 +++++++++++-- 4 files changed, 17 insertions(+), 14 deletions(-) diff --git a/src/assets/css/components/views/charts/panel.scss b/src/assets/css/components/views/charts/panel.scss index 7448512e..66bcd181 100644 --- a/src/assets/css/components/views/charts/panel.scss +++ b/src/assets/css/components/views/charts/panel.scss @@ -30,7 +30,7 @@ justify-content:space-between; align-items:center; padding: 10px 20px 10px 18px; - height: 47px; + flex: 0 0 40px; font-size: 16px; color: $--color-text-primary; @@ -214,7 +214,6 @@ position: relative; border-radius: 2px; flex-grow: 1; - overflow: auto; width: 100%; .chart-drawing { height: 100%; diff --git a/src/assets/css/components/views/detections/detections.scss b/src/assets/css/components/views/detections/detections.scss index 0507ea03..ad0cb22b 100644 --- a/src/assets/css/components/views/detections/detections.scss +++ b/src/assets/css/components/views/detections/detections.scss @@ -21,7 +21,7 @@ justify-content:space-between; align-items:center; padding: 10px 20px 10px 0px; - height: 40px; + flex: 0 0 40px; font-size: 14px; color: $--color-text-primary; diff --git a/src/views/charts/PanelChartList.vue b/src/views/charts/PanelChartList.vue index fcf88881..7f3a0423 100644 --- a/src/views/charts/PanelChartList.vue +++ b/src/views/charts/PanelChartList.vue @@ -66,7 +66,7 @@ diff --git a/src/utils/api.js b/src/utils/api.js index aba989fa..b09f1cf9 100644 --- a/src/utils/api.js +++ b/src/utils/api.js @@ -130,13 +130,21 @@ export async function getEntityFilter (params) { export async function getDictList (params) { return await getData(api.dict, params, true) } - +function handleResult (response) { + if (response.data.list || response.data.result) { + return response.data.list || response.data.result + } else if (response.data.result === 0) { + return response.data.result + } else { + return response.data + } +} export async function getData (url, params = {}, isQueryList) { const request = new Promise((resolve, reject) => { try { get(url, params).then(response => { if (response.code === 200) { - resolve(isQueryList ? response.data.list || response.data.result : response.data.result || response.data) + resolve(handleResult(response)) } else { reject(response) } diff --git a/src/utils/constants.js b/src/utils/constants.js index d6bdc96f..caea85c5 100644 --- a/src/utils/constants.js +++ b/src/utils/constants.js @@ -410,3 +410,14 @@ export const iso36112 = { SZ: 'eswatiniLow', MN: 'mongoliaLow' } + +export const reg = { + // 不严格ipv4 + notStrictIpv4: /(?:[0-9]{1,}\.){0,}[0-9]{1,}(\.)?/g, + // 不严格Ipv4带单引号 + notStrictWithQuotIpv4: /'(?:[0-9]{1,}\.){0,}[0-9]{1,}(\.)?'/g, + // 不严格ipv6 + notStrictIpv6: /(:{0,}[a-fA-F\d]{0,}){0,}:+([a-fA-F\d]{0,}:{0,}){0,}/g, + // 不严格Ipv6带单引号 + notStrictWithQuotIpv6: /'(:{0,}[a-fA-F\d]{0,}){0,}:+([a-fA-F\d]{0,}:{0,}){0,}'/g +} diff --git a/src/views/charts/Chart.vue b/src/views/charts/Chart.vue index f1135d52..a3da178b 100644 --- a/src/views/charts/Chart.vue +++ b/src/views/charts/Chart.vue @@ -210,6 +210,11 @@ :entity="entity" > + + @@ -242,6 +247,7 @@ 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 ChartDomainRecursiveResolve from '@/views/charts/charts/ChartDomainRecursiveResolve' import { isEcharts, isEchartsLine, @@ -278,6 +284,7 @@ import { isSingleSupportStatistics, isTwoSupportStatistics, isAlarmInfo, + isDomainRecursiveResolve } from './charts/tools' import _ from 'lodash' @@ -311,6 +318,7 @@ export default { ChartOneSituationStatistics, ChartTwoSituationStatistics, ChartAlarmInfo, + ChartDomainRecursiveResolve }, data() { return { @@ -428,17 +436,17 @@ export default { isDomainWhois: isDomainWhois(props.chartInfo.type), isDomainDnsRecord: isDomainDnsRecord(props.chartInfo.type), isCryptocurrencyEventList: isCryptocurrencyEventList( - props.chartInfo.type, + props.chartInfo.type ), isAppBasicInfo: isAppBasicInfo(props.chartInfo.type), isAppRelatedDomain: isAppRelatedDomain(props.chartInfo.type), isSingleSupportStatistics: isSingleSupportStatistics( - props.chartInfo.type, + props.chartInfo.type ), isTwoSupportStatistics: isTwoSupportStatistics(props.chartInfo.type), isAlarmInfo: isAlarmInfo(props.chartInfo.type), - + isDomainRecursiveResolve: isDomainRecursiveResolve(props.chartInfo.type) } - }, + } } diff --git a/src/views/charts/charts/ChartDomainRecursiveResolve.vue b/src/views/charts/charts/ChartDomainRecursiveResolve.vue new file mode 100644 index 00000000..8dc4b962 --- /dev/null +++ b/src/views/charts/charts/ChartDomainRecursiveResolve.vue @@ -0,0 +1,20 @@ + + + diff --git a/src/views/charts/charts/tools.js b/src/views/charts/charts/tools.js index 00650d26..c2bd1dd2 100644 --- a/src/views/charts/charts/tools.js +++ b/src/views/charts/charts/tools.js @@ -167,6 +167,10 @@ export function isSingleSupportStatistics (type) { export function isTwoSupportStatistics (type) { return type === 87 } +/* 域名递归解析 */ +export function isDomainRecursiveResolve (type) { + return type === 88 +} /* 组 */ export function isGroup (type) { return type === 94 diff --git a/src/views/detections/Index.vue b/src/views/detections/Index.vue index c74a9b27..ff0da477 100644 --- a/src/views/detections/Index.vue +++ b/src/views/detections/Index.vue @@ -132,7 +132,8 @@ export default { pageObj: { pageNo: 1, pageSize: defaultPageSize, - total: 0 + total: 0, + resetPageNo: true }, q: '', detectionPageType, @@ -1065,9 +1066,13 @@ export default { this.q = '' this.metaList = [] } + if (this.pageObj.resetPageNo) { + this.pageObj.pageNo = 1 + } else { + this.pageObj.resetPageNo = true + } this.queryFilter() this.queryList() - this.queryListTotal() }, resetFilterData () { this.filterData.securityEvent.forEach(d => { @@ -1096,9 +1101,6 @@ export default { this.initActiveEntity(params) this.initEventTypeData(params) } - }, - queryListTotal () { - }, filter (filterColumn) { const params = {} @@ -1113,6 +1115,7 @@ export default { }, pageNo (val) { this.pageObj.pageNo = val || 1 + this.pageObj.resetPageNo = false this.search(this.metaList, this.q) }, // 点击上一页箭头 diff --git a/src/views/entityExplorer/EntityExplorer.vue b/src/views/entityExplorer/EntityExplorer.vue index e3443cc7..54a9e016 100644 --- a/src/views/entityExplorer/EntityExplorer.vue +++ b/src/views/entityExplorer/EntityExplorer.vue @@ -157,6 +157,8 @@ export default { pageObj: { pageNo: 1, + // 是否重置pageNo,在执行新搜索时是true + resetPageNo: true, pageSize: defaultPageSize, total: 0 }, @@ -482,6 +484,11 @@ export default { if (!this.showList) { this.showList = true } + if (this.pageObj.resetPageNo) { + this.pageObj.pageNo = 1 + } else { + this.pageObj.resetPageNo = true + } // 带参数时,只查询对应类型的entity;不带参数时,3种entity都查 if (formatSql) { // entity_type处理,不查其他两种entity_type对应的左侧筛选 @@ -529,6 +536,7 @@ export default { }, pageNo (val) { this.pageObj.pageNo = val + this.pageObj.resetPageNo = false this.search(this.metaList, this.q) }, // 点击上一页箭头 @@ -558,6 +566,9 @@ export default { value: name } this.$refs.search.addParams([params]) + this.$nextTick(() => { + this.emitter.emit('advanced-search') + }) }, /* 查询filter数据 */ queryFilter (params) { From 33a913c8424ff677067dad9aa9910dd56042d7ad Mon Sep 17 00:00:00 2001 From: chenjinsong <523037378@qq.com> Date: Sat, 12 Mar 2022 23:05:04 +0800 Subject: [PATCH 4/4] =?UTF-8?q?CN-356=20fix:=20=E4=BF=AE=E5=A4=8Dpanel-cha?= =?UTF-8?q?rt=E6=97=B6=E9=97=B4=E9=80=89=E6=8B=A9=E5=99=A8=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/charts/Chart.vue | 54 +++++++++++++++++++------- src/views/charts/ChartHeader.vue | 4 +- src/views/charts/Panel.vue | 1 + src/views/charts/PanelChart.vue | 27 +++++++------ src/views/charts/charts/ChartBlock.vue | 6 --- src/views/charts/charts/ChartGroup.vue | 7 ++-- src/views/charts/charts/chart-mixin.js | 1 + 7 files changed, 63 insertions(+), 37 deletions(-) diff --git a/src/views/charts/Chart.vue b/src/views/charts/Chart.vue index a3da178b..6ce29805 100644 --- a/src/views/charts/Chart.vue +++ b/src/views/charts/Chart.vue @@ -6,6 +6,7 @@ @@ -14,6 +15,7 @@ v-else-if="isMap && !isIpBasicInfo" :chart-info="chartInfo" :chart-data="chartData" + :time-filter="timeFilter" :query-params="queryParams" :entity="entity" @getChartData="getChartData" @@ -24,14 +26,16 @@ v-else-if="isSingleValue" :chart-info="chartInfo" :chart-data="chartData" + :time-filter="timeFilter" :query-params="queryParams" @showLoading="showLoading" > @@ -66,6 +74,7 @@ :chart-info="chartInfo" :chart-data="chartData" :result-type="resultType" + :time-filter="timeFilter" :query-params="queryParams" @showLoading="showLoading" > @@ -75,6 +84,7 @@ :chart-info="chartInfo" :chart-data="chartData" :result-type="resultType" + :time-filter="timeFilter" :query-params="queryParams" @showLoading="showLoading" > @@ -84,6 +94,7 @@ :chart-info="chartInfo" :chart-data="chartData" :table="table" + :time-filter="timeFilter" :query-params="queryParams" @showLoading="showLoading" > @@ -93,6 +104,7 @@ :chart-info="chartInfo" :chart-data="chartData" :table="table" + :time-filter="timeFilter" :query-params="queryParams" > @@ -100,6 +112,7 @@ v-else-if="isAppBasicInfo" :chart-info="chartInfo" :chart-data="chartData" + :time-filter="timeFilter" :query-params="queryParams" > @@ -107,6 +120,7 @@ v-else-if="isDomainWhois" :chart-info="chartInfo" :chart-data="chartData" + :time-filter="timeFilter" :query-params="queryParams" > @@ -114,6 +128,7 @@ v-else-if="isDomainDnsRecord" :chart-info="chartInfo" :chart-data="chartData" + :time-filter="timeFilter" :query-params="queryParams" > @@ -121,6 +136,7 @@ v-else-if="isCryptocurrencyEventList" :chart-info="chartInfo" :chart-data="chartData" + :time-filter="timeFilter" :query-params="queryParams" > @@ -128,6 +144,7 @@ v-else-if="isRelationShip" :chart-info="chartInfo" :chart-data="chartData" + :time-filter="timeFilter" :query-params="queryParams" > @@ -135,6 +152,7 @@ v-else-if="isSankey" :chart-info="chartInfo" :chart-data="chartData" + :time-filter="timeFilter" :query-params="queryParams" :entity="entity" > @@ -144,6 +162,8 @@ :chart-info="chartInfo" :chart-data="chartData" :result-type="resultType" + :time-filter="timeFilter" + :query-params="queryParams" @showLoading="showLoading" > @@ -152,6 +172,8 @@ :chart-info="chartInfo" :chart-data="chartData" :result-type="resultType" + :time-filter="timeFilter" + :query-params="queryParams" @showLoading="showLoading" > @@ -160,6 +182,7 @@ :chart-info="chartInfo" :chart-data="chartData" :query-params="queryParams" + :time-filter="timeFilter" :result-type="resultType" :order-pie-table="orderPieTable" @showLoading="showLoading" @@ -167,8 +190,10 @@ @@ -179,6 +204,8 @@ :chart-data="chartData" @showLoading="showLoading" :entity="entity" + :time-filter="timeFilter" + :query-params="queryParams" > @@ -337,8 +369,9 @@ export default { entity: Object, isError: Boolean, table: Object, + timeFilter: Object, orderPieTable: Object, - tabHandleClickType: String, + tabHandleClickType: String }, computed: { isNoData() { @@ -389,19 +422,12 @@ export default { }, }, watch: { - chartData: { - deep: true, - handler(n) {}, - }, tabHandleClickType: { deep: true, handler(n) { this.tabHandleClickType = n }, - }, - queryParams: { - deep: true, - }, + } }, setup(props) { return { diff --git a/src/views/charts/ChartHeader.vue b/src/views/charts/ChartHeader.vue index 6e034e90..0e56634a 100644 --- a/src/views/charts/ChartHeader.vue +++ b/src/views/charts/ChartHeader.vue @@ -311,11 +311,12 @@ export default { this.$emit('refresh') }, timeRefreshChange() { + // 不是自选时间 if (!this.$refs.dateTimeRange.isCustom) { const value = this.chartTimeFilter.dateRangeValue this.$refs.dateTimeRange.quickChange(value) } else { - this.$emit('refresh') + this.$emit('refresh', this.chartTimeFilter) } }, reload(s, e, v) { @@ -326,7 +327,6 @@ export default { }, dateTimeRangeChange(s, e, v) { this.chartTimeFilter = { startTime: s, endTime: e, dateRangeValue: v } - console.log(this.chartTimeFilter) this.$emit('refresh', this.chartTimeFilter) }, tableLimitChange() { diff --git a/src/views/charts/Panel.vue b/src/views/charts/Panel.vue index e2d278df..bf3b3579 100644 --- a/src/views/charts/Panel.vue +++ b/src/views/charts/Panel.vue @@ -146,6 +146,7 @@ export default { callback({ startTime: myStartTime, endTime: myEndTime }) }, timeRefreshChange () { + // 不是自选时间 if (!this.$refs.dateTimeRange.isCustom) { const value = this.timeFilter.dateRangeValue this.$refs.dateTimeRange.quickChange(value) diff --git a/src/views/charts/PanelChart.vue b/src/views/charts/PanelChart.vue index 0d92ba55..649af453 100644 --- a/src/views/charts/PanelChart.vue +++ b/src/views/charts/PanelChart.vue @@ -38,6 +38,7 @@ :table="table" :is-fullscreen="isFullscreen" :order-pie-table="orderPieTable" + :time-filter="timeFilter" @getChartData="getChartData" @showLoading="showLoading" :tabHandleClickType="tabHandleClickType" @@ -191,7 +192,7 @@ export default { ...this.handleQueryParams(), ...this.queryTimeRange, ...this.entity, - + ...extraParams } const requestUrl = url || (chartParams && chartParams.url) @@ -288,13 +289,20 @@ export default { this.$refs.chart.resize() }, refresh (chartTimeFilter) { - const myEndTime = window.$dayJs.tz().valueOf() - const myStartTime = myEndTime - this.chartTimeFilter.dateRangeValue * 60 * 1000 - this.standaloneTimeRange.use = true - this.standaloneTimeRange.startTime = myStartTime - this.standaloneTimeRange.endTime = myEndTime - this.emitter.emit('chart-pageNo') - this.getChartData(null, {}, true, chartTimeFilter) + if (chartTimeFilter) { + this.timeFilter.startTime = chartTimeFilter.startTime + this.timeFilter.endTime = chartTimeFilter.endTime + this.timeFilter.dateRangeValue = chartTimeFilter.dateRangeValue + this.getChartData(null, {}, true, chartTimeFilter) + } else { + const myEndTime = window.$dayJs.tz().valueOf() + const myStartTime = myEndTime - this.timeFilter.dateRangeValue * 60 * 1000 + this.standaloneTimeRange.use = true + this.standaloneTimeRange.startTime = myStartTime + this.standaloneTimeRange.endTime = myEndTime + this.emitter.emit('chart-pageNo') + this.getChartData(null, {}, true) + } }, tabHandleClick (value) { this.tabHandleClickType = value @@ -371,9 +379,6 @@ export default { mounted () { this.showLoading(true) this.getChartData() - // setTimeout(() => { - // this.getChartData() - // }, 200) }, setup (props) { const dateRangeValue = 60 diff --git a/src/views/charts/charts/ChartBlock.vue b/src/views/charts/charts/ChartBlock.vue index b5c38a5e..b1171777 100644 --- a/src/views/charts/charts/ChartBlock.vue +++ b/src/views/charts/charts/ChartBlock.vue @@ -14,9 +14,6 @@ import chartMixin from '@/views/charts/charts/chart-mixin' export default { name: 'ChartBlock', mixins: [chartMixin], - props: { - timeFilter: Object - }, data () { return { dataList: [], @@ -26,14 +23,11 @@ export default { }, mounted () { this.dataList = JSON.parse(JSON.stringify(this.chartInfo.children)) - // this.time = JSON.parse(JSON.stringify(this.timeFilter)) this.firstShow = true }, methods: { reload () { - console.log(123132) this.dataList = JSON.parse(JSON.stringify(this.chartInfo.children)) - // this.time = JSON.parse(JSON.stringify(this.timeFilter)) } } } diff --git a/src/views/charts/charts/ChartGroup.vue b/src/views/charts/charts/ChartGroup.vue index 84cca306..987f0bfb 100644 --- a/src/views/charts/charts/ChartGroup.vue +++ b/src/views/charts/charts/ChartGroup.vue @@ -1,6 +1,7 @@