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