summaryrefslogtreecommitdiff
path: root/src/views/menuMBGZ/module/indexDQ2.vue
diff options
context:
space:
mode:
Diffstat (limited to 'src/views/menuMBGZ/module/indexDQ2.vue')
-rw-r--r--src/views/menuMBGZ/module/indexDQ2.vue624
1 files changed, 624 insertions, 0 deletions
diff --git a/src/views/menuMBGZ/module/indexDQ2.vue b/src/views/menuMBGZ/module/indexDQ2.vue
new file mode 100644
index 0000000..103054d
--- /dev/null
+++ b/src/views/menuMBGZ/module/indexDQ2.vue
@@ -0,0 +1,624 @@
+<template>
+ <div class='wrapper'>
+ <div class='chart' id='chart' >
+ </div>
+ </div>
+</template>
+
+<script>
+ import axios from 'axios'
+ export default {
+ props:['ip','isp','cou','protocol'],
+ watch:{
+ ip(newValue,oldValue){
+ console.log("TTTTTTTTTTTTTTTTTT1")
+ console.log("新:"+newValue +"旧:"+oldValue)
+ console.log("TTTTTTTTTTTTTTTTTT1")
+ this.ip=newValue;
+ this.handleChange();
+ },
+ isp(newValue,oldValue){
+ console.log("TTTTTTTTTTTTTTTTTT2")
+ console.log("新:"+newValue +"旧:"+oldValue)
+ console.log("TTTTTTTTTTTTTTTTTT2")
+ this.isp=newValue;
+ this.handleChange();
+ },
+ protocol(newValue,oldValue){
+ console.log("TTTTTTTTTTTTTTTTTT3")
+ console.log("新:"+newValue +"旧:"+oldValue)
+ console.log("TTTTTTTTTTTTTTTTTT3")
+ this.protocol=newValue;
+ this.handleChange();
+ },
+ cou(newValue,oldValue){
+ console.log("TTTTTTTTTTTTTTTTTT4")
+ console.log("新:"+newValue +"旧:"+oldValue)
+ console.log("TTTTTTTTTTTTTTTTTT4")
+ this.cou=newValue;
+ this.handleChange();
+ }
+
+ },
+ name: "indexDQ2",
+ data () {
+ return {
+ // ip:"",
+ // isp:"",
+ // cou:"",
+ // protocol:null,
+ switchLanguage:"",//用于页面中英文切换
+ // countryEnJson:"",//用于储存国家英文字典
+ maxValue:0,
+ newestInfo:"",
+ ws: null,
+ // listAdd:[],
+ chart:undefined,
+ // res :[],
+ ddaattaa:""
+ }
+ },
+ created() {
+ this.handleChange0();
+ },
+ mounted () {
+ this.handleChange()
+ // this.getWorld()
+ // 模拟初始数据获取
+ // 模拟数据更新
+ // setInterval(() => {
+ // this.getData();
+ // }, 3000);
+ },
+ methods: {
+ handleChange0(){
+ /****************************************************************************/
+ let data = {
+ }
+ this.$axios.get(this.$http.api.targetMap,data).then(res=> {
+ console.log("地图访问成功")
+ if(res.code=='200'){
+ console.log("地图访问成功OK")
+ this.ddaattaa=res.dataObject.earthAddTitle;
+ this.getWorld()
+ }
+ })
+ /*********************************************************************************/
+ // this.ddaattaa="{\"dataObject\":{\"newestCountry\":\"墨西哥\",\"maxValue\":8593,\"newestInfo\":\"墨西哥484\",\"earthAddTitle\":[{\"name\":\"美国\"" +
+ // ",\"title\":\"RECRUITMENTOFPERSONNELINMEXICOANDLATINAMERICA\",\"value\":893},{\"name\":\"印度\",\"title\":\"印度ixigo数据1700万\"," +
+ // "\"value\":1982},{\"name\":\"法国\",\"title\":\"France124K | NICEQUALITY\",\"value\":1645},{\"name\":\"英国\",\"title\":" +
+ // "\"100XAccountsHotmailUnitedKingdomFresh & FullAccess ⚡️Capture ⚡️PrivateAccs\",\"value\":1576},{\"name\":\"俄罗斯\"," +
+ // "\"title\":\"LeadershipoftheAirborneTroopsandothersofRussia\",\"value\":1279},{\"name\":\"德国\",\"title\":" +
+ // "\"1MGermanyUHQcombolist\",\"value\":1231},{\"name\":\"中国\",\"title\":\"900 - 山东 - 务工人员信息明细统计表\",\"value\":4275}," +
+ // "{\"name\":\"墨西哥\",\"title\":\"墨西哥务工人员信息明细统计表\",\"value\":8593}]}," +
+ // "\"code\":\"earth\"}"
+ // this.getWorld()
+
+ },
+ handleChange(){
+ /****************************************************************************/
+ let data = {
+ "ip":this.ip,
+ "isp":this.isp,
+ "cou":this.cou,
+ }
+ let data2 = {
+ "ip":this.ip,
+ "isp":this.isp,
+ "cou":this.cou,
+ "protocol":this.protocol,
+ }
+ this.$axios.get(this.$http.api.targetMap,this.protocol===null?data:data2).then(res=> {
+ console.log("地图访问成功")
+ if(res.code=='200'){
+ console.log("地图访问成功OK")
+ this.ddaattaa=res.dataObject.earthAddTitle;
+ this.getWorld()
+ }
+ })
+ /*********************************************************************************/
+ // this.ddaattaa="{\"dataObject\":{\"newestCountry\":\"墨西哥\",\"maxValue\":8593,\"newestInfo\":\"墨西哥484\",\"earthAddTitle\":[{\"name\":\"美国\"" +
+ // ",\"title\":\"RECRUITMENTOFPERSONNELINMEXICOANDLATINAMERICA\",\"value\":893},{\"name\":\"印度\",\"title\":\"印度ixigo数据1700万\"," +
+ // "\"value\":1982},{\"name\":\"法国\",\"title\":\"France124K | NICEQUALITY\",\"value\":1645},{\"name\":\"英国\",\"title\":" +
+ // "\"100XAccountsHotmailUnitedKingdomFresh & FullAccess ⚡️Capture ⚡️PrivateAccs\",\"value\":1576},{\"name\":\"俄罗斯\"," +
+ // "\"title\":\"LeadershipoftheAirborneTroopsandothersofRussia\",\"value\":1279},{\"name\":\"德国\",\"title\":" +
+ // "\"1MGermanyUHQcombolist\",\"value\":1231},{\"name\":\"中国\",\"title\":\"900 - 山东 - 务工人员信息明细统计表\",\"value\":4275}," +
+ // "{\"name\":\"墨西哥\",\"title\":\"墨西哥务工人员信息明细统计表\",\"value\":8593}]}," +
+ // "\"code\":\"earth\"}"
+ // this.getWorld()
+
+ },
+ showTitleView(newestInfo,newestCountry){
+ // console.log(newestInfo)
+ // let new_cname = dataArr[0]['name']+dataArr[0]['value']
+ let new_cname = newestInfo //中国44
+ // console.log("判断最后一条数据是否有变化")
+ // console.log("this.Cname:"+this.newestInfo)
+ // console.log("new_cname:"+new_cname)
+ if (this.newestInfo != new_cname){
+ console.log("RRRRRRRRRRRRR进来了啊")
+ this.newestInfo = new_cname;
+ // this.showTooltip(-1);
+ this.showTooltip(newestCountry);
+ // this.showWireframe(-1)
+ this.showWireframe(newestCountry)
+ setTimeout(this.hideTooltip,10000);
+ }
+
+
+ },
+ showWireframe(newestCountry) {
+ // // 取消高亮指定的数据图形
+ // this.chart.dispatchAction({
+ // type: 'downplay',
+ // seriesIndex: 0,
+ // dataIndex: index
+ // })
+ // 高亮指定的数据图形
+ this.chart.dispatchAction({
+ type: 'highlight',
+ seriesIndex: 0,
+ name: newestCountry
+ // dataIndex: index + 1
+ })
+ },
+ hideTooltip(){
+ this.chart.dispatchAction({
+ type: 'hideTip',
+ seriesIndex: 0,
+ dataIndex: -1
+ })
+ },
+ // showTooltip(index) {
+ showTooltip(newestCountry) {
+ // // 隐藏提示框
+ // this.chart.dispatchAction({
+ // type: 'hideTip',
+ // seriesIndex: 0,
+ // dataIndex: index
+ // })
+ // 显示提示框
+ this.chart.dispatchAction({
+ type: 'showTip',
+ seriesIndex: 0,
+ name:newestCountry
+ // dataIndex: index + 1
+ })
+ },
+ getWorld () { //ddaattaa
+ /****************************************************************************/
+ var json = require('/src/api/world.json');
+ let namemap = json.namemap;
+ let dataArr=[];
+ // this.maxValue=JSON.parse(this.ddaattaa).dataObject.maxValue
+ this.maxValue=20000
+ // dataArr = JSON.parse(this.ddaattaa).dataObject.earthAddTitle
+ dataArr = this.ddaattaa
+ this.drawChart(namemap, dataArr);
+ // this.showTitleView(
+ // JSON.parse(this.ddaattaa).dataObject.newestInfo,
+ // JSON.parse(this.ddaattaa).dataObject.newestCountry
+ // );
+
+
+ },
+ drawChart (namemap, dataArr) {
+ let maxValue=this.maxValue
+ // 基于准备好的dom,初始化echarts实例
+ let chart = this.$echarts.init(document.getElementById('chart'))
+ // 监听屏幕变化自动缩放图表
+ window.addEventListener('resize', function () {
+ chart.resize()
+ })
+
+ ///////////////////////////
+ //用于存储地图数据
+ var json = require('/src/api/world.json');
+ var pointMap =json.trapeze;
+ var geoCoordMap = pointMap;
+ var countryEnJson=json.country_en;
+ var zh_en=this.switchLanguage;
+
+ var max = 480,
+ min = 9; // todo
+ var maxSize4Pin = 50,
+ minSize4Pin = 20;
+
+ var convertData = function (dataD) {
+ var res = [];
+ if(dataD){
+ for (var i = 0; i < dataD.length; i++) {
+ var geoCoord = geoCoordMap[dataD[i].name];
+ if (geoCoord) {
+ res.push({
+ name: dataD[i].name,
+ name_en: countryEnJson[dataD[i].name],
+ zh_en:zh_en,
+ value: geoCoord.concat(dataD[i].value),
+ // value: geoCoord,
+ // size:dataD[i].value,
+ title: dataD[i].title,
+ });
+ }
+ }
+ }
+ return res;
+ };
+ // var convertDataA = function (dataD) {
+ // var res = [];
+ // if(dataD){
+ // for (var i = 0; i < dataD.length; i++) {
+ // var geoCoord = geoCoordMap[dataD[i].name];
+ // if (geoCoord) {
+ // res.push({
+ // name: dataD[i].name,
+ // value: geoCoord.concat(dataD[i].value),
+ // // value: geoCoord,
+ // title: dataD[i].title,
+ // num:dataD[i].value,
+ // });
+ // }
+ // }
+ // }
+ // return res;
+ // };
+ // 绘制图表
+ chart.setOption({
+
+ // 图表主标题
+ // title: {
+ // // text: '数据泄露分布地图', // 主标题文本,支持使用 \n 换行
+ // top: 20, // 定位 值: 'top', 'middle', 'bottom' 也可以是具体的值或者百分比
+ // left: 'center', // 值: 'left', 'center', 'right' 同上
+ // textStyle: { // 文本样式
+ // fontSize: 24,
+ // fontWeight: 600,
+ // color: '#fff'
+ // }
+ // },
+ // 提示框组件
+ tooltip: {
+ trigger: 'item', // 触发类型, 数据项图形触发,主要在散点图,饼图等无类目轴的图表中使用
+ // 提示框浮层内容格式器,支持字符串模板和回调函数两种形式
+ // 使用函数模板 传入的数据值 -> value: number | Array
+ formatter: function (val) {
+ var text = '';
+ text += '<div style="display:flex;flex-direction:row;">'+
+ '<div style="background-color:#03D16D;height:auto;width:10px;margin-right:5px;"></div>'+
+ '<div style="display:flex;flex-direction:column;">'+
+ '<span>'+ val.data.name+'</span>'+
+ '<span >'+'分类信息:'+'</span>'+
+ '<span display:width="60px">'+ val.data.title+'</span>'+
+ '</div>'+
+ '</div>'
+ return text;
+ }
+ },
+ // visualMap: {
+ // type: 'continuous',
+ // min: 0,
+ // max: 100,
+ // range: [1, 10],
+ // center: [104.114129, 37.550339],
+ // },
+ // visualMap: {
+ // show: false,
+ // min: 0,
+ // max: 600,
+ // left: 'left',
+ // top: 'bottom',
+ // text: ['高', '低'], // 文本,默认为数值文本
+ // calculable: true,
+ // seriesIndex: [1],
+ // //控制地图颜色的显示区间
+ // inRange: {
+ // // color: ['#3B5077', '#031525'] // 蓝黑
+ // // color: ['#ffc0cb', '#800080'] // 红紫
+ // // color: ['#3C3B3F', '#605C3C'] // 黑绿
+ // // color: ['#0f0c29', '#302b63', '#24243e'] // 黑紫黑
+ // // color: ['#23074d', '#cc5333'] // 紫红
+ // // color: ['#00467F', '#A5CC82'] // 蓝绿
+ // // color: ['#1488CC', '#2B32B2'] // 浅蓝
+ // // color: ['#00467F', '#A5CC82', '#ffc0cb'] // 蓝绿红
+ // // color: ['#00467F', '#A5CC82'] // 蓝绿
+ // // color: ['#00467F', '#A5CC82'] // 蓝绿
+ // // color: ['#00467F', '#A5CC82'] // 蓝绿
+ // color: ['#22e5e8', '#0035f9', '#22e5e8'] // 蓝绿
+ //
+ // }
+ // },
+ geo: {
+ //地图的初始配置
+ // show: true,
+ map: 'world',
+ projection:'geoMercator', //使用墨卡托投影
+ // mapProjection: {
+ // // 使用等经纬度投影
+ // type: 'equidistantly'
+ // },
+ // zoom:1,
+ // label: {
+ // normal: {
+ // show: false
+ // },
+ // emphasis: {
+ // show: false
+ // }
+ // },
+ roam:false,
+ // center:undefined,
+///////////////////////////////////////////////////////1/2
+ // 图形上的文本标签
+ label: {
+ show: false// 是否显示对应地名
+ },
+ // 地图区域的多边形 图形样式
+ itemStyle: {
+ // areaColor: '#3ca3e6', // 地图区域的颜色 如果设置了visualMap,areaColor属性将不起作用
+ areaColor: '#0d1b4a', // 地图区域的颜色 如果设置了visualMap,areaColor属性将不起作用
+ borderWidth: 0.5, // 描边线宽 为 0 时无描边
+ borderColor: '#00F1FF', // 图形的描边颜色 支持的颜色格式同 color,不支持回调函数
+ borderType: 'solid' // 描边类型,默认为实线,支持 'solid', 'dashed', 'dotted'
+ },
+ // 高亮状态下的多边形和标签样式
+ emphasis: {
+ label: {
+ show: false, // 是否显示标签
+ color: '#fff' // 文字的颜色 如果设置为 'auto',则为视觉映射得到的颜色,如系列色
+ },
+ itemStyle: {
+ areaColor: '#3742ff' // 地图区域的颜色
+ }
+ },
+ ////////////////////////////////////////////////1/2
+ // 自定义地区的名称映射
+ nameMap: namemap,
+
+
+
+ },
+ series: [
+ {
+ // type: 'map', // 类型
+ type: 'scatter', // 使用墨卡托投影
+ coordinateSystem:'geo', //使用地理坐标系
+ // 系列名称,用于tooltip的显示,legend 的图例筛选 在 setOption 更新数据和配置项时用于指定对应的系列
+ name: '数据泄露分布地图',
+ // mapType: 'world', // 地图类型
+ // // 是否开启鼠标缩放和平移漫游 默认不开启 如果只想要开启缩放或者平移,可以设置成 'scale' 或者 'move' 设置成 true 为都开启
+ // roam: false,
+
+ ///////////////////////////////////////////////////////1/2
+ // 图形上的文本标签
+ // label: {
+ // show: false// 是否显示对应地名
+ // },
+ // // 地图区域的多边形 图形样式
+ // itemStyle: {
+ // // areaColor: '#3ca3e6', // 地图区域的颜色 如果设置了visualMap,areaColor属性将不起作用
+ // areaColor: '#0d1b4a', // 地图区域的颜色 如果设置了visualMap,areaColor属性将不起作用
+ // borderWidth: 0.5, // 描边线宽 为 0 时无描边
+ // borderColor: '#00F1FF', // 图形的描边颜色 支持的颜色格式同 color,不支持回调函数
+ // borderType: 'solid' // 描边类型,默认为实线,支持 'solid', 'dashed', 'dotted'
+ // },
+ // // 高亮状态下的多边形和标签样式
+ // emphasis: {
+ // label: {
+ // show: false, // 是否显示标签
+ // color: '#fff' // 文字的颜色 如果设置为 'auto',则为视觉映射得到的颜色,如系列色
+ // },
+ // itemStyle: {
+ // areaColor: '#3742ff' // 地图区域的颜色
+ // }
+ // },
+ ////////////////////////////////////////////////1/2
+ geoIndex:0,
+ // // 自定义地区的名称映射
+ // nameMap: namemap,
+ // 地图系列中的数据内容数组 数组项可以为单个数值
+ // data: dataArr,
+ data: convertData(dataArr),
+ },
+ // {
+ // type: 'map',
+ // map: 'world',
+ // geoIndex: 0,
+ // aspectScale: 0.75, //长宽比
+ // showLegendSymbol: false, // 存在legend时显示
+ // label: {
+ // show: false,
+ // // normal: {
+ // // show: true
+ // // },
+ // // emphasis: {
+ // // show: false,
+ // // textStyle: {
+ // // color: '#fff'
+ // // }
+ // // }
+ // },
+ // // roam: true,
+ // // itemStyle: {
+ // // normal: {
+ // // areaColor: '#031525',
+ // // borderColor: '#3B5077',
+ // // },
+ // // emphasis: {
+ // // areaColor: '#2B91B7'
+ // // }
+ // // },
+ // // 地图区域的多边形 图形样式
+ // itemStyle: {
+ // // areaColor: '#3ca3e6', // 地图区域的颜色 如果设置了visualMap,areaColor属性将不起作用
+ // areaColor: '#0d1b4a', // 地图区域的颜色 如果设置了visualMap,areaColor属性将不起作用
+ // borderWidth: 0.5, // 描边线宽 为 0 时无描边
+ // borderColor: '#00F1FF', // 图形的描边颜色 支持的颜色格式同 color,不支持回调函数
+ // borderType: 'solid' // 描边类型,默认为实线,支持 'solid', 'dashed', 'dotted'
+ // },
+ // // animation: true,
+ // namemap:namemap,
+ // data: dataArr
+ // // data: convertData(data)
+ // },
+ {
+ name: '点',
+ type: 'scatter',
+ coordinateSystem: 'geo',
+ symbol: 'pin', //气泡
+ symbolSize: function (size,val) {
+ var a = (maxSize4Pin - minSize4Pin) / (max - min);
+ var b = minSize4Pin - a * min;
+ // b = maxSize4Pin - a * max;
+ return a * val[2]*100 + b;
+ },
+ label: {
+ normal: {
+ show: false,
+ formatter: function (params) {
+ return params.value[2]
+ },
+ textStyle: {
+ color: '#fff',
+ fontSize: 9,
+ }
+ }
+ },
+ itemStyle: {
+ normal: {
+ color: 'rgba(255,255,0,0)', //标志颜色
+ }
+ },
+ zlevel: 1,
+ data: convertData(dataArr),
+ },
+ {
+ name: 'Top 500',//用于显示最高的前五个数据
+ type: 'effectScatter',
+ coordinateSystem: 'geo',
+ // data: convertData(data.sort(function (a, b) {
+ // return a.value - b.value;
+ // }).slice(0, 500)), namemap, dataArr
+ symbolSize: function (val) {
+ // return val[2] / 2.3;
+ return val[2] / (maxValue*0.03);
+ },
+ showEffectOn: 'render',
+ rippleEffect: {
+ brushType: 'stroke'
+ },
+ hoverAnimation: true,
+ label: {
+ normal: {
+ formatter: '{b}',
+ position: 'right',
+ show: false
+ }
+ },
+ itemStyle: {
+ normal: {
+ color: 'rgba(255,9,14,0.8)',
+ shadowBlur: 10,
+ shadowColor: '#05C3F9'
+ }
+ },
+ zlevel: 1,
+ data: convertData(dataArr),
+ },
+
+
+ ]
+ })
+ // 定时显示提示框和高亮效果
+ this.chart = chart;
+ // let index = -1
+ // let indexK = -1
+ // setInterval(function () {
+ // // 隐藏提示框
+ // chart.dispatchAction({
+ // type: 'hideTip',
+ // seriesIndex: 0,
+ // dataIndex: indexK
+ // })
+ // // 显示提示框
+ // chart.dispatchAction({
+ // type: 'showTip',
+ // seriesIndex: 0,
+ // dataIndex: indexK + 1
+ // })
+ // index=index+10000
+ // // if (index > data.length - 1) {
+ // // index = -1
+ // // }
+ // },3000)
+ // setInterval(function () {
+ // // 隐藏提示框
+ // chart.dispatchAction({
+ // type: 'hideTip',
+ // seriesIndex: 0,
+ // dataIndex: index
+ // })
+ // // 显示提示框
+ // chart.dispatchAction({
+ // type: 'showTip',
+ // seriesIndex: 0,
+ // dataIndex: index + 1
+ // })
+ // // 取消高亮指定的数据图形
+ // chart.dispatchAction({
+ // type: 'downplay',
+ // seriesIndex: 0,
+ // dataIndex: index
+ // })
+ // // 高亮指定的数据图形
+ // chart.dispatchAction({
+ // type: 'highlight',
+ // seriesIndex: 0,
+ // dataIndex: index + 1
+ // })
+ // // index++
+ // // if (index > data.length - 1) {
+ // // index = -1
+ // // }
+ // }, 1000)
+ }
+ }
+ }
+</script>
+
+<style scoped>
+ .wrapper {
+ /*margin-top: -80px;*/
+ /*width: 100%;*/
+ /*margin-left: -120px;*/
+ /*margin-top: -10%;*/
+ /*width: 100%;*/
+ /*height: 100%;*/
+ /*width: calc(100vw);*/
+ /*height: calc(100vh);*/
+ width: calc(100%);
+ height: calc(100%);
+ margin-left: -12%;
+ }
+ .wrapper .chart {
+ /*width: 120%;*/
+ /*height: 780px;*/
+ /*margin: 1px 2px 0;*/
+ /*!*border: 1px solid #0d1b4d;*!*/
+ /*!*background: url(../../../public/bg.jpg) no-repeat; #0d1b4d *!*/
+ /*background-size: 100% 100%;*/
+
+ width: 100%;
+ height: 100%;
+ /*margin: 0.2% 0.2% 0;*/
+ margin-top: 2%;
+ margin-left: 10%;
+ /*border: 1px solid #0d1b4d;*/
+ /*background: url(../../../public/bg.jpg) no-repeat; #0d1b4d */
+ background-size: 100% 100%;
+ z-index: 9;
+ /*position: absolute;*/
+ position: relative;
+ }
+</style>
+
+