From 63c0ecf98f3705b4c70e4bafee5f325966a5777b Mon Sep 17 00:00:00 2001
From: guoshipeng <3194674006@qq.com>
Date: Thu, 06 Jul 2023 09:13:54 +0800
Subject: [PATCH] 提交

---
 src/views/reportForm/index.vue |  481 ++++++++++++++++++++++------------------------------
 1 files changed, 204 insertions(+), 277 deletions(-)

diff --git a/src/views/reportForm/index.vue b/src/views/reportForm/index.vue
index 844908d..c4c3266 100644
--- a/src/views/reportForm/index.vue
+++ b/src/views/reportForm/index.vue
@@ -1,105 +1,79 @@
 <template>
-  <div style="width:100%">
-    <div class="topSelect">
-      <div>
-        <el-select v-model="value" placeholder="������������" style="width: 300px;">
-          <el-option
-            v-for="item in options"
-            :key="item.value"
-            :label="item.label"
-            :value="item.value"
-          />
-        </el-select>
-        <el-radio-group v-model="radio1" style="margin-left:20px">
-          <el-radio-button label="������" />
-          <el-radio-button label="������" />
-          <el-radio-button label="������" />
-          <el-radio-button label="������" />
-          <el-radio-button label="���������" />
-        </el-radio-group>
+  <div style="width: 100%">
+    <div>
+      <div class="topSelect">
+        <el-cascader
+          v-model="newMac"
+          :options="options"
+          :props="props"
+          collapse-tags
+          clearable
+          placeholder="������������"
+          style="width: 21rem"
+        />
+        <div>
+          <el-radio-group v-model="select1" style="margin-left: 20px">
+            <el-radio-button label="���������" />
+            <el-radio-button label="������" />
+            <el-radio-button label="������" />
+            <el-radio-button label="������" />
+            <el-radio-button label="���������" />
+          </el-radio-group>
+        </div>
+        <component
+          :is="dataType"
+          style="padding-left: 0; margin-left: 30px"
+          @sendPickerChild="showPickerChild"
+          class="select11"
+        />
         <el-date-picker
           v-if="dateDisplay"
-          v-model="value1"
-          style="width:400px"
+          v-model="newData"
+          style="width: 400px; margin-left: 10px"
           type="daterange"
           range-separator="���"
           start-placeholder="������������"
           end-placeholder="������������"
-          value-format="yyyy-MM-dd"
+          value-format="yyyy-MM-dd HH"
         />
+        <el-button
+          type="primary"
+          @click="getReportForm()"
+          style="margin-left: 10px"
+          >������</el-button
+        >
+        <el-button type="primary" @click="exportExcel()">������������</el-button>
       </div>
-      <el-button type="primary" @click="exportExcel()">������������</el-button>
     </div>
     <div class="topTitle">
       <el-table
         id="exportTab"
-        :default-sort="{prop: 'rank', order: 'ascending'}"
+        :default-sort="{ prop: 'rank', order: 'ascending' }"
         :data="tableData"
         border
         style="width: 100%"
+        max-height="800"
         :stripe="true"
         @sort-change="changeTableSort"
       >
-        <el-table-column
-          prop="rank"
-          label="������"
-        />
-        <el-table-column
-          prop="deviceName"
-          label="������"
-          width="180"
-        />
-        <el-table-column
-          prop="responsibleUnit"
-          label="������������"
-          width="180"
-        />
-        <el-table-column
-          prop="time"
-          label="������"
-          width="180"
-        />
-        <el-table-column
-          prop="aqi"
-          label="AQI"
-          sortable
-        />
+        <el-table-column prop="rank" label="������" />
+        <el-table-column prop="deviceName" label="������" width="180" />
+        <el-table-column prop="responsibleUnit" label="������������" width="180" />
+        <el-table-column prop="time" label="������" width="180" />
+        <el-table-column prop="aqi" label="AQI" sortable />
         <el-table-column
           prop="comIndex"
           label="������������"
           width="130"
           sortable
         />
-        <el-table-column
-          prop="a34004"
-          label="PM2.5"
-          sortable
-        />
-        <el-table-column
-          prop="a34002"
-          label="PM10"
-          sortable
-        />
-        <el-table-column
-          prop="a21026"
-          label="SO2"
-          sortable
-        />
-        <el-table-column
-          prop="a21004"
-          label="NO2"
-          sortable
-        />
-        <el-table-column
-          prop="a21005"
-          label="CO"
-          sortable
-        />
-        <el-table-column
-          prop="a05024"
-          label="O3_8H"
-          sortable
-        />
+        <el-table-column prop="a34004" label="PM2.5" sortable />
+        <el-table-column prop="a34002" label="PM10" sortable />
+        <el-table-column prop="a21026" label="SO2" sortable />
+        <el-table-column prop="a21004" label="NO2" sortable />
+        <el-table-column prop="a21005" label="CO" sortable />
+        <el-table-column prop="a05024" label="O3_8H" sortable />
+        <el-table-column prop="a99054" label="TVOC" sortable />
       </el-table>
     </div>
   </div>
@@ -110,14 +84,39 @@
 // ���������import������������������from'������������������';
 import FileSaver from 'file-saver'
 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'
+import weekPicker from '@/components/Form/weekPicker'
+
 export default {
-// import ���������������������������������������������������
-  components: {},
+  // import ���������������������������������������������������
+  components: {
+    DatePicker,
+    MouthPicker,
+    HourPicker,
+    CustomPicker,
+    CustomPicker1,
+    TimePicker1,
+    HourPicker1,
+    weekPicker,
+  },
   props: {},
   data() {
     // ������������������
     return {
+      newData: [],
+      props: { multiple: true },
+      newMac: '',
+      newMac1: [],
       options: [],
+      select1: '���������',
+      dataType: 'HourPicker1',
+      unit: '0',
       radio1: '',
       value: '',
       value1: '',
@@ -126,7 +125,7 @@
       tableData: [],
       dateDisplay: false,
       newKey: 0,
-      timearr: null
+      timearr: null,
       // pickerOptions1: {
       //   disabledDate(time) {
       //     console.log(time)
@@ -142,60 +141,45 @@
   computed: {},
   // ������data������������������
   watch: {
-    value(n, o) {
-      this.monitorPointId = n
-    },
-    value1(n, o) {
-      var timearr = this.getAll(n[0], n[1])
-      if (timearr.length <= 7) {
-        this.getReportForm(this.newKey)
-      } else {
-        this.$message({
-          message: '������������������������7���',
-          type: 'warning'
-        })
+    select1(nv, ov) {
+      if (nv === '������') {
+        this.dataType = 'HourPicker'
+        this.unit = 1
+      } else if (nv === '������') {
+        this.dataType = 'DatePicker'
+        this.unit = 3
+      } else if (nv === '������') {
+        this.dataType = 'weekPicker'
+        this.unit = 2
+      } else if (nv === '���������') {
+        this.dataType = 'HourPicker1'
+        this.unit = 0
       }
-    },
-    radio1(n, o) {
-      // var newKey
-      switch (n) {
-        case '������':
-          this.newKey = 0
-          break
-        case '������':
-          this.newKey = 1
-          break
-        case '������':
-          this.newKey = 2
-          break
-        case '������':
-          this.newKey = 3
-          break
-        case '���������':
-          this.newKey = 4
-          break
-        default:
-          this.newKey = 4
-          break
-      }
-      if (this.newKey === 4) {
+      if (nv === '���������') {
+        this.newData = []
         this.dateDisplay = true
+        this.unit = null
+        this.dataType = ''
       } else {
         this.dateDisplay = false
       }
-      // if (!this.newKey === 'custom') {
-      this.getReportForm(this.newKey)
-      // }
-    }
+    },
+    newMac(newVal, oldval) {
+      this.newMac1 = []
+      for (let i = 0; i < newVal.length; i++) {
+        // console.log(newVal[i], 111)
+        this.newMac1.push(newVal[i][1][1])
+      }
+      // ������������������������������������������
+    },
   },
+
   // ������������ - ��������������������������������� this ���������
   created() {
-    this.getMonitorPointId()
+    this.getData()
   },
   // ������������ - ��������������������������� DOM ���������
-  mounted() {
-
-  },
+  mounted() {},
   beforeCreate() {}, // ������������ - ������������
   beforeMount() {}, // ������������ - ������������
   beforeUpdate() {}, // ������������ - ������������
@@ -205,6 +189,9 @@
   activated() {},
   // ������������
   methods: {
+    showPickerChild(data) {
+      this.newData = data
+    },
     // ������������rank������(���������������������������������������������������������������)
     changeTableSort() {
       var sortTableData = this.$refs.mytable.tableData
@@ -213,111 +200,27 @@
         sortTableData[i].rank = i + 1
       }
     },
-    // changeTableSort({ column, prop, order }) {
-    //   var sortTableData = this.$refs.mytable.tableData
-    //   for (let i = 0; i < sortTableData.length; i++) {
-    //     sortTableData[i].rank = i + 1
-    //   }
-    // },
-    // ���������������������
-    // ������������������������������
-    getAll(begin, end) {
-      const arr1 = begin.split('-') // ������������������/  ���2020/01/1 ������
-      const arr2 = end.split('-')
-      const arr1_ = new Date()
-      const arrTime = []
-      // console.log(arr1, arr2, arr1_)
-      arr1_.setUTCFullYear(arr1[0], arr1[1] - 1, arr1[2])
-      const arr2_ = new Date()
-      arr2_.setUTCFullYear(arr2[0], arr2[1] - 1, arr2[2])
-      const unixDb = arr1_.getTime()
-      const unixDe = arr2_.getTime()
-      for (let k = unixDb; k <= unixDe;) {
-        arrTime.push(this.datetimeparse(k, 'YY-MM-DD'))
-        k = k + 24 * 60 * 60 * 1000
-      }
-      return arrTime
-    },
-    // ������������������
-    datetimeparse(timestamp, format, prefix) {
-      if (typeof timestamp === 'string') {
-        timestamp = Number(timestamp)
-      }
-      // ������������
-      const currentZoneTime = new Date(timestamp)
-      let currentTimestamp = currentZoneTime.getTime()
-      const offsetZone = currentZoneTime.getTimezoneOffset() / 60 // ������offsetZone>0���������������������
-      let offset = null
-      // ������������������������������������������������������������������������������
-      offset = offsetZone + 8
-      currentTimestamp = currentTimestamp + offset * 3600 * 1000
 
-      let newtimestamp = null
-      if (currentTimestamp) {
-        if (currentTimestamp.toString().length === 13) {
-          newtimestamp = currentTimestamp.toString()
-        } else if (currentTimestamp.toString().length === 10) {
-          newtimestamp = currentTimestamp + '000'
-        } else {
-          newtimestamp = null
-        }
-      } else {
-        newtimestamp = null
-      }
-      const dateobj = newtimestamp ? new Date(parseInt(newtimestamp)) : new Date()
-      const YYYY = dateobj.getFullYear()
-      const MM = dateobj.getMonth() > 8 ? dateobj.getMonth() + 1 : '0' + (dateobj.getMonth() + 1)
-      const DD = dateobj.getDate() > 9 ? dateobj.getDate() : '0' + dateobj.getDate()
-      const HH = dateobj.getHours() > 9 ? dateobj.getHours() : '0' + dateobj.getHours()
-      const mm = dateobj.getMinutes() > 9 ? dateobj.getMinutes() : '0' + dateobj.getMinutes()
-      const ss = dateobj.getSeconds() > 9 ? dateobj.getSeconds() : '0' + dateobj.getSeconds()
-      let output = ''
-      let separator = '/'
-      if (format) {
-        separator = format.match(/-/) ? '-' : '/'
-        output += format.match(/yy/i) ? YYYY : ''
-        output += format.match(/MM/) ? (output.length ? separator : '') + MM : ''
-        output += format.match(/dd/i) ? (output.length ? separator : '') + DD : ''
-        output += format.match(/hh/i) ? (output.length ? ' ' : '') + HH : ''
-        output += format.match(/mm/) ? (output.length ? ':' : '') + mm : ''
-        output += format.match(/ss/i) ? (output.length ? ':' : '') + ss : ''
-      } else {
-        output += YYYY + separator + MM + separator + DD
-      }
-      output = prefix ? (prefix + output) : output
-
-      return newtimestamp ? output : ''
-    },
-    getTime() {
-      if (this.form.beginTime && this.form.endTime) {
-        var beginTime = this.formatTime(this.form.beginTime, 1)
-        var endTime = this.formatTime(this.form.endTime, 1)
-        var dateBegin = new Date(beginTime)
-        var dateEnd = new Date(endTime)
-        if (dateBegin.getTime() > dateEnd.getTime()) {
-          this.form.beginTime = null
-          this.form.endTime = null
-          alert('���������������������������������������')
-          return
-        }
-        this.difference(dateBegin, dateEnd)
-      }
-    },
-    difference(dateBegin, dateEnd) {
-      var dateDiff = dateEnd.getTime() - dateBegin.getTime()// ���������������������
-      var dayDiff = Math.ceil(dateDiff / (24 * 3600 * 1000))// ���������������������
-      this.form.alltime = dayDiff
-    },
     // ������������
     exportExcel() {
       /* generate workbook object from table */
       var xlsxParam = { raw: true } // ���������������������������������������������������
-      var wb = XLSX.utils.table_to_book(document.querySelector('#exportTab'), xlsxParam)
+      var wb = XLSX.utils.table_to_book(
+        document.querySelector('#exportTab'),
+        xlsxParam
+      )
 
       /* get binary string as output */
-      var wbout = XLSX.write(wb, { bookType: 'xlsx', bookSST: true, type: 'array' })
+      var wbout = XLSX.write(wb, {
+        bookType: 'xlsx',
+        bookSST: true,
+        type: 'array',
+      })
       try {
-        FileSaver.saveAs(new Blob([wbout], { type: 'application/octet-stream' }), '���������������.xlsx')
+        FileSaver.saveAs(
+          new Blob([wbout], { type: 'application/octet-stream' }),
+          '���������������.xlsx'
+        )
       } catch (e) {
         if (typeof console !== 'undefined') {
           console.log(e, wbout)
@@ -326,74 +229,98 @@
       return wbout
     },
     // ������������������
-    getMonitorPointId() {
+    getData() {
       this.$request({
-        url: '/monitorPoint/queryAllMonitorPoints',
+        url: '/monitorPoint/queryMonitorPoints',
         method: 'get',
         params: {
-          organizationId: this.$store.state.orgId
-        }
-      }).then((res) => {
-        // console.log('���������������������')
-        // console.log(res)
-        for (let i = 0; i < res.data.length; i++) {
-          this.options.push({ value: res.data[i].id, label: res.data[i].name })
-        }
-      }).catch((err) => {
-        console.log(err)
+          organizationId: this.$store.state.orgId,
+        },
       })
+        .then((res) => {
+          // console.log('������index������������������������')
+          // console.log(res)
+          this.defaultData = res.data.monitorPoints
+          for (let i = 0; i < this.defaultData.length; i++) {
+            this.options.push({
+              value: this.defaultData[i].name,
+              label: this.defaultData[i].name,
+            })
+            this.options[i].children = []
+            for (let j = 0; j < this.defaultData[i].devices.length; j++) {
+              this.options[i].children.push({
+                value: [
+                  this.defaultData[i].devices[j].name,
+                  this.defaultData[i].devices[j].mac,
+                ],
+                label: this.defaultData[i].devices[j].name,
+              })
+            }
+          }
+        })
+        .catch((error) => {
+          console.log(error)
+        })
     },
     // ������������������
-    getReportForm(key) {
+    getReportForm() {
       this.$request({
         url: '/dataDisplay/monitorPointDataDisplay',
-        method: 'get',
-        params: {
-          monitorPointId: this.monitorPointId,
-          reportType: key === 4 ? null : key,
-          startTime: key === 4 ? this.value1[0] : null,
-          endTime: key === 4 ? this.value1[1] : null
-        }
-      }).then((res) => {
-        console.log(res)
-        if (res.code !== 0) {
-          return
-        }
-        var tempData = res.data
-        for (let i = 0; i < tempData.length; i++) {
-          tempData[i].rank = i + 1
-        }
-        this.tableData = tempData
-        // for (let i = 0; i < res.data.data.length; i++) {
-        //   this.tableData.push({ ranking: this.defaultData[i].rank, name: this.defaultData[i].name, responsibleUnit: this.defaultData[i].responsibleUnit, time: this.defaultData[i].time, AQI: this.defaultData[i].AQI, compositeIndex: this.defaultData[i].compositeIndex, PM2_5: this.defaultData[i].PM2_5, PM10: this.defaultData[i].PM10, SO2: this.defaultData[i].SO2, NO2: this.defaultData[i].NO2, CO: this.defaultData[i].CO, O3: this.defaultData[i].O3 })
-        // }
-      }).catch((err) => {
-        console.log(err)
+        method: 'post',
+        data: {
+          macs: this.newMac1,
+          reportType: this.unit,
+          // monitorPointId: this.monitorPointId,
+          // reportType: key === 4 ? null : key,
+          startTime: this.unit === 2 ? this.newData : this.newData[0],
+          endTime: this.unit === 2 ? null : this.newData[1],
+          // times: this.newData instanceof Array ? this.newData : [this.newData],
+        },
       })
-    }
-  } // ���������������keep-alive������������������������������������
+        .then((res) => {
+          console.log(res)
+          if (res.code !== 0) {
+            return
+          }
+          var tempData = res.data
+          for (let i = 0; i < tempData.length; i++) {
+            tempData[i].rank = i + 1
+          }
+          this.tableData = tempData
+          // for (let i = 0; i < res.data.data.length; i++) {
+          //   this.tableData.push({ ranking: this.defaultData[i].rank, name: this.defaultData[i].name, responsibleUnit: this.defaultData[i].responsibleUnit, time: this.defaultData[i].time, AQI: this.defaultData[i].AQI, compositeIndex: this.defaultData[i].compositeIndex, PM2_5: this.defaultData[i].PM2_5, PM10: this.defaultData[i].PM10, SO2: this.defaultData[i].SO2, NO2: this.defaultData[i].NO2, CO: this.defaultData[i].CO, O3: this.defaultData[i].O3 })
+          // }
+        })
+        .catch((err) => {
+          console.log(err)
+        })
+    },
+  }, // ���������������keep-alive������������������������������������
 }
 </script>
 <style scoped lang="scss">
-.topSelect{
-    display: flex;
-    margin-bottom: 20px;
-    padding: 20px 15px 0 15px;
-    display: flex;
-    justify-content: space-between;
-    span:first-child{
-        flex: 1;
-    }
-    // div:last-child{
-    //     width: 300px;
-    //     line-height: 40px;
-    //     padding-left: 6px;
-    // }
+.topSelect {
+  display: flex;
+  margin-bottom: 20px;
+  padding: 20px 15px 0 15px;
+  // display: flex;
+  // justify-content: space-between;
+  // span:first-child {
+  //   flex: 1;
+  // }
+  // div:last-child{
+  //     width: 300px;
+  //     line-height: 40px;
+  //     padding-left: 6px;
+  // }
 }
-.topTitle{
-    display: flex;
-    justify-content: space-between;
-    margin-bottom: 20px;
-    padding: 0 15px;
+.topTitle {
+  display: flex;
+  justify-content: space-between;
+  margin-bottom: 20px;
+  padding: 0 15px;
+}
+.select11 {
+  width: 20% !important;
 }
 </style>

--
Gitblit v1.8.0