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,9 +1,6 @@ <template> <div> <MyHeader @getList="getRealTimeList" @exportTable="exportInTime" ></MyHeader> <MyHeader @getList="getRealTimeList" @exportTable="exportInTime"></MyHeader> <!-- 数据展示 --> <div style="width: 100%; overflow-x: scroll"> <el-table @@ -13,7 +10,7 @@ :header-cell-style="{ background: '#F5F5F5', 'font-weight': '650', 'line-height': '45px' 'line-height': '45px', }" :data="tableData" :row-class-name="tableRowClassName" @@ -24,23 +21,11 @@ </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 prop="AcquitAtStr" label="采集时间" width="100px"> </el-table-column> <el-table-column prop="FanStatusStr" label="风机状态" width="80px" > <el-table-column prop="FanStatusStr" label="风机状态" width="80px"> </el-table-column> <el-table-column prop="FilterStatusStr" label="净化器状态" width="95px" > <el-table-column prop="FilterStatusStr" label="净化器状态" width="95px"> </el-table-column> <el-table-column prop="EmissionsConc" @@ -80,34 +65,24 @@ </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 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 @click="handleDetectorDailySumDays(scope.row)" >一点一档</span > <span class="line">|</span> <span @click="handleDispatch(scope.row)" >查看每分钟数据</span > <span @click="handleIntimeData(scope.row)">查看每分钟数据</span> <span class="line">|</span> <span @click="handleLearn(scope.row)" >查看10min浓度</span > <span @click="handleTenMinData(scope.row)">查看10min浓度</span> <span class="line">|</span> <span @click="handleNotDeal(scope.row)" <span @click="handleTenHourData(scope.row)" >查看小时折算浓度</span > <span class="line">|</span> <span @click="handleNotDeal(scope.row)" >监测点设备管理</span > <span @click="handleDevices(scope.row)">监测点设备管理</span> </div> </template> </el-table-column> @@ -128,11 +103,80 @@ </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() { @@ -141,9 +185,22 @@ totalNum: 0, pageSize: 10, currentPage: 1, dialogDetectorDailySumDays: false, dialogDevices: false, dialogIntimeData: false, dialogTenHourData: false, dialogTenMinData: false, inTimeData:{} }; }, components: { MyHeader }, components: { MyHeader, DetectorDailySumDays, TenHourData, Devices, IntimeData, TenMinData, }, created() { this.getRealTimeList(); }, @@ -151,7 +208,7 @@ getRealTimeList(seachData) { let params; if (seachData) { params = this.getParam(seachData) params = this.getParam(seachData); } else { params = { pageNum: this.currentPage, @@ -162,12 +219,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) 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; @@ -177,22 +237,19 @@ exportInTime(seachData) { let params; if (seachData) { params = this.getParam(seachData) params = this.getParam(seachData); } realTimeApi .exportInTime(params) .then((res) => { debugger 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" ); window.navigator.msSaveBlob(blob, deathdate + "实时数据" + ".xls"); } else { const url = window.URL.createObjectURL(blob); const link = document.createElement("a"); @@ -210,31 +267,29 @@ getParam(seachData) { let params; if (seachData) { const seachParams = seachData.seachData const seachParams = seachData.seachData; params = { owner: seachParams.owner == undefined ? null : seachParams.owner, 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, 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]), : 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]), : this.dateFormat( "YYYY-mm-dd HH:MM:SS", seachParams.alarmTime[1] ), }; } return params; @@ -243,43 +298,43 @@ FanStatusStr(FanStatus) { switch (FanStatus) { case 1: return "开" return "开"; case 2: return "关" return "关"; default: return "异常" return "异常"; } }, OnlineStatusStr(Status) { switch (Status) { case 1: return "在线" return "在线"; case 2: return "离线" return "离线"; default: return "异常离线" return "异常离线"; } }, StatusStr(Status) { switch (Status) { case "NORMAL": return "正常" return "正常"; case "ALARM": return "预警" return "预警"; case "EXCESS": return "超标" return "超标"; case "DOWN": return "离线" return "离线"; default: return "异常离线" return "异常离线"; } }, // 设置表格斑马纹 tableRowClassName({ row, rowIndex }) { if ((rowIndex + 1) % 2 === 0) { return 'warning-row'; return "warning-row"; } else { return 'success-row'; return "success-row"; } }, // 当前页改变触发事件 @@ -305,18 +360,48 @@ "d+": date.getDate().toString(), // 日 "H+": date.getHours().toString(), // 时 "M+": date.getMinutes().toString(), // 分 "S+": date.getSeconds().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"))) }; }; 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> 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); }); statisticsApi .findCurAlarmList(params) .then((list) => { this.tableData = list; this.totalNum = total; 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,9 +1,6 @@ <template> <div> <MyHeader @getList="getRealTimeList" @exportTable="exportInTime" ></MyHeader> <MyHeader @getList="getRealTimeList" @exportTable="exportInTime"></MyHeader> <!-- 数据展示 --> <div style="width: 100%; overflow-x: scroll"> <el-table @@ -13,43 +10,39 @@ :header-cell-style="{ background: '#F5F5F5', 'font-weight': '650', 'line-height': '45px' '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 prop="LocaleName" label="监测点" min-width="10%"> </el-table-column> <el-table-column prop="Addr" label="安装地址" min-width="20%"> <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="FanStatusStr" label="设备编码" min-width="15%" > </el-table-column> <el-table-column prop="AAA" prop="RedPm25" label="PM2.5减排量(Kg)" min-width="10%" min-width="12%" > </el-table-column> <el-table-column prop="EmissionsConc" prop="RedPm10" label="PM10减排量(Kg)" min-width="10%" > </el-table-column> <el-table-column prop="CEmissions" prop="RedEmissions" label="油烟减排(Kg)" min-width="10%" > </el-table-column> <el-table-column prop="GranuleConc" prop="RedVocs" label="vocs减排量(Kg)" min-width="10%" > @@ -76,7 +69,7 @@ <script> import MyHeader from "./header/header1.vue"; import realTimeApi from "@/api/smoke/realTime"; import statisticsApi from "@/api/smoke/statistics"; export default { data() { return { @@ -94,7 +87,7 @@ getRealTimeList(seachData) { let params; if (seachData) { params = this.getParam(seachData) params = this.getParam(seachData); } else { params = { pageNum: this.currentPage, @@ -102,30 +95,25 @@ }; } 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 .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) params = this.getParam(seachData); } realTimeApi .exportInTime(params) .then((res) => { debugger debugger; let time = new Date(); let deathdate = time.toLocaleDateString(); const blob = new Blob([res.data], { @@ -153,31 +141,29 @@ getParam(seachData) { let params; if (seachData) { const seachParams = seachData.seachData const seachParams = seachData.seachData; params = { owner: seachParams.owner == undefined ? null : seachParams.owner, 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, 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]), : 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]), : this.dateFormat( "YYYY-mm-dd HH:MM:SS", seachParams.alarmTime[1] ), }; } return params; @@ -186,43 +172,43 @@ FanStatusStr(FanStatus) { switch (FanStatus) { case 1: return "开" return "开"; case 2: return "关" return "关"; default: return "异常" return "异常"; } }, OnlineStatusStr(Status) { switch (Status) { case 1: return "在线" return "在线"; case 2: return "离线" return "离线"; default: return "异常离线" return "异常离线"; } }, StatusStr(Status) { switch (Status) { case "NORMAL": return "正常" return "正常"; case "ALARM": return "预警" return "预警"; case "EXCESS": return "超标" return "超标"; case "DOWN": return "离线" return "离线"; default: return "异常离线" return "异常离线"; } }, // 设置表格斑马纹 tableRowClassName({ row, rowIndex }) { if ((rowIndex + 1) % 2 === 0) { return 'warning-row'; return "warning-row"; } else { return 'success-row'; return "success-row"; } }, // 当前页改变触发事件 @@ -248,18 +234,21 @@ "d+": date.getDate().toString(), // 日 "H+": date.getHours().toString(), // 时 "M+": date.getMinutes().toString(), // 分 "S+": date.getSeconds().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"))) }; }; fmt = fmt.replace( ret[1], ret[1].length == 1 ? opt[k] : opt[k].padStart(ret[1].length, "0") ); } } return fmt; }, } }, }; </script>