许宏杰 1 year ago
commit 9970590151

@ -0,0 +1,23 @@
import request from '@/utils/request.js'
//数据来源
export function dataLY() {
return request({
url: '/zongzhi/saftyscreen/source',
method: 'get',
})
}
//地球受攻击
export function mapAttack(data) {
return request({
url: '/zongzhi/attack/list',
method: 'get',
params:data
})
}
//安全隐患
export function safeRisks() {
return request({
url: '/zongzhi/saftyscreen/safetyhazard',
method: 'get',
})
}

@ -91,7 +91,7 @@
gl_PointSize = clamp(fract(percent*number + l - u_time*number*speed)-l ,0.0,1.) * size * (1./length);
opacity = gl_PointSize/size;
gl_Position = projectionMatrix * mvPosition;
}`
}`;
</script>
<script>
import * as THREE from "three";
@ -100,7 +100,9 @@ import { LineMaterial } from "three/examples/jsm/lines/LineMaterial.js";
import { LineGeometry } from "three/examples/jsm/lines/LineGeometry.js";
import { OrbitControls } from "three/examples/jsm/controls/OrbitControls";
import { TWEEN } from "three/examples/jsm/libs/tween.module.min.js";
import { inlandAttack, outlandAttack } from '@/api/common'
import { inlandAttack, outlandAttack } from "@/api/common";
import { mapAttack } from "@/api/wlSafe";
export default {
filters: {
commaFilter(target) {
@ -221,7 +223,7 @@ export default {
attackItem: [
{
country: "荷兰",
attackNum: 1123456,
attackNum: 0,
pos: {
x: 3.0555661883637675,
y: 3.947974319364163,
@ -236,7 +238,7 @@ export default {
},
{
country: "美国",
attackNum: 194817,
attackNum: 0,
pos: {
x: -0.7429826939416676,
y: 3.173642316073895,
@ -251,7 +253,7 @@ export default {
},
{
country: "韩国",
attackNum: 64202,
attackNum: 0,
pos: {
x: -2.476630836604717,
y: 2.974956787678714,
@ -266,7 +268,7 @@ export default {
},
{
country: "日本",
attackNum: 54272,
attackNum: 0,
pos: {
x: -3.025242162418693,
y: 3.06965280605713,
@ -281,7 +283,7 @@ export default {
},
{
country: "新加坡",
attackNum: 36181,
attackNum: 0,
pos: {
x: -1.1977125498395522,
y: 0.1187630232077593,
@ -296,7 +298,7 @@ export default {
},
{
country: "澳大利亚",
attackNum: 4227,
attackNum: 0,
pos: {
x: -3.14762251291355,
y: -2.055138287415189,
@ -311,7 +313,7 @@ export default {
},
{
country: "比利时",
attackNum: 3248,
attackNum: 0,
url: require("@/assets/privateOrder/general/比利时.png"),
pos: {
x: 3.150208620337378,
@ -326,7 +328,7 @@ export default {
},
{
country: "欧盟",
attackNum: 2824,
attackNum: 0,
url: require("@/assets/privateOrder/general/欧盟.png"),
pos: {
x: 3.0716462228398043,
@ -341,7 +343,7 @@ export default {
},
{
country: "印度",
attackNum: 2547,
attackNum: 0,
url: require("@/assets/privateOrder/general/印度.png"),
pos: {
x: 0.8973138397272145,
@ -356,7 +358,7 @@ export default {
},
{
country: "爱尔兰",
attackNum: 1753,
attackNum: 0,
pos: {
x: 2.971912016290204,
y: 3.9983787025311033,
@ -373,7 +375,7 @@ export default {
attackItemTwo: [
{
country: "浙江省",
attackNum: 15226229,
attackNum: 0,
pos: {
x: -2.172660741647654,
y: 2.519873478041844,
@ -388,7 +390,7 @@ export default {
},
{
country: "江苏省",
attackNum: 10725829,
attackNum: 0,
pos: {
x: -2.041420338320037,
y: 2.6542648717292443,
@ -403,7 +405,7 @@ export default {
},
{
country: "上海市",
attackNum: 1495968,
attackNum: 0,
pos: {
x: -2.2319153148460087,
y: 2.5918025598512733,
@ -418,7 +420,7 @@ export default {
},
{
country: "广东省",
attackNum: 1078552,
attackNum: 0,
pos: {
x: -1.8163404736411468,
y: 1.9638138809954824,
@ -433,7 +435,7 @@ export default {
},
{
country: "北京市",
attackNum: 927036,
attackNum: 0,
to: {
x: 1.5,
y: 1.3,
@ -448,7 +450,7 @@ export default {
},
{
country: "山东省",
attackNum: 370540,
attackNum: 0,
pos: {
x: -1.8242436054004105,
y: 2.9852801487720697,
@ -463,7 +465,7 @@ export default {
},
{
country: "青海省",
attackNum: 71048,
attackNum: 0,
to: {
x: 0,
y: 0.9,
@ -478,7 +480,7 @@ export default {
},
{
country: "香港",
attackNum: 57921,
attackNum: 0,
pos: {
x: -1.891796825048188,
y: 1.906025635738977,
@ -493,7 +495,7 @@ export default {
},
{
country: "河北省",
attackNum: 56947,
attackNum: 0,
pos: {
x: -1.6349002874033607,
y: 3.0827610905393548,
@ -508,7 +510,7 @@ export default {
},
{
country: "江西省",
attackNum: 44890,
attackNum: 0,
to: {
x: 1.5,
y: -0.1,
@ -532,10 +534,9 @@ export default {
// this.startAnimate();
// this.startAnimateTwo();
},
computed: {
},
computed: {},
mounted() {
this.onload();
this.mapList();
// inlandAttack().then(res => {
// const attackObject = res['T_INLAND_ATTACK[]']
// for (let j = 0; j < attackObject.length; j++) {
@ -560,6 +561,27 @@ export default {
// })
},
methods: {
//
mapList() {
mapAttack({ pageSize: 20, pageNum: 1 }).then((res) => {
console.log(res);
res.rows.forEach((value) => {
this.attackItem.forEach((value1,index1)=>{
if(value1.country == value.name){
this.attackItem[index1].attackNum = value.attackCount
return
}
})
this.attackItemTwo.forEach((value2,index2)=>{
if(value2.country == value.name){
this.attackItemTwo[index2].attackNum = value.attackCount
return
}
})
});
this.onload();
});
},
stopAnimate() {
window.clearInterval(this.timer);
this.animateFlag = false;
@ -1430,7 +1452,7 @@ export default {
width: 365px;
height: 89px;
margin-bottom: 20px;
background: url('~@/assets/privateOrder/general/left.png') no-repeat;
background: url("~@/assets/privateOrder/general/left.png") no-repeat;
background-size: 100%;
position: relative;
img {
@ -1479,7 +1501,7 @@ export default {
display: inline-table;
margin-top: 54px;
margin-left: 9px;
background: url('~@/assets/privateOrder/general/地球.png') no-repeat;
background: url("~@/assets/privateOrder/general/地球.png") no-repeat;
// background-size: 100%;
// background-position: center;
position: relative;
@ -1533,7 +1555,7 @@ export default {
height: 89px;
margin-bottom: 20px;
margin-left: 130px;
background-image: url('~@/assets/privateOrder/general/right.png');
background-image: url("~@/assets/privateOrder/general/right.png");
background-size: 100% 100%;
position: relative;
img {
@ -1582,7 +1604,7 @@ export default {
height: 291px;
margin-top: 75px;
margin-left: 182px;
background: url('~@/assets/privateOrder/general/中国.png') no-repeat;
background: url("~@/assets/privateOrder/general/中国.png") no-repeat;
position: relative;
img {
width: auto;

@ -330,6 +330,8 @@ import {
rtzKeyValue,
} from "./jianGuan";
import { getLatest, getSecurity } from "@/api/common";
//===============
import { dataLY } from "@/api/wlSafe";
export default {
components: {
attackSituation,
@ -378,32 +380,37 @@ export default {
top: [
{
title: "云端监测(G)",
currentNum: 100,
currentNum: 0,
total: 150,
url: require("@/assets/privateOrder/general/icon-云端监测.png"),
type: 1,
},
{
title: "APT(M)",
currentNum: 239,
currentNum: 0,
total: 1000,
url: require("@/assets/privateOrder/general/icon-APT.png"),
type: 2,
},
],
bottom: [
{
title: "硬探针",
num: 6,
num: 0,
url: require("@/assets/privateOrder/general/硬探针.png"),
type: 3,
},
{
title: "软探针",
num: 125,
num: 0,
url: require("@/assets/privateOrder/general/软探针.png"),
type: 4,
},
{
title: "系统监测",
num: 2658,
num: 0,
url: require("@/assets/privateOrder/general/系统监测.png"),
type: 7,
},
],
},
@ -419,12 +426,14 @@ export default {
num: 0,
className: "item2",
url: require("@/assets/privateOrder/general/icon-监管单位.png"),
type:5
},
{
title: "网站监测",
num: 0,
className: "item3",
url: require("@/assets/privateOrder/general/icon-网站监测.png"),
type:6
},
{
title: "IDC单位",
@ -507,6 +516,7 @@ export default {
],
excelData: null,
excelDataHeader: null,
//=================
};
},
computed: {
@ -569,8 +579,37 @@ export default {
// data[3].statistic_count / 10000
// ).toFixed(2)
// })
//
this.getsjly();
},
methods: {
getsjly() {
dataLY().then((res) => {
console.log(res);
res.data.forEach((value, index) => {
this.dataSource.top.forEach((value1, index1) => {
if (value.type == value1.type) {
this.dataSource.top[index1].currentNum = value.count
return
}
});
this.dataSource.bottom.forEach((value2, index2) => {
if (value.type == value2.type) {
this.dataSource.bottom[index2].num = value.count
return
}
});
this.superviseObject.forEach((value3,index3)=>{
if (value.type == value3.type) {
this.superviseObject[index3].num = value.count
return
}
})
});
});
},
//================
AttackClick(id) {
return new Promise((resolve) => {
getLatest().then((res) => {
@ -761,26 +800,26 @@ export default {
});
},
//
getDataSource() {
getSource(9).then((res) => {
const data = JSON.parse(res["[]"][0].T_static_data.DATA);
for (let i = 0; i < data.top.length; i++) {
for (let j = 0; j < this.dataSource.top.length; j++) {
if (data.top[i].title === this.dataSource.top[j].title) {
this.dataSource.top[j].currentNum = data.top[i].currentNum;
this.dataSource.top[j].total = data.top[i].total;
}
}
}
for (let i = 0; i < data.bottom.length; i++) {
for (let j = 0; j < this.dataSource.bottom.length; j++) {
if (data.bottom[i].title === this.dataSource.bottom[j].title) {
this.dataSource.bottom[j].num = data.bottom[i].num;
}
}
}
});
},
// getDataSource() {
// getSource(9).then((res) => {
// const data = JSON.parse(res["[]"][0].T_static_data.DATA);
// for (let i = 0; i < data.top.length; i++) {
// for (let j = 0; j < this.dataSource.top.length; j++) {
// if (data.top[i].title === this.dataSource.top[j].title) {
// this.dataSource.top[j].currentNum = data.top[i].currentNum;
// this.dataSource.top[j].total = data.top[i].total;
// }
// }
// }
// for (let i = 0; i < data.bottom.length; i++) {
// for (let j = 0; j < this.dataSource.bottom.length; j++) {
// if (data.bottom[i].title === this.dataSource.bottom[j].title) {
// this.dataSource.bottom[j].num = data.bottom[i].num;
// }
// }
// }
// });
// },
//
mouseOver() {
clearInterval(this.attackTime);

@ -230,6 +230,7 @@
</template>
<script>
import {safeRisks} from '@/api/wlSafe'
import { listDanger, getDanger, listTb, getTb } from "@/api/zongzhi/st.js";
import vueSeamlessScroll from "vue-seamless-scroll";
import ModuleTitle from "../../common/ModuleTitle.vue";
@ -287,27 +288,33 @@ export default {
safetyList: [
{
title: "敏感信息泄露漏洞",
value: 86800,
value: 0,
type:1,
},
{
title: "权限许可和访问控制",
value: 23800,
type:2,
value: 0,
},
{
title: "未加密登录请求",
value: 15200,
value: 0,
type:3,
},
{
title: "其他",
value: 14700,
type:6,
value: 0,
},
{
title: "应用程序测试脚本漏洞",
value: 2142,
type:4,
value: 0,
},
{
title: "文件上传漏洞",
value: 1525,
type:5,
value: 0,
},
],
//
@ -415,6 +422,8 @@ export default {
this.getlistTb();
}
}, 6000);
//
this.safeListDP();
// this.announceChange()
// getSafeHazardSatistic().then((res) => {
@ -436,6 +445,21 @@ export default {
// })
},
methods: {
/**
* 安全隐患大屏数据
*/
safeListDP() {
safeRisks().then(res=>{
res.data.forEach((value,index)=>{
this.safetyList.forEach((value1,index1)=>{
if(value.type == value1.type){
this.safetyList[index1].value = value.count
}
})
})
})
},
/**
* 最新隐患
*/

@ -50,12 +50,25 @@ export default {
data() {
return {
tagList: [],
data: [],
data: [
{ name: "太仓市委", count: 200 },
{ name: "“交通先行”抢位长三角", count: 400 },
{ name: "太仓速度", count: 600 },
{ name: "最具幸福感城市", count: 2000 },
{ name: "振翅高飞", count: 350 },
{ name: "娄城防疫", count: 666 },
{ name: "城市更新", count: 899 },
{ name: "争当猛虎尖兵", count: 899 },
{ name: "家在太仓 情暖娄城", count: 899 },
{ name: "国土空间全域整治", count: 899 },
],
};
},
created() {},
created() {
},
mounted() {
this.getDataList();
this.init();
this.animate();
},
methods: {
getDataList() {
@ -66,8 +79,6 @@ export default {
count: 3,
});
});
this.init();
this.animate();
});
},
init() {

@ -350,7 +350,9 @@ export default {
//
positiveOpinion: [],
negativeOpinion: [],
allDate: [],
date: [],
newDate: [],
};
},
computed: {},
@ -363,8 +365,6 @@ export default {
},
},
created() {
//
this.getyqData();
//
this.getyqMsgStats();
},
@ -442,6 +442,7 @@ export default {
// })
this.changeBtn();
this.getFilterData();
//
this.getyqData();
},
beforeDestroy() {
@ -495,22 +496,42 @@ export default {
//
getyqData() {
yuqingChart().then((res) => {
console.log(res);
this.allDate = res.data;
//
this.allDate.sort(function (a, b) {
return new Date(a.publishTime) - new Date(b.publishTime);
});
let arr = [];
res.data.forEach((value) => {
if (value.type == 2) {
this.positiveOpinion.push(value.count);
} else if (value.type == 1) {
this.negativeOpinion.push(value.count);
}
//
arr.push(value.publishTime);
});
//
this.date = arr.filter(function (item, index) {
//==
return arr.indexOf(item) === index;
});
this.date.forEach((value) => {
this.newDate.push(value.slice(6));
let arr2 = res.data.filter((m) => {
return m.publishTime == value;
});
console.log(arr2);
arr2.forEach((e) => {
if (e.type == 1 && arr2.length < 2) {
this.negativeOpinion.push(e.count);
this.positiveOpinion.push(0);
} else if (e.type == 2 && arr2.length < 2) {
this.positiveOpinion.push(e.count);
this.negativeOpinion.push(0);
} else if (e.type == 1 && arr2.length == 2) {
this.negativeOpinion.push(e.count);
} else if (e.type == 2 && arr2.length == 2) {
this.positiveOpinion.push(e.count);
}
});
});
// const res = new Map();
// let arr = res.data.filter(
// (item) => !res.has(item[uniId]) && res.set(item[uniId], 1)
// );
this.lineBox();
console.log(this.negativeOpinion);
console.log(this.positiveOpinion);
});
},
//
@ -533,52 +554,52 @@ export default {
},
// 线
lineBox() {
const myChart = this.$echarts.init(document.getElementById("lineBox"));
const myChart = this.$echarts.init(document.getElementById('lineBox'))
const options = {
grid: {
top: "20%",
bottom: "15%",
left: "17%",
right: "1%",
top: '20%',
bottom: '15%',
left: '17%',
right: '1%'
},
legend: {
data: ["非敏感", "敏感"],
top: "3%",
right: "2%",
data: ['非敏感', '敏感'],
top: '3%',
right: '2%',
itemHeight: 10,
itemWidth: 10,
textStyle: {
padding: [10, 30, 10, 14],
color: "rgba(250,250,250,1)",
fontSize: 28,
},
color: 'rgba(250,250,250,1)',
fontSize: 28
}
},
tooltip: {
trigger: "item",
formatter: "{a} <br/>{b} : {c} ",
trigger: 'item',
formatter: '{a} <br/>{b} : {c} ',
axisPointer: {
lineStyle: {
width: 0,
},
width: 0
}
},
backgroundColor: "#fff",
backgroundColor: '#fff',
textStyle: {
color: "#5c6c7c",
},
color: '#5c6c7c'
}
},
xAxis: {
// data: this.opinionTime,
data: ["7.23", "7.24", "7.25", "7.26", "7.27", "7.28", "7.29"],
data: this.newDate,
// data: ['7.23', '7.24', '7.25', '7.26', '7.27', '7.28', '7.29'],
axisLine: {
show: true, // X线
lineStyle: {
color: "rgb(119,123,132,1)",
width: 1,
},
color: 'rgb(119,123,132,1)',
width: 1
}
},
axisTick: {
show: true, // X
length: 0.2,
length: 0.2
},
axisLabel: {
show: true,
@ -588,14 +609,14 @@ export default {
// margin: 15,
// position: [100, 100],
textStyle: {
color: "#6ddefb", // X
fontSize: 28,
},
color: '#6ddefb', // X
fontSize: 28
}
},
grid: {
left: "50%",
bottom: "35%",
},
left: '50%',
bottom: '35%'
}
// splitArea: {
// interval: 0,
// show: true,
@ -606,65 +627,67 @@ export default {
},
yAxis: [
{
name: "单位:件",
name: '单位:件',
min: 0,
// max: 3500,
splitNumber: 7,
type: "value",
type: 'value',
nameTextStyle: {
padding: [10, 0, 10, 0],
color: "rgb(255,255,255,1)",
color: 'rgb(255,255,255,1)',
fontSize: 28,
left: 20,
left: 20
},
splitLine: {
show: true,
lineStyle: {
type: "dashed",
color: "rgba(77, 128, 254, 0.4)",
width: 1,
},
type: 'dashed',
color: 'rgba(77, 128, 254, 0.4)',
width: 1
}
},
axisTick: {
show: true,
show: true
},
axisLine: {
show: false,
show: false
},
axisLabel: {
show: true,
textStyle: {
color: "rgba(250,250,250,1)",
fontSize: 28,
},
},
},
color: 'rgba(250,250,250,1)',
fontSize: 28
}
}
}
],
series: [
{
name: "非敏感",
type: "bar",
name: '非敏感',
type: 'bar',
barWidth: 12,
itemStyle: {
normal: {
color: "#38c5ff",
},
color: '#38c5ff'
}
},
data: this.positiveOpinion,
data: this.positiveOpinion
// data: [70, 50, 70, 60, 30, 40, 70]
},
{
name: "敏感",
type: "bar",
name: '敏感',
type: 'bar',
barWidth: 12,
itemStyle: {
color: "#fc6a31",
color: '#fc6a31'
},
data: this.negativeOpinion,
},
],
};
myChart.setOption(options, true);
echartsJump(myChart, options);
data: this.negativeOpinion
// data: [30, 10, 70, 64, 60, 10, 20]
}
]
}
myChart.setOption(options, true)
echartsJump(myChart, options)
},
//
clickDetails(val, type) {

Loading…
Cancel
Save