From f521ebc2551d468c4c478783a18d4b0714394d61 Mon Sep 17 00:00:00 2001
From: suerprisePlus <15810472099@163.com>
Date: 星期一, 14 十月 2024 15:00:13 +0800
Subject: [PATCH] 配网大屏功能优化

---
 src/views/visualization/data.js            |    4 
 src/views/visualization/bottomMenu.vue     |   18 
 src/views/visualization/road.js            |  463 +++++++++++++++++++++++++
 src/views/visualization/msgList.vue        |  174 +++++++++
 src/assets/images/treeClose.png            |    0 
 src/components/mapOl/index.vue             |   46 +-
 src/store/mapStore.js                      |   26 +
 src/components/RuoYi/Msgger/index.vue      |   17 
 src/views/visualization/list/mapWeather.js |   90 +++++
 src/main.js                                |    2 
 public/config/config.js                    |    2 
 src/views/visualization/leftMenu.vue       |   10 
 src/views/visualization/mapView.vue        |   38 +
 src/store/modules/mapLayers.js             |    2 
 src/App.vue                                |   31 +
 src/views/visualization/index.vue          |   71 +++
 src/views/visualization/list/chart.vue     |   55 ++
 17 files changed, 964 insertions(+), 85 deletions(-)

diff --git a/public/config/config.js b/public/config/config.js
index 74f1134..4099b48 100644
--- a/public/config/config.js
+++ b/public/config/config.js
@@ -17,7 +17,7 @@
 //rag绔彛
 const ragHost = isWeb ? isUrl + ":9036" : "192.168.11.24:8103";
 // 鏈湴鏁版嵁鍦板潃
-const pwythHost = "http://192.168.11.95:8888/pwyth";
+const pwythHost = "http://localhost/pwyth";
 //閰嶇疆
 const config = {
   // server鏈嶅姟
diff --git a/src/App.vue b/src/App.vue
index 055b6a9..6181d2e 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -24,14 +24,39 @@
   },
   data() {
     return {
-     
+
     }
   },
   mounted() {
-  
+    this.createSocket();
+    setTimeout(() => {
+      this.$store.state.mapLayers.msgList.push({
+        msg: "鍙樺帇鍣ㄦ晠闅�",
+        point: "POINT (112.56978672907 37.8558881392881)"
+      })
+
+    }, 10000);
   },
   methods: {
-  
+    createSocket() {
+      this.wsSocket = new WebSocket(config.pySocket);
+      this.wsSocket.onopen = (event) => {
+        console.log('WebSocket杩炴帴鎴愬姛');
+      };
+      this.wsSocket.onmessage = (event) => {
+        // console.log('Received message:', event.data);
+
+        if (event.data != "杩炴帴鎴愬姛") {
+          const obj = JSON.parse(event.data)
+
+
+          this.leftChartData = {
+            type: 'left1',
+            val: obj
+          }
+        }
+      };
+    }
   }
 };
 </script>
diff --git a/src/assets/images/treeClose.png b/src/assets/images/treeClose.png
new file mode 100644
index 0000000..fb2d4ff
--- /dev/null
+++ b/src/assets/images/treeClose.png
Binary files differ
diff --git a/src/components/RuoYi/Msgger/index.vue b/src/components/RuoYi/Msgger/index.vue
index dfe2880..fe4e66a 100644
--- a/src/components/RuoYi/Msgger/index.vue
+++ b/src/components/RuoYi/Msgger/index.vue
@@ -2,10 +2,10 @@
     <div class="msgBox" @click.stop="setShowMenuClick(true)">
 
         <i style="font-size: 20px;" class="el-icon-chat-line-round"></i>
-        <el-badge v-show="msgCount > 0" :value="msgCount" class="item">
+        <el-badge v-show="$store.state.mapLayers.msgList.length > 0" :value="$store.state.mapLayers.msgList.length" class="item">
         </el-badge>
-        <el-dialog title="寮傚父淇℃伅" :visible.sync="dialogVisible" width="30%" :show-close="false">
-            <el-table :data="msgData" style="width: 100%">
+        <el-dialog title="鏁呴殰淇℃伅" :visible.sync="dialogVisible" width="30%" :show-close="false">
+            <el-table :data="$store.state.mapLayers.msgList" style="width: 100%">
                 <el-table-column prop="msg" label="璁惧鍚嶇О">
                 </el-table-column>
                 <el-table-column prop="point" label="璁惧浣嶇疆">
@@ -46,10 +46,7 @@
             dialogFlag: false,
             wsSocket: null,
             innerVisible: false,
-            msgData: [{
-                msg: "鍙樺帇鍣ㄦ晠闅�",
-                point: "POINT (112.56978672907 37.8558881392881)"
-            }],
+            msgData: [],
             parentData: null,
         }
     },
@@ -108,9 +105,9 @@
         },
     },
     mounted() {
-        if (!this.wsSocket) {
-            this.createSocket();
-        }
+        // if (!this.wsSocket) {
+        //     this.createSocket();
+        // }
 
     },
 }
diff --git a/src/components/mapOl/index.vue b/src/components/mapOl/index.vue
index a510f9e..ae520c5 100644
--- a/src/components/mapOl/index.vue
+++ b/src/components/mapOl/index.vue
@@ -62,30 +62,30 @@
             const baseLayer = mapData.baseLayer;
             const vecUrl = baseLayer.sUrl + baseLayer.vecLayer + baseLayer.lUrl
             const geo= config.geoServer;
-            // var vectorLayer = new TileLayer({
-            //     source: new XYZ({
-            //         url: vecUrl + config.tdToken,
-            //     }),
-            // });
-            // const cvaUrl = baseLayer.sUrl + baseLayer.cvaLayer + baseLayer.lUrl
-            // var vectorLayer1 = new TileLayer({
-            //     source: new XYZ({
-            //         url: cvaUrl + config.tdToken,
-            //     }),
-            // });
-            var layer2 = new Image({
-                name: "Wms_Layer",
-                source: new ImageWMS({
-                    crossOrigin: "anonymous",
-                    url: geo.url + geo.wms,
-                    params: {
-                        FORMAT: "image/png",
-                        VERSION: "1.1.1",
-                        LAYERS: geo.layers[0],
-                    },
+            var vectorLayer = new TileLayer({
+                source: new XYZ({
+                    url: vecUrl + config.tdToken,
                 }),
             });
-            this.mapol.addLayer(layer2);
+            const cvaUrl = baseLayer.sUrl + baseLayer.cvaLayer + baseLayer.lUrl
+            var vectorLayer1 = new TileLayer({
+                source: new XYZ({
+                    url: cvaUrl + config.tdToken,
+                }),
+            });
+            // var layer2 = new Image({
+            //     name: "Wms_Layer",
+            //     source: new ImageWMS({
+            //         crossOrigin: "anonymous",
+            //         url: geo.url + geo.wms,
+            //         params: {
+            //             FORMAT: "image/png",
+            //             VERSION: "1.1.1",
+            //             LAYERS: geo.layers[0],
+            //         },
+            //     }),
+            // });
+            // this.mapol.addLayer(layer2);
             this.mapol = new Map({
                 target: 'mapView',
                 layers: [vectorLayer, vectorLayer1],
@@ -96,7 +96,7 @@
                 }),
             });
 
-
+console.log(geo.url + geo.wms)
             var layer2 = new Image({
                 name: "Wms_Layer",
                 source: new ImageWMS({
diff --git a/src/main.js b/src/main.js
index f953bde..c5adc4d 100644
--- a/src/main.js
+++ b/src/main.js
@@ -10,6 +10,7 @@
 import '@/assets/styles/ruoyi.scss' // ruoyi css
 import App from './App'
 import store from './store'
+import mapStore from './store/mapStore.js'
 import router from './router'
 import directive from './directive' // directive
 import plugins from './plugins' // plugins
@@ -116,6 +117,7 @@
   el: '#app',
   router,
   store,
+  mapStore,
   render: h => h(App)
 })
 
diff --git a/src/store/mapStore.js b/src/store/mapStore.js
new file mode 100644
index 0000000..4e5e977
--- /dev/null
+++ b/src/store/mapStore.js
@@ -0,0 +1,26 @@
+import Vue from 'vue'
+import Vuex from 'vuex'
+ 
+Vue.use(Vuex)
+ 
+ const mapStore= new Vuex.Store({
+  //鏁版嵁锛岀浉褰撲簬data
+  state: {
+    regionWeather:null,
+  },
+  getters: {
+    
+  },
+  //閲岄潰瀹氫箟鏂规硶锛屾搷浣渟tate鏂瑰彂
+  mutations: {
+    
+  },
+  // 鎿嶄綔寮傛鎿嶄綔mutation
+  actions: {
+    
+  },
+  modules: {
+    
+  },
+})
+export default mapStore;
\ No newline at end of file
diff --git a/src/store/modules/mapLayers.js b/src/store/modules/mapLayers.js
index 4a46496..7e6fd61 100644
--- a/src/store/modules/mapLayers.js
+++ b/src/store/modules/mapLayers.js
@@ -4,6 +4,8 @@
     layerTree: [],
     defaultLayer: [],
     mapInfo: [],
+    msgList:[ ]
+
 };
 
 const mutations = {
diff --git a/src/views/visualization/bottomMenu.vue b/src/views/visualization/bottomMenu.vue
index f8001ce..d70cfa1 100644
--- a/src/views/visualization/bottomMenu.vue
+++ b/src/views/visualization/bottomMenu.vue
@@ -5,12 +5,16 @@
                 <el-popover popper-class="popover" placement="top" v-show="i.children && i.children.length > 0"
                     width="100" trigger="click">
                     <span slot="reference">{{ i.name }}</span>
-                    <div @click="setChildData(c)" class="popover__item" v-show="i.children && i.children.length > 0"
-                        v-for="(c, f) in i.children" c :title="c.name"> {{
-                            c.name.slice(0, 8) }}
+                    <div v-show="i.children && i.children.length > 0">
+                        <div @click="setChildData(c)" class="popover__item" v-for="(c, f) in i.children" c
+                            :title="c.name"> {{
+                                c.name.slice(0, 8) }}
+                        </div>
                     </div>
+
                 </el-popover>
-                <span @click="setChildData(i)" slot="reference" v-show="!i.children || i.children.length <= 0">{{ i.name }}</span>
+                <span @click="setChildData(i)" slot="reference" v-show="!i.children || i.children.length <= 0">{{ i.name
+                    }}</span>
             </div>
 
         </div>
@@ -33,6 +37,10 @@
                             id: 'a1',
                             name: '鐭ヨ瘑鍥捐氨',
                             pid: 's1',
+                        }, {
+                            id: 'a1',
+                            name: '璇箟鍔熻兘',
+                            pid: 's4',
                         }
                     ]
                 }, {
@@ -51,7 +59,7 @@
                     }]
                 }, {
                     name: '鏁板瓧绾挎崯',
-         
+
                 }
             ],
             visible: false
diff --git a/src/views/visualization/data.js b/src/views/visualization/data.js
index 960c9d1..fac4f41 100644
--- a/src/views/visualization/data.js
+++ b/src/views/visualization/data.js
@@ -150,7 +150,7 @@
         title: '闆�',
         val: [
             {
-                point: '112.54236790420437.8448783429948',
+                point: '112.542367904204,37.8448783429948',
                 line: '娌欏寳绾�',
                 address: '澶師甯傚競鏀垮缓璁惧紑鍙戝绠卞彉',
                 type: 'snow',
@@ -167,7 +167,7 @@
     {
         val: [
             {
-                point: '112.542367904204 37.839565698022',
+                point: '112.542367904204,37.839565698022',
                 line: '涓堝瓧澶�',
                 address: '鑰佸啗钀ュ紑闂墍',
                 type: 'fire',
diff --git a/src/views/visualization/index.vue b/src/views/visualization/index.vue
index 6a77f43..e91b1d6 100644
--- a/src/views/visualization/index.vue
+++ b/src/views/visualization/index.vue
@@ -26,9 +26,19 @@
                     <analysis v-if="isShow == '鏁版嵁鍒嗘瀽'"></analysis>
                     <statistics v-if="isShow == '鏁版嵁缁熻'"></statistics>
                     <line-loss v-if="isShow == '鏁板瓧绾挎崯'"></line-loss>
+                    <semanticFunction v-if="isShow == '璇箟鍔熻兘'"></semanticFunction>
                 </div>
 
             </div>
+        </div>
+        <div v-show="showMsgFlag" @click="ShowMenuList" class="elBadge"
+            :disabled="$store.state.mapLayers.msgList.length == 0">
+            <el-badge :value="$store.state.mapLayers.msgList.length" class="item">
+                <i class="el-icon-chat-dot-square"></i>
+            </el-badge>
+        </div>
+        <div class="msgList"  v-show="!showMsgFlag" >
+            <msg-list @childData="receiveDataFromChild"></msg-list>
         </div>
     </div>
 </template>
@@ -42,10 +52,19 @@
 import analysis from '@/views/visual/analysis/index.vue'
 import lineLoss from './lineLoss.vue';
 import statistics from '@/views/visual/statistics/index.vue'
+import semanticFunction from '@/views/dataManager/semanticFunction/index.vue'
+import msgList from './msgList.vue';
 export default {
     components: {
         mapView, leftMenu,
-        rightMenu, bottomMenu, atlas, analysis, statistics, lineLoss
+        rightMenu,
+        bottomMenu,
+        atlas,
+        analysis,
+        statistics,
+        lineLoss,
+        semanticFunction,
+        msgList
     },
     data() {
         return {
@@ -53,7 +72,8 @@
             showInfo: false,
             wsSocket: null,
             rightChartData: {},
-            leftChartData:{},
+            leftChartData: {},
+            showMsgFlag: true   
         }
     },
     beforeDestroy() {
@@ -67,10 +87,20 @@
     },
     mounted() {
         if (!this.wsSocket) {
-            this.createSocket();
+            // this.createSocket();
         }
     },
     methods: {
+        receiveDataFromChild(data) {
+            console.log(data);
+            
+            this.showMsgFlag = true
+        },
+        ShowMenuList() {
+            if (this.$store.state.mapLayers.msgList.length == 0) return;
+            this.showMsgFlag = !this.showMsgFlag
+
+        },
         createSocket() {
             this.wsSocket = new WebSocket(config.pySocket);
             this.wsSocket.onopen = (event) => {
@@ -81,17 +111,13 @@
 
                 if (event.data != "杩炴帴鎴愬姛") {
                     const obj = JSON.parse(event.data)
-           
-                    
+
+
                     this.leftChartData = {
                         type: 'left1',
                         val: obj
                     }
                 }
-
-
-
-                // 澶勭悊鎺ユ敹鍒扮殑娑堟伅
             };
         },
         childData(res) {
@@ -151,6 +177,33 @@
         bottom: 0px;
     }
 
+    .elBadge {
+        // width: 15%;
+        top: 90px;
+        right: 16%;
+        z-index: 40;
+        padding: 10px;
+        position: absolute;
+        background: url(~@/assets/images/treeClose.png)no-repeat;
+        background-size: 100% 100%;
+
+        .el-icon-chat-dot-square {
+            color: white;
+            font-size: 22px;
+            margin-right: 5px;
+        }
+    }
+
+    .msgList {
+        width: 15%;
+        top: 90px;
+        right: 16%;
+        z-index: 40;
+        position: absolute;
+
+        height: 30%;
+    }
+
     .visualInfo {
         width: 60%;
         height: 60%;
diff --git a/src/views/visualization/leftMenu.vue b/src/views/visualization/leftMenu.vue
index 311369e..cd3ab94 100644
--- a/src/views/visualization/leftMenu.vue
+++ b/src/views/visualization/leftMenu.vue
@@ -36,7 +36,9 @@
     watch: {
 
     },
+
     mounted() {
+        window.regionWeather = null;
         this.initEchart();
     },
     methods: {
@@ -46,16 +48,16 @@
             this.initEchart3();
         },
         initEchart1() {
-            var chart1= data[3];
+            var chart1 = data[3];
             chart1.id = "myChart01";
-            this.childData =chart1
+            this.childData = chart1
         },
         initEchart2() {
-            var chart2= data[4];
+            var chart2 = data[4];
             chart2.id = "myChart02";
             this.childData1 = chart2
         }, initEchart3() {
-            var chart3= data[5];
+            var chart3 = data[5];
             chart3.id = "myChart03";
             this.childData2 = chart3
         }
diff --git a/src/views/visualization/list/chart.vue b/src/views/visualization/list/chart.vue
index 214e717..5583f5f 100644
--- a/src/views/visualization/list/chart.vue
+++ b/src/views/visualization/list/chart.vue
@@ -22,24 +22,28 @@
                         </div>
                     </td>
                 </tr>
-                <tr v-for="(item, i) in childData.val">
-                    <td>{{ item.address }}</td>
-                    <td>{{ item.line }}</td>
-                    <td style="color:#f56c6c">{{ item.level }}</td>
+                <tr>
+                    <td>{{ roadItem.address }}</td>
+                    <td>{{ roadItem.line }}</td>
+                    <td style="color:#f56c6c">{{ roadItem.level }}</td>
                     <td style="color:#409eff">
-                        <el-button v-show="flagData != item.address" class="elButton" type="primary" plain size="mini"
-                            @click="setChangeItem(item)">璇︽儏</el-button>
-                        <el-button v-show="flagData == item.address" class="elButton" type="danger" plain size="mini"
-                            @click="setCannelItem(item)">閲嶇疆</el-button>
+                        <el-button v-show="flagData != roadItem.address" class="elButton" type="primary" plain
+                            size="mini" @click="setChangeItem()">璇︽儏</el-button>
+                        <el-button v-show="flagData == roadItem.address" class="elButton" type="danger" plain
+                            size="mini" @click="setCannelItem()">閲嶇疆</el-button>
                     </td>
                 </tr>
             </table>
+            <div class="chartEchart">
+                <div :id="chartId" class="myChart"> </div>
+            </div>
         </div>
     </div>
 </template>
 
 <script>
 import * as echarts from 'echarts';
+import mapWeather from './mapWeather';
 
 export default {
     props: {
@@ -54,8 +58,9 @@
                 this.chartId = newValue.id;
                 this.title = newValue.title;
                 setTimeout(() => {
-                    this.setEchartChange(newValue)
-                }, 1000);
+                    this.setEchartChange(newValue.val[0])
+
+                }, 200);
             }
         }
     },
@@ -64,19 +69,34 @@
             chartId: "",
             title: "",
             flagData: null,
+            roadItem: {},
         }
     },
+    created() {
+        window.addEventListener('POIDetailDataChange', this.handlePOIDetailDataChange)
+    },
+
     methods: {
         setCannelItem() {
             this.flagData = null;
+            mapWeather.closeRegionWeather()
         },
-        setChangeItem(res) {
-            this.flagData = res.address;
+        handlePOIDetailDataChange() {
+            if (this.flagData == window.regionWeather) return
+            this.flagData = window.regionWeather;
+        },
+        setChangeItem() {
+            var res = this.roadItem;
+            window.regionWeather = res.address;
+            var event = new Event('POIDetailDataChange');
+            window.dispatchEvent(event);
+            mapWeather.setRegionWeatherType(res);
         },
 
         setEchartChange(res) {
-            if (!res.data) return;
-            const data = res.data;
+            this.roadItem = res
+            if (!this.roadItem.data) return;
+            const data = this.roadItem.data;
             const id = document.getElementById(this.chartId)
             var std = [];
             for (var i = 0; i < data.length; i++) {
@@ -87,7 +107,7 @@
             const myChart = echarts.init(id);
             var option = {
                 title: {
-                    text: res.address,
+                    text: "",
                     textStyle: {
                         color: "white"
                     }
@@ -164,7 +184,12 @@
         color: white;
         display: flex;
         flex-direction: column;
+
         // justify-content: space-around;
+        .chartEchart {
+            flex: 1;
+
+        }
 
         .myChart {
             width: 100%;
diff --git a/src/views/visualization/list/mapWeather.js b/src/views/visualization/list/mapWeather.js
new file mode 100644
index 0000000..a04f7d1
--- /dev/null
+++ b/src/views/visualization/list/mapWeather.js
@@ -0,0 +1,90 @@
+import mapServer from '../../../assets/js/mapSdk/mapServe';
+
+const mapWeather = {
+    regionWeather: null,
+    particle: null,
+    closeRegionWeather() {
+        if (this.regionWeather) {
+            this.regionWeather.enableWeatherType = SmartEarth.Cesium.RegionWeather.TYPE_NONE;
+            this.regionWeather = null;
+        }
+        if (this.particle) {
+            this.particle.deleteObject();
+            this.particle = null;
+        }
+    },
+    setRegionWeatherType(response) {
+        this.closeRegionWeather();
+        if (!this.regionWeather) {
+            this.getRegionWather(response);
+        }
+        const coord = this.getCoord(response);
+        earthCtrl.camera.flyTo(coord[0], coord[1], 1000, 0, -90, 0, 0);
+        switch (response.type) {
+            case 'rain':
+                this.showRain();
+                break;
+            case 'fire':
+                this.showFire(response);
+                break;
+            case 'snow':
+                this.showSnow();
+                break;
+        }
+    },
+    showFire(res) {
+        const coord = this.getCoord(res);
+        const obj = {
+            x: coord[0],
+            y: coord[1],
+            z: 0,
+        };
+        this.particle = earthCtrl.factory.createParticleEffect(
+            'flame',
+            obj,
+            {
+                translation: SmartEarth.Cesium.Cartesian3.fromElements(0, 0, 0), //骞崇Щ
+                particleSize:10
+            },
+            function (data) {}
+        );
+    },
+
+    showRain() {
+        if (this.regionWeather) {
+            this.regionWeather.enableWeatherType = SmartEarth.Cesium.RegionWeather.TYPE_RAIN;
+            this.regionWeather.regionAlpha = 0.6;
+            this.regionWeather.regionGradientDistance = 300;
+        }
+    },
+    showSnow() {
+        if (this.regionWeather) {
+            this.regionWeather.enableWeatherType = SmartEarth.Cesium.RegionWeather.TYPE_SNOW;
+            this.regionWeather.regionAlpha = 0.9;
+            this.regionWeather.regionGradientDistance = 300;
+        }
+    },
+    getCoord(res) {
+       const coord = res.point.split(',');
+        console.log('娴嬭瘯', coord);
+
+        return coord;
+    },
+    getRegionWather(res) {
+        if (res.type == 'fire') return;
+        const coord = this.getCoord(res);
+        const model = mapServer.layerList.filter((item) => {
+            if (item.name == config.baseModel.cnName + '_' + config.baseModel.id) {
+                return item;
+            }
+        });
+        if (model.length <= 0) return;
+        this.regionWeather = earthCtrl.factory.createRegionWeather({
+            primitive: model[0].layer.item,
+            position: new SmartEarth.Cesium.Cartesian3.fromDegrees(coord[0], coord[1], 1),
+            radius: 1000,
+        })
+    },
+};
+
+export default mapWeather;
diff --git a/src/views/visualization/mapView.vue b/src/views/visualization/mapView.vue
index 871e722..54f7393 100644
--- a/src/views/visualization/mapView.vue
+++ b/src/views/visualization/mapView.vue
@@ -5,10 +5,12 @@
 </template>
 
 <script>
-import mapServer from '@/assets/js/mapSdk/mapServe';
-import mapConfig from '@/assets/js/mapSdk/mapConfig';
-import mapData from '@/assets/js/mapSdk/mapData';
+import mapServer from '@/assets/js/mapSdk/mapServe.js';
+import mapConfig from '@/assets/js/mapSdk/mapConfig.js';
+import mapData from '@/assets/js/mapSdk/mapData.js';
 import { layer_selectAll } from "@/api/mapView/map.js";
+import axios from 'axios';
+import road from './road';
 export default {
     name: 'mapView',
     mounted() {
@@ -72,25 +74,35 @@
                 mapServer.addLayer(config.baseModel);
             }
             this.getSelectLayers();
-
-
         },
         getSelectLayers() {
             layer_selectAll().then(response => {
                 if (response.data.code != 200) return
-             
-                const val = response.data.result.filter(item => {
-     
+
+                response.data.result.filter(item => {
                     if (item.type == 2 && item.isShow == 1) {
-                
-                        mapServer.addLayer(item)
-                   
+                        if (item.cnName != "閰嶇綉绾�") {
+                            mapServer.addLayer(item)
+                        }
                     }
-                    return item;
+
                 })
-              
+                this.$nextTick(() => {
+                    this.addRoadLayer();
+                })
+
             })
         },
+        addRoadLayer() {
+            earthCtrl.factory.createPathLayer({
+                url: road,
+                color: "#00FA9A", //绾跨殑棰滆壊
+                width: 4.0, //绾跨殑瀹藉害
+                pointColor: "#FFFFFF", //绉诲姩鐐圭殑棰滆壊
+                speed: 1,
+                far: 50000
+            });
+        }
     }
 }
 </script>
diff --git a/src/views/visualization/msgList.vue b/src/views/visualization/msgList.vue
new file mode 100644
index 0000000..52d9926
--- /dev/null
+++ b/src/views/visualization/msgList.vue
@@ -0,0 +1,174 @@
+<template>
+  <div class="msgBox">
+
+    <div class="aside-title">
+      <div>鏁呴殰淇℃伅</div>
+      <div @click="sendDataToParent()" class="closeMsg">
+        X
+      </div>
+    </div>
+    <div class="menuTable">
+      <table>
+        <tr>
+          <th style="width: 100px;">璁惧鍚嶇О</th>
+          <th>璁惧浣嶇疆</th>
+          <th style="width: 100px;">鎿嶄綔</th>
+        </tr>
+        <tr v-for="(item, indx) in $store.state.mapLayers.msgList" :key="indx">
+          <td>{{ item.msg }}</td>
+          <td>{{ item.point }}</td>
+          <td>
+            <el-button @click="handleClick(item)" type="text" size="small">鏌ョ湅</el-button>
+            <!-- <el-button @click="handleClick2(item)" type="text" size="small">鍒嗗彂</el-button> -->
+          </td>
+        </tr>
+      </table>
+    </div>
+
+  </div>
+</template>
+
+<script>
+import mapConfig from '../../assets/js/mapSdk/mapConfig';
+
+
+export default {
+  components: {
+
+  },
+  props: {
+
+  },
+  data() {
+    return {
+      label: null,
+    }
+  },
+  watch: {
+
+  },
+  mounted() {
+
+  },
+  methods: {
+    sendDataToParent() {
+      this.removeLabel();
+      console.log(23);
+
+      this.$emit('childData', '瀛愮粍浠舵暟鎹�');
+
+    },
+    removeLabel() {
+      if (this.label) {
+        this.label.removeFromMap()
+        this.label = null;
+      }
+    },
+    handleClick(item) {
+      this.removeLabel();
+      const point = mapConfig.getWKTParse(item.point)
+      this.label = earthCtrl.factory.createLabel({
+        lon: point.coordinates[0],
+        lat: point.coordinates[1],
+        alt: 40,
+        text: item.msg,
+        image: config.sdkImg + 'Workers/image/mark.png',
+        // 鏂囨湰鍋忕Щ閲�
+        pixelOffset: new SmartEarth.Cesium.Cartesian2(0, -50),
+        // 鍥剧墖鍋忕Щ閲�
+        iPixelOffset: new SmartEarth.Cesium.Cartesian2(0, -20)
+      });
+      earthCtrl.userScene.flyTo(this.label)
+    },
+    handleClick2(item) {
+
+    },
+    setMsgClose() {
+
+    }
+
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+.msgBox {
+  width: 100%;
+  height: 100%;
+  background: url(~@/assets/images/Screen/chartbg.png) no-repeat;
+  background-size: 100% 100%;
+  position: relative;
+  border-radius: 5px;
+  display: flex;
+  flex-direction: column;
+
+  .aside-title {
+    box-sizing: border-box;
+    padding-left: 30px;
+    font-size: 15px;
+    font-family: YouSheBiaoTiHei, YouSheBiaoTiHei-Regular;
+    color: #fff;
+    width: 100%;
+    height: 45px;
+    line-height: 45px;
+    background-size: 100% 100%;
+    background-repeat: no-repeat;
+    display: flex;
+
+    .closeMsg {
+      margin-left: 64%;
+      cursor: pointer;
+    }
+
+    .closeMsg :hover {
+      color: #409EFF;
+    }
+
+  }
+
+  .menuTable {
+    margin: 5px;
+    margin-top: 10px;
+    text-align: center;
+    flex: 1;
+    overflow: auto;
+
+    table {
+      width: 100%;
+      color: white;
+
+      th {
+        text-align: center;
+
+      }
+
+      td {
+        line-height: 30px;
+        border-bottom: 1px solid #409EFF;
+        ;
+      }
+    }
+  }
+}
+
+/*婊氬姩鏉℃暣浣撴牱寮�*/
+::-webkit-scrollbar {
+  /*楂樺鍒嗗埆瀵瑰簲妯珫婊氬姩鏉$殑灏哄*/
+  width: 5px;
+  height: 1px;
+}
+
+/*婊氬姩鏉¢噷闈㈠皬鏂瑰潡*/
+::-webkit-scrollbar-thumb {
+  border-radius: 5px;
+  -webkit-box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.2);
+  background: #409EFF;
+}
+
+/*婊氬姩鏉¢噷闈㈣建閬�*/
+::-webkit-scrollbar-track {
+  -webkit-box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.2);
+  border-radius: 10px;
+  background: rgba(237, 237, 237, .1);
+}
+</style>
\ No newline at end of file
diff --git a/src/views/visualization/road.js b/src/views/visualization/road.js
new file mode 100644
index 0000000..3f5a346
--- /dev/null
+++ b/src/views/visualization/road.js
@@ -0,0 +1,463 @@
+ const road = {
+    type: 'FeatureCollection',
+    totalFeatures: 'unknown',
+    features: [
+        {
+            type: 'Feature',
+            id: 'sbx_polyline.1',
+            geometry: {
+                type: 'LineString',
+                coordinates: [
+                    [112.554578, 37.853285],
+                    [112.560167, 37.853238],
+                    [112.560143, 37.846945],
+                    [112.556504, 37.848753],
+                    [112.55378, 37.848847],
+                    [112.552042, 37.847602],
+                ],
+            },
+            geometry_name: 'the_geom',
+            properties: {
+                id: 11634,
+                name: '娌欏寳绾�',
+                type: '娌欏寳绾�',
+            },
+        },
+        {
+            type: 'Feature',
+            id: 'sbx_polyline.2',
+            geometry: {
+                type: 'LineString',
+                coordinates: [
+                    [112.543213, 37.847039],
+                    [112.544622, 37.847814],
+                    [112.552019, 37.847555],
+                    [112.55486, 37.845324],
+                    [112.554249, 37.845395],
+                    [112.542297, 37.845231],
+                    [112.541405, 37.84509],
+                    [112.534337, 37.844972],
+                ],
+            },
+            geometry_name: 'the_geom',
+            properties: {
+                id: 11633,
+                name: '娌欏寳绾�',
+                type: '娌欏寳绾�',
+            },
+        },
+        {
+            type: 'Feature',
+            id: 'sbx_polyline.3',
+            geometry: {
+                type: 'LineString',
+                coordinates: [
+                    [112.542361, 37.845216],
+                    [112.542525, 37.839475],
+                ],
+            },
+            geometry_name: 'the_geom',
+            properties: {
+                id: 11635,
+                name: '娌欏寳绾�',
+                type: '娌欏寳绾�',
+            },
+        },
+        {
+            type: 'Feature',
+            id: 'sbx_polyline.4',
+            geometry: {
+                type: 'LineString',
+                coordinates: [
+                    [112.53948, 37.845113],
+                    [112.53948, 37.846992],
+                    [112.540771, 37.846992],
+                ],
+            },
+            geometry_name: 'the_geom',
+            properties: {
+                id: 11632,
+                name: '娌欏寳绾�',
+                type: '娌欏寳绾�',
+            },
+        },
+        {
+            type: 'Feature',
+            id: 'sbx_polyline.5',
+            geometry: {
+                type: 'LineString',
+                coordinates: [
+                    [112.533562, 37.848142],
+                    [112.533609, 37.84779],
+                    [112.534713, 37.847814],
+                    [112.53483, 37.846358],
+                    [112.535347, 37.846358],
+                    [112.53537, 37.844456],
+                ],
+            },
+            geometry_name: 'the_geom',
+            properties: {
+                id: 11631,
+                name: '娌欏寳绾�',
+                type: '娌欏寳绾�',
+            },
+        },
+        {
+            type: 'Feature',
+            id: 'sbx_polyline.6',
+            geometry: {
+                type: 'LineString',
+                coordinates: [
+                    [112.54056, 37.845013],
+                    [112.536521, 37.841773],
+                ],
+            },
+            geometry_name: 'the_geom',
+            properties: {
+                id: 11638,
+                name: '娌欏寳绾�',
+                type: '娌欏寳绾�',
+            },
+        },
+        {
+            type: 'Feature',
+            id: 'sbx_polyline.7',
+            geometry: {
+                type: 'LineString',
+                coordinates: [
+                    [112.540842, 37.845037],
+                    [112.537366, 37.84229],
+                    [112.537085, 37.841702],
+                    [112.535394, 37.841045],
+                ],
+            },
+            geometry_name: 'the_geom',
+            properties: {
+                id: 11637,
+                name: '娌欏寳绾�',
+                type: '娌欏寳绾�',
+            },
+        },
+        {
+            type: 'Feature',
+            id: 'sbx_polyline.8',
+            geometry: {
+                type: 'LineString',
+                coordinates: [
+                    [112.542341, 37.844899],
+                    [112.540698, 37.845157],
+                    [112.540567, 37.845019],
+                ],
+            },
+            geometry_name: 'the_geom',
+            properties: {
+                id: 11636,
+                name: '',
+                type: '娌欏寳绾�',
+            },
+        },
+        {
+            type: 'Feature',
+            id: 'thnx_polyline.1',
+            geometry: {
+                type: 'LineString',
+                coordinates: [
+                    [112.539461, 37.847329],
+                    [112.539202, 37.85388],
+                    [112.538874, 37.858131],
+                    [112.560242, 37.859375],
+                    [112.56853, 37.859563],
+                    [112.568437, 37.858084],
+                    [112.568789, 37.858107],
+                    [112.568836, 37.856557],
+                    [112.570104, 37.856487],
+                    [112.570104, 37.855618],
+                    [112.569658, 37.855923],
+                ],
+            },
+            geometry_name: 'the_geom',
+            properties: {
+                id: 11621,
+                name: '妗冪幆鍗楃嚎',
+                tpye: '妗冪幆鍗楃嚎',
+            },
+        },
+        {
+            type: 'Feature',
+            id: 'thnx_polyline.2',
+            geometry: {
+                type: 'LineString',
+                coordinates: [
+                    [112.539014, 37.856487],
+                    [112.534459, 37.856416],
+                    [112.534436, 37.855853],
+                ],
+            },
+            geometry_name: 'the_geom',
+            properties: {
+                id: 11622,
+                name: '妗冪幆鍗楃嚎',
+                tpye: '妗冪幆鍗楃嚎',
+            },
+        },
+        {
+            type: 'Feature',
+            id: 'thnx_polyline.3',
+            geometry: {
+                type: 'LineString',
+                coordinates: [
+                    [112.533508, 37.855771],
+                    [112.535046, 37.855853],
+                    [112.533532, 37.855113],
+                ],
+            },
+            geometry_name: 'the_geom',
+            properties: {
+                id: 11623,
+                name: '妗冪幆鍗楃嚎',
+                tpye: '妗冨崡鐜嚎',
+            },
+        },
+        {
+            type: 'Feature',
+            id: 'thnx_polyline.4',
+            geometry: {
+                type: 'LineString',
+                coordinates: [
+                    [112.539285, 37.851215],
+                    [112.534565, 37.851086],
+                ],
+            },
+            geometry_name: 'the_geom',
+            properties: {
+                id: 11623,
+                name: '妗冪幆鍗楃嚎',
+                tpye: '妗冪幆鍗楃嚎',
+            },
+        },
+        {
+            type: 'Feature',
+            id: 'thnx_polyline.5',
+            geometry: {
+                type: 'LineString',
+                coordinates: [
+                    [112.539026, 37.855853],
+                    [112.538862, 37.84855],
+                ],
+            },
+            geometry_name: 'the_geom',
+            properties: {
+                id: 11625,
+                name: '妗冪幆鍗楃嚎',
+                tpye: '妗冨崡鐜嚎',
+            },
+        },
+        {
+            type: 'Feature',
+            id: 'thnx_polyline.6',
+            geometry: {
+                type: 'LineString',
+                coordinates: [
+                    [112.539167, 37.854291],
+                    [112.541961, 37.854291],
+                ],
+            },
+            geometry_name: 'the_geom',
+            properties: {
+                id: 11628,
+                name: '妗冪幆鍗楃嚎',
+                tpye: '妗冨崡鐜嚎',
+            },
+        },
+        {
+            type: 'Feature',
+            id: 'thnx_polyline.7',
+            geometry: {
+                type: 'LineString',
+                coordinates: [
+                    [112.53912, 37.855195],
+                    [112.540376, 37.855219],
+                    [112.54087, 37.854925],
+                ],
+            },
+            geometry_name: 'the_geom',
+            properties: {
+                id: 11627,
+                name: '妗冪幆鍗楃嚎',
+                tpye: '妗冨崡鐜嚎',
+            },
+        },
+        {
+            type: 'Feature',
+            id: 'thnx_polyline.8',
+            geometry: {
+                type: 'LineString',
+                coordinates: [
+                    [112.539226, 37.852929],
+                    [112.540353, 37.852965],
+                ],
+            },
+            geometry_name: 'the_geom',
+            properties: {
+                id: 11629,
+                name: '妗冪幆鍗楃嚎',
+                tpye: '妗冨崡鐜嚎',
+            },
+        },
+        {
+            type: 'Feature',
+            id: 'thnx_polyline.9',
+            geometry: {
+                type: 'LineString',
+                coordinates: [
+                    [112.538991, 37.855853],
+                    [112.539367, 37.855853],
+                    [112.540071, 37.848832],
+                ],
+            },
+            geometry_name: 'the_geom',
+            properties: {
+                id: 11626,
+                name: '妗冨崡鐜嚎',
+                tpye: '妗冨崡鐜嚎',
+            },
+        },
+        {
+            type: 'Feature',
+            id: 'zzt_polyline.1',
+            geometry: {
+                type: 'LineString',
+                coordinates: [
+                    [112.568448, 37.92898],
+                    [112.568213, 37.928322],
+                    [112.569575, 37.928322],
+                    [112.569575, 37.928839],
+                    [112.570045, 37.928815],
+                    [112.571125, 37.928486],
+                    [112.57183, 37.928486],
+                    [112.57183, 37.928886],
+                    [112.573732, 37.928886],
+                    [112.574107, 37.924518],
+                    [112.574906, 37.924448],
+                    [112.574953, 37.923931],
+                    [112.577723, 37.923814],
+                    [112.577958, 37.923532],
+                    [112.577982, 37.922499],
+                    [112.577817, 37.922334],
+                    [112.577747, 37.921043],
+                    [112.578569, 37.920738],
+                    [112.580782, 37.920661],
+                ],
+            },
+            geometry_name: 'the_geom',
+            properties: {
+                id: 116101,
+                name: '涓堝瓙澶�2鍙风嚎',
+                type: '涓堝瓙澶�2鍙风嚎',
+            },
+        },
+        {
+            type: 'Feature',
+            id: 'zzt_polyline.2',
+            geometry: {
+                type: 'LineString',
+                coordinates: [
+                    [112.577958, 37.920949],
+                    [112.578592, 37.920315],
+                    [112.578592, 37.918883],
+                    [112.577935, 37.918883],
+                ],
+            },
+            geometry_name: 'the_geom',
+            properties: {
+                id: 116102,
+                name: '涓堝瓙澶�2鍙风嚎',
+                type: '涓堝瓙澶�2鍙风嚎',
+            },
+        },
+        {
+            type: 'Feature',
+            id: 'zzt_polyline.3',
+            geometry: {
+                type: 'LineString',
+                coordinates: [
+                    [112.578263, 37.91893],
+                    [112.578258, 37.916259],
+                ],
+            },
+            geometry_name: 'the_geom',
+            properties: {
+                id: 116103,
+                name: '涓堝瓙澶�2鍙风嚎',
+                type: '涓堝瓙澶�2鍙风嚎',
+            },
+        },
+        {
+            type: 'Feature',
+            id: 'zzt_polyline.4',
+            geometry: {
+                type: 'LineString',
+                coordinates: [
+                    [112.577864, 37.920761],
+                    [112.580846, 37.918601],
+                    [112.583799, 37.917104],
+                    [112.584433, 37.918254],
+                    [112.585091, 37.917879],
+                    [112.585995, 37.919417],
+                    [112.585689, 37.919605],
+                    [112.585719, 37.92008],
+                    [112.585907, 37.92008],
+                    [112.585907, 37.919857],
+                ],
+            },
+            geometry_name: 'the_geom',
+            properties: {
+                id: 116104,
+                name: '涓堝瓙澶�2鍙风嚎',
+                type: '涓堝瓙澶�2鍙风嚎',
+            },
+        },
+        {
+            type: 'Feature',
+            id: 'zzt_polyline.5',
+            geometry: {
+                type: 'LineString',
+                coordinates: [
+                    [112.583834, 37.917092],
+                    [112.585666, 37.916247],
+                    [112.585619, 37.915883],
+                    [112.585314, 37.915883],
+                    [112.585314, 37.915448],
+                    [112.585079, 37.915448],
+                    [112.585102, 37.915953],
+                    [112.584832, 37.916129],
+                    [112.584809, 37.915754],
+                ],
+            },
+            geometry_name: 'the_geom',
+            properties: {
+                id: 116105,
+                name: '涓堝瓙澶�2鍙风嚎',
+                type: '涓堝瓙澶�2鍙风嚎',
+            },
+        },
+        {
+            type: 'Feature',
+            id: 'zzt_polyline.6',
+            geometry: {
+                type: 'LineString',
+                coordinates: [
+                    [112.577988, 37.922493],
+                    [112.577494, 37.922516],
+                ],
+            },
+            geometry_name: 'the_geom',
+            properties: {
+                id: 115106,
+                name: '涓堝瓙澶�2鍙风嚎',
+                type: '涓堝瓙澶�2鍙风嚎',
+            },
+        },
+    ],
+};
+export default road;
\ No newline at end of file

--
Gitblit v1.9.3