From a1fb7d5473505c08cd0a20f68d3007c6efd383ff Mon Sep 17 00:00:00 2001 From: zhanghua <314079846@qq.com> Date: 星期五, 10 十一月 2023 13:40:46 +0800 Subject: [PATCH] 油烟 --- src/views/smoke/report/components/alarm.vue | 270 ++++++++++++ src/views/smoke/report/components/overallSituation.vue | 85 --- src/views/smoke/realTime/components/header/index.vue | 356 ++++++++-------- src/views/smoke/report/components/reduceEmissions.vue | 273 ++++++++++++ src/views/smoke/report/components/header/header2.vue | 7 src/views/smoke/report/components/header/header1.vue | 1 src/views/smoke/report/components/maintenance.vue | 310 +++++++++++++ 7 files changed, 1,037 insertions(+), 265 deletions(-) diff --git a/src/views/smoke/realTime/components/header/index.vue b/src/views/smoke/realTime/components/header/index.vue index cac24b3..47d5873 100644 --- a/src/views/smoke/realTime/components/header/index.vue +++ b/src/views/smoke/realTime/components/header/index.vue @@ -1,199 +1,197 @@ <template> - <div class="header"> - <el-form :inline="true" :model="seachData" class="demo-form-inline"> - <el-form-item label=""> - <el-select - style="width: 140px" - v-model="seachData.ownerIndex" - placeholder="鎵�灞炲崟浣�" - > - <el-option - v-for="(item, index) in ownerOptions" - :key="item.Id" - :label="item.Name" - :value="index" - > - </el-option> - </el-select> - </el-form-item> - <el-form-item label=""> - <el-select - style="width: 120px" - v-model="seachData.status" - placeholder="鎺掓斁鐘舵��" - > - <el-option - v-for="item in statusOptions" - :key="item.label" - :label="item.label" - :value="item.value" - > - </el-option> - </el-select> - </el-form-item> - <el-form-item label=""> - <el-select - style="width: 120px" - v-model="seachData.onlineStatus" - placeholder="鏁翠綋鐘舵��" - > - <el-option - v-for="item in onlineStatusOptions" - :key="item.label" - :label="item.label" - :value="item.value" - > - </el-option> - </el-select> - </el-form-item> + <div class="header"> + <el-form :inline="true" :model="seachData" class="demo-form-inline"> + <el-form-item label=""> + <el-select + style="width: 140px" + v-model="seachData.ownerIndex" + placeholder="鎵�灞炲崟浣�" + > + <el-option + v-for="(item, index) in ownerOptions" + :key="item.Id" + :label="item.Name" + :value="index" + > + </el-option> + </el-select> + </el-form-item> + <el-form-item label=""> + <el-select + style="width: 120px" + v-model="seachData.status" + placeholder="鎺掓斁鐘舵��" + > + <el-option + v-for="item in statusOptions" + :key="item.label" + :label="item.label" + :value="item.value" + > + </el-option> + </el-select> + </el-form-item> + <el-form-item label=""> + <el-select + style="width: 120px" + v-model="seachData.onlineStatus" + placeholder="鏁翠綋鐘舵��" + > + <el-option + v-for="item in onlineStatusOptions" + :key="item.label" + :label="item.label" + :value="item.value" + > + </el-option> + </el-select> + </el-form-item> - <el-form-item> - <el-radio v-model="seachData.type" label="1">鐩戞帶璁惧</el-radio> - <el-radio v-model="seachData.type" label="2">鐩戞祴璁惧</el-radio> - </el-form-item> - <el-form-item label=""> - <el-date-picker - v-model="seachData.alarmTime" - type="daterange" - align="right" - unlink-panels - range-separator="鑷�" - start-placeholder="寮�濮嬫棩鏈�" - end-placeholder="缁撴潫鏃ユ湡" - :picker-options="pickerOptions" - > - </el-date-picker> - </el-form-item> - <el-form-item> - <el-button type="primary" @click="getList">鍒锋柊</el-button> - <el-button type="primary" @click="resetAll">閲嶇疆</el-button> + <el-form-item> + <el-radio v-model="seachData.type" label="1">鐩戞帶璁惧</el-radio> + <el-radio v-model="seachData.type" label="2">鐩戞祴璁惧</el-radio> + </el-form-item> + <el-form-item label=""> + <el-date-picker + v-model="seachData.alarmTime" + type="daterange" + align="right" + unlink-panels + range-separator="鑷�" + start-placeholder="寮�濮嬫棩鏈�" + end-placeholder="缁撴潫鏃ユ湡" + :picker-options="pickerOptions" + > + </el-date-picker> + </el-form-item> + <el-form-item> + <el-button type="primary" @click="getList">鍒锋柊</el-button> + <el-button type="primary" @click="resetAll">閲嶇疆</el-button> - <el-button type="primary" @click="exportTableData" - >瀵煎嚭</el-button - > - </el-form-item> - </el-form> - </div> + <el-button type="primary" @click="exportTableData">瀵煎嚭</el-button> + </el-form-item> + </el-form> + </div> </template> <script> import realTimeApi from "@/api/smoke/realTime"; export default { - data() { - return { - onlineStatusOptions: [ - { - label: "姝e父", - value: 1, - }, - { - label: "绂荤嚎", - value: 2, - }, - { - label: "寮傚父绂荤嚎", - value: 3, - }, - ], - statusOptions: [ - { - label: "姝e父", - value: "NORMAL", - }, - { - label: "棰勮", - value: "ALARM", - }, - { - label: "瓒呮爣", - value: "EXCESS", - }, - { - label: "绂荤嚎", - value: "DOWN", - }, - { - label: "寮傚父绂荤嚎", - value: "OFF", - }, - ], - ownerOptions: [], - seachData: {}, - pickerOptions: { - shortcuts: [ - { - text: "鏈�杩戜竴鍛�", - onClick(picker) { - const end = new Date(); - const start = new Date(); - start.setTime(start.getTime() - 3600 * 1000 * 24 * 7); - picker.$emit("pick", [start, end]); - }, - }, - { - text: "鏈�杩戜竴涓湀", - onClick(picker) { - const end = new Date(); - const start = new Date(); - start.setTime(start.getTime() - 3600 * 1000 * 24 * 30); - picker.$emit("pick", [start, end]); - }, - }, - { - text: "鏈�杩戜笁涓湀", - onClick(picker) { - const end = new Date(); - const start = new Date(); - start.setTime(start.getTime() - 3600 * 1000 * 24 * 90); - picker.$emit("pick", [start, end]); - }, - }, - ], + data() { + return { + onlineStatusOptions: [ + { + label: "姝e父", + value: 1, + }, + { + label: "绂荤嚎", + value: 2, + }, + { + label: "寮傚父绂荤嚎", + value: 3, + }, + ], + statusOptions: [ + { + label: "姝e父", + value: "NORMAL", + }, + { + label: "棰勮", + value: "ALARM", + }, + { + label: "瓒呮爣", + value: "EXCESS", + }, + { + label: "绂荤嚎", + value: "DOWN", + }, + { + label: "寮傚父绂荤嚎", + value: "OFF", + }, + ], + ownerOptions: [], + seachData: {}, + pickerOptions: { + shortcuts: [ + { + text: "鏈�杩戜竴鍛�", + onClick(picker) { + const end = new Date(); + const start = new Date(); + start.setTime(start.getTime() - 3600 * 1000 * 24 * 7); + picker.$emit("pick", [start, end]); }, - }; + }, + { + text: "鏈�杩戜竴涓湀", + onClick(picker) { + const end = new Date(); + const start = new Date(); + start.setTime(start.getTime() - 3600 * 1000 * 24 * 30); + picker.$emit("pick", [start, end]); + }, + }, + { + text: "鏈�杩戜笁涓湀", + onClick(picker) { + const end = new Date(); + const start = new Date(); + start.setTime(start.getTime() - 3600 * 1000 * 24 * 90); + picker.$emit("pick", [start, end]); + }, + }, + ], + }, + }; + }, + created() {}, + mounted() { + this.getOwnerOptions(); + }, + methods: { + // 鑾峰彇鎵�灞炲崟浣� + getOwnerOptions() { + const param = { pageSize: 100, pageNum: 1 }; + realTimeApi + .findCustomerList(param) + .then((res) => { + this.ownerOptions = res.list; + }) + .catch((err) => this.$message.error(err)); }, - created() { }, - mounted() { - this.getOwnerOptions(); - }, - methods: { - // 鑾峰彇鎵�灞炲崟浣� - getOwnerOptions() { - const param = { pageSize: 100, pageNum: 1 }; - realTimeApi - .findCustomerList(param) - .then((res) => { - this.ownerOptions = res.list; - }) - .catch((err) => this.$message.error(err)); - }, - resetAll() { - this.seachData = {}; - this.$emit("getList", { seachData: this.seachData }); - }, - getList() { - if (this.seachData.ownerIndex !== undefined) { - const ownerItem = this.ownerOptions[this.seachData.ownerIndex]; - this.seachData.owner = ownerItem.Pid + ownerItem.Id + "/"; - } - this.$emit("getList", { seachData: this.seachData }); - }, - exportTableData() { - - if (this.seachData.ownerIndex !== undefined) { - const ownerItem = this.ownerOptions[this.seachData.ownerIndex]; - this.seachData.owner = ownerItem.Pid + ownerItem.Id + "/"; - } - this.$emit("exportTable", { seachData: this.seachData }); - } + resetAll() { + this.seachData = {}; + this.$emit("getList", { seachData: this.seachData }); }, + getList() { + if (this.seachData.ownerIndex !== undefined) { + const ownerItem = this.ownerOptions[this.seachData.ownerIndex]; + this.seachData.owner = ownerItem.Pid + ownerItem.Id + "/"; + } + this.$emit("getList", { seachData: this.seachData }); + }, + exportTableData() { + if (this.seachData.ownerIndex !== undefined) { + const ownerItem = this.ownerOptions[this.seachData.ownerIndex]; + this.seachData.owner = ownerItem.Pid + ownerItem.Id + "/"; + } + this.$emit("exportTable", { seachData: this.seachData }); + }, + }, }; </script> <style lang="scss" scoped> .header { - line-height: normal; + line-height: normal; + margin-left: 20px; } </style> diff --git a/src/views/smoke/report/components/alarm.vue b/src/views/smoke/report/components/alarm.vue index 17bcab3..3d8eb85 100644 --- a/src/views/smoke/report/components/alarm.vue +++ b/src/views/smoke/report/components/alarm.vue @@ -1,13 +1,277 @@ <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="80"> + </el-table-column> + <el-table-column + prop="AcquitAtStr" + label="鐩戞祴鐐�" + min-width="20%" + > + </el-table-column> + <el-table-column + prop="Addr" + label="瓒呮爣澶╂暟" + min-width="10%" + > + </el-table-column> + <el-table-column + prop="FanStatusStr" + label="鍑�鍖栧櫒涓嶆甯镐娇鐢ㄥぉ鏁�" + min-width="20%" + > + </el-table-column> + <el-table-column + prop="AA" + label="寮傚父浣跨敤澶╂暟" + min-width="10%" + > + </el-table-column> + <el-table-column + prop="EmissionsConc" + label="娓呮礂璁板綍锛堟锛�" + 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/header2.vue"; +import realTimeApi from "@/api/smoke/realTime"; export default { + 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, + }; + } -} + realTimeApi + .findInTimeList(params) + .then(({ list, total }) => { + list.forEach((e) => { + e.AcquitAtStr = this.dateFormat( + "YYYY-mm-dd HH:MM", + new Date(e.AcquitAt) + ); + 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 "姝e父"; + 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> +<style lang="scss" scoped> +.el-table { + .operation { + display: flex; + color: var(--operation-color); + .line { + padding: 0 5px; + } + span:hover { + cursor: pointer; + } + } +} </style> \ No newline at end of file diff --git a/src/views/smoke/report/components/header/header1.vue b/src/views/smoke/report/components/header/header1.vue index d5f49f7..6c4ef30 100644 --- a/src/views/smoke/report/components/header/header1.vue +++ b/src/views/smoke/report/components/header/header1.vue @@ -122,5 +122,6 @@ <style lang="scss" scoped> .header { line-height: normal; + margin-left: 20px; } </style> diff --git a/src/views/smoke/report/components/header/header2.vue b/src/views/smoke/report/components/header/header2.vue index 9cde2a1..a71f20a 100644 --- a/src/views/smoke/report/components/header/header2.vue +++ b/src/views/smoke/report/components/header/header2.vue @@ -66,8 +66,12 @@ return { codeColorOptions: [ { - label: "绾功", + label: "绾㈣壊", value: "Red", + }, + { + label: "榛勮壊", + value: "Yellow", }, { label: "缁胯壊", @@ -151,5 +155,6 @@ <style lang="scss" scoped> .header { line-height: normal; + margin-left: 20px; } </style> diff --git a/src/views/smoke/report/components/maintenance.vue b/src/views/smoke/report/components/maintenance.vue index 17bcab3..f0ac3f6 100644 --- a/src/views/smoke/report/components/maintenance.vue +++ b/src/views/smoke/report/components/maintenance.vue @@ -1,13 +1,301 @@ <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="80"> + </el-table-column> + <el-table-column + prop="AcquitAtStr" + label="鐩戞祴鐐�" + min-width="15%" + > + </el-table-column> + <el-table-column + prop="Addr" + label="璁惧缂栧彿" + min-width="10%" + > + </el-table-column> + <el-table-column + prop="FanStatusStr" + label="寮傚父绂荤嚎澶╂暟" + min-width="10%" + > + </el-table-column> + <el-table-column + prop="AA" + label="寮傚父绂荤嚎寰呭鐞嗗ぉ鏁�" + min-width="10%" + > + </el-table-column> + <el-table-column + prop="EmissionsConc" + label="姝囦笟澶╂暟" + min-width="10%" + > + </el-table-column> + <el-table-column + prop="EmissionsConc" + label="鍑�鍖栧櫒涓嶆甯镐娇鐢ㄥぉ鏁�" + min-width="10%" + > + </el-table-column> + <el-table-column + prop="EmissionsConc" + label="鐩戞祴浠晠闅滃ぉ鏁�" + min-width="10%" + > + </el-table-column> + <el-table-column + prop="EmissionsConc" + label="搴楀鍘熷洜瀵艰嚧绂荤嚎澶╂暟" + min-width="10%" + > + </el-table-column> + <el-table-column + prop="EmissionsConc" + label="澶勭悊鐜�" + 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> -</template> - -<script> -export default { - -} -</script> - -<style> - -</style> \ No newline at end of file + <script> + import MyHeader from "./header/header2.vue"; + import realTimeApi from "@/api/smoke/realTime"; + export default { + 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, + }; + } + + realTimeApi + .findInTimeList(params) + .then(({ list, total }) => { + list.forEach((e) => { + e.AcquitAtStr = this.dateFormat( + "YYYY-mm-dd HH:MM", + new Date(e.AcquitAt) + ); + 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 "姝e父"; + 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; + } + } + } + </style> \ No newline at end of file diff --git a/src/views/smoke/report/components/overallSituation.vue b/src/views/smoke/report/components/overallSituation.vue index b7ce7bf..0a1ab48 100644 --- a/src/views/smoke/report/components/overallSituation.vue +++ b/src/views/smoke/report/components/overallSituation.vue @@ -18,98 +18,47 @@ :data="tableData" :row-class-name="tableRowClassName" > - <el-table-column label="搴忓彿" type="index" width="60px"> + <el-table-column label="搴忓彿" type="index" width="50"> </el-table-column> - <el-table-column prop="Locale" label="鐩戞祴鐐�" width="120px"> + <el-table-column prop="AcquitAtStr" label="閲囬泦鏃堕棿" width="auto" min-width="20%"> </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="Addr" label="璁惧鎬绘暟" width="auto" min-width="10%"> </el-table-column> <el-table-column prop="FanStatusStr" - label="椋庢満鐘舵��" - width="80px" + label="杈炬爣鏁�" + width="auto" min-width="10%" > </el-table-column> <el-table-column - prop="FilterStatusStr" + prop="杈炬爣姣斾緥" label="鍑�鍖栧櫒鐘舵��" - width="95px" + width="auto" min-width="10%" > </el-table-column> <el-table-column prop="EmissionsConc" - label="娌圭儫瀹炴椂娴撳害锛坢g/m3锛�" - width="110px" + label="瓒呮爣鏁�" + width="auto" min-width="10%" > </el-table-column> <el-table-column prop="CEmissions" - label="娌圭儫鎶樼畻娴撳害锛坢g/m3锛�" - width="110px" + label="瓒呮爣姣斾緥" + width="auto" min-width="10%" > </el-table-column> <el-table-column prop="GranuleConc" - label="棰楃矑鐗╁疄鏃舵祿搴︼紙mg/m3锛�" - width="120px" + label="鍦ㄧ嚎鏁�" + width="auto" min-width="10%" > </el-table-column> <el-table-column prop="CGranule" - label="棰楃矑鐗╂姌绠楁祿搴︼紙mg/m3锛�" - width="120px" + label="鍦ㄧ嚎姣斾緥" + width="auto" min-width="10%" > - </el-table-column> - <el-table-column - prop="HydrocarbonConc" - label="闈炵敳鐑锋�荤儍瀹炴椂娴撳害锛坢g/m3锛�" - width="160px" - > - </el-table-column> - <el-table-column - prop="CHydrocarbon" - label="闈炵敳鐑锋�荤儍鎶樼畻娴撳害锛坢g/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> @@ -191,14 +140,14 @@ if (window.navigator.msSaveBlob) { window.navigator.msSaveBlob( blob, - deathdate + "瀹炴椂鏁版嵁" + ".xls" + 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"; + link.download = deathdate + "鐩戞祴鎬讳綋鎯呭喌鎶ヨ〃" + ".xls"; document.body.appendChild(link); link.click(); document.body.removeChild(link); diff --git a/src/views/smoke/report/components/reduceEmissions.vue b/src/views/smoke/report/components/reduceEmissions.vue index 17bcab3..4f2b7f7 100644 --- a/src/views/smoke/report/components/reduceEmissions.vue +++ b/src/views/smoke/report/components/reduceEmissions.vue @@ -1,13 +1,280 @@ <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="娌圭儫鍑忔帓锛圞g锛�" + 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> </template> <script> +import MyHeader from "./header/header1.vue"; +import realTimeApi from "@/api/smoke/realTime"; export default { + 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, + }; + } -} + realTimeApi + .findInTimeList(params) + .then(({ list, total }) => { + list.forEach(e => { + e.AcquitAtStr = this.dateFormat("YYYY-mm-dd HH:MM", new Date(e.AcquitAt)); + 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 "姝e父" + 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> +<style lang="scss" scoped> +.el-table { + .operation { + display: flex; + color: var(--operation-color); + .line { + padding: 0 5px; + } + span:hover { + cursor: pointer; + } + } +} </style> \ No newline at end of file -- Gitblit v1.8.0