From e27e8bcfe31730a9a35ddf09cf4386509b2608b1 Mon Sep 17 00:00:00 2001
From: quanyawei <401863037@qq.com>
Date: Wed, 20 Dec 2023 14:36:41 +0800
Subject: [PATCH] fix:热力图播放

---
 src/views/Listdata/index.vue |  207 ++++++++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 186 insertions(+), 21 deletions(-)

diff --git a/src/views/Listdata/index.vue b/src/views/Listdata/index.vue
index ae35e81..acc59f9 100644
--- a/src/views/Listdata/index.vue
+++ b/src/views/Listdata/index.vue
@@ -12,7 +12,7 @@
         style="width: 21rem"
       />
       <!-- <div> -->
-      <el-select
+      <!-- <el-select
         v-model="value"
         placeholder="������������"
         style="margin-left: 20px"
@@ -23,23 +23,62 @@
           :label="item.label"
           :value="item.value"
         />
-      </el-select>
-      <el-date-picker
-        v-model="timevalue"
-        type="datetimerange"
-        range-separator="���"
-        value-format="yyyy-MM-dd HH"
-        start-placeholder="������������"
-        :picker-options="pickerOptions"
-        end-placeholder="������������"
-        style="margin-left: 1rem"
-      >
-      </el-date-picker>
+      </el-select> -->
+      <div style="margin-left: 1.5rem">
+        <el-cascader
+          v-model="value"
+          :options="newSensor"
+          :props="props"
+          collapse-tags
+          clearable
+        ></el-cascader>
+      </div>
+      <div>
+        <el-select
+          v-model="select1"
+          placeholder="���������"
+          style="margin-left: 1.5rem; width: 15rem"
+        >
+          <el-option
+            v-for="item in options1"
+            :key="item.value"
+            :label="item.label"
+            :value="item.value"
+          >
+          </el-option>
+        </el-select>
+      </div>
+      <component
+        :is="dataType"
+        style="padding-left: 0; margin-left: 20px; width: 160px"
+        @sendPickerChild="showPickerChild"
+        class="select11"
+      />
 
-      <el-button type="primary" @click="toExcel()" style="margin-left: 20px"
+      <!-- <el-button type="primary" @click="toExcel()" style="margin-left: 20px"
         >������</el-button
+      > -->
+      <!-- <el-dropdown @command="handleCommand">
+        <el-button type="primary" @click="toExcel()" style="margin-left: 20px"
+          >������<i class="el-icon-arrow-down el-icon--right"></i
+        ></el-button>
+        <el-dropdown-menu slot="dropdown">
+          <el-dropdown-item command="expNew">������(���)</el-dropdown-item>
+        </el-dropdown-menu>
+      </el-dropdown> -->
+      <el-dropdown
+        split-button
+        type="primary"
+        @click="toExcel()"
+        @command="handleCommand"
+        style="margin-left: 20px"
       >
-      <el-button @click="exportMon">������</el-button>
+        ������
+        <el-dropdown-menu slot="dropdown">
+          <el-dropdown-item command="expNew">������(���)</el-dropdown-item>
+        </el-dropdown-menu>
+      </el-dropdown>
+      <el-button @click="exportMon" style="margin-left: 10px">������</el-button>
     </div>
     <el-table
       :data="dateList"
@@ -56,6 +95,14 @@
         :key="item"
       >
       </el-table-column>
+      <!-- <el-table-column
+        v-for="item in columnList"
+        :prop="item.props"
+        :label="item.label"
+        width="180px"
+        :key="item.label"
+      >
+      </el-table-column> -->
     </el-table>
   </div>
 </template>
@@ -66,7 +113,23 @@
 import FileSaver from 'file-saver'
 import XLSX2 from 'xlsx-style'
 import XLSX from 'xlsx'
+import DatePicker from '@/components/Form/DatePicker'
+import MouthPicker from '@/components/Form/MouthPicker'
+import HourPicker from '@/components/Form/HourPicker'
+import HourPicker1 from '@/components/Form/HourPicker1'
+import CustomPicker from '@/components/Form/CustomPicker'
+import CustomPicker1 from '@/components/Form/CustomPicker1'
+import TimePicker1 from '@/components/Form/TimePicker1'
 export default {
+  components: {
+    DatePicker,
+    MouthPicker,
+    HourPicker,
+    CustomPicker,
+    CustomPicker1,
+    TimePicker1,
+    HourPicker1,
+  },
   data() {
     // ������������������
     return {
@@ -79,6 +142,23 @@
       columnList: [], //���������������
       dateList: [],
       timevalue: [],
+      select1: '������',
+      dataType: 'HourPicker',
+      unit: 'day',
+      options1: [
+        {
+          label: '���������',
+          value: '���������',
+        },
+        {
+          label: '������',
+          value: '������',
+        },
+        {
+          label: '������',
+          value: '������',
+        },
+      ],
       pickerOptions: {
         disabledDate: (time) => {
           return time.getTime() > new Date()
@@ -90,6 +170,24 @@
   computed: {},
   // ������data������������������
   watch: {
+    select1(nv, ov) {
+      if (nv === '������') {
+        this.dataType = 'HourPicker'
+        this.unit = 'day'
+      } else if (nv === '������') {
+        this.dataType = 'DatePicker'
+        this.unit = 'month'
+      } else if (nv === '������') {
+        this.dataType = 'MouthPicker'
+        this.unit = 'month'
+      } else if (nv === '���������') {
+        this.dataType = 'HourPicker1'
+        this.unit = 'hours'
+      } else {
+        this.dataType = 'CustomPicker'
+        this.unit = 'hours'
+      }
+    },
     // ���������������������������
     newMac(newVal, oldval) {
       this.newMac1 = []
@@ -119,6 +217,56 @@
   activated() {},
   // ������������
   methods: {
+    handleCommand(command) {
+      if (this.newMac1 == '') {
+        this.$message.warning('���������������')
+        return
+      }
+      if (this.value == '') {
+        this.$message.warning('���������������')
+        return
+      }
+      this.dateList = []
+      this.columnList = []
+      this.$request({
+        url: 'monitorPoint/exlOut',
+        method: 'post',
+        data: {
+          macs: this.newMac1,
+          sensors: this.value.toString(),
+          // startTime: this.timevalue[0],
+          // endTime: this.timevalue[1],
+          type: this.unit,
+          times: this.newData instanceof Array ? this.newData : [this.newData],
+        },
+        responseType: 'blob',
+      }).then((res) => {
+        console.log('������������', res)
+        this.getOutExcel('������������������.xlsx', res)
+      })
+    },
+    getOutExcel(fileName, res) {
+      let blob = new Blob([res], { type: 'application/x-xls' })
+      if (window.navigator.msSaveOrOpenBlob) {
+        //������ IE & EDGE
+        navigator.msSaveBlob(blob, fileName)
+      } else {
+        var link = document.createElement('a')
+        // ������������������������URL������
+        const url = window.URL || window.webkitURL || window.moxURL
+        // ������������������
+        link.href = url.createObjectURL(blob)
+        //������������������
+        link.download = fileName
+        //������������������
+        link.click()
+        //������������������������
+        url.revokeObjectURL(link.href)
+      }
+    },
+    showPickerChild(data) {
+      this.newData = data
+    },
     getData() {
       this.$request({
         url: '/monitorPoint/queryMonitorPoints',
@@ -154,6 +302,7 @@
     },
     // ���������������������������������
     getSensor() {
+      this.newSensor = []
       this.$request({
         url: '/deviceInfo/getMacSensors',
         method: 'post',
@@ -174,7 +323,6 @@
         })
     },
     exportMon() {
-      console.log(this.timevalue)
       if (this.newMac1 == '') {
         this.$message.warning('���������������')
         return
@@ -183,7 +331,6 @@
         this.$message.warning('���������������')
         return
       }
-      
       this.dateList = []
       this.columnList = []
       this.$request({
@@ -192,19 +339,37 @@
         data: {
           macs: this.newMac1,
           sensors: this.value.toString(),
-          startTime: this.timevalue[0],
-          endTime: this.timevalue[1],
+          // startTime: this.timevalue[0],
+          // endTime: this.timevalue[1],
+          type: this.unit,
+          times: this.newData instanceof Array ? this.newData : [this.newData],
         },
       }).then((res) => {
-        console.log(res, 11)
+        //console.log(res, 11)
         this.tableData = res.data
-        console.log(this.tableData, 'this.tableData')
         for (let key in this.tableData[0]) {
           this.columnList.push(key)
         }
         for (let item of this.tableData) {
           this.dateList.push(item)
         }
+        // this.tableData = res.data
+        // for (let key in this.tableData[0]) {
+        //   let prop = key
+        //   if (String(key).indexOf('.') > -1) {
+        //     prop = key.replace(/\./g, '')
+        //   }
+        //   this.columnList.push({ label: key, props: prop })
+        // }
+        // for (let item of this.tableData) {
+        //   for (let key in this.tableData[0]) {
+        //     if (String(key).indexOf('.') > -1) {
+        //       let newKey = key.replace(/\./g, '')
+        //       item[newKey] = item[key]
+        //     }
+        //   }
+        //   this.dateList.push(item)
+        // }
       })
     },
     toExcel() {

--
Gitblit v1.8.0