|
|
@ -29,7 +29,8 @@
|
|
|
|
transform: translate(5px, -7px);
|
|
|
|
transform: translate(5px, -7px);
|
|
|
|
"
|
|
|
|
"
|
|
|
|
>
|
|
|
|
>
|
|
|
|
/</span>
|
|
|
|
/</span
|
|
|
|
|
|
|
|
>
|
|
|
|
<span class="content-total">{{ item.total }}</span>
|
|
|
|
<span class="content-total">{{ item.total }}</span>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
@ -61,8 +62,11 @@
|
|
|
|
>
|
|
|
|
>
|
|
|
|
<img :src="item.url" alt="" />
|
|
|
|
<img :src="item.url" alt="" />
|
|
|
|
<div class="item-content">
|
|
|
|
<div class="item-content">
|
|
|
|
<span class="item-content-title">{{ item.title }}</span><br />
|
|
|
|
<span class="item-content-title">{{ item.title }}</span
|
|
|
|
<span class="item-content-num">{{ item.num | commaFilter }}</span>
|
|
|
|
><br />
|
|
|
|
|
|
|
|
<span class="item-content-num">{{
|
|
|
|
|
|
|
|
item.num | commaFilter
|
|
|
|
|
|
|
|
}}</span>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div class="section-center" />
|
|
|
|
<div class="section-center" />
|
|
|
@ -100,6 +104,7 @@
|
|
|
|
<span>攻击源/IP</span>
|
|
|
|
<span>攻击源/IP</span>
|
|
|
|
<span>攻击类型</span>
|
|
|
|
<span>攻击类型</span>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<div @click="getAttackSource($event)">
|
|
|
|
<vue-seamless-scroll
|
|
|
|
<vue-seamless-scroll
|
|
|
|
:data="tableData"
|
|
|
|
:data="tableData"
|
|
|
|
:class-option="classOption"
|
|
|
|
:class-option="classOption"
|
|
|
@ -109,18 +114,19 @@
|
|
|
|
v-for="(item, idx) in tableData"
|
|
|
|
v-for="(item, idx) in tableData"
|
|
|
|
:key="idx"
|
|
|
|
:key="idx"
|
|
|
|
class="monitor-list"
|
|
|
|
class="monitor-list"
|
|
|
|
:data-obj="'安全监测'"
|
|
|
|
|
|
|
|
@click="getAttackSource(item.id)"
|
|
|
|
|
|
|
|
>
|
|
|
|
>
|
|
|
|
<span>{{ item.attackTime }}</span>
|
|
|
|
<span :data-id="item.id">{{ item.attackTime }}</span>
|
|
|
|
<span>{{ item.attackedIp }}</span>
|
|
|
|
<span :data-id="item.id">{{ item.attackedIp }}</span>
|
|
|
|
<span>{{ $filterDict('tc_attack_type',item.attackType) }}</span>
|
|
|
|
<span :data-id="item.id">{{
|
|
|
|
|
|
|
|
$filterDict("tc_attack_type", item.attackType)
|
|
|
|
|
|
|
|
}}</span>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</vue-seamless-scroll>
|
|
|
|
</vue-seamless-scroll>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
<div
|
|
|
|
<div
|
|
|
|
class="section-attackRanking"
|
|
|
|
class="section-attackRanking"
|
|
|
|
@mouseover="mouseOver"
|
|
|
|
@mouseover="mouseOver"
|
|
|
@ -178,7 +184,9 @@
|
|
|
|
<div class="dialog_little_title">攻击类型:</div>
|
|
|
|
<div class="dialog_little_title">攻击类型:</div>
|
|
|
|
</el-col>
|
|
|
|
</el-col>
|
|
|
|
<el-col :span="18">
|
|
|
|
<el-col :span="18">
|
|
|
|
<div class="dialog_little_ctn">{{ $filterDict('tc_attack_type',tableDataPop.attackType) }}</div>
|
|
|
|
<div class="dialog_little_ctn">
|
|
|
|
|
|
|
|
{{ $filterDict("tc_attack_type", tableDataPop.attackType) }}
|
|
|
|
|
|
|
|
</div>
|
|
|
|
</el-col>
|
|
|
|
</el-col>
|
|
|
|
</el-row>
|
|
|
|
</el-row>
|
|
|
|
<el-row>
|
|
|
|
<el-row>
|
|
|
@ -222,7 +230,9 @@
|
|
|
|
<div class="dialog_little_title">网站安全等级:</div>
|
|
|
|
<div class="dialog_little_title">网站安全等级:</div>
|
|
|
|
</el-col>
|
|
|
|
</el-col>
|
|
|
|
<el-col :span="6">
|
|
|
|
<el-col :span="6">
|
|
|
|
<div class="dialog_little_ctn">{{ $filterDict('tc_net_safety_level',tableDataPop.level) }}</div>
|
|
|
|
<div class="dialog_little_ctn">
|
|
|
|
|
|
|
|
{{ $filterDict("tc_net_safety_level", tableDataPop.level) }}
|
|
|
|
|
|
|
|
</div>
|
|
|
|
</el-col>
|
|
|
|
</el-col>
|
|
|
|
<el-col :span="6">
|
|
|
|
<el-col :span="6">
|
|
|
|
<div class="dialog_little_title">联系电话:</div>
|
|
|
|
<div class="dialog_little_title">联系电话:</div>
|
|
|
@ -262,10 +272,7 @@
|
|
|
|
dialogType === '软探针'
|
|
|
|
dialogType === '软探针'
|
|
|
|
"
|
|
|
|
"
|
|
|
|
>
|
|
|
|
>
|
|
|
|
<MyTable
|
|
|
|
<MyTable :table-list="excelData" :table-key="excelDataHeader" />
|
|
|
|
:table-list="excelData"
|
|
|
|
|
|
|
|
:table-key="excelDataHeader"
|
|
|
|
|
|
|
|
/>
|
|
|
|
|
|
|
|
<div style="text-align: right; margin-top: 10px">
|
|
|
|
<div style="text-align: right; margin-top: 10px">
|
|
|
|
<paginations
|
|
|
|
<paginations
|
|
|
|
v-show="total > 0"
|
|
|
|
v-show="total > 0"
|
|
|
@ -278,10 +285,9 @@
|
|
|
|
</template>
|
|
|
|
</template>
|
|
|
|
<span slot="footer" class="dialog-footer">
|
|
|
|
<span slot="footer" class="dialog-footer">
|
|
|
|
<span>
|
|
|
|
<span>
|
|
|
|
<el-button
|
|
|
|
<el-button class="dialog-btn" @click="dialogStatus = false"
|
|
|
|
class="dialog-btn"
|
|
|
|
>关 闭</el-button
|
|
|
|
@click="dialogStatus = false"
|
|
|
|
>
|
|
|
|
>关 闭</el-button>
|
|
|
|
|
|
|
|
</span>
|
|
|
|
</span>
|
|
|
|
</span>
|
|
|
|
</span>
|
|
|
|
</el-dialog>
|
|
|
|
</el-dialog>
|
|
|
@ -289,20 +295,28 @@
|
|
|
|
</template>
|
|
|
|
</template>
|
|
|
|
|
|
|
|
|
|
|
|
<script>
|
|
|
|
<script>
|
|
|
|
import { getSource } from '@/api/common'
|
|
|
|
import { getSource } from "@/api/common";
|
|
|
|
import vueSeamlessScroll from 'vue-seamless-scroll'
|
|
|
|
import vueSeamlessScroll from "vue-seamless-scroll";
|
|
|
|
import ModuleTitle from '../../common/ModuleTitle.vue'
|
|
|
|
import ModuleTitle from "../../common/ModuleTitle.vue";
|
|
|
|
import attackSituation from './attackSituation.vue'
|
|
|
|
import attackSituation from "./attackSituation.vue";
|
|
|
|
import ExcelTable from '@/components/ExcelTable'
|
|
|
|
import ExcelTable from "@/components/ExcelTable";
|
|
|
|
import { listSystem, listUnit, listWeb, listIDCunit, listSource, saftyscreenSupervise, saftyscreenSafety,
|
|
|
|
import {
|
|
|
|
listDetection, getDetection
|
|
|
|
listSystem,
|
|
|
|
} from '@/api/zongzhi/st.js'
|
|
|
|
listUnit,
|
|
|
|
|
|
|
|
listWeb,
|
|
|
|
|
|
|
|
listIDCunit,
|
|
|
|
|
|
|
|
listSource,
|
|
|
|
|
|
|
|
saftyscreenSupervise,
|
|
|
|
|
|
|
|
saftyscreenSafety,
|
|
|
|
|
|
|
|
listDetection,
|
|
|
|
|
|
|
|
getDetection,
|
|
|
|
|
|
|
|
} from "@/api/zongzhi/st.js";
|
|
|
|
import {
|
|
|
|
import {
|
|
|
|
yingTanZhen,
|
|
|
|
yingTanZhen,
|
|
|
|
yingTanZhenKeyValue,
|
|
|
|
yingTanZhenKeyValue,
|
|
|
|
xitongjiance,
|
|
|
|
xitongjiance,
|
|
|
|
xitongjianceKeyValue
|
|
|
|
xitongjianceKeyValue,
|
|
|
|
} from './mock'
|
|
|
|
} from "./mock";
|
|
|
|
import {
|
|
|
|
import {
|
|
|
|
IDCKeyValue,
|
|
|
|
IDCKeyValue,
|
|
|
|
IDC,
|
|
|
|
IDC,
|
|
|
@ -313,25 +327,25 @@ import {
|
|
|
|
zfdwKeyValue,
|
|
|
|
zfdwKeyValue,
|
|
|
|
zfdw,
|
|
|
|
zfdw,
|
|
|
|
rtz,
|
|
|
|
rtz,
|
|
|
|
rtzKeyValue
|
|
|
|
rtzKeyValue,
|
|
|
|
} from './jianGuan'
|
|
|
|
} from "./jianGuan";
|
|
|
|
import { getLatest, getSecurity } from '@/api/common'
|
|
|
|
import { getLatest, getSecurity } from "@/api/common";
|
|
|
|
export default {
|
|
|
|
export default {
|
|
|
|
components: {
|
|
|
|
components: {
|
|
|
|
attackSituation,
|
|
|
|
attackSituation,
|
|
|
|
ModuleTitle,
|
|
|
|
ModuleTitle,
|
|
|
|
vueSeamlessScroll,
|
|
|
|
vueSeamlessScroll,
|
|
|
|
ExcelTable
|
|
|
|
ExcelTable,
|
|
|
|
},
|
|
|
|
},
|
|
|
|
filters: {
|
|
|
|
filters: {
|
|
|
|
commaFilter(target) {
|
|
|
|
commaFilter(target) {
|
|
|
|
if (target < 10000) {
|
|
|
|
if (target < 10000) {
|
|
|
|
return String(target).replace(/(\d)(?=(\d{3})+$)/g, '$1,')
|
|
|
|
return String(target).replace(/(\d)(?=(\d{3})+$)/g, "$1,");
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
return (target / 10000).toFixed(2) + '万'
|
|
|
|
return (target / 10000).toFixed(2) + "万";
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
},
|
|
|
|
},
|
|
|
|
|
|
|
|
},
|
|
|
|
data() {
|
|
|
|
data() {
|
|
|
|
return {
|
|
|
|
return {
|
|
|
|
/**
|
|
|
|
/**
|
|
|
@ -339,101 +353,101 @@ export default {
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
queryParams: {
|
|
|
|
queryParams: {
|
|
|
|
pageNum: 1,
|
|
|
|
pageNum: 1,
|
|
|
|
pageSize: 10
|
|
|
|
pageSize: 10,
|
|
|
|
}, // 分页查询条件
|
|
|
|
}, // 分页查询条件
|
|
|
|
total: 0, // 总数
|
|
|
|
total: 0, // 总数
|
|
|
|
time: null,
|
|
|
|
time: null,
|
|
|
|
checkTotal: 0,
|
|
|
|
checkTotal: 0,
|
|
|
|
checkParams: {
|
|
|
|
checkParams: {
|
|
|
|
pageNum: 1,
|
|
|
|
pageNum: 1,
|
|
|
|
pageSize: 10
|
|
|
|
pageSize: 10,
|
|
|
|
},
|
|
|
|
},
|
|
|
|
//
|
|
|
|
//
|
|
|
|
dialogWidth: 0,
|
|
|
|
dialogWidth: 0,
|
|
|
|
dialogStatus: false,
|
|
|
|
dialogStatus: false,
|
|
|
|
dialogType: '',
|
|
|
|
dialogType: "",
|
|
|
|
safeDialog: false,
|
|
|
|
safeDialog: false,
|
|
|
|
attackTime: null,
|
|
|
|
attackTime: null,
|
|
|
|
tableTime: null,
|
|
|
|
tableTime: null,
|
|
|
|
tableTotal: 0,
|
|
|
|
tableTotal: 0,
|
|
|
|
currentIndex: 0,
|
|
|
|
currentIndex: 0,
|
|
|
|
attackList: {
|
|
|
|
attackList: {
|
|
|
|
options: ['受攻击IPTOP5', '分布情况']
|
|
|
|
options: ["受攻击IPTOP5", "分布情况"],
|
|
|
|
},
|
|
|
|
},
|
|
|
|
dataSource: {
|
|
|
|
dataSource: {
|
|
|
|
top: [
|
|
|
|
top: [
|
|
|
|
{
|
|
|
|
{
|
|
|
|
title: '云端监测(G)',
|
|
|
|
title: "云端监测(G)",
|
|
|
|
currentNum: 100,
|
|
|
|
currentNum: 100,
|
|
|
|
total: 150,
|
|
|
|
total: 150,
|
|
|
|
url: require('@/assets/privateOrder/general/icon-云端监测.png')
|
|
|
|
url: require("@/assets/privateOrder/general/icon-云端监测.png"),
|
|
|
|
},
|
|
|
|
},
|
|
|
|
{
|
|
|
|
{
|
|
|
|
title: 'APT(M)',
|
|
|
|
title: "APT(M)",
|
|
|
|
currentNum: 239,
|
|
|
|
currentNum: 239,
|
|
|
|
total: 1000,
|
|
|
|
total: 1000,
|
|
|
|
url: require('@/assets/privateOrder/general/icon-APT.png')
|
|
|
|
url: require("@/assets/privateOrder/general/icon-APT.png"),
|
|
|
|
}
|
|
|
|
},
|
|
|
|
],
|
|
|
|
],
|
|
|
|
bottom: [
|
|
|
|
bottom: [
|
|
|
|
{
|
|
|
|
{
|
|
|
|
title: '硬探针',
|
|
|
|
title: "硬探针",
|
|
|
|
num: 6,
|
|
|
|
num: 6,
|
|
|
|
url: require('@/assets/privateOrder/general/硬探针.png')
|
|
|
|
url: require("@/assets/privateOrder/general/硬探针.png"),
|
|
|
|
},
|
|
|
|
},
|
|
|
|
{
|
|
|
|
{
|
|
|
|
title: '软探针',
|
|
|
|
title: "软探针",
|
|
|
|
num: 125,
|
|
|
|
num: 125,
|
|
|
|
url: require('@/assets/privateOrder/general/软探针.png')
|
|
|
|
url: require("@/assets/privateOrder/general/软探针.png"),
|
|
|
|
},
|
|
|
|
},
|
|
|
|
{
|
|
|
|
{
|
|
|
|
title: '系统监测',
|
|
|
|
title: "系统监测",
|
|
|
|
num: 2658,
|
|
|
|
num: 2658,
|
|
|
|
url: require('@/assets/privateOrder/general/系统监测.png')
|
|
|
|
url: require("@/assets/privateOrder/general/系统监测.png"),
|
|
|
|
}
|
|
|
|
},
|
|
|
|
]
|
|
|
|
],
|
|
|
|
},
|
|
|
|
},
|
|
|
|
superviseObject: [
|
|
|
|
superviseObject: [
|
|
|
|
{
|
|
|
|
{
|
|
|
|
title: '政府网站',
|
|
|
|
title: "政府网站",
|
|
|
|
num: 0,
|
|
|
|
num: 0,
|
|
|
|
className: 'item1',
|
|
|
|
className: "item1",
|
|
|
|
url: require('@/assets/privateOrder/general/icon-政府网站.png')
|
|
|
|
url: require("@/assets/privateOrder/general/icon-政府网站.png"),
|
|
|
|
},
|
|
|
|
},
|
|
|
|
{
|
|
|
|
{
|
|
|
|
title: '监管单位',
|
|
|
|
title: "监管单位",
|
|
|
|
num: 0,
|
|
|
|
num: 0,
|
|
|
|
className: 'item2',
|
|
|
|
className: "item2",
|
|
|
|
url: require('@/assets/privateOrder/general/icon-监管单位.png')
|
|
|
|
url: require("@/assets/privateOrder/general/icon-监管单位.png"),
|
|
|
|
},
|
|
|
|
},
|
|
|
|
{
|
|
|
|
{
|
|
|
|
title: '网站监测',
|
|
|
|
title: "网站监测",
|
|
|
|
num: 0,
|
|
|
|
num: 0,
|
|
|
|
className: 'item3',
|
|
|
|
className: "item3",
|
|
|
|
url: require('@/assets/privateOrder/general/icon-网站监测.png')
|
|
|
|
url: require("@/assets/privateOrder/general/icon-网站监测.png"),
|
|
|
|
},
|
|
|
|
},
|
|
|
|
{
|
|
|
|
{
|
|
|
|
title: 'IDC单位',
|
|
|
|
title: "IDC单位",
|
|
|
|
num: 0,
|
|
|
|
num: 0,
|
|
|
|
className: 'item4',
|
|
|
|
className: "item4",
|
|
|
|
url: require('@/assets/privateOrder/general/icon-IDC单位.png')
|
|
|
|
url: require("@/assets/privateOrder/general/icon-IDC单位.png"),
|
|
|
|
},
|
|
|
|
},
|
|
|
|
{
|
|
|
|
{
|
|
|
|
title: '等保系统',
|
|
|
|
title: "等保系统",
|
|
|
|
num: 0,
|
|
|
|
num: 0,
|
|
|
|
className: 'item5',
|
|
|
|
className: "item5",
|
|
|
|
url: require('@/assets/privateOrder/general/icon-等保系统.png')
|
|
|
|
url: require("@/assets/privateOrder/general/icon-等保系统.png"),
|
|
|
|
},
|
|
|
|
},
|
|
|
|
{
|
|
|
|
{
|
|
|
|
title: '等保单位',
|
|
|
|
title: "等保单位",
|
|
|
|
num: 0,
|
|
|
|
num: 0,
|
|
|
|
className: 'item6',
|
|
|
|
className: "item6",
|
|
|
|
url: require('@/assets/privateOrder/general/icon-等保单位.png')
|
|
|
|
url: require("@/assets/privateOrder/general/icon-等保单位.png"),
|
|
|
|
}
|
|
|
|
},
|
|
|
|
],
|
|
|
|
],
|
|
|
|
securityMonitor: {
|
|
|
|
securityMonitor: {
|
|
|
|
url: require('@/assets/privateOrder/general/icon-网络攻击.png'),
|
|
|
|
url: require("@/assets/privateOrder/general/icon-网络攻击.png"),
|
|
|
|
title: '网络攻击(次)',
|
|
|
|
title: "网络攻击(次)",
|
|
|
|
total: 0,
|
|
|
|
total: 0,
|
|
|
|
detail: [
|
|
|
|
detail: [
|
|
|
|
// {
|
|
|
|
// {
|
|
|
@ -448,7 +462,7 @@ export default {
|
|
|
|
// title: '僵木蠕病毒',
|
|
|
|
// title: '僵木蠕病毒',
|
|
|
|
// num: 796.152
|
|
|
|
// num: 796.152
|
|
|
|
// }
|
|
|
|
// }
|
|
|
|
]
|
|
|
|
],
|
|
|
|
},
|
|
|
|
},
|
|
|
|
tableDataPop: {
|
|
|
|
tableDataPop: {
|
|
|
|
// id: 1,
|
|
|
|
// id: 1,
|
|
|
@ -492,8 +506,8 @@ export default {
|
|
|
|
// }
|
|
|
|
// }
|
|
|
|
],
|
|
|
|
],
|
|
|
|
excelData: null,
|
|
|
|
excelData: null,
|
|
|
|
excelDataHeader: null
|
|
|
|
excelDataHeader: null,
|
|
|
|
}
|
|
|
|
};
|
|
|
|
},
|
|
|
|
},
|
|
|
|
computed: {
|
|
|
|
computed: {
|
|
|
|
classOption() {
|
|
|
|
classOption() {
|
|
|
@ -505,29 +519,30 @@ export default {
|
|
|
|
openWatch: true, // 开启数据实时监控刷新dom
|
|
|
|
openWatch: true, // 开启数据实时监控刷新dom
|
|
|
|
singleHeight: 0, // 单步运动停止的高度(默认值0是无缝不停止的滚动) direction => 0/1
|
|
|
|
singleHeight: 0, // 单步运动停止的高度(默认值0是无缝不停止的滚动) direction => 0/1
|
|
|
|
singleWidth: 0, // 单步运动停止的宽度(默认值0是无缝不停止的滚动) direction => 2/3
|
|
|
|
singleWidth: 0, // 单步运动停止的宽度(默认值0是无缝不停止的滚动) direction => 2/3
|
|
|
|
waitTime: 1000 // 单步运动停止的时间(默认值1000ms)
|
|
|
|
waitTime: 1000, // 单步运动停止的时间(默认值1000ms)
|
|
|
|
}
|
|
|
|
};
|
|
|
|
}
|
|
|
|
},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
created() {},
|
|
|
|
created() {},
|
|
|
|
destroyed() {
|
|
|
|
destroyed() {
|
|
|
|
clearInterval(this.attackTime) // 清除定时器
|
|
|
|
clearInterval(this.attackTime); // 清除定时器
|
|
|
|
clearInterval(this.tableTime)
|
|
|
|
clearInterval(this.tableTime);
|
|
|
|
clearInterval(this.time)
|
|
|
|
clearInterval(this.time);
|
|
|
|
},
|
|
|
|
},
|
|
|
|
mounted() {
|
|
|
|
mounted() {
|
|
|
|
this.changeBtn() // 切换
|
|
|
|
this.changeBtn(); // 切换
|
|
|
|
this.getSaftyscreenSupervise()
|
|
|
|
this.getSaftyscreenSupervise();
|
|
|
|
this.getSaftyscreenSafety()
|
|
|
|
this.getSaftyscreenSafety();
|
|
|
|
this.getListDetection()
|
|
|
|
this.getListDetection();
|
|
|
|
this.time = setInterval(() => { // 安全隐患列表
|
|
|
|
this.time = setInterval(() => {
|
|
|
|
|
|
|
|
// 安全隐患列表
|
|
|
|
if (this.tableData.length >= this.checkTotal) {
|
|
|
|
if (this.tableData.length >= this.checkTotal) {
|
|
|
|
clearInterval(this.time)
|
|
|
|
clearInterval(this.time);
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
this.checkParams.pageNum = this.checkParams.pageNum + 1
|
|
|
|
this.checkParams.pageNum = this.checkParams.pageNum + 1;
|
|
|
|
this.getListDetection()
|
|
|
|
this.getListDetection();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}, 6000)
|
|
|
|
}, 6000);
|
|
|
|
// this.getDataSource() // 数据来源
|
|
|
|
// this.getDataSource() // 数据来源
|
|
|
|
// 左下角数据滚动
|
|
|
|
// 左下角数据滚动
|
|
|
|
// getLatest().then((res) => {
|
|
|
|
// getLatest().then((res) => {
|
|
|
@ -559,223 +574,231 @@ export default {
|
|
|
|
AttackClick(id) {
|
|
|
|
AttackClick(id) {
|
|
|
|
return new Promise((resolve) => {
|
|
|
|
return new Promise((resolve) => {
|
|
|
|
getLatest().then((res) => {
|
|
|
|
getLatest().then((res) => {
|
|
|
|
res['T_LATEST_NEWS[]'].forEach((item) => {
|
|
|
|
res["T_LATEST_NEWS[]"].forEach((item) => {
|
|
|
|
if (item.id === id) {
|
|
|
|
if (item.id === id) {
|
|
|
|
this.tableDataPop.id = id
|
|
|
|
this.tableDataPop.id = id;
|
|
|
|
this.tableDataPop.attackTime = item.attack_time
|
|
|
|
this.tableDataPop.attackTime = item.attack_time;
|
|
|
|
this.tableDataPop.sourceIp = item.source_ip
|
|
|
|
this.tableDataPop.sourceIp = item.source_ip;
|
|
|
|
this.tableDataPop.attackType = item.attack_type
|
|
|
|
this.tableDataPop.attackType = item.attack_type;
|
|
|
|
this.tableDataPop.attackIpRegion = item.attack_ip_region
|
|
|
|
this.tableDataPop.attackIpRegion = item.attack_ip_region;
|
|
|
|
this.tableDataPop.attackedIp = item.attacked_ip
|
|
|
|
this.tableDataPop.attackedIp = item.attacked_ip;
|
|
|
|
this.tableDataPop.attackedType = item.attacked_type
|
|
|
|
this.tableDataPop.attackedType = item.attacked_type;
|
|
|
|
this.tableDataPop.webLevel = item.web_level
|
|
|
|
this.tableDataPop.webLevel = item.web_level;
|
|
|
|
this.tableDataPop.subordinateDept = item.subordinate_dept
|
|
|
|
this.tableDataPop.subordinateDept = item.subordinate_dept;
|
|
|
|
this.tableDataPop.attackedIpRegion = item.attacked_ip_region
|
|
|
|
this.tableDataPop.attackedIpRegion = item.attacked_ip_region;
|
|
|
|
item.contact_tel === undefined
|
|
|
|
item.contact_tel === undefined
|
|
|
|
? (this.tableDataPop.contactTel = '-')
|
|
|
|
? (this.tableDataPop.contactTel = "-")
|
|
|
|
: (this.tableDataPop.contactTel = item.contact_tel)
|
|
|
|
: (this.tableDataPop.contactTel = item.contact_tel);
|
|
|
|
item.contact_name === undefined
|
|
|
|
item.contact_name === undefined
|
|
|
|
? (this.tableDataPop.contactName = '-')
|
|
|
|
? (this.tableDataPop.contactName = "-")
|
|
|
|
: (this.tableDataPop.contactName = item.contact_name)
|
|
|
|
: (this.tableDataPop.contactName = item.contact_name);
|
|
|
|
resolve()
|
|
|
|
resolve();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
})
|
|
|
|
});
|
|
|
|
})
|
|
|
|
});
|
|
|
|
})
|
|
|
|
});
|
|
|
|
},
|
|
|
|
},
|
|
|
|
async getAttackSource(id) {
|
|
|
|
async getAttackSource(e) {
|
|
|
|
this.dialogWidth = '1000px'
|
|
|
|
let id = e.target.dataset.id;
|
|
|
|
getDetection(id).then(res => {
|
|
|
|
if (!id) return;
|
|
|
|
this.tableDataPop = res.data
|
|
|
|
this.dialogWidth = "1000px";
|
|
|
|
this.dialogType = '安全监测'
|
|
|
|
getDetection(id).then((res) => {
|
|
|
|
this.dialogStatus = true
|
|
|
|
this.tableDataPop = res.data;
|
|
|
|
})
|
|
|
|
this.dialogType = "安全监测";
|
|
|
|
|
|
|
|
this.dialogStatus = true;
|
|
|
|
|
|
|
|
});
|
|
|
|
// await this.AttackClick(id)
|
|
|
|
// await this.AttackClick(id)
|
|
|
|
},
|
|
|
|
},
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* 安全监管List
|
|
|
|
* 安全监管List
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
getListDetection() {
|
|
|
|
getListDetection() {
|
|
|
|
listDetection(this.checkParams).then(res => {
|
|
|
|
listDetection(this.checkParams).then((res) => {
|
|
|
|
this.tableData = [...this.tableData, ...res.rows]
|
|
|
|
this.tableData = [...this.tableData, ...res.rows];
|
|
|
|
this.checkTotal = res.total
|
|
|
|
this.checkTotal = res.total;
|
|
|
|
})
|
|
|
|
});
|
|
|
|
},
|
|
|
|
},
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* 安全监测攻击类型统计
|
|
|
|
* 安全监测攻击类型统计
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
getSaftyscreenSafety() {
|
|
|
|
getSaftyscreenSafety() {
|
|
|
|
saftyscreenSafety().then(res => {
|
|
|
|
saftyscreenSafety().then((res) => {
|
|
|
|
this.securityMonitor.detail = res.data.list.map((item, index) => {
|
|
|
|
this.securityMonitor.detail = res.data.list.map((item, index) => {
|
|
|
|
this.securityMonitor.total = this.securityMonitor.total + item.count
|
|
|
|
this.securityMonitor.total = this.securityMonitor.total + item.count;
|
|
|
|
return {
|
|
|
|
return {
|
|
|
|
title: this.$filterDict('tc_attack_type', item.attackType),
|
|
|
|
title: this.$filterDict("tc_attack_type", item.attackType),
|
|
|
|
num: item.count
|
|
|
|
num: item.count,
|
|
|
|
}
|
|
|
|
};
|
|
|
|
})
|
|
|
|
});
|
|
|
|
})
|
|
|
|
});
|
|
|
|
},
|
|
|
|
},
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* 监管对象各类别统计量
|
|
|
|
* 监管对象各类别统计量
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
getSaftyscreenSupervise() {
|
|
|
|
getSaftyscreenSupervise() {
|
|
|
|
saftyscreenSupervise().then(res => {
|
|
|
|
saftyscreenSupervise().then((res) => {
|
|
|
|
// this.superviseObject[4].num = res.data.
|
|
|
|
// this.superviseObject[4].num = res.data.
|
|
|
|
res.data.forEach(item => {
|
|
|
|
res.data.forEach((item) => {
|
|
|
|
this.superviseObject.forEach(it => {
|
|
|
|
this.superviseObject.forEach((it) => {
|
|
|
|
if (item.name == it.title) {
|
|
|
|
if (item.name == it.title) {
|
|
|
|
it.num = item.count
|
|
|
|
it.num = item.count;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
})
|
|
|
|
});
|
|
|
|
})
|
|
|
|
});
|
|
|
|
console.log(res, 'aaa')
|
|
|
|
console.log(res, "aaa");
|
|
|
|
})
|
|
|
|
});
|
|
|
|
},
|
|
|
|
},
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* 表格参数重置
|
|
|
|
* 表格参数重置
|
|
|
|
* */
|
|
|
|
* */
|
|
|
|
reset() {
|
|
|
|
reset() {
|
|
|
|
this.total = 0
|
|
|
|
this.total = 0;
|
|
|
|
this.queryParams = {
|
|
|
|
this.queryParams = {
|
|
|
|
pageNum: 1,
|
|
|
|
pageNum: 1,
|
|
|
|
pageSize: 10
|
|
|
|
pageSize: 10,
|
|
|
|
}
|
|
|
|
};
|
|
|
|
this.excelData = []
|
|
|
|
this.excelData = [];
|
|
|
|
this.excelDataHeader = []
|
|
|
|
this.excelDataHeader = [];
|
|
|
|
},
|
|
|
|
},
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* 等保系统
|
|
|
|
* 等保系统
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
getDbSteam() {
|
|
|
|
getDbSteam() {
|
|
|
|
listSystem(this.queryParams).then(res => {
|
|
|
|
listSystem(this.queryParams).then((res) => {
|
|
|
|
this.excelData = res.rows
|
|
|
|
this.excelData = res.rows;
|
|
|
|
this.excelDataHeader = dbxtKeyValue
|
|
|
|
this.excelDataHeader = dbxtKeyValue;
|
|
|
|
this.total = res.total
|
|
|
|
this.total = res.total;
|
|
|
|
})
|
|
|
|
});
|
|
|
|
},
|
|
|
|
},
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* 等保单位
|
|
|
|
* 等保单位
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
getDbUnit() {
|
|
|
|
getDbUnit() {
|
|
|
|
listUnit(this.queryParams).then(res => {
|
|
|
|
listUnit(this.queryParams).then((res) => {
|
|
|
|
this.excelData = res.rows
|
|
|
|
this.excelData = res.rows;
|
|
|
|
this.excelDataHeader = dbdwKeyValue
|
|
|
|
this.excelDataHeader = dbdwKeyValue;
|
|
|
|
this.total = res.total
|
|
|
|
this.total = res.total;
|
|
|
|
})
|
|
|
|
});
|
|
|
|
},
|
|
|
|
},
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* 政府网站
|
|
|
|
* 政府网站
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
getZfWeb() {
|
|
|
|
getZfWeb() {
|
|
|
|
listWeb(this.queryParams).then(res => {
|
|
|
|
listWeb(this.queryParams).then((res) => {
|
|
|
|
this.excelData = res.rows
|
|
|
|
this.excelData = res.rows;
|
|
|
|
this.excelDataHeader = zfdwKeyValue
|
|
|
|
this.excelDataHeader = zfdwKeyValue;
|
|
|
|
this.total = res.total
|
|
|
|
this.total = res.total;
|
|
|
|
})
|
|
|
|
});
|
|
|
|
},
|
|
|
|
},
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* IDC单位
|
|
|
|
* IDC单位
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
getIdcUnit() {
|
|
|
|
getIdcUnit() {
|
|
|
|
listIDCunit(this.queryParams).then(res => {
|
|
|
|
listIDCunit(this.queryParams).then((res) => {
|
|
|
|
this.excelData = res.rows
|
|
|
|
this.excelData = res.rows;
|
|
|
|
this.excelDataHeader = IDCKeyValue
|
|
|
|
this.excelDataHeader = IDCKeyValue;
|
|
|
|
this.total = res.total
|
|
|
|
this.total = res.total;
|
|
|
|
})
|
|
|
|
});
|
|
|
|
},
|
|
|
|
},
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* 监管单位 || 网站监测 || 系统监测
|
|
|
|
* 监管单位 || 网站监测 || 系统监测
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
getJgUnit() {
|
|
|
|
getJgUnit() {
|
|
|
|
listSource(this.queryParams).then(res => {
|
|
|
|
listSource(this.queryParams).then((res) => {
|
|
|
|
this.excelData = res.rows
|
|
|
|
this.excelData = res.rows;
|
|
|
|
this.excelDataHeader = xitongjianceKeyValue
|
|
|
|
this.excelDataHeader = xitongjianceKeyValue;
|
|
|
|
this.total = res.total
|
|
|
|
this.total = res.total;
|
|
|
|
})
|
|
|
|
});
|
|
|
|
},
|
|
|
|
},
|
|
|
|
showAttack(item = '安全监测', total) {
|
|
|
|
showAttack(item = "安全监测", total) {
|
|
|
|
if (typeof item === 'object') {
|
|
|
|
if (typeof item === "object") {
|
|
|
|
//
|
|
|
|
//
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
this.reset()
|
|
|
|
this.reset();
|
|
|
|
this.dialogType = item
|
|
|
|
this.dialogType = item;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (this.dialogType === '等保系统') {
|
|
|
|
if (this.dialogType === "等保系统") {
|
|
|
|
this.dialogWidth = '4000px'
|
|
|
|
this.dialogWidth = "4000px";
|
|
|
|
this.getDbSteam()
|
|
|
|
this.getDbSteam();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (this.dialogType === '等保单位') {
|
|
|
|
if (this.dialogType === "等保单位") {
|
|
|
|
this.dialogWidth = '4000px'
|
|
|
|
this.dialogWidth = "4000px";
|
|
|
|
this.getDbUnit()
|
|
|
|
this.getDbUnit();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (this.dialogType === '政府网站') {
|
|
|
|
if (this.dialogType === "政府网站") {
|
|
|
|
this.dialogWidth = '1800px'
|
|
|
|
this.dialogWidth = "1800px";
|
|
|
|
this.getZfWeb()
|
|
|
|
this.getZfWeb();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (this.dialogType === 'IDC单位') {
|
|
|
|
if (this.dialogType === "IDC单位") {
|
|
|
|
this.dialogWidth = '1800px'
|
|
|
|
this.dialogWidth = "1800px";
|
|
|
|
this.getIdcUnit()
|
|
|
|
this.getIdcUnit();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (this.dialogType === '监管单位' || this.dialogType === '系统监测' || this.dialogType === '网站监测' || this.dialogType === '软探针' || this.dialogType === '硬探针') {
|
|
|
|
if (
|
|
|
|
this.dialogWidth = '2100px'
|
|
|
|
this.dialogType === "监管单位" ||
|
|
|
|
if (this.dialogType === '软探针') {
|
|
|
|
this.dialogType === "系统监测" ||
|
|
|
|
this.queryParams.type = 4
|
|
|
|
this.dialogType === "网站监测" ||
|
|
|
|
} else if (this.dialogType === '硬探针') {
|
|
|
|
this.dialogType === "软探针" ||
|
|
|
|
this.queryParams.type = 3
|
|
|
|
this.dialogType === "硬探针"
|
|
|
|
} else if (this.dialogType === '监管单位') {
|
|
|
|
) {
|
|
|
|
this.queryParams.type = 5
|
|
|
|
this.dialogWidth = "2100px";
|
|
|
|
} else if (this.dialogType === '网站监测') {
|
|
|
|
if (this.dialogType === "软探针") {
|
|
|
|
this.queryParams.type = 6
|
|
|
|
this.queryParams.type = 4;
|
|
|
|
|
|
|
|
} else if (this.dialogType === "硬探针") {
|
|
|
|
|
|
|
|
this.queryParams.type = 3;
|
|
|
|
|
|
|
|
} else if (this.dialogType === "监管单位") {
|
|
|
|
|
|
|
|
this.queryParams.type = 5;
|
|
|
|
|
|
|
|
} else if (this.dialogType === "网站监测") {
|
|
|
|
|
|
|
|
this.queryParams.type = 6;
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
this.queryParams.type = 7
|
|
|
|
this.queryParams.type = 7;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
this.getJgUnit()
|
|
|
|
this.getJgUnit();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
this.$nextTick(() => {
|
|
|
|
this.$nextTick(() => {
|
|
|
|
this.dialogStatus = true
|
|
|
|
this.dialogStatus = true;
|
|
|
|
})
|
|
|
|
});
|
|
|
|
},
|
|
|
|
},
|
|
|
|
// 数据来源数据获取
|
|
|
|
// 数据来源数据获取
|
|
|
|
getDataSource() {
|
|
|
|
getDataSource() {
|
|
|
|
getSource(9).then((res) => {
|
|
|
|
getSource(9).then((res) => {
|
|
|
|
const data = JSON.parse(res['[]'][0].T_static_data.DATA)
|
|
|
|
const data = JSON.parse(res["[]"][0].T_static_data.DATA);
|
|
|
|
for (let i = 0; i < data.top.length; i++) {
|
|
|
|
for (let i = 0; i < data.top.length; i++) {
|
|
|
|
for (let j = 0; j < this.dataSource.top.length; j++) {
|
|
|
|
for (let j = 0; j < this.dataSource.top.length; j++) {
|
|
|
|
if (data.top[i].title === this.dataSource.top[j].title) {
|
|
|
|
if (data.top[i].title === this.dataSource.top[j].title) {
|
|
|
|
this.dataSource.top[j].currentNum = data.top[i].currentNum
|
|
|
|
this.dataSource.top[j].currentNum = data.top[i].currentNum;
|
|
|
|
this.dataSource.top[j].total = data.top[i].total
|
|
|
|
this.dataSource.top[j].total = data.top[i].total;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
for (let i = 0; i < data.bottom.length; i++) {
|
|
|
|
for (let i = 0; i < data.bottom.length; i++) {
|
|
|
|
for (let j = 0; j < this.dataSource.bottom.length; j++) {
|
|
|
|
for (let j = 0; j < this.dataSource.bottom.length; j++) {
|
|
|
|
if (data.bottom[i].title === this.dataSource.bottom[j].title) {
|
|
|
|
if (data.bottom[i].title === this.dataSource.bottom[j].title) {
|
|
|
|
this.dataSource.bottom[j].num = data.bottom[i].num
|
|
|
|
this.dataSource.bottom[j].num = data.bottom[i].num;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
})
|
|
|
|
});
|
|
|
|
},
|
|
|
|
},
|
|
|
|
// 鼠标经过暂停
|
|
|
|
// 鼠标经过暂停
|
|
|
|
mouseOver() {
|
|
|
|
mouseOver() {
|
|
|
|
clearInterval(this.attackTime)
|
|
|
|
clearInterval(this.attackTime);
|
|
|
|
},
|
|
|
|
},
|
|
|
|
// 鼠标离开开启
|
|
|
|
// 鼠标离开开启
|
|
|
|
mouseLeave() {
|
|
|
|
mouseLeave() {
|
|
|
|
this.changeBtn()
|
|
|
|
this.changeBtn();
|
|
|
|
},
|
|
|
|
},
|
|
|
|
// 受攻击情况自动切换
|
|
|
|
// 受攻击情况自动切换
|
|
|
|
changeBtn() {
|
|
|
|
changeBtn() {
|
|
|
|
this.attackTime = setInterval(() => {
|
|
|
|
this.attackTime = setInterval(() => {
|
|
|
|
this.currentIndex === 0
|
|
|
|
this.currentIndex === 0
|
|
|
|
? (this.currentIndex = 1)
|
|
|
|
? (this.currentIndex = 1)
|
|
|
|
: (this.currentIndex = 0)
|
|
|
|
: (this.currentIndex = 0);
|
|
|
|
}, 11000)
|
|
|
|
}, 11000);
|
|
|
|
}
|
|
|
|
},
|
|
|
|
}
|
|
|
|
},
|
|
|
|
}
|
|
|
|
};
|
|
|
|
</script>
|
|
|
|
</script>
|
|
|
|
|
|
|
|
|
|
|
|
<style lang="scss" scoped>
|
|
|
|
<style lang="scss" scoped>
|
|
|
|