From ab8f3297f7c8243d486c9da0900e4f813b2ea2df Mon Sep 17 00:00:00 2001
From: suerprisePlus <15810472099@163.com>
Date: 星期三, 27 十一月 2024 17:16:46 +0800
Subject: [PATCH] 功能更新

---
 src/views/visualization/list/chart.vue |  112 ++++++++++++++++++++++++++++++++++++++++++-------------
 1 files changed, 85 insertions(+), 27 deletions(-)

diff --git a/src/views/visualization/list/chart.vue b/src/views/visualization/list/chart.vue
index 214e717..94ec44c 100644
--- a/src/views/visualization/list/chart.vue
+++ b/src/views/visualization/list/chart.vue
@@ -1,7 +1,7 @@
 <template>
     <div class="chartListBox" :childData="childData">
-        <div class="aside-title">{{ childData.title }}</div>
-        <div class="echartBox">
+        <div class="aside-title"> 闆�</div>
+        <div class="echartBox" v-show="roadItem.address">
             <table class="chartTable">
                 <tr>
                     <th></th>
@@ -22,24 +22,32 @@
                         </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.type" class="elButton" type="primary" plain
+                            size="mini" @click="setChangeItem()">璇︽儏</el-button>
+                        <el-button v-show="flagData == roadItem.type" class="elButton" type="danger" plain
+                            size="mini" @click="setCannelItem()">閲嶇疆</el-button>
                     </td>
                 </tr>
             </table>
+            <div class="chartEchart">
+                <div class="myChart">
+                    <div id="chartRain" class="myChartID"></div>
+
+
+                </div>
+            </div>
         </div>
     </div>
 </template>
 
 <script>
 import * as echarts from 'echarts';
+import mapWeather from './mapWeather';
 
 export default {
     props: {
@@ -49,35 +57,61 @@
         }
     },
     watch: {
-        childData(newValue, oldValue) {
-            if (newValue) {
-                this.chartId = newValue.id;
-                this.title = newValue.title;
-                setTimeout(() => {
-                    this.setEchartChange(newValue)
-                }, 1000);
-            }
-        }
+        "$store.state.mapLayers.disasterRain": {
+            handler(newVal, oldVal) {
+                if (newVal.val) {
+                    this.setEchartChange(newVal);
+                }
+            },
+            deep: true
+        },
     },
     data() {
         return {
             chartId: "",
             title: "",
             flagData: null,
+            roadItem: {},
         }
+    },
+    created() {
+        window.addEventListener('POIDetailDataChange', this.handlePOIDetailDataChange)
+    },
+    mounted() {
+
     },
     methods: {
         setCannelItem() {
+            this.$store.state.mapLayers.weatherFlag = false;
+            this.$store.state.mapLayers.weatherFlag = 2
             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.type;
+            var event = new Event('POIDetailDataChange');
+            this.$store.state.mapLayers.weatherMsg = mapWeather.getWearData(res);
+            this.$store.state.mapLayers.weatherFlag = 1;
+            window.dispatchEvent(event);
+            mapWeather.setRegionWeatherType(res);
+        },
+        showEchart() {
 
-        setEchartChange(res) {
-            if (!res.data) return;
-            const data = res.data;
-            const id = document.getElementById(this.chartId)
+            if (!this.roadItem) return
+            if (!this.roadItem.data) return;
+            var div = document.getElementsByClassName("chartEchart")[0];
+            if (div.offsetWidth == 0 || div.offsetHeight == 0) return
+            document.getElementById("chartRain").style.width = div.offsetWidth + "px"
+            document.getElementById("chartRain").style.height = div.offsetHeight + "px"
+            var data = this.roadItem.data;
+
+
+            const id = document.getElementById("chartRain")
             var std = [];
             for (var i = 0; i < data.length; i++) {
                 var h = i + 1
@@ -86,8 +120,14 @@
             }
             const myChart = echarts.init(id);
             var option = {
+                grid: {
+                    left: "10%",
+                    top: "10%",
+                    right: "5%",
+                    bottom: "25%",
+                },
                 title: {
-                    text: res.address,
+                    text: "",
                     textStyle: {
                         color: "white"
                     }
@@ -131,6 +171,13 @@
 
 
             option && myChart.setOption(option);
+        },
+        setEchartChange(res) {
+
+
+            this.roadItem = res.val[0]
+            this.showEchart();
+
         }
     }
 }
@@ -152,7 +199,7 @@
         color: #fff;
         width: 100%;
         height: 45px;
-        line-height: 45px;
+        line-height: 30px;
         background-size: 100% 100%;
         background-repeat: no-repeat;
     }
@@ -164,11 +211,22 @@
         color: white;
         display: flex;
         flex-direction: column;
+
         // justify-content: space-around;
+        .chartEchart {
+            flex: 1;
+        }
 
         .myChart {
             width: 100%;
             height: 100%;
+            position: relative;
+
+
+            .myChartID {
+                position: absolute;
+
+            }
         }
 
         .chartTd {

--
Gitblit v1.9.3