From f752f50a484f63fc3786ab1c7ad563f3b17cce77 Mon Sep 17 00:00:00 2001 From: quanyawei <401863037@qq.com> Date: Fri, 15 Nov 2024 15:58:32 +0800 Subject: [PATCH] fix: 国控站 --- src/views/Listdata/index.vue | 180 +++++++++++++++++++++++++++++++++++++++++++++-------------- 1 files changed, 137 insertions(+), 43 deletions(-) diff --git a/src/views/Listdata/index.vue b/src/views/Listdata/index.vue index d065d2c..e253099 100644 --- a/src/views/Listdata/index.vue +++ b/src/views/Listdata/index.vue @@ -31,7 +31,7 @@ :props="props" collapse-tags clearable - ></el-cascader> + /> </div> <div> <el-select @@ -44,37 +44,70 @@ :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" + @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> @@ -102,7 +135,7 @@ TimePicker1, HourPicker1, }, - data() { + data () { // ������������������ return { props: { multiple: true }, @@ -111,7 +144,7 @@ newMac: '', newMac1: [], newSensor: [] /* ������������ */, - columnList: [], //��������������� + columnList: [], // ��������������� dateList: [], timevalue: [], select1: '������', @@ -142,7 +175,7 @@ computed: {}, // ������data������������������ watch: { - select1(nv, ov) { + select1 (nv, ov) { if (nv === '������') { this.dataType = 'HourPicker' this.unit = 'day' @@ -161,7 +194,7 @@ } }, // ��������������������������� - newMac(newVal, oldval) { + newMac (newVal, oldval) { this.newMac1 = [] for (let i = 0; i < newVal.length; i++) { // console.log(newVal[i], 111) @@ -173,29 +206,73 @@ // ������dataType��������������� }, // ������������ - ��������������������������������� this ��������� - created() { + created () { this.getData() - // for (let key in this.timess[0]) { - // this.columnList.push(key) - // } }, // ������������ - ��������������������������� DOM ��������� // mounted() { // // }, - beforeCreate() {}, // ������������ - ������������ - beforeMount() {}, // ������������ - ������������ - beforeUpdate() {}, // ������������ - ������������ - updated() {}, // ������������ - ������������ - beforeDestroy() {}, // ������������ - ������������ - destroyed() {}, // ������������ - ������������ - activated() {}, + beforeCreate () {}, // ������������ - ������������ + beforeMount () {}, // ������������ - ������������ + beforeUpdate () {}, // ������������ - ������������ + updated () {}, // ������������ - ������������ + beforeDestroy () {}, // ������������ - ������������ + destroyed () {}, // ������������ - ������������ + activated () {}, // ������������ methods: { - showPickerChild(data) { + 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() { + getData () { this.$request({ url: '/monitorPoint/queryMonitorPoints', method: 'get', @@ -213,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, + }) + } } } }) @@ -229,7 +308,7 @@ }) }, // ��������������������������������� - getSensor() { + getSensor () { this.newSensor = [] this.$request({ url: '/deviceInfo/getMacSensors', @@ -250,8 +329,7 @@ console.log(err) }) }, - exportMon() { - console.log(this.timevalue) + exportMon () { if (this.newMac1 == '') { this.$message.warning('���������������') return @@ -274,18 +352,34 @@ 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: '���������', }) @@ -303,9 +397,9 @@ } return ws }, - setExlStyle(data) { + setExlStyle (data) { let borderAll = { - //��������������������� + // ��������������������� top: { style: 'thin', }, @@ -325,7 +419,7 @@ data[key].s = { border: borderAll, alignment: { - horizontal: 'center', //������������������ + horizontal: 'center', // ������������������ vertical: 'center', }, font: { -- Gitblit v1.8.0