From 0b803f46bffb4b59b5618c49eb81f1c16db672cf Mon Sep 17 00:00:00 2001
From: zhanghua <314079846@qq.com>
Date: 星期日, 12 十一月 2023 10:09:46 +0800
Subject: [PATCH] 油烟统计
---
src/views/smoke/judgment/components/index.vue | 650 ++++++++++++++++++++++++++++++++++
src/views/smoke/report/components/alarm.vue | 66 --
src/views/smoke/report/components/overallSituation.vue | 2
vue.config.js | 4
src/views/smoke/realTime/index.vue | 2
src/api/smoke/statistics.js | 18
src/views/smoke/judgment/index.vue | 243 ++++++++++++
src/views/smoke/report/components/reduceEmissions.vue | 2
src/views/smoke/judgment/header/index.vue | 120 ++++++
src/views/intelligentPatrol/studyJudge/tablePage.vue | 2
src/views/smoke/alarm/index.vue | 2
src/views/smoke/report/components/maintenance.vue | 2
12 files changed, 1,048 insertions(+), 65 deletions(-)
diff --git a/src/api/smoke/statistics.js b/src/api/smoke/statistics.js
new file mode 100644
index 0000000..3f5c296
--- /dev/null
+++ b/src/api/smoke/statistics.js
@@ -0,0 +1,18 @@
+import http from '@/http'
+
+export default {
+ // 妫�娴嬩华鎬讳綋鎯呭喌鎶ヨ〃
+ findDataDetectorDailyStats: (params) => {
+ return http.get('/sccg/smoke/statistics/listDataDetectorDailyStats', params);
+ },
+ // 娌圭儫鍑忔帓缁熻
+ findDetectorDaily: (params) => {
+ return http.get('/sccg/smoke/statistics/listDetectorDaily', params);
+ },
+
+ // 鐩戞祴鎶ヨ缁熻&杩愮淮鎯呭喌鎶ヨ〃
+ findCurAlarmList: (params) => {
+ return http.get('/sccg/smoke/statistics/listCurAlarm', params);
+ }
+
+}
\ No newline at end of file
diff --git a/src/views/intelligentPatrol/studyJudge/tablePage.vue b/src/views/intelligentPatrol/studyJudge/tablePage.vue
index 2febc11..06556f2 100644
--- a/src/views/intelligentPatrol/studyJudge/tablePage.vue
+++ b/src/views/intelligentPatrol/studyJudge/tablePage.vue
@@ -61,7 +61,7 @@
</el-table-column>
<el-table-column prop="eventSource" label="浜嬩欢绫诲瀷" min-width="8">
<template slot-scope="scope">
- <span>{{ scope.row.alarmName }}</span>
+ <span>{{ scope.row.alarmName||scope.row.grade }}</span>
</template>
</el-table-column>
<el-table-column prop="alarmTime" label="鎶ヨ鏃堕棿" min-width="15">
diff --git a/src/views/smoke/alarm/index.vue b/src/views/smoke/alarm/index.vue
index 45ec584..309dab3 100644
--- a/src/views/smoke/alarm/index.vue
+++ b/src/views/smoke/alarm/index.vue
@@ -95,7 +95,7 @@
list.forEach((e) => {
e.AcquitAtStr = this.dateFormat(
"YYYY-mm-dd HH:MM",
- new Date(e.AcquitAt)
+ new Date(e.AcquitAt*1000)
);
e.MsgTypeStr = this.MsgTypeStr(e.MsgType);
});
diff --git a/src/views/smoke/judgment/components/index.vue b/src/views/smoke/judgment/components/index.vue
new file mode 100644
index 0000000..7518f57
--- /dev/null
+++ b/src/views/smoke/judgment/components/index.vue
@@ -0,0 +1,650 @@
+<template>
+ <div class="study-judge">
+ <div class="study-judge-main">
+ <div class="sjm-content">
+ <div class="sjm-content-left">
+ <div class="sjm-header-left">
+ <span class="moni-name"
+ >鐩戞帶鐐逛綅鍚嶇О: {{ currentEvent.Addr }}
+ </span>
+ <div style="color: #333; margin-top: 60px">
+ 娑堟伅鍐呭
+ </div>
+ <div style="color: #333; width: 300px">
+ {{ currentEvent.Content }}
+ </div>
+ </div>
+ </div>
+ <div class="sjm-content-center">
+ <div class="map">
+ <MyMap :point="point" :zoom="zoom" :mark="mark"></MyMap>
+ </div>
+ </div>
+ <div class="sjm-content-right">
+ <div class="card-box">
+ <el-form
+ ref="currentEvent"
+ label-width="120px"
+ :model="eventInfoData"
+ :rules="rules"
+ >
+ <el-form-item label="鍏宠仈搴楅摵" prop="store">
+ <el-select
+ v-model="eventInfoData.store"
+ clearable
+ @change="selectStoreChange"
+ placeholder="璇烽�夋嫨鍏宠仈搴楅摵"
+ >
+ <el-option
+ v-for="store in storeList"
+ :value="store.id"
+ :label="store.storeName"
+ :key="store.id"
+ />
+ </el-select>
+ </el-form-item>
+ <el-form-item
+ v-if="eventInfoData.store"
+ label="搴楅摵寰楀垎:"
+ >
+ <span>{{
+ selectStoreChange(eventInfoData.store)
+ .storeScore
+ }}</span>
+ </el-form-item>
+ <el-form-item label="澶勭悊鎰忚:" prop="state">
+ <el-radio-group v-model="eventInfoData.state">
+ <el-radio
+ :label="item.id"
+ v-for="item in stateList"
+ :key="item.id"
+ >{{ item.label }}</el-radio
+ >
+ </el-radio-group>
+ </el-form-item>
+ <el-form-item label="澶х被鍚嶇О:" prop="categoryId">
+ <el-select
+ v-model="eventInfoData.categoryId"
+ placeholder="璇烽�夋嫨澶х被鍚嶇О"
+ @change="categoryChange"
+ >
+ <el-option
+ v-for="category in categoryOptions"
+ :key="category.id"
+ :value="category.id"
+ :label="category.name"
+ />
+ </el-select>
+ </el-form-item>
+ <el-form-item label="灏忕被鍚嶇О:" prop="typeId">
+ <el-select
+ v-model="eventInfoData.typeId"
+ placeholder="璇烽�夋嫨灏忕被鍚嶇О"
+ >
+ <el-option
+ v-for="type in typeOptions"
+ :key="type.id"
+ :value="type.id"
+ :label="type.name"
+ />
+ </el-select>
+ </el-form-item>
+ <el-form-item label="澶囨敞:" prop="description">
+ <el-input
+ type="textarea"
+ :rows="5"
+ v-model="eventInfoData.description"
+ ></el-input>
+ </el-form-item>
+ <el-form-item>
+ <el-button
+ :disabled="currentPage === 1"
+ @click="pageChange('prev')"
+ >涓婁竴鏉�</el-button
+ >
+ <el-button @click.native.prevent="handleConfirm"
+ >纭</el-button
+ >
+ <el-button @click="pageChange('next')"
+ >涓嬩竴鏉�</el-button
+ >
+ </el-form-item>
+ </el-form>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+</template>
+
+<script>
+import basecase from "@/api/operate/basecase";
+import baseInfo from "@/api/baseInfo";
+import { FILE_ORIGINAL_URL } from "@/utils";
+import { getStoreInfoList } from "@/api/operate/storeManagement";
+import MyDispatch from "@/components/dispatch";
+import MyMap from "@/components/map/leafletMap.vue";
+
+export default {
+ components: { MyDispatch, MyMap },
+ created() {
+ this.currentEvent = this.info;
+ this.initEventParams();
+
+ getStoreInfoList({ current: 1, size: 100 })
+ .then(({ list }) => {
+ this.storeList = list;
+ })
+ .catch((err) => {
+ this.$message.error(err);
+ });
+
+ baseInfo
+ .getCategoryList()
+ .then((res) => {
+ this.categoryOptions = res;
+ })
+ .catch((err) => this.$message.error(err));
+
+ baseInfo
+ .getTypeList()
+ .then((res) => {
+ this.typeList = res;
+ })
+ .catch((err) => this.$message.error(err));
+ },
+ data() {
+ return {
+ seachData: {},
+ isShowTable: false,
+ timer: null,
+ countData: {
+ study: 0,
+ review: 0,
+ register: 0,
+ },
+ currentEvent: {},
+ stateList: [
+ {
+ id: 10,
+ label: "涓婃姤",
+ },
+ {
+ id: 6,
+ label: "璋冨害",
+ },
+ {
+ id: 3,
+ label: "鍐嶅涔�",
+ },
+ {
+ id: 4,
+ label: "鏆備笉澶勭悊",
+ },
+ ],
+ eventInfoData: {},
+ rules: {
+ state: [
+ {
+ required: true,
+ trigger: ["blur"],
+ message: "澶勭悊鎰忚涓嶈兘涓虹┖",
+ },
+ ],
+ categoryId: [
+ {
+ required: true,
+ trigger: ["blur"],
+ message: "澶х被鍚嶇О涓嶈兘涓虹┖",
+ },
+ ],
+ typeId: [
+ {
+ required: true,
+ trigger: ["blur"],
+ message: "灏忕被鍚嶇О涓嶈兘涓虹┖",
+ },
+ ],
+ },
+ imageList: [],
+ currentPage: 1,
+ categoryOptions: [],
+ typeOptions: [],
+ storeList: [],
+ typeList: [],
+ isShowDialog: false,
+ dialogCreate: false,
+ cutPosX: 10,
+ cutPosY: 10,
+ cutWidth: 100,
+ cutHeight: 100,
+ crtPosX: 0,
+ crtPosY: 0,
+ crtWidth: 1000,
+ crtHeight: 600,
+ domId: "dom1",
+ ctrl: "ctrl1",
+ playType: "live",
+ point: null,
+ mark: null,
+ zoom: null,
+ };
+ },
+ methods: {
+ pageChange(type) {
+ if (type === "next") {
+ this.currentPage += 1;
+ } else {
+ this.currentPage -= 1;
+ }
+ this.getInspectionData();
+ },
+
+ getInspectionData() {
+ let data = {
+ current: this.currentPage,
+ pageSize: 1,
+ videoId: this.seachData.videoId,
+ };
+ if (this.seachData.alarmTime) {
+ data.beginTime = this.seachData.alarmTime[0];
+ data.endTime = this.seachData.alarmTime[1];
+ }
+ if (this.seachData.gradeId) {
+ data.gradeId = this.seachData.gradeId[1];
+ }
+ basecase
+ .getInspectionData(data)
+ .then(({ records, total }) => {
+ this.countData.review = total;
+ if (records.length > 0) {
+ this.currentEvent = records[0];
+ this.loadData();
+ } else {
+ this.currentEvent = {};
+ this.$message("褰撳墠鏌ヨ鏉′欢鏃犳暟鎹�");
+ }
+ })
+ .catch((err) => this.$message.error(err));
+ },
+ loadData() {
+ this.point = {
+ x: this.currentEvent.longitude,
+ y: this.currentEvent.latitude,
+ };
+ this.zoom = 18;
+ this.mark = { title: this.currentEvent.address };
+ if (this.currentEvent?.picData) {
+ this.imageList = this.currentEvent.picData
+ .split(",")
+ .map((item) => `${FILE_ORIGINAL_URL}sccg/API/img?fileUrl=${item}`);
+ // this.imageList =['https://www.shutterstock.com/image-photo/grandmother-holding-grandson-her-lap-600w-1954531321.jpg','https://www.shutterstock.com/image-photo/grandmother-holding-grandson-her-lap-600w-1954531321.jpg']
+ }
+ if (this.currentEvent?.alarmTime || this.currentEvent?.currentAlarmTime) {
+ const { alarmTime, currentAlarmTime } = this.currentEvent;
+ const continueAlarmTime =
+ new Date().getTime() -
+ (currentAlarmTime
+ ? new Date(currentAlarmTime).getTime()
+ : new Date(alarmTime).getTime());
+ const CONTINUE_DAY = continueAlarmTime / 1000 / 60 / 60 / 24;
+ const CONTINUE_HOURS = (CONTINUE_DAY - parseInt(CONTINUE_DAY)) * 24;
+ this.currentEvent.conntinueTime = `${parseInt(
+ CONTINUE_DAY
+ )}澶�${parseInt(CONTINUE_HOURS)}灏忔椂`;
+ }
+ },
+ // 纭鐐瑰嚮浜嬩欢
+ handleConfirm() {
+ debugger
+ this.$refs.currentEvent.validate((flag) => {
+ if (flag) {
+ this.eventInfoData.baseId = this.currentEvent.baseId;
+
+ // 璋冨害
+ if (this.eventInfoData.state === 6) {
+ this.isShowDialog = true;
+ } else {
+ this.confirmInspection();
+ }
+ } else {
+ this.$message.warning("璇锋鏌ュ繀濉」");
+ }
+ });
+ },
+
+ initEventParams() {
+ this.eventInfoData = {
+ baseId: null,
+ store: null,
+ state: null,
+ categoryId: null,
+ typeId: null,
+ carNumber: null,
+ description: null,
+ linkShop: 0,
+ shopName: null,
+ };
+ },
+
+ categoryChange(id) {
+ this.typeOptions = this.typeList.filter((type) => type.parentId === id);
+ },
+
+ confirmInspection(data) {
+ const eventParams = Object.assign({}, this.eventInfoData);
+ delete eventParams.store;
+ basecase
+ .confirmInspection({ ...eventParams, ...data })
+ .then(() => {
+ this.$message.success("鎿嶄綔鎴愬姛");
+ this.getInspectionData();
+ this.initEventParams();
+ })
+ .catch((err) => this.$message.error(err));
+ },
+
+ getInspectionData() {
+ let data = {
+ current: this.currentPage,
+ pageSize: 1,
+ videoId: this.seachData.videoId,
+ };
+ if (this.seachData.alarmTime) {
+ data.beginTime = this.seachData.alarmTime[0];
+ data.endTime = this.seachData.alarmTime[1];
+ }
+ if (this.seachData.gradeId) {
+ data.gradeId = this.seachData.gradeId[1];
+ }
+ basecase
+ .getInspectionData(data)
+ .then(({ records, total }) => {
+ this.countData.review = total;
+ if (records.length > 0) {
+ this.currentEvent = records[0];
+ this.loadData();
+ } else {
+ this.currentEvent = {};
+ this.$message("褰撳墠鏌ヨ鏉′欢鏃犳暟鎹�");
+ }
+ })
+ .catch((err) => this.$message.error(err));
+ },
+ closeDialog() {
+ this.isShowDialog = false;
+ },
+
+ selectStoreChange(id) {
+ if (id === "") {
+ this.eventInfoData.shopName = null;
+ this.eventInfoData.linkShop = 0;
+ this.eventInfoData.store = null;
+ return;
+ }
+ const selectedStore = this.storeList.find((store) => store.id === id);
+ this.eventInfoData.shopName = selectedStore.id;
+ this.eventInfoData.linkShop = 1;
+ return selectedStore;
+ },
+ login() {
+ // 璋冪敤鐧诲綍鎺ュ彛
+ this.ws.detectConnectQt().then((res) => {
+ if (res) {
+ // 杩炴帴瀹㈡埛绔垚鍔�
+ this.ws.login({
+ loginIp: "172.28.194.180",
+ loginPort: "7902",
+ userName: "suichang",
+ userPwd: "a12345677",
+ https: 1,
+ });
+ this.$message.info("鐧诲綍涓�...");
+ this.ws.on("loginState", (res) => {
+ this.isLogin = res;
+ if (res) {
+ this.$message.success("鐧诲綍鎴愬姛");
+ this.activePanel = "key2";
+ } else {
+ this.$message.info("鐧诲綍澶辫触");
+ }
+ });
+ } else {
+ // 杩炴帴瀹㈡埛绔け璐�
+ this.$message.info("璇烽噸鏂板畨瑁呭鎴风");
+ }
+ });
+ },
+ logout() {
+ // 璋冪敤鐧诲嚭鎺ュ彛
+ this.ws.logout({
+ loginIp: this.loginIp,
+ });
+ },
+ createVideo(item, ctrlType) {
+ this.playType = ctrlType;
+ const DHWsInstance = DHWs.getInstance();
+ this.ws = DHWsInstance;
+ console.log(this.ws);
+ this.login();
+ // 璋冪敤鍒涘缓鎺т欢鎺ュ彛
+ // if (!this.isLogin) {
+ // this.$message.info('姝e湪鐧婚檰瀹㈡埛绔紝璇风◢绛�......');
+ // return false;
+ // }
+ this.dialogCreate = true;
+ setTimeout(() => {
+ let _this = this;
+ const params = [
+ {
+ // ctrlType: "realMonitorUI",
+ ctrlType: "playerWin",
+ ctrlCode: this.ctrl,
+ ctrlProperty: {
+ displayMode: ctrlType == "playback" ? 2 : 1,
+ splitNum: 1,
+ channelList: [{ channelId: item.videoCode }],
+ },
+ visible: true,
+ domId: this.domId,
+ },
+ ];
+ this.setPos();
+
+ // _this.ws.on("createCtrlResult", (res) => {
+ // console.warn(res);
+ // });
+
+ _this.ws
+ .createCtrl(params)
+ .then((res) => {
+ this.$message.success("鍒涘缓鎴愬姛");
+ console.log("res", res);
+ })
+ .catch((e) => {
+ console.log("error;", e);
+ });
+
+ if (ctrlType == "playback") {
+ const end = new Date();
+ const start = new Date();
+ start.setTime(start.getTime() - 3600 * 1000 * 24 * 1);
+
+ let beginTime = _this.formatDate(start);
+ let endTime = _this.formatDate(end);
+ const params = [
+ {
+ ctrlCode: this.ctrl,
+ array: [
+ {
+ beginTime: beginTime,
+ endTime: endTime,
+ channelId: item.videoCode,
+ },
+ ],
+ },
+ ];
+ _this.ws.openCtrlRecord(params);
+ }
+ }, 1000);
+ },
+ destroy() {
+ // 璋冪敤閿�姣佹帶浠舵帴鍙�
+ if (!this.isLogin) {
+ this.$Message.info("姝e湪鐧婚檰瀹㈡埛绔紝璇风◢绛�......");
+ return false;
+ }
+ const ctrls = this.ws.ctrls.map((i) => {
+ if (i.ctrlCode === this.ctrl) {
+ return i.ctrlCode;
+ }
+ });
+ this.ws.destroyCtrl(ctrls);
+ },
+ setPos() {
+ let target = document.getElementById(this.domId);
+ console.log(target, "target");
+ target.style.right = `${this.crtPosX}px`;
+ target.style.top = `${this.crtPosY}px`;
+ target.style.width = `${this.crtWidth}px`;
+ target.style.height = `${this.crtHeight}px`;
+ if (document.createEvent) {
+ var event = document.createEvent("HTMLEvents");
+ event.initEvent("resize", true, true);
+ window.dispatchEvent(event);
+ } else if (document.createEventObject) {
+ window.fireEvent("onresize");
+ }
+ },
+
+ // 鏃堕棿鎴宠浆 yyyy-MM-dd HH:mm:ss
+ formatDate(inputTime) {
+ var date = new Date(inputTime);
+ var y = date.getFullYear();
+ var m = date.getMonth() + 1;
+ m = m < 10 ? "0" + m : m;
+ var d = date.getDate();
+ d = d < 10 ? "0" + d : d;
+ var h = date.getHours();
+ h = h < 10 ? "0" + h : h;
+ var minute = date.getMinutes();
+ var second = date.getSeconds();
+ minute = minute < 10 ? "0" + minute : minute;
+ second = second < 10 ? "0" + second : second;
+ return y + "-" + m + "-" + d + " " + h + ":" + minute + ":" + second;
+ },
+ },
+ beforeDestroy() {
+ clearInterval(this.timer);
+ this.timer = null;
+ },
+
+ props: ["info"],
+};
+</script>
+
+<style lang="scss" scoped>
+.study-judge {
+ text-align: left;
+ color: #4b9bb7;
+ padding: 10px 20px;
+
+ .study-judge-header {
+ line-height: 3vh;
+ }
+
+ .study-judge-main {
+ .sjm-header {
+ line-height: 8vh;
+ display: flex;
+ justify-content: space-between;
+
+ .sjm-header-left {
+ flex: 1;
+ display: flex;
+ justify-content: flex-start;
+
+ .moni-area {
+ margin-left: 4vw;
+ }
+ }
+
+ .sjm-header-right {
+ flex: 1;
+ display: flex;
+ justify-content: flex-end;
+
+ .el-button {
+ padding: 0 1vw;
+ height: 4vh;
+ }
+ }
+ }
+
+ .sjm-content {
+ display: flex;
+ justify-content: space-between;
+
+ .sjm-content-left {
+ line-height: 4.8vh;
+ .count-data-span {
+ cursor: pointer;
+ color: #66b1ff;
+ }
+ .left-form > ::v-deep.el-form-item__label {
+ font-size: 16px !important;
+ }
+ .img-item {
+ display: flex;
+ flex-direction: column;
+ img {
+ width: 15vw;
+ height: 20vh;
+ }
+ }
+
+ .img-item + .img-item {
+ margin-top: 2vh;
+ }
+ }
+ .sjm-content-center {
+ width: calc(100% - 920px);
+ }
+ .sjm-content-right {
+ .card-box {
+ .but-live {
+ padding-left: 48px;
+ line-height: 4.8vh;
+ }
+ .card-header {
+ padding-left: 48px;
+ line-height: 4.8vh;
+ }
+ }
+ }
+ }
+ }
+
+ .el-form {
+ ::v-deep .el-form-item {
+ margin-bottom: 15px;
+ }
+
+ ::v-deep .el-form-item__label {
+ color: #4b9bb7;
+ }
+ }
+
+ ::v-deep .el-radio__label {
+ color: #4b9bb7;
+ }
+}
+
+.map {
+ height: 100%;
+ min-width: 460px;
+}
+.header {
+ line-height: normal;
+}
+</style>
diff --git a/src/views/smoke/judgment/header/index.vue b/src/views/smoke/judgment/header/index.vue
new file mode 100644
index 0000000..f86ef15
--- /dev/null
+++ b/src/views/smoke/judgment/header/index.vue
@@ -0,0 +1,120 @@
+<template>
+ <div class="header">
+ <el-form :inline="true" :model="seachData" class="demo-form-inline">
+
+ <el-form-item label="">
+ <el-select
+ style="width: 120px"
+ v-model="seachData.msgType"
+ placeholder="娑堟伅绫诲瀷"
+ >
+ <el-option
+ v-for="item in msgTypeOptions"
+ :key="item.label"
+ :label="item.label"
+ :value="item.value"
+ >
+ </el-option>
+ </el-select>
+ </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>
+</template>
+
+<script>
+import realTimeApi from "@/api/smoke/realTime";
+
+export default {
+ data() {
+ return {
+ msgTypeOptions: [
+ {
+ label: "瓒呮爣",
+ value: "ExceedStandard",
+ },
+ {
+ label: "寮傚父绂荤嚎",
+ value: "AbnormalOffline",
+ }
+ ],
+
+ 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() {
+ },
+ methods: {
+
+ resetAll() {
+ this.seachData = {};
+ this.$emit("getList", { seachData: this.seachData });
+ },
+ getList() {
+ this.$emit("getList", { seachData: this.seachData });
+ },
+ exportTableData() {
+ this.$emit("exportTable", { seachData: this.seachData });
+ }
+ },
+};
+</script>
+
+<style lang="scss" scoped>
+.header {
+ line-height: normal;
+}
+</style>
diff --git a/src/views/smoke/judgment/index.vue b/src/views/smoke/judgment/index.vue
index 9278ea7..74d5df2 100644
--- a/src/views/smoke/judgment/index.vue
+++ b/src/views/smoke/judgment/index.vue
@@ -1,13 +1,250 @@
<template>
- <div>棰勮鐮斿垽</div>
+ <div>
+ <MyHeader @getList="getAlarmList" @exportTable="exportAlarm"></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="Addr" label="鐐逛綅鍚嶇О" min-width="2">
+ </el-table-column>
+ <el-table-column prop="MsgTypeStr" label="浜嬩欢绫诲瀷" min-width="3">
+ </el-table-column>
+ <el-table-column prop="Content" label="娑堟伅鍐呭" min-width="8">
+ </el-table-column>
+ <el-table-column prop="AcquitAtStr" label="鏃堕棿" min-width="2">
+ </el-table-column>
+
+ <el-table-column prop="operation" label="鎿嶄綔" min-width="3">
+ <template slot-scope="scope">
+ <div class="operation">
+ <span @click="handleLearn(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>
+ </div>
+ <el-dialog
+ :visible.sync="dialogAdd"
+ width="90%"
+ title="棰勮鐮斿垽"
+ v-if="dialogAdd"
+ :before-close="handleClose"
+ >
+ <JudgeIndex :info="videoInspection" ></JudgeIndex>
+ </el-dialog>
+ </div>
</template>
<script>
+import MyHeader from "./header";
+import realTimeApi from "@/api/smoke/alarm";
+import JudgeIndex from "./components/index.vue";
export default {
+ data() {
+ return {
+ dialogAdd:false,
+ tableData: [],
+ totalNum: 0,
+ pageSize: 10,
+ currentPage: 1,
+ params: {},
+ videoInspection:{}
+ };
+ },
+ components: { MyHeader ,JudgeIndex},
+ created() {
+ this.getAlarmList();
+ },
+ methods: {
+ getAlarmList(seachData) {
+ if (seachData) {
+ this.params = this.getParam(seachData);
+ } else {
+ this.params = {
+ pageNum: this.currentPage,
+ pageSize: this.pageSize,
+ };
+ }
-}
+ realTimeApi
+ .findAlarmList(this.params)
+ .then(({ list, total }) => {
+ list.forEach((e) => {
+ e.AcquitAtStr = this.dateFormat(
+ "YYYY-mm-dd HH:MM",
+ new Date(e.AcquitAt*1000)
+ );
+ e.MsgTypeStr = this.MsgTypeStr(e.MsgType);
+ });
+ this.tableData = list;
+ this.totalNum = total;
+ })
+ .catch((err) => this.$message.error(err));
+ },
+ exportAlarm(seachData) {
+ let params;
+ if (seachData) {
+ params = this.getParam(seachData);
+ }
+ realTimeApi
+ .exportAlarm(params)
+ .then((res) => {
+ 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 || seachData;
+ params = {
+ msgType:
+ seachParams.msgType == undefined ? null : seachParams.msgType,
+ 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]
+ ),
+ };
+ params.pageNum = this.currentPage;
+ params.pageSize = this.pageSize;
+ }
+ return params;
+ },
+
+ MsgTypeStr(Status) {
+ switch (Status) {
+ case "ExceedStandard":
+ return "瓒呮爣";
+ case "AbnormalOffline":
+ return "寮傚父绂荤嚎";
+ default:
+ return "寮傚父绂荤嚎";
+ }
+ },
+ // 璁剧疆琛ㄦ牸鏂戦┈绾�
+ tableRowClassName({ row, rowIndex }) {
+ if ((rowIndex + 1) % 2 === 0) {
+ return "warning-row";
+ } else {
+ return "success-row";
+ }
+ },
+ // 褰撳墠椤垫敼鍙樿Е鍙戜簨浠�
+ changeCurrentPage(page) {
+ this.currentPage = page;
+ this.getAlarmList(this.params);
+ },
+ // 涓婁竴椤电偣鍑讳簨浠�
+ handlePrev(page) {
+ this.currentPage = page;
+ this.getAlarmList(this.params);
+ },
+ // 涓嬩竴椤电偣鍑讳簨浠�
+ handleNext(page) {
+ this.currentPage = page;
+ this.getAlarmList(this.params);
+ },
+ 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;
+ },
+ handleLearn(row) {
+ this.dialogAdd = true;
+ this.videoInspection = row;
+
+ },
+ handleClose(done) {
+ this.changeCurrentPage(1);
+ done();
+ },
+ },
+};
</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/realTime/index.vue b/src/views/smoke/realTime/index.vue
index 00a65c3..2b8476a 100644
--- a/src/views/smoke/realTime/index.vue
+++ b/src/views/smoke/realTime/index.vue
@@ -163,7 +163,7 @@
.findInTimeList(params)
.then(({ list, total }) => {
list.forEach(e => {
- e.AcquitAtStr = this.dateFormat("YYYY-mm-dd HH:MM", new Date(e.AcquitAt));
+ 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)
diff --git a/src/views/smoke/report/components/alarm.vue b/src/views/smoke/report/components/alarm.vue
index 3d8eb85..b18eb64 100644
--- a/src/views/smoke/report/components/alarm.vue
+++ b/src/views/smoke/report/components/alarm.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,31 +18,31 @@
<el-table-column label="搴忓彿" type="index" width="80">
</el-table-column>
<el-table-column
- prop="AcquitAtStr"
+ prop="Name"
label="鐩戞祴鐐�"
min-width="20%"
>
</el-table-column>
<el-table-column
- prop="Addr"
+ prop="CGranule"
label="瓒呮爣澶╂暟"
min-width="10%"
>
</el-table-column>
<el-table-column
- prop="FanStatusStr"
+ prop="FilterAbnormallyUsedDays"
label="鍑�鍖栧櫒涓嶆甯镐娇鐢ㄥぉ鏁�"
min-width="20%"
>
</el-table-column>
<el-table-column
- prop="AA"
+ prop="AbnormalOfflineDays"
label="寮傚父浣跨敤澶╂暟"
min-width="10%"
>
</el-table-column>
<el-table-column
- prop="EmissionsConc"
+ prop="FilterWashTimes"
label="娓呮礂璁板綍锛堟锛�"
min-width="10%"
>
@@ -69,7 +69,7 @@
<script>
import MyHeader from "./header/header2.vue";
-import realTimeApi from "@/api/smoke/realTime";
+import statisticsApi from "@/api/smoke/statistics";
export default {
data() {
return {
@@ -95,57 +95,15 @@
};
}
- 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);
- });
+ 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) {
diff --git a/src/views/smoke/report/components/maintenance.vue b/src/views/smoke/report/components/maintenance.vue
index f0ac3f6..2f68124 100644
--- a/src/views/smoke/report/components/maintenance.vue
+++ b/src/views/smoke/report/components/maintenance.vue
@@ -125,7 +125,7 @@
list.forEach((e) => {
e.AcquitAtStr = this.dateFormat(
"YYYY-mm-dd HH:MM",
- new Date(e.AcquitAt)
+ new Date(e.AcquitAt*1000)
);
e.FanStatusStr = this.FanStatusStr(e.FanStatus);
e.FilterStatusStr = this.FanStatusStr(e.FilterStatus);
diff --git a/src/views/smoke/report/components/overallSituation.vue b/src/views/smoke/report/components/overallSituation.vue
index 0a1ab48..29e084d 100644
--- a/src/views/smoke/report/components/overallSituation.vue
+++ b/src/views/smoke/report/components/overallSituation.vue
@@ -112,7 +112,7 @@
.findInTimeList(params)
.then(({ list, total }) => {
list.forEach(e => {
- e.AcquitAtStr = this.dateFormat("YYYY-mm-dd HH:MM", new Date(e.AcquitAt));
+ 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)
diff --git a/src/views/smoke/report/components/reduceEmissions.vue b/src/views/smoke/report/components/reduceEmissions.vue
index 4f2b7f7..7d8f9e9 100644
--- a/src/views/smoke/report/components/reduceEmissions.vue
+++ b/src/views/smoke/report/components/reduceEmissions.vue
@@ -106,7 +106,7 @@
.findInTimeList(params)
.then(({ list, total }) => {
list.forEach(e => {
- e.AcquitAtStr = this.dateFormat("YYYY-mm-dd HH:MM", new Date(e.AcquitAt));
+ 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)
diff --git a/vue.config.js b/vue.config.js
index d0a3b2e..5387c35 100644
--- a/vue.config.js
+++ b/vue.config.js
@@ -39,8 +39,8 @@
proxy: {
// 璺ㄥ煙閰嶇疆
"/sccg": {
- target: `http://42.193.1.25/`, //娴嬭瘯鐜
- // target: `http://127.0.0.1:8082/`,
+ // target: `http://42.193.1.25/`, //娴嬭瘯鐜
+ target: `http://127.0.0.1:8082/`,
changeOrigin: true
}
},
--
Gitblit v1.8.0