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