zhangxiaoxu123
2023-07-04 22f9e400ea731da9ee6be6fa389adebfc3438f63
src/pages/show/showIndex/showIndex.vue
@@ -9,6 +9,19 @@
    </baidu-map>
    <!--<div class="map_container" id="map_container"></div>-->
  </div>
  <div class="upload-box">
    <el-dropdown @command="uploadClick">
      <el-button class="uploadBtn" plain size="small">
        上传文件<i class="el-icon-arrow-down el-icon--right"></i>
      </el-button>
      <el-dropdown-menu slot="dropdown">
        <el-dropdown-item command="1">
          报警
        </el-dropdown-item>
        <el-dropdown-item  command="0">状态值</el-dropdown-item>
      </el-dropdown-menu>
    </el-dropdown>
  </div>
  <div class="showIndex-wrap-inside">
    <div class="indexMoudleBlock-box">
      <IndexMoudleBlock></IndexMoudleBlock>
@@ -20,7 +33,7 @@
      <TimesLogs></TimesLogs>
    </div>
  </div>
  <uploadForm ref="uploadForm" v-if="uploadVisiable"></uploadForm>
</div>
</template>
@@ -28,12 +41,15 @@
  import IndexMoudleBlock from "./IndexMoudleBlock";
  import TimesLogs from "./TimesLogs";
  import YunweiBlock from "./YunweiBlock";
  import uploadForm from "./upload/uploadForm";
  import {getMapData} from '@/api/daping'
    export default {
        name: "showIndex",
        components: {
            IndexMoudleBlock,
            YunweiBlock,
            TimesLogs
            TimesLogs,
            uploadForm
        },
        data() {
            return{
@@ -42,180 +58,36 @@
                mapObj:{},
                mapData:[],
                mapData2:[],
                uploadVisiable:false,  //上传文件弹框
                timer:null
            }
        },
        destroyed() {
          clearInterval(this.timer)
        },
        mounted() {
          //this.getMapData()
          //this.initMap()
          this.timer = setInterval(() => {
              this.getMapData()
          },300000)
        },
        methods: {
            // initMap() {
            //    let map = new BMapGL.Map('map_container')
            //    map.centerAndZoom(new BMapGL.Point(118.183450598,39.6505309225),12)
            //    let goodsData = require('../../../assets/js/custom_map_config2')
            //     map.setMapStyleV2({
            //         styleJson: goodsData
            //         // styleId: '5f9b8a9639cf6e4ae8806379bedba141'
            //         // style: 'bluish'
            //     })
            //    map.setTilt(0)
            //    map.setHeading(0)
            //    map.enableScrollWheelZoom(true)  //开启缩放功能
            //
            //     // //图层管理器(Api文档--图层管理器)
            //     // var view = new mapvgl.View({
            //     //     map: map,  //把生成的地图map传进来
            //     // });
            //     // //飞线图层的创建方式(Api文档--飞线图层)
            //     // var layer = new mapvgl.LineRainbowLayer({
            //     //     // blend: 'lighter',
            //     //     // width: 12,
            //     //     //color: 'rgba(0, 96, 222, 1)',
            //     //     // lineJoin:'bevel'
            //     //     //style: 'road', // road, arrow, normal
            //     //     width: 10,
            //     //     //animation: true
            //     //
            //     // });
            //     // var layer2 = new mapvgl.LineFlowLayer({
            //     //     // color: 'rgba(0, 255, 252, 1)',
            //     //     // width: 14,
            //     //     // animation: true,
            //     //     // duration: 1, // 循环时间2s
            //     //     // trailLength: 2, // 拖尾长度占间隔的0.4
            //     //     // interval: 0.1, // 粒子长度占线整体长度的0.2
            //     //     // //step:0.1,
            //     //     // startTime: 0,
            //     //     // endTime: 100,
            //     //     // color: 'rgba(255, 71, 26, 0.9)',
            //     //     // step: 0.1, // 动画的速度
            //     //     // width: 10,
            //     //     // animation: true,
            //     //     // startTime:0,
            //     //     // endTime:4,
            //     //     // duration: 1, // 循环时间2s
            //     //     // trailLength: 0.2, // 拖尾长度占间隔的0.4
            //     //     // interval: 0.1 // 粒子长度占线整体长度的0.2
            //     //     color: 'rgba(0, 255, 252, 1)',
            //     //     width: 6,
            //     //     animation: true,
            //     //     duration: 1.5, // 循环时间2s
            //     //     trailLength: 1, // 拖尾长度占间隔的0.4
            //     //     interval: 0.05, // 粒子长度占线整体长度的0.2
            //     //     step:0.02,
            //     //     startTime: 0,
            //     //     endTime: 100,
            //     // });
            //     // // let layer = new mapvgl.LineTripLayer({
            //     // //     color: 'rgba(255, 71, 26, 0.9)',
            //     // //     width: 16,
            //     // //     animation: true,
            //     // //     duration: 1, // 循环时间2s
            //     // //     trailLength: 20, // 拖尾长度占间隔的0.4
            //     // //     interval: 0.1 // 粒子长度占线整体长度的0.2
            //     // // });
            //     // view.addLayer(layer)  //把图层添加到图层管理器重
            //     // view.addLayer(layer2)  //把图层添加到图层管理器重
            //     // layer.setData(this.mapData2)   //图层数据
            //     // layer2.setData(this.mapData2)   //图层数据
            // },
            // getMapData() {
            //     this.mapData = []
            //     this.mapData2 = []
            //     let re2 =  [
            //         [
            //             {
            //                 lng: 118.144674,
            //                 lat: 39.660641
            //             },
            //             {
            //                 lng: 118.229198,
            //                 lat: 39.763508
            //             },
            //         ],
            //         [
            //             {
            //                 lng: 118.180618,
            //                 lat: 39.753635
            //             },
            //             {
            //                 lng: 118.229198,
            //                 lat: 39.753635
            //             },
            //         ],
            //         [
            //             {
            //                 lng: 118.232887,
            //                 lat: 39.619857
            //             },
            //             {
            //                 lng: 118.208669,
            //                 lat: 39.596232
            //             }
            //         ],
            //         [
            //             {
            //                 lng: 118.240577,
            //                 lat: 39.661919
            //             },
            //             {
            //                 lng: 118.187038,
            //                 lat: 39.635918
            //             }
            //         ],
            //         [
            //             {
            //                 lng: 118.185321,
            //                 lat: 39.678277
            //             },
            //             {
            //                 lng: 118.217221,
            //                 lat: 39.677581
            //             }
            //         ],
            //         [
            //             {
            //                 lng: 118.184038,
            //                 lat: 39.631268
            //             },
            //             {
            //                 lng: 118.184042,
            //                 lat: 39.624384
            //             }
            //         ]
            //     ]
            //     let re = [
            //         [118.184038,39.631268],
            //         [118.184042,39.624384],
            //
            //
            //     ]
            //     let curve = new mapvgl.BezierCurve()
            //     for(let i=0; i<re2.length; i++) {
            //         //re[i].lng
            //         curve.setOptions({
            //             start:[re2[i][0].lng,re2[i][0].lat],
            //             end:[re2[i][1].lng,re2[i][1].lat]
            //         })
            //         let cureData = curve.getPoints()
            //         console.log(re2[i],'re[i]=====')
            //         this.mapData2.push({
            //             geometry: {  //携带地理信息
            //                 type: 'LineString',
            //                 coordinates:cureData,  //把贝塞尔曲线的数据放进来
            //             }
            //         })
            //     }
            //     console.log(this.mapData2,'mapData2===')
            //     this.mapData.push({
            //           geometry: {  //携带地理信息
            //               type: 'LineString',
            //               coordinates:re,  //把贝塞尔曲线的数据放进来
            //           },
            //       })
            //     console.log(this.mapData,'mapData===')
            // }
            uploadClick(type) {
                console.log(type,'type===')
                this.uploadVisiable = true
                this.$nextTick(() => {
                    this.$refs.uploadForm.init(type)
                })
            },
            getMapData() {
                getMapData().then(res => {
                    if(res.code == 0) {
                        this.mapData = res.data
                        this.addMarker()
                    }
                })
            },
            handler({BMap, map}) {
                this.mapObj = {BMap, map}
                let goodsData = require('../../../assets/js/custom_map_config2')
@@ -228,62 +100,49 @@
                    // style: 'bluish'
                })
                map.setCurrentCity('唐山')   // 设置地图显示的城市 此项是必须设置的
                this.addMarker()
                this.getMapData()
            },
            addMarker() {
                this.mapData = [
                    {
                        latitude: '118.20,39.63',
                    },
                    {
                        latitude: '118.117511,39.625670',
                    },
                    {
                        latitude: '118.114897,39.684427',
                    },
                    {
                        latitude: '118.119517,39.655598',
                    },
                    {
                        latitude: '118.116267,39.694433',
                    },
                    {
                        latitude: '118.311267,39.694433',
                    },
                    {
                        latitude: '118.211267,39.694433',
                    },
                    {
                        latitude: '118.011267,39.674433',
                    },
                    {
                        latitude: '118.011227,39.604433',
                    }
                ]
                let BMap = this.mapObj.BMap
                let map = this.mapObj.map
                this.mapData.forEach(item => {   //lng 经度  lat 经度
                    if(item.latitude != null && item.latitude != '') {
                        let longitude = item.latitude.split(',')[0]
                        let latitude = item.latitude.split(',')[1]
                        let myIcon = new BMap.Icon(
                            require("../../../assets/img/markerIcon.png"),
                    console.log(this.mapData,'this.mapData===')
                    if(item.lat && item.lat) {
                        let longitude = item.lon
                        console.log(item.lon,'经纬----')
                        console.log(item.lat,'经纬----')
                        let latitude = item.lat
                        let myIcon = ''
                        if(item.health == 0) {
                            myIcon = new BMap.Icon(
                                require("../../../assets/img/markerIcon3.png"),
                            new BMap.Size(35, 35),
                            { imageSize: new BMap.Size(35, 35),anchor : new BMap.Size(35, 35) })
                        }else {
                            myIcon = new BMap.Icon(
                                require("../../../assets/img/markerIcon2.png"),
                                new BMap.Size(35, 35),
                                { imageSize: new BMap.Size(35, 35),anchor : new BMap.Size(35, 35) })
                        }
                        let point = new BMap.Point(longitude,latitude)
                        let marker = new BMap.Marker(point,{icon:myIcon})
                        map.addOverlay(marker)
                        map.setZoom(12)
                        map.setZoom(13)
                        // 添加鼠标划入坐标点的显示内容
                        let isH = ''
                        if(item.health == 0) {
                            isH = '正常'
                        }else {
                            isH = '异常'
                        }
                        let str = '<div style="padding:4px 10px;width:300px;max-width: 400px;display: flex;flex-direction: row;">'
                        str += '<div>'
                        str += '<h1 style="font-size: 13px;text-align: center;line-height: 2"> ' + item.subjectName + '</h1>'
                        str += '<div style="display: flex;flex-direction: column">'
                        str += '<div><h1 style="font-size: 12px;padding:2px 0;width: 100%;white-space:pre-wrap">案件描述:'+item.casePoint+'</h1></div>'
                        str += '<div><h1 style="font-size: 12px;padding:2px 0;width: 100%;white-space:pre-wrap">通讯状态:'+isH+'</h1></div>'
                        str += '<div><h1 style="font-size: 12px;padding:2px 0"">地址:'+item.address+'</h1></div>'
                        str += '<div><h1 style="font-size: 12px;padding:2px 0">时间:'+item.time+'</h1></div>'
                        str += '</div>'
                        str += '</div>'
                        let opts = {
@@ -305,20 +164,21 @@
                        // 在全景场景内添加覆盖物
                        map.addOverlay(label);
                        marker.addEventListener('mouseover', function () {
                            console.log(marker,'marker==')
                            //鼠标移入动画
                            let divElement = document.createElement('div')
                            divElement.className = 'before'
                            let divElement2 = document.createElement('div')
                            divElement2.className = 'after'
                            marker.gd.innerHtml = marker.gd.childNodes[0]
                            marker.gd.appendChild(divElement)
                            marker.gd.appendChild(divElement2)
                            marker.gd.className = ''
                            marker.gd.className = 'mapBGFault'
                            marker.hd.innerHtml = marker.hd.childNodes[0]
                            marker.hd.appendChild(divElement)
                            marker.hd.appendChild(divElement2)
                            marker.hd.className = ''
                            marker.hd.className = 'mapBGFault'
                            label.show()
                        })
                        marker.addEventListener('mouseout', function () {
                            marker.gd.className = ''
                            marker.hd.className = ''
                            label.hide()
                        })
@@ -329,6 +189,22 @@
    }
</script>
<style lang="scss">
  .upload-box{
    .uploadBtn{
       background: linear-gradient(to right,#0e0e25,#092749);
    }
    .el-button.is-plain:focus, .el-button.is-plain:hover{
      background: transparent;
    }
    .el-button{
      border:1px solid #1ee3f3!important;
      span{
        color: #fff;
      }
    }
  }
</style>
<style lang="scss" scoped>
.showIndex-wrap{
@@ -336,6 +212,16 @@
  height: calc(100% - 0.4167rem  /* 80/192 */);
  margin-top: 0.1042rem  /* 20/192 */;
  position: relative;
  .upload-box{
    position: absolute;
    right: 0.1042rem  /* 20/192 */;
    top: -0.09375rem  /* -18/192 */;
    z-index: 999999999;
  }
  .showIndex-wrap-inside{
    width: 100%;
    height: 100%;
  }
  .indexMoudleBlock-box{
    position: absolute;
    left: 0.1823rem  /* 35/192 */;