From a337fc824fc85b3771a422b373dfcb9ae1161f8c Mon Sep 17 00:00:00 2001
From: quanyawei <401863037@qq.com>
Date: Thu, 21 Dec 2023 16:31:08 +0800
Subject: [PATCH] fix:热力图播放

---
 src/views/UVA/index.vue |  404 +++++++++++++++++++++++++++++++++++++++++----------------
 1 files changed, 289 insertions(+), 115 deletions(-)

diff --git a/src/views/UVA/index.vue b/src/views/UVA/index.vue
index fc3a6f3..0266911 100644
--- a/src/views/UVA/index.vue
+++ b/src/views/UVA/index.vue
@@ -7,18 +7,17 @@
       >
         <div style="width: 274px; margin: 13px auto">
           <el-date-picker
+            ref="datePick"
+            v-model="datenum"
             :picker-options="pickerOptions"
             placeholder="������������"
             popper-class="jlpMySelectPopper"
-            ref="datePick"
-            v-model="datenum"
+            value-format="yyyy-MM-dd"
+            style="width: 280px"
             @change="chooseDate"
             @blur="chooseDate1"
             @focus="chooseDate2"
-            value-format="yyyy-MM-dd"
-            style="width: 280px"
-          >
-          </el-date-picker>
+          />
         </div>
         <!-- <el-card class="box-card" style="width: 274px; margin: 13px auto"> -->
 
@@ -43,12 +42,7 @@
           class="coll"
         >
           <!--accordion ���������������-->
-          <el-collapse
-            accordion
-            style="box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1)"
-            v-show="shou1 === true"
-            v-loading="loading"
-          >
+          <el-collapse v-show="shou1 === true" v-loading="loading">
             <el-collapse-item
               style="text-indent: 2em; position: relative; padding-botton: 10px"
             >
@@ -66,13 +60,13 @@
             </el-collapse-item>
           </el-collapse>
           <el-collapse
+            v-show="shou1 === false"
+            ref="collapse"
             v-model="asideData.activeNames"
+            v-loading="loading"
             accordion
             style="box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1)"
             @change="handleChange"
-            ref="collapse"
-            v-show="shou1 === false"
-            v-loading="loading"
           >
             <el-collapse-item
               v-for="(item1, index) in asideData.uavTimeFly"
@@ -130,34 +124,26 @@
         >
           <div class="numss">
             <el-radio-group
+              v-if="selecttrue === 1"
               v-model="radioSeven"
               size="medium"
-              @change="changeCode"
-              v-if="selecttrue === 1"
               style="margin-top: 10px; margin-left: 10px"
+              @change="changeCode"
             >
-              <el-radio-button label="PM2.5"></el-radio-button>
-              <el-radio-button label="PM10"></el-radio-button>
-              <el-radio-button label="SO2"></el-radio-button>
-              <el-radio-button label="NO2"></el-radio-button>
-              <el-radio-button label="CO"></el-radio-button>
-              <el-radio-button label="03"></el-radio-button>
-              <el-radio-button label="TVOC"></el-radio-button>
+              <el-radio-button label="PM2.5" />
+              <el-radio-button label="PM10" />
+              <el-radio-button label="SO2" />
+              <el-radio-button label="NO2" />
+              <el-radio-button label="CO" />
+              <el-radio-button label="03" />
+              <el-radio-button label="TVOC" />
             </el-radio-group>
-            <div class="Duo" v-if="selecttrue === 2">
+            <div v-if="selecttrue === 2" class="Duo">
               <div class="spantuu">
                 <span>���������������������������(���): </span>
-                <el-input
-                  class="inputtu"
-                  v-model="tallone"
-                  ref="uvas"
-                ></el-input>
+                <el-input ref="uvas" v-model="tallone" class="inputtu" />
                 --
-                <el-input
-                  class="inputtu"
-                  v-model="talltwo"
-                  ref="uvas"
-                ></el-input>
+                <el-input ref="uvas" v-model="talltwo" class="inputtu" />
               </div>
               <!-- <el-select v-model="Duovalue" placeholder="������������" class="slee">
                 <el-option
@@ -171,12 +157,12 @@
               <div class="spantu">
                 <span>������������(���): </span
                 ><el-input
-                  class="inputtu"
+                  ref="uvas"
                   v-model="uvasize"
+                  class="inputtu"
                   clearable
                   placeholder="���������������"
-                  ref="uvas"
-                ></el-input>
+                />
               </div>
               <el-select v-model="Duovalue" placeholder="������������" class="slee">
                 <el-option
@@ -184,8 +170,7 @@
                   :key="item.code"
                   :label="item.name"
                   :value="item.name"
-                >
-                </el-option>
+                />
               </el-select>
               <!-- <div class="spantuu">
                 <span>���������������������������(���): </span>
@@ -203,16 +188,24 @@
               </div> -->
             </div>
             <div v-if="selecttrue === 1" style="margin-left: 10px">
-              <el-button type="primary" @click="gengD" style="margin-top: 10px"
-                >������������</el-button
-              >
+              <el-button type="primary" style="margin-top: 10px" @click="gengD">
+                ������������
+              </el-button>
             </div>
             <div
               v-if="selecttrue === 2"
               style="margin-left: 10px; margin-top: 10px"
             >
-              <el-button class="gengD" @click="shou">������</el-button>
-              <el-button type="primary" @click="selectDuo">������</el-button>
+              <el-button
+                size="medium"
+                type="primary"
+                icon="el-icon-setting"
+                @click="dialogFormVisible = true"
+              >
+                6���������
+              </el-button>
+              <el-button class="gengD" @click="shou"> ������ </el-button>
+              <el-button type="primary" @click="selectDuo"> ������ </el-button>
             </div>
           </div>
           <!-- <div class="Duo" v-if="selecttrue === 2">
@@ -247,6 +240,75 @@
         <div id="map_container" v-loading="loading1" />
       </el-main>
     </el-container>
+    <el-dialog title="6���������" :visible.sync="dialogFormVisible" width="1000px">
+      <el-descriptions title="������6���" :column="3" border>
+        <el-descriptions-item
+          label="PM2.5 | ug/m��"
+          label-class-name="my-label"
+          content-class-name="my-content"
+        >
+          22
+        </el-descriptions-item>
+        <el-descriptions-item label="PM10 | ug/m��"> 34 </el-descriptions-item>
+        <el-descriptions-item label="SO2 | ug/m��"> 4 </el-descriptions-item>
+        <el-descriptions-item label="NO2 | ug/m��"> 16 </el-descriptions-item>
+        <el-descriptions-item label="CO | mg/m��"> 0.5 </el-descriptions-item>
+        <el-descriptions-item label="O3 | ug/m��"> 149 </el-descriptions-item>
+      </el-descriptions>
+      <!-- <el-descriptions title="���������������"  border>
+      </el-descriptions> -->
+      <div
+        style="
+          font-size: 16px;
+          font-weight: 700;
+          margin: 10px 0 20px 0;
+          font-size: 16px;
+          font-weight: 700;
+          color: #303133;
+        "
+      >
+        ���������������
+      </div>
+      <el-table :data="sensorTableData" border>
+        <el-table-column prop="sensorName" label="������" />
+        <el-table-column prop="unit" label="������" />
+        <el-table-column label="������">
+          <template slot-scope="scope">
+            <el-input v-model="scope.row.tab1" placeholder="���������������" />
+            <!-- <span v-show="!scope.row.show">{{ scope.row.tab1 }}</span> -->
+          </template>
+        </el-table-column>
+        <el-table-column label="������">
+          <template slot-scope="scope">
+            <el-input v-model="scope.row.tab2" placeholder="���������������" />
+          </template>
+        </el-table-column>
+        <el-table-column label="������">
+          <template slot-scope="scope">
+            <el-input v-model="scope.row.tab3" placeholder="���������������" />
+          </template>
+        </el-table-column>
+        <el-table-column label="������">
+          <template slot-scope="scope">
+            <el-input v-model="scope.row.tab4" placeholder="���������������" />
+          </template>
+        </el-table-column>
+        <el-table-column label="������">
+          <template slot-scope="scope">
+            <el-input v-model="scope.row.tab5" placeholder="���������������" />
+          </template>
+        </el-table-column>
+        <el-table-column label="������">
+          <template slot-scope="scope">
+            <el-input v-model="scope.row.tab6" placeholder="���������������" />
+          </template>
+        </el-table-column>
+      </el-table>
+      <div slot="footer" class="dialog-footer">
+        <el-button @click="dialogFormVisible = false"> ��� ��� </el-button>
+        <el-button type="primary" @click="customLevel"> ��� ��� </el-button>
+      </div>
+    </el-dialog>
   </div>
 </template>
 
@@ -314,12 +376,20 @@
         break
       }
 
-      if (dLat > 0) pLat = wgsLat
-      else mLat = wgsLat
-      if (dLon > 0) pLon = wgsLon
-      else mLon = wgsLon
+      if (dLat > 0) {
+        pLat = wgsLat
+      } else {
+        mLat = wgsLat
+      }
+      if (dLon > 0) {
+        pLon = wgsLon
+      } else {
+        mLon = wgsLon
+      }
 
-      if (++i > 10000) break
+      if (++i > 10000) {
+        break
+      }
     }
     return { lat: wgsLat, lon: wgsLon }
   },
@@ -373,8 +443,12 @@
     var y =
       Math.sin((latA * this.PI) / 180.0) * Math.sin((latB * this.PI) / 180.0)
     var s = x + y
-    if (s > 1) s = 1
-    if (s < -1) s = -1
+    if (s > 1) {
+      s = 1
+    }
+    if (s < -1) {
+      s = -1
+    }
     var alpha = Math.acos(s)
     var distance = alpha * earthR
     return distance
@@ -440,12 +514,15 @@
 export default {
   filters: {
     sensorFilter: function (value) {
-      if (!value) return ''
+      if (!value) {
+        return ''
+      }
       return json[value]
     },
   },
   data() {
     return {
+      dialogFormVisible: false,
       chosee: 1,
       shou1: true,
       zhanK1: 1,
@@ -456,7 +533,7 @@
       selecttrue: 1,
       pickerOptions: {
         cellClassName: (time) => {
-          let timeDate = moment(time.getTime()).format('yyyy-MM-DD')
+          const timeDate = moment(time.getTime()).format('yyyy-MM-DD')
           if (this.timeNums.includes(timeDate)) {
             return 'dateArrClass' // ������������������������������������������
           }
@@ -525,7 +602,9 @@
           // ������������ ������������
           this.timeOne = minDate.getTime() // ��������������������� ������������������
           // ������������������������������������������������������������
-          if (maxDate) this.timeOne = ''
+          if (maxDate) {
+            this.timeOne = ''
+          }
         },
         disabledDate: (time) => {
           if (this.timeOne) {
@@ -546,7 +625,6 @@
       noneData: true,
       defaultData: [],
       carMac: null,
-      dialogFormVisible: false,
       optionsduo: [
         { code: 'a34004', name: 'PM2.5' },
         { code: 'a34002', name: 'PM10' },
@@ -700,7 +778,7 @@
       endTime: '',
       dataDate: '',
       sensorTime: [],
-      uvasize: 50,
+      uvasize: 20,
       timeValue: [
         new Date(2020, 1, 1, 0, 0, 0),
         new Date(2022, 12, 31, 23, 59, 59),
@@ -708,14 +786,89 @@
       timeNums: [],
       batchs: '',
       macs: '',
+      sensorTableData: [
+        {
+          sensorName: 'PM2.5',
+          unit: 'ug/m��',
+          tab1: '35',
+          tab2: '75',
+          tab3: '115',
+          tab4: '150',
+          tab5: '250',
+          tab6: '350',
+        },
+        {
+          sensorName: 'PM10',
+          unit: 'ug/m��',
+          tab1: '50',
+          tab2: '150',
+          tab3: '250',
+          tab4: '350',
+          tab5: '420',
+          tab6: '500',
+        },
+        {
+          sensorName: 'SO2',
+          unit: 'ug/m��',
+          tab1: '150',
+          tab2: '500',
+          tab3: '650',
+          tab4: '800',
+          tab5: '',
+          tab6: '',
+        },
+        {
+          sensorName: 'NO2',
+          unit: 'ug/m��',
+          tab1: '100',
+          tab2: '200',
+          tab3: '700',
+          tab4: '1200',
+          tab5: '2340',
+          tab6: '3090',
+        },
+        {
+          sensorName: 'CO',
+          unit: 'mg/m��',
+          tab1: '5',
+          tab2: '10',
+          tab3: '35',
+          tab4: '60',
+          tab5: '90',
+          tab6: '120',
+        },
+        {
+          sensorName: 'O3',
+          unit: 'ug/m��',
+          tab1: '160',
+          tab2: '200',
+          tab3: '300',
+          tab4: '400',
+          tab5: '800',
+          tab6: '1000',
+        },
+        {
+          sensorName: 'TVOC',
+          unit: 'mg/m��',
+          tab1: '0.1',
+          tab2: '0.3',
+          tab3: '0.5',
+          tab4: '0.7',
+          tab5: '0.9',
+          tab6: '1',
+        },
+        {
+          sensorName: '���������',
+          unit: 'ug/m��',
+          tab1: '300',
+          tab2: '500',
+          tab3: '1000',
+          tab4: '10000',
+          tab5: '20000',
+          tab6: '50000',
+        },
+      ],
     }
-  },
-
-  mounted() {
-    this.initStart()
-    // this.$refs.datePick.focus()
-    // this.getDate()
-    // this.flyData()
   },
   watch: {
     dataTypeValue(n, o) {
@@ -740,6 +893,16 @@
     deep: true,
     immediate: true,
   },
+
+  mounted() {
+    this.$nextTick(() => {
+      this.initStart()
+    })
+
+    // this.$refs.datePick.focus()
+    // this.getDate()
+    // this.flyData()
+  },
   created() {
     this.newTime(this.timeValue)
     this.newDate()
@@ -748,6 +911,10 @@
     // this.getFlyData()
   },
   methods: {
+    customLevel() {
+      this.selectDuo()
+      this.dialogFormVisible = false
+    },
     selectDuo() {
       // console.log(2115);
       if (this.chosee === 1) {
@@ -763,7 +930,8 @@
       }
       this.$request({
         // url: '/uav/queryDataByBatch',
-        url: '/uav/test',
+        url: '/uav/getUav',
+        // url: '/uav/test',
         method: 'post',
         data: {
           batch: this.batchs,
@@ -813,11 +981,11 @@
       //   return
       // }
       this.selecttrue = 2
-      $('.numss').css({ width: '930px' })
+      $('.numss').css({ width: '1050px' })
     },
     shou() {
       this.selecttrue = 1
-      $('.numss').css({ width: '690px' })
+      $('.numss').css({ width: '700px' })
     },
     parseTime(time, cFormat) {
       if (arguments.length === 0 || !time) {
@@ -878,12 +1046,6 @@
       })
       return arr
     },
-    // ���������������������������������
-    changeCarData(e) {
-      this.carMac = e
-      this.getStart()
-    },
-    // ���������������������������
     // ���������������������������������������
     Rad(d) {
       return (d * Math.PI) / 180.0 // ���������������������������������������������������
@@ -948,7 +1110,6 @@
         }
         this.dataType = 'history'
         // this.map = null
-        this.getStart()
       }
     },
     // ���������������������������������
@@ -1011,7 +1172,8 @@
       }
       this.$request({
         // url: '/uav/queryDataByBatch',
-        url: '/uav/test',
+        // url: '/uav/test',
+        url: '/uav/getUav',
         method: 'post',
         data: {
           batch: item.batch,
@@ -1073,6 +1235,9 @@
       const that = this
       if (!res) {
         that.map = new BMapGL.Map('map_container')
+        console.log('BMapGL', BMapGL)
+        console.log('BMapGL', BMapGL)
+        console.log('window', window.BMapGL)
         that.map.enableScrollWheelZoom(true) // ������������������������������������������������������s
         that.map.setMapType(BMAP_EARTH_MAP) // ���������������������������������
         that.map.setDisplayOptions({
@@ -1173,7 +1338,7 @@
         // ���������������������������������
         // if (!that.showPoints) {
         //   console.log(111)
-        //   that.map = new BMapGL.Map('map_container')
+        //   that.map = new window.BMapGL.Map('map_container')
         // }
         // that.map.enableScrollWheelZoom(true) // ������������������������������������������������������s
         // that.map.setMapType(BMAP_EARTH_MAP) // ���������������������������������
@@ -1194,7 +1359,7 @@
         //   building: true, // ������������������
         //   poiText: false, // ������poi������
         // })
-        // that.map.addControl(new BMapGL.NavigationControl3D()) // ������3d������
+        // that.map.addControl(new window.BMapGL.NavigationControl3D()) // ������3d������
         if (this.responseJSON.length === 0) {
           showNoPoints()
         }
@@ -1270,12 +1435,12 @@
               new BMapGL.Point(sw.lng, ne.lat), // ���������
             ],
             {
-              strokeWeight: 0.1, //������������������,������������������
+              strokeWeight: 0.1, // ������������������,������������������
               // strokeOpacity: 0.0, //������������������
-              fillColor: color, //���������������������
-              fillOpacity: 0.8, //������������������������0~1������
-              strokeColor: 'black', //������������������
-              strokeStyle: 'solid', //������������������solid���dashed���
+              fillColor: color, // ���������������������
+              fillOpacity: 0.8, // ������������������������0~1������
+              strokeColor: 'black', // ������������������
+              strokeStyle: 'solid', // ������������������solid���dashed���
             }
           )
           that.map.addOverlay(polygon)
@@ -1847,20 +2012,26 @@
       }
       this.initStart(this.carData)
     },
-    changeCode1(index) {
-      this.changeColor1 = index
-      if (index === 0) {
-        this.viewKey = '2D'
-      } else {
-        this.viewKey = '3D'
-      }
-      this.getStart()
-    },
   },
 }
 </script>
 
-<style  lang="scss" >
+<style  lang="scss" scoped>
+.main-container {
+  display: -webkit-box;
+  display: -ms-flexbox;
+  display: flex;
+  -webkit-box-orient: vertical;
+  -webkit-box-direction: normal;
+  -ms-flex-flow: column;
+  flex-flow: column;
+  min-height: 100%;
+  -webkit-transition: margin-left 0.28s;
+  transition: margin-left 0.28s;
+  margin-left: 210px;
+  position: relative;
+  height: 100%;
+}
 /deep/.BMap_cpyCtrl {
   display: none;
 }
@@ -2035,20 +2206,7 @@
 /deep/.inputNum {
   width: 4% !important;
 }
-.dateArrClass {
-  position: relative;
-}
-.dateArrClass > div ::after {
-  content: '';
-  position: absolute;
-  right: 8px;
-  top: 23px;
-  width: 5px;
-  height: 5px;
-  border-radius: 50%;
-  z-index: 999;
-  background-color: #f40;
-}
+
 .numss {
   width: 700px;
   background-color: white;
@@ -2095,17 +2253,10 @@
     width: 20%;
   }
 }
-.jlpMySelectPopper.el-picker-panel {
-  width: 280px;
-  height: 330px;
-}
-.jlpMySelectPopper.el-date-picker table {
-  width: 88%;
-}
+
 .BMap_cpyCtrl {
   display: none;
 }
-
 .anchorBL {
   display: none;
 }
@@ -2120,4 +2271,27 @@
 .el-scrollbar__wrap {
   overflow-x: hidden;
 }
-</style>
\ No newline at end of file
+</style>
+<style >
+.jlpMySelectPopper.el-picker-panel {
+  width: 280px;
+  height: 330px;
+}
+.jlpMySelectPopper.el-date-picker table {
+  width: 88%;
+}
+.dateArrClass {
+  position: relative;
+}
+.dateArrClass > div ::after {
+  content: '';
+  position: absolute;
+  right: 8px;
+  top: 23px;
+  width: 5px;
+  height: 5px;
+  border-radius: 50%;
+  z-index: 999;
+  background-color: #f40;
+}
+</style>

--
Gitblit v1.8.0