From e635b5b4edab0a000a0af533b6b36f7300c5fa42 Mon Sep 17 00:00:00 2001
From: quanyawei <401863037@qq.com>
Date: Fri, 02 Feb 2024 10:07:00 +0800
Subject: [PATCH] fix:断线监控
---
src/views/Listdata/index.vue | 272 ++++++++++++++++++++++++++++++++++++++++++++----------
1 files changed, 222 insertions(+), 50 deletions(-)
diff --git a/src/views/Listdata/index.vue b/src/views/Listdata/index.vue
index ae35e81..e253099 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,39 +23,91 @@
: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
+ />
+ </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-select>
+ </div>
+ <component
+ :is="dataType"
+ style="padding-left: 0; margin-left: 20px; width: 160px"
+ class="select11"
+ @sendPickerChild="showPickerChild"
+ />
- <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"
+ style="margin-left: 20px"
+ @click="toExcel()"
+ @command="handleCommand"
>
- <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
+ style="margin-left: 10px"
+ @click="exportMon"
+ >
+ ������
+ </el-button>
</div>
<el-table
- :data="dateList"
id="exportTab"
+ :data="dateList"
style="margin-top: 20px"
border
max-height="800"
>
<el-table-column
v-for="item in columnList"
+ :key="item"
:prop="item"
:label="item"
width="180px"
- :key="item"
+ />
+ <!-- <el-table-column
+ v-for="item in columnList"
+ :prop="item.props"
+ :label="item.label"
+ width="180px"
+ :key="item.label"
>
- </el-table-column>
+ </el-table-column> -->
</el-table>
</div>
</template>
@@ -66,8 +118,24 @@
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 {
- data() {
+ components: {
+ DatePicker,
+ MouthPicker,
+ HourPicker,
+ CustomPicker,
+ CustomPicker1,
+ TimePicker1,
+ HourPicker1,
+ },
+ data () {
// ������������������
return {
props: { multiple: true },
@@ -76,9 +144,26 @@
newMac: '',
newMac1: [],
newSensor: [] /* ������������ */,
- columnList: [], //���������������
+ columnList: [], // ���������������
dateList: [],
timevalue: [],
+ select1: '������',
+ dataType: 'HourPicker',
+ unit: 'day',
+ options1: [
+ {
+ label: '���������',
+ value: '���������',
+ },
+ {
+ label: '������',
+ value: '������',
+ },
+ {
+ label: '������',
+ value: '������',
+ },
+ ],
pickerOptions: {
disabledDate: (time) => {
return time.getTime() > new Date()
@@ -90,8 +175,26 @@
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) {
+ newMac (newVal, oldval) {
this.newMac1 = []
for (let i = 0; i < newVal.length; i++) {
// console.log(newVal[i], 111)
@@ -103,23 +206,73 @@
// ������dataType���������������
},
// ������������ - ��������������������������������� this ���������
- created() {
+ created () {
this.getData()
},
// ������������ - ��������������������������� DOM ���������
// mounted() {
//
// },
- beforeCreate() {}, // ������������ - ������������
- beforeMount() {}, // ������������ - ������������
- beforeUpdate() {}, // ������������ - ������������
- updated() {}, // ������������ - ������������
- beforeDestroy() {}, // ������������ - ������������
- destroyed() {}, // ������������ - ������������
- activated() {},
+ beforeCreate () {}, // ������������ - ������������
+ beforeMount () {}, // ������������ - ������������
+ beforeUpdate () {}, // ������������ - ������������
+ updated () {}, // ������������ - ������������
+ beforeDestroy () {}, // ������������ - ������������
+ destroyed () {}, // ������������ - ������������
+ activated () {},
// ������������
methods: {
- getData() {
+ 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',
method: 'get',
@@ -137,14 +290,16 @@
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,
- })
+ if (this.defaultData[i].devices) {
+ 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,
+ })
+ }
}
}
})
@@ -153,7 +308,8 @@
})
},
// ���������������������������������
- getSensor() {
+ getSensor () {
+ this.newSensor = []
this.$request({
url: '/deviceInfo/getMacSensors',
method: 'post',
@@ -173,8 +329,7 @@
console.log(err)
})
},
- exportMon() {
- console.log(this.timevalue)
+ exportMon () {
if (this.newMac1 == '') {
this.$message.warning('���������������')
return
@@ -183,7 +338,6 @@
this.$message.warning('���������������')
return
}
-
this.dateList = []
this.columnList = []
this.$request({
@@ -192,22 +346,40 @@
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() {
+ toExcel () {
let wb = XLSX.utils.table_to_book(document.querySelector('#exportTab'), {
sheet: '���������',
})
@@ -225,9 +397,9 @@
}
return ws
},
- setExlStyle(data) {
+ setExlStyle (data) {
let borderAll = {
- //���������������������
+ // ���������������������
top: {
style: 'thin',
},
@@ -247,7 +419,7 @@
data[key].s = {
border: borderAll,
alignment: {
- horizontal: 'center', //������������������
+ horizontal: 'center', // ������������������
vertical: 'center',
},
font: {
--
Gitblit v1.8.0