src/views/smoke/realTime/components/detectorDailySumDays.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/smoke/realTime/components/devices.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/smoke/realTime/components/intimeData.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/smoke/realTime/components/tenHourData.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/smoke/realTime/components/tenMinData.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/smoke/realTime/index.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/smoke/report/components/alarm.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/smoke/report/components/maintenance.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/smoke/report/components/overallSituation.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/smoke/report/components/reduceEmissions.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/views/smoke/realTime/components/detectorDailySumDays.vue
New file @@ -0,0 +1,13 @@ <template> </template> <script> export default { } </script> <style> </style> src/views/smoke/realTime/components/devices.vue
New file @@ -0,0 +1,13 @@ <template> </template> <script> export default { } </script> <style> </style> src/views/smoke/realTime/components/intimeData.vue
New file @@ -0,0 +1,13 @@ <template> </template> <script> export default { } </script> <style> </style> src/views/smoke/realTime/components/tenHourData.vue
New file @@ -0,0 +1,13 @@ <template> </template> <script> export default { } </script> <style> </style> src/views/smoke/realTime/components/tenMinData.vue
New file @@ -0,0 +1,13 @@ <template> </template> <script> export default { } </script> <style> </style> src/views/smoke/realTime/index.vue
@@ -1,337 +1,422 @@ <template> <div> <MyHeader @getList="getRealTimeList" @exportTable="exportInTime" ></MyHeader> <!-- 数据展示 --> <div style="width: 100%; overflow-x: scroll"> <el-table border stripe ref="multipleTable" :header-cell-style="{ background: '#F5F5F5', 'font-weight': '650', 'line-height': '45px' }" :data="tableData" :row-class-name="tableRowClassName" > <el-table-column label="序号" type="index" width="60px"> </el-table-column> <el-table-column prop="Locale" label="监测点" width="120px"> </el-table-column> <el-table-column prop="Addr" label="安装地址" width="180px"> </el-table-column> <el-table-column prop="AcquitAtStr" label="采集时间" width="100px" > </el-table-column> <el-table-column prop="FanStatusStr" label="风机状态" width="80px" > </el-table-column> <el-table-column prop="FilterStatusStr" label="净化器状态" width="95px" > </el-table-column> <el-table-column prop="EmissionsConc" label="油烟实时浓度(mg/m3)" width="110px" > </el-table-column> <el-table-column prop="CEmissions" label="油烟折算浓度(mg/m3)" width="110px" > </el-table-column> <el-table-column prop="GranuleConc" label="颗粒物实时浓度(mg/m3)" width="120px" > </el-table-column> <el-table-column prop="CGranule" label="颗粒物折算浓度(mg/m3)" width="120px" > </el-table-column> <el-table-column prop="HydrocarbonConc" label="非甲烷总烃实时浓度(mg/m3)" width="160px" > </el-table-column> <el-table-column prop="CHydrocarbon" label="非甲烷总烃折算浓度(mg/m3)" width="160px" > </el-table-column> <el-table-column prop="StatusStr" label="排放状态" width="80px"> </el-table-column> <el-table-column prop="OnlineStatusStr" label="整体状态" width="80px" > </el-table-column> <el-table-column prop="operation" label="操作" width="550px"> <template slot-scope="scope"> <div class="operation"> <span @click="handleUpload(scope.row)" >一点一档</span > <span class="line">|</span> <span @click="handleDispatch(scope.row)" >查看每分钟数据</span > <span class="line">|</span> <span @click="handleLearn(scope.row)" >查看10min浓度</span > <span class="line">|</span> <span @click="handleNotDeal(scope.row)" >查看小时折算浓度</span > <span class="line">|</span> <span @click="handleNotDeal(scope.row)" >监测点设备管理</span > </div> </template> </el-table-column> </el-table> </div> <div class="tools"> <div class="pagination"> <el-pagination background @prev-click="handlePrev" @next-click="handleNext" :current-page="currentPage" layout="prev, pager, next" :total="totalNum" :page-size="pageSize" @current-change="changeCurrentPage" > </el-pagination> <div> <MyHeader @getList="getRealTimeList" @exportTable="exportInTime"></MyHeader> <!-- 数据展示 --> <div style="width: 100%; overflow-x: scroll"> <el-table border stripe ref="multipleTable" :header-cell-style="{ background: '#F5F5F5', 'font-weight': '650', 'line-height': '45px', }" :data="tableData" :row-class-name="tableRowClassName" > <el-table-column label="序号" type="index" width="60px"> </el-table-column> <el-table-column prop="Locale" label="监测点" width="120px"> </el-table-column> <el-table-column prop="Addr" label="安装地址" width="180px"> </el-table-column> <el-table-column prop="AcquitAtStr" label="采集时间" width="100px"> </el-table-column> <el-table-column prop="FanStatusStr" label="风机状态" width="80px"> </el-table-column> <el-table-column prop="FilterStatusStr" label="净化器状态" width="95px"> </el-table-column> <el-table-column prop="EmissionsConc" label="油烟实时浓度(mg/m3)" width="110px" > </el-table-column> <el-table-column prop="CEmissions" label="油烟折算浓度(mg/m3)" width="110px" > </el-table-column> <el-table-column prop="GranuleConc" label="颗粒物实时浓度(mg/m3)" width="120px" > </el-table-column> <el-table-column prop="CGranule" label="颗粒物折算浓度(mg/m3)" width="120px" > </el-table-column> <el-table-column prop="HydrocarbonConc" label="非甲烷总烃实时浓度(mg/m3)" width="160px" > </el-table-column> <el-table-column prop="CHydrocarbon" label="非甲烷总烃折算浓度(mg/m3)" width="160px" > </el-table-column> <el-table-column prop="StatusStr" label="排放状态" width="80px"> </el-table-column> <el-table-column prop="OnlineStatusStr" label="整体状态" width="80px"> </el-table-column> <el-table-column prop="operation" label="操作" width="550px"> <template slot-scope="scope"> <div class="operation"> <span @click="handleDetectorDailySumDays(scope.row)" >一点一档</span > <span class="line">|</span> <span @click="handleIntimeData(scope.row)">查看每分钟数据</span> <span class="line">|</span> <span @click="handleTenMinData(scope.row)">查看10min浓度</span> <span class="line">|</span> <span @click="handleTenHourData(scope.row)" >查看小时折算浓度</span > <span class="line">|</span> <span @click="handleDevices(scope.row)">监测点设备管理</span> </div> </div> </template> </el-table-column> </el-table> </div> <div class="tools"> <div class="pagination"> <el-pagination background @prev-click="handlePrev" @next-click="handleNext" :current-page="currentPage" layout="prev, pager, next" :total="totalNum" :page-size="pageSize" @current-change="changeCurrentPage" > </el-pagination> </div> </div> <el-dialog :destroy-on-close="true" :visible.sync="dialogDetectorDailySumDays" width="80%" > <DetectorDailySumDays v-if="dialogDetectorDailySumDays" @closeDialog="closeDialog" :inTimeData="inTimeData" ></DetectorDailySumDays> </el-dialog> <el-dialog :destroy-on-close="true" :visible.sync="dialogIntimeData" width="80%" > <IntimeData v-if="dialogIntimeData" @closeDialog="closeDialog" :inTimeData="inTimeData" ></IntimeData> </el-dialog> <el-dialog :destroy-on-close="true" :visible.sync="dialogTenMinData" width="80%" > <TenMinData v-if="dialogTenMinData" @closeDialog="closeDialog" :inTimeData="inTimeData" ></TenMinData> </el-dialog> <el-dialog :destroy-on-close="true" :visible.sync="dialogTenHourData" width="80%" > <TenHourData v-if="dialogTenHourData" @closeDialog="closeDialog" :inTimeData="inTimeData" ></TenHourData> </el-dialog> <el-dialog :destroy-on-close="true" :visible.sync="dialogDevices" width="80%" > <Devices v-if="dialogDevices" @closeDialog="closeDialog" :inTimeData="inTimeData" ></Devices> </el-dialog> </div> </template> <script> import MyHeader from "./components/header"; import DetectorDailySumDays from "./components/detectorDailySumDays.vue"; import Devices from "./components/devices.vue"; import IntimeData from "./components/intimeData.vue"; import TenHourData from "./components/tenHourData.vue"; import TenMinData from "./components/tenMinData.vue"; import realTimeApi from "@/api/smoke/realTime"; export default { data() { return { tableData: [], totalNum: 0, pageSize: 10, currentPage: 1, data() { return { tableData: [], totalNum: 0, pageSize: 10, currentPage: 1, dialogDetectorDailySumDays: false, dialogDevices: false, dialogIntimeData: false, dialogTenHourData: false, dialogTenMinData: false, inTimeData:{} }; }, components: { MyHeader, DetectorDailySumDays, TenHourData, Devices, IntimeData, TenMinData, }, created() { this.getRealTimeList(); }, methods: { getRealTimeList(seachData) { let params; if (seachData) { params = this.getParam(seachData); } else { params = { pageNum: this.currentPage, pageSize: this.pageSize, }; }, components: { MyHeader }, created() { this.getRealTimeList(); }, methods: { getRealTimeList(seachData) { let params; if (seachData) { params = this.getParam(seachData) } else { params = { pageNum: this.currentPage, pageSize: this.pageSize, }; } } realTimeApi .findInTimeList(params) .then(({ list, total }) => { list.forEach(e => { e.AcquitAtStr = this.dateFormat("YYYY-mm-dd HH:MM", new Date(e.AcquitAt*1000)); e.FanStatusStr = this.FanStatusStr(e.FanStatus) e.FilterStatusStr = this.FanStatusStr(e.FilterStatus) e.OnlineStatusStr = this.OnlineStatusStr(e.OnlineStatus) e.StatusStr = this.StatusStr(e.Status) }); this.tableData = list; this.totalNum = total; }) .catch((err) => this.$message.error(err)); }, exportInTime(seachData) { let params; if (seachData) { params = this.getParam(seachData) } realTimeApi .exportInTime(params) .then((res) => { debugger let time = new Date(); let deathdate = time.toLocaleDateString(); const blob = new Blob([res.data], { type: "application/vnd.ms-excel;charset=utf-8", }); if (window.navigator.msSaveBlob) { window.navigator.msSaveBlob( blob, deathdate + "实时数据" + ".xls" ); } else { const url = window.URL.createObjectURL(blob); const link = document.createElement("a"); link.style.display = "none"; link.href = url; link.download = deathdate + "实时数据" + ".xls"; document.body.appendChild(link); link.click(); document.body.removeChild(link); } this.$message.success("操作成功"); }) .catch((err) => this.$message.error(err)); }, getParam(seachData) { let params; if (seachData) { const seachParams = seachData.seachData params = { owner: seachParams.owner == undefined ? null : seachParams.owner, onlineStatus: seachParams.onlineStatus == undefined ? null : seachParams.onlineStatus, status: seachParams.status == undefined ? null : seachParams.status, type: seachParams.type == undefined ? null : seachParams.type, startTime: seachParams.alarmTime == undefined ? null : this.dateFormat("YYYY-mm-dd HH:MM:SS", seachParams.alarmTime[0]), endTime: seachParams.alarmTime == undefined ? null : this.dateFormat("YYYY-mm-dd HH:MM:SS", seachParams.alarmTime[1]), }; } return params; }, realTimeApi .findInTimeList(params) .then(({ list, total }) => { list.forEach((e) => { e.AcquitAtStr = this.dateFormat( "YYYY-mm-dd HH:MM", new Date(e.AcquitAt * 1000) ); e.FanStatusStr = this.FanStatusStr(e.FanStatus); e.FilterStatusStr = this.FanStatusStr(e.FilterStatus); e.OnlineStatusStr = this.OnlineStatusStr(e.OnlineStatus); e.StatusStr = this.StatusStr(e.Status); }); this.tableData = list; this.totalNum = total; }) .catch((err) => this.$message.error(err)); }, exportInTime(seachData) { let params; if (seachData) { params = this.getParam(seachData); } realTimeApi .exportInTime(params) .then((res) => { debugger; let time = new Date(); let deathdate = time.toLocaleDateString(); const blob = new Blob([res.data], { type: "application/vnd.ms-excel;charset=utf-8", }); if (window.navigator.msSaveBlob) { window.navigator.msSaveBlob(blob, deathdate + "实时数据" + ".xls"); } else { const url = window.URL.createObjectURL(blob); const link = document.createElement("a"); link.style.display = "none"; link.href = url; link.download = deathdate + "实时数据" + ".xls"; document.body.appendChild(link); link.click(); document.body.removeChild(link); } this.$message.success("操作成功"); }) .catch((err) => this.$message.error(err)); }, getParam(seachData) { let params; if (seachData) { const seachParams = seachData.seachData; params = { owner: seachParams.owner == undefined ? null : seachParams.owner, onlineStatus: seachParams.onlineStatus == undefined ? null : seachParams.onlineStatus, status: seachParams.status == undefined ? null : seachParams.status, type: seachParams.type == undefined ? null : seachParams.type, startTime: seachParams.alarmTime == undefined ? null : this.dateFormat( "YYYY-mm-dd HH:MM:SS", seachParams.alarmTime[0] ), endTime: seachParams.alarmTime == undefined ? null : this.dateFormat( "YYYY-mm-dd HH:MM:SS", seachParams.alarmTime[1] ), }; } return params; }, FanStatusStr(FanStatus) { switch (FanStatus) { case 1: return "开" case 2: return "关" default: return "异常" } }, OnlineStatusStr(Status) { switch (Status) { case 1: return "在线" case 2: return "离线" default: return "异常离线" } }, StatusStr(Status) { switch (Status) { case "NORMAL": return "正常" case "ALARM": return "预警" case "EXCESS": return "超标" case "DOWN": return "离线" default: return "异常离线" } }, // 设置表格斑马纹 tableRowClassName({ row, rowIndex }) { if ((rowIndex + 1) % 2 === 0) { return 'warning-row'; } else { return 'success-row'; } }, // 当前页改变触发事件 changeCurrentPage(page) { this.currentPage = page; this.getRealTimeList(); }, // 上一页点击事件 handlePrev(page) { this.currentPage = page; this.getRealTimeList(); }, // 下一页点击事件 handleNext(page) { this.currentPage = page; this.getRealTimeList(); }, dateFormat(fmt, date) { let ret; const opt = { "Y+": date.getFullYear().toString(), // 年 "m+": (date.getMonth() + 1).toString(), // 月 "d+": date.getDate().toString(), // 日 "H+": date.getHours().toString(), // 时 "M+": date.getMinutes().toString(), // 分 "S+": date.getSeconds().toString() // 秒 // 有其他格式化字符需求可以继续添加,必须转化成字符串 }; for (let k in opt) { ret = new RegExp("(" + k + ")").exec(fmt); if (ret) { fmt = fmt.replace(ret[1], (ret[1].length == 1) ? (opt[k]) : (opt[k].padStart(ret[1].length, "0"))) }; }; return fmt; }, } FanStatusStr(FanStatus) { switch (FanStatus) { case 1: return "开"; case 2: return "关"; default: return "异常"; } }, OnlineStatusStr(Status) { switch (Status) { case 1: return "在线"; case 2: return "离线"; default: return "异常离线"; } }, StatusStr(Status) { switch (Status) { case "NORMAL": return "正常"; case "ALARM": return "预警"; case "EXCESS": return "超标"; case "DOWN": return "离线"; default: return "异常离线"; } }, // 设置表格斑马纹 tableRowClassName({ row, rowIndex }) { if ((rowIndex + 1) % 2 === 0) { return "warning-row"; } else { return "success-row"; } }, // 当前页改变触发事件 changeCurrentPage(page) { this.currentPage = page; this.getRealTimeList(); }, // 上一页点击事件 handlePrev(page) { this.currentPage = page; this.getRealTimeList(); }, // 下一页点击事件 handleNext(page) { this.currentPage = page; this.getRealTimeList(); }, dateFormat(fmt, date) { let ret; const opt = { "Y+": date.getFullYear().toString(), // 年 "m+": (date.getMonth() + 1).toString(), // 月 "d+": date.getDate().toString(), // 日 "H+": date.getHours().toString(), // 时 "M+": date.getMinutes().toString(), // 分 "S+": date.getSeconds().toString(), // 秒 // 有其他格式化字符需求可以继续添加,必须转化成字符串 }; for (let k in opt) { ret = new RegExp("(" + k + ")").exec(fmt); if (ret) { fmt = fmt.replace( ret[1], ret[1].length == 1 ? opt[k] : opt[k].padStart(ret[1].length, "0") ); } } return fmt; }, handleDetectorDailySumDays(row) { this.dialogDetectorDailySumDays = true; this.inTimeData = row }, handleIntimeData(row) { this.dialogIntimeData = true; this.inTimeData = row }, handleTenMinData(row) { this.dialogTenMinData = true; this.inTimeData = row }, handleTenHourData(row) { this.dialogTenHourData = true; this.inTimeData = row }, handleDevices(row) { this.dialogDevices = true; this.inTimeData = row }, closeDialog() { this.dialogDetectorDailySumDays = false; this.dialogDevices = false; this.dialogIntimeData = false; this.dialogTenHourData = false; this.dialogTenMinData = false; }, }, }; </script> <style lang="scss" scoped> .el-table { .operation { display: flex; color: var(--operation-color); .line { padding: 0 5px; } span:hover { cursor: pointer; } .operation { display: flex; color: var(--operation-color); .line { padding: 0 5px; } span:hover { cursor: pointer; } } } </style> src/views/smoke/report/components/alarm.vue
@@ -24,7 +24,7 @@ > </el-table-column> <el-table-column prop="CGranule" prop="ExcessNum" label="超标天数" min-width="10%" > src/views/smoke/report/components/maintenance.vue
@@ -1,6 +1,6 @@ <template> <div> <MyHeader @getList="getRealTimeList" @exportTable="exportInTime"></MyHeader> <MyHeader @getList="getRealTimeList" ></MyHeader> <!-- 数据展示 --> <div style="width: 100%; overflow-x: scroll"> <el-table @@ -18,55 +18,55 @@ <el-table-column label="序号" type="index" width="80"> </el-table-column> <el-table-column prop="AcquitAtStr" prop="Name" label="监测点" min-width="15%" > </el-table-column> <el-table-column prop="Addr" prop="MN" label="设备编号" min-width="10%" > </el-table-column> <el-table-column prop="FanStatusStr" prop="AbnormalOfflineDays" label="异常离线天数" min-width="10%" > </el-table-column> <el-table-column prop="AA" prop="AbnormalOfflineToProcessDays" label="异常离线待处理天数" min-width="10%" > </el-table-column> <el-table-column prop="EmissionsConc" prop="ShopClosedDays" label="歇业天数" min-width="10%" > </el-table-column> <el-table-column prop="EmissionsConc" prop="FilterAbnormallyUsedDays" label="净化器不正常使用天数" min-width="10%" > </el-table-column> <el-table-column prop="EmissionsConc" prop="DetectorFailureDays" label="监测仪故障天数" min-width="10%" > </el-table-column> <el-table-column prop="EmissionsConc" prop="OfflineCausedByShopDays" label="店家原因导致离线天数" min-width="10%" > </el-table-column> <el-table-column prop="EmissionsConc" prop="AbnormalOfflineProcessRatio" label="处理率" min-width="10%" > @@ -93,7 +93,7 @@ <script> import MyHeader from "./header/header2.vue"; import realTimeApi from "@/api/smoke/realTime"; import statisticsApi from "@/api/smoke/statistics"; export default { data() { return { @@ -119,57 +119,15 @@ }; } realTimeApi .findInTimeList(params) .then(({ list, total }) => { list.forEach((e) => { e.AcquitAtStr = this.dateFormat( "YYYY-mm-dd HH:MM", new Date(e.AcquitAt*1000) ); e.FanStatusStr = this.FanStatusStr(e.FanStatus); e.FilterStatusStr = this.FanStatusStr(e.FilterStatus); e.OnlineStatusStr = this.OnlineStatusStr(e.OnlineStatus); e.StatusStr = this.StatusStr(e.Status); }); this.tableData = list; this.totalNum = total; }) .catch((err) => this.$message.error(err)); statisticsApi .findCurAlarmList(params) .then((list) => { this.tableData = list; this.totalNum = list.length; }) .catch((err) => this.$message.error(err)); }, exportInTime(seachData) { let params; if (seachData) { params = this.getParam(seachData); } realTimeApi .exportInTime(params) .then((res) => { debugger; let time = new Date(); let deathdate = time.toLocaleDateString(); const blob = new Blob([res.data], { type: "application/vnd.ms-excel;charset=utf-8", }); if (window.navigator.msSaveBlob) { window.navigator.msSaveBlob( blob, deathdate + "监测总体情况报表" + ".xls" ); } else { const url = window.URL.createObjectURL(blob); const link = document.createElement("a"); link.style.display = "none"; link.href = url; link.download = deathdate + "监测总体情况报表" + ".xls"; document.body.appendChild(link); link.click(); document.body.removeChild(link); } this.$message.success("操作成功"); }) .catch((err) => this.$message.error(err)); }, getParam(seachData) { let params; if (seachData) { src/views/smoke/report/components/overallSituation.vue
@@ -20,42 +20,42 @@ > <el-table-column label="序号" type="index" width="50"> </el-table-column> <el-table-column prop="AcquitAtStr" label="采集时间" width="auto" min-width="20%"> <el-table-column prop="AcquitDate" label="采集时间" width="auto" min-width="20%"> </el-table-column> <el-table-column prop="Addr" label="设备总数" width="auto" min-width="10%"> <el-table-column prop="Total" label="设备总数" width="auto" min-width="10%"> </el-table-column> <el-table-column prop="FanStatusStr" prop="ComplianceCount" label="达标数" width="auto" min-width="10%" > </el-table-column> <el-table-column prop="达标比例" label="净化器状态" prop="CompliancePercent" label="达标比例" width="auto" min-width="10%" > </el-table-column> <el-table-column prop="EmissionsConc" prop="ExceedStandardCount" label="超标数" width="auto" min-width="10%" > </el-table-column> <el-table-column prop="CEmissions" prop="ExceedStandardPercent" label="超标比例" width="auto" min-width="10%" > </el-table-column> <el-table-column prop="GranuleConc" prop="OnlineCount" label="在线数" width="auto" min-width="10%" > </el-table-column> <el-table-column prop="CGranule" prop="OnlinePercent" label="在线比例" width="auto" min-width="10%" > @@ -82,7 +82,7 @@ <script> import MyHeader from "./header/header1.vue"; import realTimeApi from "@/api/smoke/realTime"; import statisticsApi from "@/api/smoke/statistics"; export default { data() { return { @@ -108,18 +108,13 @@ }; } realTimeApi .findInTimeList(params) .then(({ list, total }) => { list.forEach(e => { e.AcquitAtStr = this.dateFormat("YYYY-mm-dd HH:MM", new Date(e.AcquitAt*1000)); e.FanStatusStr = this.FanStatusStr(e.FanStatus) e.FilterStatusStr = this.FanStatusStr(e.FilterStatus) e.OnlineStatusStr = this.OnlineStatusStr(e.OnlineStatus) e.StatusStr = this.StatusStr(e.Status) }); this.tableData = list; this.totalNum = total; statisticsApi .findDataDetectorDailyStats(params) .then((json) => { let res = JSON.parse(json) this.tableData = res.sumGroupByDates; this.totalNum = res.sumGroupByDates.lengtn; }) .catch((err) => this.$message.error(err)); }, src/views/smoke/report/components/reduceEmissions.vue
@@ -1,280 +1,269 @@ <template> <div> <MyHeader @getList="getRealTimeList" @exportTable="exportInTime" ></MyHeader> <!-- 数据展示 --> <div style="width: 100%; overflow-x: scroll"> <el-table border stripe ref="multipleTable" :header-cell-style="{ background: '#F5F5F5', 'font-weight': '650', 'line-height': '45px' }" :data="tableData" :row-class-name="tableRowClassName" > <el-table-column label="序号" type="index" width="60px"> </el-table-column> <el-table-column prop="AcquitAtStr" label="监测点" min-width="10%"> </el-table-column> <el-table-column prop="Addr" label="安装地址" min-width="20%"> </el-table-column> <el-table-column prop="FanStatusStr" label="设备编码" min-width="15%" > </el-table-column> <el-table-column prop="AAA" label="PM2.5减排量(Kg)" min-width="10%" > </el-table-column> <el-table-column prop="EmissionsConc" label="PM10减排量(Kg)" min-width="10%" > </el-table-column> <el-table-column prop="CEmissions" label="油烟减排(Kg)" min-width="10%" > </el-table-column> <el-table-column prop="GranuleConc" label="vocs减排量(Kg)" min-width="10%" > </el-table-column> </el-table> </div> <div class="tools"> <div class="pagination"> <el-pagination background @prev-click="handlePrev" @next-click="handleNext" :current-page="currentPage" layout="prev, pager, next" :total="totalNum" :page-size="pageSize" @current-change="changeCurrentPage" > </el-pagination> </div> </div> <div> <MyHeader @getList="getRealTimeList" @exportTable="exportInTime"></MyHeader> <!-- 数据展示 --> <div style="width: 100%; overflow-x: scroll"> <el-table border stripe ref="multipleTable" :header-cell-style="{ background: '#F5F5F5', 'font-weight': '650', 'line-height': '45px', }" :data="tableData" :row-class-name="tableRowClassName" > <el-table-column label="序号" type="index" width="60px"> </el-table-column> <el-table-column prop="LocaleName" label="监测点" min-width="10%"> </el-table-column> <el-table-column prop="LocaleAddr" label="安装地址" min-width="20%"> </el-table-column> <el-table-column prop="MN" label="设备编码" min-width="10%"> </el-table-column> <el-table-column prop="RedPm25" label="PM2.5减排量(Kg)" min-width="12%" > </el-table-column> <el-table-column prop="RedPm10" label="PM10减排量(Kg)" min-width="10%" > </el-table-column> <el-table-column prop="RedEmissions" label="油烟减排(Kg)" min-width="10%" > </el-table-column> <el-table-column prop="RedVocs" label="vocs减排量(Kg)" min-width="10%" > </el-table-column> </el-table> </div> <div class="tools"> <div class="pagination"> <el-pagination background @prev-click="handlePrev" @next-click="handleNext" :current-page="currentPage" layout="prev, pager, next" :total="totalNum" :page-size="pageSize" @current-change="changeCurrentPage" > </el-pagination> </div> </div> </div> </template> <script> import MyHeader from "./header/header1.vue"; import realTimeApi from "@/api/smoke/realTime"; import statisticsApi from "@/api/smoke/statistics"; export default { data() { return { tableData: [], totalNum: 0, pageSize: 10, currentPage: 1, data() { return { tableData: [], totalNum: 0, pageSize: 10, currentPage: 1, }; }, components: { MyHeader }, created() { this.getRealTimeList(); }, methods: { getRealTimeList(seachData) { let params; if (seachData) { params = this.getParam(seachData); } else { params = { pageNum: this.currentPage, pageSize: this.pageSize, }; }, components: { MyHeader }, created() { this.getRealTimeList(); }, methods: { getRealTimeList(seachData) { let params; if (seachData) { params = this.getParam(seachData) } else { params = { pageNum: this.currentPage, pageSize: this.pageSize, }; } } realTimeApi .findInTimeList(params) .then(({ list, total }) => { list.forEach(e => { e.AcquitAtStr = this.dateFormat("YYYY-mm-dd HH:MM", new Date(e.AcquitAt*1000)); e.FanStatusStr = this.FanStatusStr(e.FanStatus) e.FilterStatusStr = this.FanStatusStr(e.FilterStatus) e.OnlineStatusStr = this.OnlineStatusStr(e.OnlineStatus) e.StatusStr = this.StatusStr(e.Status) }); this.tableData = list; this.totalNum = total; }) .catch((err) => this.$message.error(err)); }, exportInTime(seachData) { let params; if (seachData) { params = this.getParam(seachData) } realTimeApi .exportInTime(params) .then((res) => { debugger let time = new Date(); let deathdate = time.toLocaleDateString(); const blob = new Blob([res.data], { type: "application/vnd.ms-excel;charset=utf-8", }); if (window.navigator.msSaveBlob) { window.navigator.msSaveBlob( blob, deathdate + "监测总体情况报表" + ".xls" ); } else { const url = window.URL.createObjectURL(blob); const link = document.createElement("a"); link.style.display = "none"; link.href = url; link.download = deathdate + "监测总体情况报表" + ".xls"; document.body.appendChild(link); link.click(); document.body.removeChild(link); } this.$message.success("操作成功"); }) .catch((err) => this.$message.error(err)); }, getParam(seachData) { let params; if (seachData) { const seachParams = seachData.seachData params = { owner: seachParams.owner == undefined ? null : seachParams.owner, onlineStatus: seachParams.onlineStatus == undefined ? null : seachParams.onlineStatus, status: seachParams.status == undefined ? null : seachParams.status, type: seachParams.type == undefined ? null : seachParams.type, startTime: seachParams.alarmTime == undefined ? null : this.dateFormat("YYYY-mm-dd HH:MM:SS", seachParams.alarmTime[0]), endTime: seachParams.alarmTime == undefined ? null : this.dateFormat("YYYY-mm-dd HH:MM:SS", seachParams.alarmTime[1]), }; } return params; }, statisticsApi .findDetectorDaily(params) .then((json) => { let res = JSON.parse(json); this.tableData = res.content; this.totalNum = res.total; }) .catch((err) => this.$message.error(err)); }, exportInTime(seachData) { let params; if (seachData) { params = this.getParam(seachData); } realTimeApi .exportInTime(params) .then((res) => { debugger; let time = new Date(); let deathdate = time.toLocaleDateString(); const blob = new Blob([res.data], { type: "application/vnd.ms-excel;charset=utf-8", }); if (window.navigator.msSaveBlob) { window.navigator.msSaveBlob( blob, deathdate + "监测总体情况报表" + ".xls" ); } else { const url = window.URL.createObjectURL(blob); const link = document.createElement("a"); link.style.display = "none"; link.href = url; link.download = deathdate + "监测总体情况报表" + ".xls"; document.body.appendChild(link); link.click(); document.body.removeChild(link); } this.$message.success("操作成功"); }) .catch((err) => this.$message.error(err)); }, getParam(seachData) { let params; if (seachData) { const seachParams = seachData.seachData; params = { owner: seachParams.owner == undefined ? null : seachParams.owner, onlineStatus: seachParams.onlineStatus == undefined ? null : seachParams.onlineStatus, status: seachParams.status == undefined ? null : seachParams.status, type: seachParams.type == undefined ? null : seachParams.type, startTime: seachParams.alarmTime == undefined ? null : this.dateFormat( "YYYY-mm-dd HH:MM:SS", seachParams.alarmTime[0] ), endTime: seachParams.alarmTime == undefined ? null : this.dateFormat( "YYYY-mm-dd HH:MM:SS", seachParams.alarmTime[1] ), }; } return params; }, FanStatusStr(FanStatus) { switch (FanStatus) { case 1: return "开" case 2: return "关" default: return "异常" } }, OnlineStatusStr(Status) { switch (Status) { case 1: return "在线" case 2: return "离线" default: return "异常离线" } }, StatusStr(Status) { switch (Status) { case "NORMAL": return "正常" case "ALARM": return "预警" case "EXCESS": return "超标" case "DOWN": return "离线" default: return "异常离线" } }, // 设置表格斑马纹 tableRowClassName({ row, rowIndex }) { if ((rowIndex + 1) % 2 === 0) { return 'warning-row'; } else { return 'success-row'; } }, // 当前页改变触发事件 changeCurrentPage(page) { this.currentPage = page; this.getRealTimeList(); }, // 上一页点击事件 handlePrev(page) { this.currentPage = page; this.getRealTimeList(); }, // 下一页点击事件 handleNext(page) { this.currentPage = page; this.getRealTimeList(); }, dateFormat(fmt, date) { let ret; const opt = { "Y+": date.getFullYear().toString(), // 年 "m+": (date.getMonth() + 1).toString(), // 月 "d+": date.getDate().toString(), // 日 "H+": date.getHours().toString(), // 时 "M+": date.getMinutes().toString(), // 分 "S+": date.getSeconds().toString() // 秒 // 有其他格式化字符需求可以继续添加,必须转化成字符串 }; for (let k in opt) { ret = new RegExp("(" + k + ")").exec(fmt); if (ret) { fmt = fmt.replace(ret[1], (ret[1].length == 1) ? (opt[k]) : (opt[k].padStart(ret[1].length, "0"))) }; }; return fmt; }, } FanStatusStr(FanStatus) { switch (FanStatus) { case 1: return "开"; case 2: return "关"; default: return "异常"; } }, OnlineStatusStr(Status) { switch (Status) { case 1: return "在线"; case 2: return "离线"; default: return "异常离线"; } }, StatusStr(Status) { switch (Status) { case "NORMAL": return "正常"; case "ALARM": return "预警"; case "EXCESS": return "超标"; case "DOWN": return "离线"; default: return "异常离线"; } }, // 设置表格斑马纹 tableRowClassName({ row, rowIndex }) { if ((rowIndex + 1) % 2 === 0) { return "warning-row"; } else { return "success-row"; } }, // 当前页改变触发事件 changeCurrentPage(page) { this.currentPage = page; this.getRealTimeList(); }, // 上一页点击事件 handlePrev(page) { this.currentPage = page; this.getRealTimeList(); }, // 下一页点击事件 handleNext(page) { this.currentPage = page; this.getRealTimeList(); }, dateFormat(fmt, date) { let ret; const opt = { "Y+": date.getFullYear().toString(), // 年 "m+": (date.getMonth() + 1).toString(), // 月 "d+": date.getDate().toString(), // 日 "H+": date.getHours().toString(), // 时 "M+": date.getMinutes().toString(), // 分 "S+": date.getSeconds().toString(), // 秒 // 有其他格式化字符需求可以继续添加,必须转化成字符串 }; for (let k in opt) { ret = new RegExp("(" + k + ")").exec(fmt); if (ret) { fmt = fmt.replace( ret[1], ret[1].length == 1 ? opt[k] : opt[k].padStart(ret[1].length, "0") ); } } return fmt; }, }, }; </script> <style lang="scss" scoped> .el-table { .operation { display: flex; color: var(--operation-color); .line { padding: 0 5px; } span:hover { cursor: pointer; } .operation { display: flex; color: var(--operation-color); .line { padding: 0 5px; } span:hover { cursor: pointer; } } } </style>