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