diff --git a/.env.dev b/.env.dev index 8e367f1..c26f9ff 100644 --- a/.env.dev +++ b/.env.dev @@ -1,14 +1,14 @@ NODE_ENV = development # 正式服务器 -VUE_APP_BASE_API = http://221.2.83.254:9001/api -VUE_APP_BASE_IMG_URL = http://221.2.83.254:9001 -VUE_APP_WEBSOCKET_URL = ws://221.2.83.254:9002/ws +#VUE_APP_BASE_API = http://221.2.83.254:9001/api +#VUE_APP_BASE_IMG_URL = http://221.2.83.254:9001 +#VUE_APP_WEBSOCKET_URL = ws://221.2.83.254:9002/ws # 本地测试 -#VUE_APP_BASE_API = http://221.2.83.254:9013/api -#VUE_APP_BASE_IMG_URL = http://221.2.83.254:901 -#VUE_APP_WEBSOCKET_URL = ws://221.2.83.254:9002/ws +VUE_APP_BASE_API = http://221.2.83.254:9013/api +VUE_APP_BASE_IMG_URL = http://221.2.83.254:901 +VUE_APP_WEBSOCKET_URL = ws://221.2.83.254:9002/ws # 测试服务区 diff --git a/Fei_Xian_Lin_Ye_Fang_Huo.zip b/Fei_Xian_Lin_Ye_Fang_Huo.zip deleted file mode 100644 index 45d7f11..0000000 Binary files a/Fei_Xian_Lin_Ye_Fang_Huo.zip and /dev/null differ diff --git a/public/img/homeimg/route-icon.png b/public/img/homeimg/route-icon.png new file mode 100644 index 0000000..9501b42 Binary files /dev/null and b/public/img/homeimg/route-icon.png differ diff --git a/public/index.html b/public/index.html index 8808bad..bd35644 100644 --- a/public/index.html +++ b/public/index.html @@ -34,7 +34,8 @@ type="text/javascript" src="lib/include-lib.js?time=20210803" libpath="lib/" - include="jquery,jquery.range,animate,bootstrap,bootstrap-checkbox,font-awesome,web-icons,layer,haoutil,nprogress,toastr,admui,turf,mars3d,mars3d-widget" + include="jquery,jquery.range,bootstrap,bootstrap-checkbox,font-awesome,web-icons,layer,haoutil, + nprogress,toastr,admui,turf,mars3d,mars3d-widget,mars3d-esri,mars3d-echarts" > @@ -47,6 +48,7 @@ + diff --git a/src/components/mars3d/Map.vue b/src/components/mars3d/Map.vue index 1b6a18a..aa0f3a4 100644 --- a/src/components/mars3d/Map.vue +++ b/src/components/mars3d/Map.vue @@ -81,9 +81,11 @@ export default { configLayers.unshift(group); if (item.children && item.children.length > 0) { item.children.forEach((it, idx) => { + let attribute = JSON.parse(it.attribute); if(attribute.name == '森林火灾危险等级'){ attribute.type = "geojson"; + attribute.url = "http://221.2.83.254:9007/geoserver/ksp/ows?service=WFS&version=1.0.0&request=GetFeature&typeName=ksp%3Aweixianxingdengji&maxFeatures=50&outputFormat=application%2Fjson" // attribute.symbol.styleOptions = {} delete attribute.layers; @@ -115,6 +117,8 @@ export default { attribute.symbol.styleOptions.label.pixelOffsetY = -40 } attribute.pid = group.id; + attribute.url = attribute.url.replace("http://223.99.16.253:9007","http://221.2.83.254:9007") + console.log("attribute::::",attribute); configLayers.unshift(attribute); }); } diff --git a/src/utils/base64.js b/src/utils/base64.js index 2c0a124..2acfc02 100644 --- a/src/utils/base64.js +++ b/src/utils/base64.js @@ -1,102 +1,100 @@ -function Base64() { - // private property - _keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; - // 公共编码方法 - this.encode = function (input) { - var output = ""; - var chr1, chr2, chr3, enc1, enc2, enc3, enc4; - var i = 0; - input = _utf8_encode(input); - while (i < input.length) { - chr1 = input.charCodeAt(i++); - chr2 = input.charCodeAt(i++); - chr3 = input.charCodeAt(i++); - enc1 = chr1 >> 2; - enc2 = ((chr1 & 3) << 4) | (chr2 >> 4); - enc3 = ((chr2 & 15) << 2) | (chr3 >> 6); - enc4 = chr3 & 63; - if (isNaN(chr2)) { - enc3 = enc4 = 64; - } else if (isNaN(chr3)) { - enc4 = 64; - } - output = output + - _keyStr.charAt(enc1) + _keyStr.charAt(enc2) + - _keyStr.charAt(enc3) + _keyStr.charAt(enc4); - } - return output; - } - - // 公共解码方法 - this.decode = function (input) { - var output = ""; - var chr1, chr2, chr3; - var enc1, enc2, enc3, enc4; - var i = 0; - input = input.replace(/[^A-Za-z0-9\+\/\=]/g, ""); - while (i < input.length) { - enc1 = _keyStr.indexOf(input.charAt(i++)); - enc2 = _keyStr.indexOf(input.charAt(i++)); - enc3 = _keyStr.indexOf(input.charAt(i++)); - enc4 = _keyStr.indexOf(input.charAt(i++)); - chr1 = (enc1 << 2) | (enc2 >> 4); - chr2 = ((enc2 & 15) << 4) | (enc3 >> 2); - chr3 = ((enc3 & 3) << 6) | enc4; - output = output + String.fromCharCode(chr1); - if (enc3 != 64) { - output = output + String.fromCharCode(chr2); - } - if (enc4 != 64) { - output = output + String.fromCharCode(chr3); - } - } - output = _utf8_decode(output); - return output; - } - - // UTF-8编码的私有方法 - _utf8_encode = function (string) { - string = string.replace(/\r\n/g,"\n"); - var utftext = ""; - for (var n = 0; n < string.length; n++) { - var c = string.charCodeAt(n); - if (c < 128) { - utftext += String.fromCharCode(c); - } else if((c > 127) && (c < 2048)) { - utftext += String.fromCharCode((c >> 6) | 192); - utftext += String.fromCharCode((c & 63) | 128); - } else { - utftext += String.fromCharCode((c >> 12) | 224); - utftext += String.fromCharCode(((c >> 6) & 63) | 128); - utftext += String.fromCharCode((c & 63) | 128); - } - } - return utftext; - } - - // UTF-8解码的私有方法 - _utf8_decode = function (utftext) { - var string = ""; - var i = 0; - var c = c1 = c2 = 0; - while ( i < utftext.length ) { - c = utftext.charCodeAt(i); - if (c < 128) { - string += String.fromCharCode(c); - i++; - } else if((c > 191) && (c < 224)) { - c2 = utftext.charCodeAt(i+1); - string += String.fromCharCode(((c & 31) << 6) | (c2 & 63)); - i += 2; - } else { - c2 = utftext.charCodeAt(i+1); - c3 = utftext.charCodeAt(i+2); - string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63)); - i += 3; - } - } - return string; +// private property +let _keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; +// 公共编码方法 +function encode(input) { + var output = ""; + var chr1, chr2, chr3, enc1, enc2, enc3, enc4; + var i = 0; + input = _utf8_encode(input); + while (i < input.length) { + chr1 = input.charCodeAt(i++); + chr2 = input.charCodeAt(i++); + chr3 = input.charCodeAt(i++); + enc1 = chr1 >> 2; + enc2 = ((chr1 & 3) << 4) | (chr2 >> 4); + enc3 = ((chr2 & 15) << 2) | (chr3 >> 6); + enc4 = chr3 & 63; + if (isNaN(chr2)) { + enc3 = enc4 = 64; + } else if (isNaN(chr3)) { + enc4 = 64; } + output = output + + _keyStr.charAt(enc1) + _keyStr.charAt(enc2) + + _keyStr.charAt(enc3) + _keyStr.charAt(enc4); + } + return output; } -export { Base64 } \ No newline at end of file +// 公共解码方法 +function decode(input) { + var output = ""; + var chr1, chr2, chr3; + var enc1, enc2, enc3, enc4; + var i = 0; + input = input.replace(/[^A-Za-z0-9\+\/\=]/g, ""); + while (i < input.length) { + enc1 = _keyStr.indexOf(input.charAt(i++)); + enc2 = _keyStr.indexOf(input.charAt(i++)); + enc3 = _keyStr.indexOf(input.charAt(i++)); + enc4 = _keyStr.indexOf(input.charAt(i++)); + chr1 = (enc1 << 2) | (enc2 >> 4); + chr2 = ((enc2 & 15) << 4) | (enc3 >> 2); + chr3 = ((enc3 & 3) << 6) | enc4; + output = output + String.fromCharCode(chr1); + if (enc3 != 64) { + output = output + String.fromCharCode(chr2); + } + if (enc4 != 64) { + output = output + String.fromCharCode(chr3); + } + } + output = _utf8_decode(output); + return output; +} + +// UTF-8编码的私有方法 +function _utf8_encode(string) { + string = string.replace(/\r\n/g,"\n"); + var utftext = ""; + for (var n = 0; n < string.length; n++) { + var c = string.charCodeAt(n); + if (c < 128) { + utftext += String.fromCharCode(c); + } else if((c > 127) && (c < 2048)) { + utftext += String.fromCharCode((c >> 6) | 192); + utftext += String.fromCharCode((c & 63) | 128); + } else { + utftext += String.fromCharCode((c >> 12) | 224); + utftext += String.fromCharCode(((c >> 6) & 63) | 128); + utftext += String.fromCharCode((c & 63) | 128); + } + } + return utftext; +} + +// UTF-8解码的私有方法 +function _utf8_decode(utftext) { + var string = ""; + var i = 0; + var c = c1 = c2 = 0; + while ( i < utftext.length ) { + c = utftext.charCodeAt(i); + if (c < 128) { + string += String.fromCharCode(c); + i++; + } else if((c > 191) && (c < 224)) { + c2 = utftext.charCodeAt(i+1); + string += String.fromCharCode(((c & 31) << 6) | (c2 & 63)); + i += 2; + } else { + c2 = utftext.charCodeAt(i+1); + c3 = utftext.charCodeAt(i+2); + string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63)); + i += 3; + } + } + return string; +} + +export {encode,decode} \ No newline at end of file diff --git a/src/utils/index.html b/src/utils/index.html new file mode 100644 index 0000000..59cdb81 --- /dev/null +++ b/src/utils/index.html @@ -0,0 +1,119 @@ + + + + + + + Document + + + + + \ No newline at end of file diff --git a/src/views/gridman/clockin/index.vue b/src/views/gridman/clockin/index.vue index 57f65ce..1ce8e79 100644 --- a/src/views/gridman/clockin/index.vue +++ b/src/views/gridman/clockin/index.vue @@ -27,7 +27,7 @@
-

任务描述:{{ item.pointname }}

+

打卡点名称:{{ item.pointname }}

创建时间:{{ item.createtime }}

负责人员:{{item.usernames}}

@@ -60,7 +60,7 @@

- 任务信息 + 打卡点信息 @@ -393,19 +516,19 @@ import * as turf from '@turf/turf' position:relative; } .content-container .content-item p{ - width: calc( 100% - 80px); + width: calc( 100% - 118px); } .content-container .content-item .content-item-name{ font-size:15px; color:#fff; padding:8px 0px; border-bottom: 1px solid #224C47; - width: calc( 100% - 80px); + width: calc( 100% - 118px); } .icon-container{ float:right; - width:78px; + width:128px; height:80px; line-height:80px; position:absolute; @@ -415,9 +538,10 @@ import * as turf from '@turf/turf' } .icon-container img{ - width:36px; - height:36px; - margin-top:15px; + width:28px; + height:28px; + margin-top:6px; + margin-left:8px; cursor:pointer; } /* diff --git a/src/views/home/widget/onlineuserbox.vue b/src/views/home/widget/onlineuserbox.vue index edb7bd5..43b7f4d 100644 --- a/src/views/home/widget/onlineuserbox.vue +++ b/src/views/home/widget/onlineuserbox.vue @@ -26,6 +26,16 @@
+ + + + + + 搜索
@@ -54,9 +64,9 @@
- + - +
@@ -78,7 +88,8 @@ import {compareArray} from '../lib/compareArray.js' list:[], listQuery:{ pageIndex:1, - pageSize:12 + pageSize:12, + type:0 }, showLayer:false, checkPhoneArr:[], @@ -91,9 +102,25 @@ import {compareArray} from '../lib/compareArray.js' phones:null, markGraphicLayerArr:null, topList:[], - teamIcons:{ - - } + teamIcons:{}, + filterOptions:[ + { + label:"全部", + value:0 + },{ + label:"管理员", + value:1 + },{ + label:"护林员", + value:2 + },{ + label:"巡查员", + value:3 + },{ + label:"网格员", + value:4 + } + ] } }, created(){ @@ -128,6 +155,9 @@ import {compareArray} from '../lib/compareArray.js' } }, methods:{ + getUserList(e){ + this.getListData(); + }, getTeamIcon(){ getMethodCommon("/FireCodePC/GetUserUnit").then(res=>{ if(res.code == 200){ @@ -190,7 +220,7 @@ import {compareArray} from '../lib/compareArray.js' }, getListData(){ - getMethodCommon("/FireManagement/GetPointByAPP",this.listQuery).then(res=>{ + getMethodCommon("/FireManagement/GetPointByUserType",this.listQuery).then(res=>{ if(res.code == 200){ this.list = res.data this.total = res.count @@ -298,8 +328,8 @@ import {compareArray} from '../lib/compareArray.js' window.globalmap.addLayer(this.markGraphicLayer); } compareResult.add.forEach((item, index) => { - let showVideo = item.type == '人员' ? 'block':'none'; - let img = item.type == '人员' ? 'jiuyuanrenyuan' : 'duijiangji' + let showVideo = (item.type == '护林员' || item.type == '其他') ? 'block':'none'; + let img = (item.type == '护林员' || item.type == '其他') ? 'jiuyuanrenyuan' : 'duijiangji' let graphic = new mars3d.graphic.BillboardEntity({ id:item.createId, position: [item.lng, item.lat], diff --git a/src/views/home/widget/waterbox.vue b/src/views/home/widget/waterbox.vue index 5e143ad..60c79ee 100644 --- a/src/views/home/widget/waterbox.vue +++ b/src/views/home/widget/waterbox.vue @@ -6,7 +6,7 @@
- 距离: + 半径:
1km内 @@ -20,12 +20,12 @@
{{ "水源地" + (index + 1) }}
-
距离 {{ item.distance }} km
+
路程 {{ item.distance }} km
{{ "预计" + item.time }}
@@ -38,7 +38,7 @@ import appConfig from "../../../../public/config/app.json"; import * as turf from "@turf/turf"; import axios from "axios"; -import { getRouterFunc, drawRouterFunc, clearRouterFunc } from '../lib/routePath' +import { getRouterFunc, drawRouterFunc, drawOneRouterFunc,drawRoutersFunc,clearRouterFunc } from '../lib/routePath' export default { name: "monitorbox", props: ["waterCenter", "firePopup","visible"], @@ -53,7 +53,7 @@ export default { waterGraphicLayerArr: [], pathPointGraphicLayer: null, allData: [], - distanceradio: 1, + distanceradio:1, }; }, watch: { @@ -87,6 +87,10 @@ export default { }, methods: { close() { + if(this.echartsLayer){ + this.echartsLayer.remove(true); + } + this.waterGraphicLayerArr.forEach((item) => { this.waterGraphicLayer.removeGraphic(item); }); @@ -135,6 +139,8 @@ export default { return a.distance - b.distance; }); + console.log("nestWaterPoints",this.nestWaterPoints) + if (this.waterGraphicLayer == null) { this.waterGraphicLayer = new mars3d.layer.GraphicLayer(); window.globalmap.addLayer(this.waterGraphicLayer); @@ -169,51 +175,56 @@ export default { }, }, popup: `
-
-
-
-
-
-
-
-
-
-
水源地${index+1}
-
-
-
距离:
-
${item.distance}km
-
-
-
预计用时:
-
${item.time}
-
-
-
-
- 导航 -
-
-
-
-
-
-
-
-
-
`, - popupOptions: { - offsetY: -60, - offsetX:20, - template: "{content}", - horizontalOrigin: "Cesium.HorizontalOrigin.LEFT", - verticalOrigin: "Cesium.VerticalOrigin.CENTER", - }, - pointerEvents: true, +
+
+
+
+
+
+
+
+
+
水源地${index+1}
+
+
+
距离:
+
${item.distance}km
+
+
+
预计用时:
+
${item.time}
+
+
+
+
+ 导航 +
+
+
+
+
+
+
+
+
+
`, + popupOptions: { + offsetY: -60, + offsetX:20, + template: "{content}", + horizontalOrigin: "Cesium.HorizontalOrigin.LEFT", + verticalOrigin: "Cesium.VerticalOrigin.CENTER", + }, + pointerEvents: true, }); this.waterGraphicLayerArr.push(graphic); this.waterGraphicLayer.addGraphic(graphic); }); + + clearRouterFunc(); + this.nestWaterPoints.forEach((item,index)=>{ + this.flyToPosition([item.lngLat[0], item.lngLat[1]],'all') + }) window.globalmap.addLayer(this.waterGraphicLayer); }, getWaterList() { @@ -252,13 +263,28 @@ export default { return a.distance - b.distance; }); this.allData = this.nestWaterPoints; + + // Echarts流动线条特效 + // let options = this.getEchartsOption(lng,lat,this.nestWaterPoints) + // if(this.echartsLayer){ + // this.echartsLayer.remove(true); + // } + // this.echartsLayer = new mars3d.layer.EchartsLayer(options) + // window.globalmap.addLayer(this.echartsLayer) + // this.echartsLayer.flyTo(); }, - flyToPosition(lngLat) { - this.startLngLat = lngLat; - this.getRoutePath(); + flyToPosition(lngLat,type) { + if(type=='all'){ + this.startLngLat = lngLat; + this.getRoutePath(type); + }else if(type == 'one'){ + this.startLngLat = lngLat; + this.getRoutePath(type); + } + // window.globalmap.flyToPoint(lngLat, { radius: 4000, pitch: -90 }); }, - getRoutePath() { + getRoutePath(type) { // 获取路线数据 let startCoor = this.startLngLat; let endCoor = this.waterCenter; @@ -270,12 +296,110 @@ export default { areaname: localStorage.getItem("areaName"), }; getRouterFunc(params,).then(res => { - drawRouterFunc(res) + if(type == 'all'){ + drawRoutersFunc(res) + }else if( type == 'one'){ + drawOneRouterFunc(res) + } }).catch(err => { clearRouterFunc() }) }, - + getEchartsOption(lng,lat,nestWaterPoints) { + const beijinCoord = [lng, lat] + const symbolPoint = "image://img/symbol1.png" + const linePoint = "image://img/linePoint1.png" + + const pointArr = [] + const pathArr = []; + console.log("nestWaterPoints",nestWaterPoints) + for(let i=0;i<15;i++){ + pointArr.push({ + name: nestWaterPoints[i].distance+"km", + value: nestWaterPoints[i].lngLat, + symbol: symbolPoint + }) + pathArr.push({ + name: i, + toname: "当前位置", + coords: [nestWaterPoints[i].lngLat, beijinCoord] + }) + } + + const option = { + animation: false, + clampToGround:true, + series: [ + { + name: "", + type: "lines", + coordinateSystem: "mars3dMap", + zlevel: 1, + data: pathArr, + // 线上面的动态特效 + effect: { + show: true, + smooth: false, + trailLength: 0, + symbol: linePoint, + symbolSize: [10, 30], + period: 4 + }, + lineStyle: { + normal: { + width: 3, + color: "#1c67d6", + curveness: 0.2 + } + } + }, + { + type: "effectScatter", + coordinateSystem: "mars3dMap", + zlevel: 3, + data: [ + { + name: "当前位置", + value: beijinCoord.concat(200) + } + ], + rippleEffect: { + period: 10, + scale: 5, + brushType: "fill" + } + }, + { + type: "effectScatter", + coordinateSystem: "mars3dMap", + symbolSize: [20, 20], + symbolOffset: [0, -10], + zlevel: 3, + circular: { + rotateLabel: true + }, + label: { + normal: { + show: true, + position: "bottom", + formatter: "{b}", + fontSize: 14, + color: "#fff", + textBorderColor: "#2aa4e8", + offset: [0, 10] + } + }, + itemStyle: { + normal: { + shadowColor: "none" + } + }, + data: pointArr + } + ] + } + return option + }, }, }; diff --git a/src/views/login/index.vue b/src/views/login/index.vue index 718b27b..42906b2 100644 --- a/src/views/login/index.vue +++ b/src/views/login/index.vue @@ -67,6 +67,7 @@