Commit ccd13507 authored by 张牧越's avatar 张牧越

预警处置详情

parent c0a5d278
......@@ -169,10 +169,11 @@ export function get24hTowerStatis() {
})
}
export function getTowerWarnings() {
export function getTowerWarnings(params) {
return noLoadingrequest({
url: '/pweb/s/towercrane/warning/list',
method: 'get',
params
})
}
......@@ -453,6 +454,13 @@ export function getCorrectRecordDetail(id) {
})
}
export function getWarningLogDetail(id) {
return request({
url: `/pweb/s/device/warninglog/${id}`,
method: 'get',
})
}
......
<template>
<el-dialog
:visible.sync="dialogVisible"
title="预警处置详情"
width="1200px"
top="0"
append-to-body
>
<div id="scroll-dialog">
<div class="step-area">
<el-steps
:active="warningDetail.step"
align-center
finish-status="success"
>
<el-step
v-for="(step, index) in warningDetail.process_list"
:key="index"
:description="`${step.person_name}${index == 0 ? '' : ' / '}${
step.time
}`"
:class="[step.status == 3 ? 'warning' : 'success']"
>
<template #title>
<span> {{ step.title }} </span
><span v-if="step.status_text"> / </span
><span
v-if="step.status_text"
:style="{ color: step.status == 3 ? 'rgb(255, 90, 86)' : '' }"
>{{ step.status_text }}</span
>
</template>
</el-step>
</el-steps>
</div>
<div class="dialog-title">预警信息</div>
<div class="dialog-form">
<div class="dialog-item">设备编号:{{ warningDetail.device_no }}</div>
<div class="dialog-item">报警时间:{{ warningDetail.log_time }}</div>
<div class="dialog-item inline">
报警原因:{{ warningDetail.alarm_content }}
</div>
<!-- <div class="dialog-item">
检查结果:
<span
:style="{
color: warningDetail.check_result == 1 ? '#24F0B8' : '#FF5A56',
}"
>{{ warningDetail.check_result_text }}</span
>
</div>
<div class="dialog-item">
负责人:{{ warningDetail.duty_person_name }}
</div>
<div class="dialog-item">
隐患类型:{{ warningDetail.problem_type_text }}
</div> -->
<template v-if="warningDetail.check_result == 2">
<div class="dialog-item inline">
问题描述:{{ warningDetail.check_describe }}
</div>
<div class="dialog-item inline">
隐患图片:
<el-image
class="imgs"
v-for="(img, index) in warningDetail.check_images_list"
:key="index"
:src="img.url"
:preview-src-list="
computedUrlList(warningDetail.check_images_list)
"
/>
</div>
<div class="dialog-item">
问题等级:<span style="color: #ff5a56">{{
warningDetail.level_text
}}</span>
</div>
<div class="dialog-item">
整改期限:{{ warningDetail.rectify_date }}
</div>
<div class="dialog-item">
整改人员:{{ warningDetail.rectify_person_name }}
</div>
<div class="dialog-item">
短信通知:{{ warningDetail.is_message_text }}
</div>
<div class="dialog-item">
整改要求:{{ warningDetail.rectify_require }}
</div>
<div class="dialog-item">
补充描述:{{ warningDetail.other_describe }}
</div>
</template>
</div>
<template v-if="warningDetail.check_status == 1">
<div class="no-data">
<img src="@/assets/nodata.png" alt="" />
<div>暂无核验与处置信息</div>
</div>
</template>
<template v-else>
<div class="dialog-title">预警核验</div>
<div class="dialog-form">
<div class="dialog-item">
核验人员:{{ warningDetail.check_account_name }}
</div>
<div class="dialog-item">
核验结果:<span
:style="{
color: warningDetail.check_status == 2 ? '#FF5A56' : '#24F0B8',
}"
>{{ warningDetail.check_status_text }}</span
>
</div>
<div class="dialog-item inline">
核验时间:{{ warningDetail.check_time }}
</div>
<div class="dialog-item">
处置人员:{{ warningDetail.handle_account_name }}
</div>
<div class="dialog-item">
核验描述:{{ warningDetail.check_describe }}
</div>
<div class="dialog-item inline">
核验拍照:
<el-image
class="imgs"
v-for="(img, index) in warningDetail.check_images_list"
:key="index"
:src="img.url"
:preview-src-list="
computedUrlList(warningDetail.check_images_list)
"
/>
</div>
</div>
</template>
<div v-if="warningDetail.handle_create_time">
<div class="dialog-title">预警处置</div>
<div class="dialog-form">
<div class="dialog-item">
处置人员:{{ warningDetail.handle_account_name }}
</div>
<div class="dialog-item">
处置时间:{{ warningDetail.handle_create_time }}
</div>
<div class="dialog-item inline">
处置描述:{{ warningDetail.handle_describe }}
</div>
<div class="dialog-item inline">
处置图片:
<el-image
class="imgs"
v-for="(img, index) in warningDetail.handle_images_list"
:key="index"
:src="img.url"
:preview-src-list="
computedUrlList(warningDetail.handle_images_list)
"
/>
</div>
</div>
<template v-for="(check, index) in warningDetail.check_log_list">
<div class="dialog-form border" :key="index">
<div class="dialog-item">
审核情况:{{ check.operate_account_name }}
/
<span
:style="{
color: check.status == 2 ? '#24F0B8' : '#FF5A56',
}"
>{{ check.status_text }}</span
>
</div>
<div class="dialog-item">复查时间:{{ check.operate_time }}</div>
<div class="dialog-item inline">
审核备注:{{ check.operate_describe }}
</div>
</div>
</template>
</div>
</div>
</el-dialog>
</template>
<script>
export default {
name: "CorrectDialog",
props: {
visible: {
type: Boolean,
default: false,
},
data: {
type: Object,
default: () => {
return {};
},
},
},
data() {
return {
warningDetail: {
check_images_list: [],
},
};
},
methods: {
computedUrlList(data) {
return data.map((item) => {
return item.url;
});
},
},
computed: {
dialogVisible: {
get() {
return this.visible;
},
set(val) {
this.$emit("changeVisible", val);
},
},
},
watch: {
dialogVisible(val) {
if (val) {
this.warningDetail = this.data;
console.log(this.warningDetail);
}
},
},
};
</script>
<style lang="less" scoped>
.step-area {
padding: 24px;
background: #0e3b72;
}
.dialog-title {
line-height: 44px;
background: #0e3b72;
text-align: center;
font-size: 16px;
color: #24f0b8;
margin-bottom: 2px;
margin-top: 12px;
}
.dialog-form {
display: flex;
flex-wrap: wrap;
justify-content: space-between;
.dialog-item {
width: calc(50% - 50px);
margin-bottom: 2px;
background: #114483;
padding: 12px 24px;
color: #c6def9;
font-size: 14px;
&.inline {
width: 100%;
}
&:last-child {
margin-bottom: 0;
}
}
&.border {
border-top: 10px solid #0e3b72;
}
}
.imgs {
width: 100px;
height: 100px;
margin-right: 12px;
vertical-align: middle;
}
::v-deep .el-step__description {
line-height: 40px;
background: rgba(36, 240, 184, 0.05);
border-radius: 4px;
}
::v-deep .el-step.is-center .el-step__description {
padding: 0 !important;
margin: 0 15% !important;
}
::v-deep .el-step__title.is-finish {
color: #67c23a !important;
}
::v-deep .el-step__description.is-finish {
color: #67c23a !important;
}
::v-deep .el-step__title.is-process {
color: #c6def9 !important;
}
::v-deep .el-step__description.is-process {
color: #c6def9 !important;
}
::v-deep .el-step__icon .el-step__icon-inner {
display: none !important;
}
::v-deep .el-step__icon.is-text {
border-color: inherit !important;
}
::v-deep div.el-step__icon-inner {
color: transparent !important;
}
#scroll-dialog {
max-height: 800px;
overflow-y: auto;
}
.no-data {
padding: 76px 0;
text-align: center;
color: #c6def9;
line-height: 36px;
background: #114483;
margin-top: 2px;
}
::v-deep .el-step__icon {
font-size: 14px;
}
::v-deep .el-step__head {
height: 16px;
}
</style>
\ No newline at end of file
......@@ -91,6 +91,7 @@
class="warning-table-column"
v-for="(column, index) in elevatorWarningList"
:key="index"
@click="showWarning(column._id)"
>
<div class="warning-table-time">{{ column.log_time }}</div>
<div class="warning-table-device">{{ column.device_no }}</div>
......@@ -285,6 +286,12 @@
</div>
</ShadowContainerRect>
</div>
<warning-dialog
:data="warningData"
:visible="warningDialogVisible"
@changeVisible="(val) => (warningDialogVisible = val)"
></warning-dialog>
</div>
</template>
<script>
......@@ -293,9 +300,13 @@ import {
getElevatorWarningList,
getElevatorWarningStatus,
getElevatorRealData,
getWarningLogDetail,
} from "@/api/index";
import WarningDialog from "@/components/earlywarning/WarningDialog";
export default {
name: "Elevator",
components: { WarningDialog },
data() {
return {
elevatorList: [],
......@@ -314,6 +325,8 @@ export default {
rightBottom: 0,
interval1: null,
elevatorLoading: false,
warningDialogVisible: false,
warningData: {},
};
},
methods: {
......@@ -427,6 +440,12 @@ export default {
this.activeElevatorIndex = index;
this.getCurrentElevatorStatus(elevator);
},
showWarning(id) {
getWarningLogDetail(id).then((res) => {
this.warningData = res.data;
this.warningDialogVisible = true;
});
},
},
mounted() {
getElevatorList().then((res) => {
......@@ -441,6 +460,7 @@ export default {
};
</script>
<style lang="less" scoped>
@import "@/assets/common/element.less";
#elevator {
padding: 12px 20px;
display: flex;
......@@ -601,6 +621,7 @@ export default {
padding: 12px 0;
background: rgba(44, 96, 162, 0.05);
display: flex;
cursor: pointer;
&:nth-child(2n) {
background: rgba(44, 96, 162, 0.1);
}
......
......@@ -136,6 +136,7 @@
class="warning-table-column"
v-for="(column, index) in fallwarningTableData"
:key="index"
@click="showWarning(column._id)"
>
<div class="warning-table-run-time">{{ column.log_time }}</div>
<el-tooltip
......@@ -166,11 +167,17 @@
</div>
</div>
</ShadowContainer>
<warning-dialog
:data="warningData"
:visible="warningDialogVisible"
@changeVisible="(val) => (warningDialogVisible = val)"
></warning-dialog>
</div>
</div>
</template>
<script>
import AMapLoader from "@amap/amap-jsapi-loader";
import WarningDialog from "@/components/earlywarning/WarningDialog";
import {
getBaseInfo,
getBuildingList,
......@@ -179,10 +186,12 @@ import {
getFallWarningStatus,
getFallWarningTableList,
getDeviceCurrentStatus,
getWarningLogDetail,
} from "@/api/index";
import buildingIcon from "@/assets/fallprotection/building-marker.png";
export default {
name: "FallProtection",
components: { WarningDialog },
data() {
return {
levelList: [],
......@@ -203,6 +212,8 @@ export default {
page: 1,
interval1: null,
mapLoading: false,
warningDialogVisible: false,
warningData: {},
};
},
methods: {
......@@ -414,6 +425,12 @@ export default {
this.autoScroll(1, 50, 1500, element);
});
},
showWarning(id) {
getWarningLogDetail(id).then((res) => {
this.warningData = res.data;
this.warningDialogVisible = true;
});
},
},
mounted() {
getBaseInfo().then((res) => {
......@@ -438,6 +455,7 @@ export default {
};
</script>
<style lang="less" scoped>
@import "@/assets/common/element.less";
#fall-protection {
padding: 12px 20px;
display: flex;
......@@ -629,6 +647,7 @@ export default {
padding: 12px 0;
background: rgba(44, 96, 162, 0.05);
display: flex;
cursor: pointer;
&:nth-child(2n) {
background: rgba(44, 96, 162, 0.1);
}
......
......@@ -244,6 +244,7 @@
class="warning-table-column"
v-for="(column, index) in warnings"
:key="index"
@click="showWarning(column._id)"
>
<div class="warning-table-time">{{ column.log_time }}</div>
<div class="warning-table-device">{{ column.device_no }}</div>
......@@ -269,6 +270,12 @@
</div>
</ShadowContainer>
</div>
<warning-dialog
:data="warningData"
:visible="warningDialogVisible"
@changeVisible="(val) => (warningDialogVisible = val)"
></warning-dialog>
</div>
</template>
<script>
......@@ -279,9 +286,12 @@ import {
getNoiseDeviceList,
getTodayAqiLineChartData,
getWarningMessageList,
getWarningLogDetail,
} from "@/api/index";
import WarningDialog from "@/components/earlywarning/WarningDialog";
export default {
name: "Noise",
components: { WarningDialog },
data() {
return {
pieChartData: [],
......@@ -301,6 +311,8 @@ export default {
loading: false,
deviceTotal: 0,
interval1: null,
warningData: {},
warningDialogVisible: false,
};
},
computed: {},
......@@ -541,11 +553,12 @@ export default {
});
},
load() {
if (this.warnings.length == this.page * 10) {
if (this.warnings.length == this.page * 30) {
getWarningMessageList({
page: this.page + 1,
start_log_time: this.getTime(new Date().getTime() - 2592000000),
end_log_time: this.getTime(new Date().getTime()),
limit: 30,
}).then((res) => {
this.page += 1;
this.warnings = [...this.warnings, ...res.data.data];
......@@ -555,6 +568,7 @@ export default {
start_log_time: this.getTime(new Date().getTime() - 2592000000),
end_log_time: this.getTime(new Date().getTime()),
page: 1,
limit: 30,
}).then((res) => {
this.page = 1;
this.warnings = res.data.data;
......@@ -599,6 +613,12 @@ export default {
this.autoScroll(1, 50, 1500, element);
});
},
showWarning(id) {
getWarningLogDetail(id).then((res) => {
this.warningData = res.data;
this.warningDialogVisible = true;
});
},
},
mounted() {
this.getNoiseData();
......@@ -606,6 +626,7 @@ export default {
};
</script>
<style lang="less" scoped>
@import "@/assets/common/element.less";
#noise {
padding: 12px 20px;
display: flex;
......@@ -856,6 +877,7 @@ export default {
padding: 12px 0;
background: rgba(44, 96, 162, 0.05);
display: flex;
cursor: pointer;
&:nth-child(2n) {
background: rgba(44, 96, 162, 0.1);
}
......
......@@ -285,7 +285,7 @@ export default {
color: #c6def9 !important;
}
::v-deep .el-step__icon .el-step__icon-inner {
display: inherit !important;
display: none !important;
}
::v-deep .el-step__icon.is-text {
border-color: inherit !important;
......@@ -297,4 +297,8 @@ export default {
max-height: 800px;
overflow-y: auto;
}
::v-deep .el-step__head {
height: 16px;
}
</style>
\ No newline at end of file
......@@ -137,6 +137,7 @@
class="warning-table-column"
v-for="(column, index) in warnings"
:key="index"
@click="showWarning(column._id)"
>
<div class="warning-table-run-time">{{ column.log_time }}</div>
<el-tooltip
......@@ -175,6 +176,11 @@
:visible="deviceDialogVisible"
@changeVisible="(val) => (deviceDialogVisible = val)"
></device-dialog>
<warning-dialog
:data="warningData"
:visible="warningDialogVisible"
@changeVisible="(val) => (warningDialogVisible = val)"
></warning-dialog>
</div>
</template>
<script>
......@@ -183,6 +189,7 @@ import onlineIcon from "@/assets/tower/online_tower.png";
import offlineIcon from "@/assets/tower/offline_tower.png";
import deviceDialog from "./deviceDialog2.vue";
import hooks from "@/assets/tower/hooks.png";
import WarningDialog from "@/components/earlywarning/WarningDialog";
import {
getBaseInfo,
getTowerDevice,
......@@ -191,10 +198,11 @@ import {
getTowerDeviceList,
getCurrentTowerStatis,
getDeviceDetail,
getWarningLogDetail,
} from "@/api/index";
export default {
name: "Tower",
components: { deviceDialog },
components: { deviceDialog, WarningDialog },
data() {
return {
pieChartData: [],
......@@ -214,6 +222,8 @@ export default {
deviceTotal: 0,
interval1: null,
mapLoading: false,
warningDialogVisible: false,
warningData: {},
};
},
methods: {
......@@ -657,13 +667,13 @@ export default {
},
load() {
if (this.warnings.length == this.page * 20) {
getTowerWarnings({ page: this.page + 1, limit: 20 }).then((res) => {
if (this.warnings.length == this.page * 30) {
getTowerWarnings({ page: this.page + 1, limit: 30 }).then((res) => {
this.page += 1;
this.warnings = [...this.warnings, ...res.data.data];
});
} else if (this.warnings.length == 0) {
getTowerWarnings({ page: 1, limit: 20 }).then((res) => {
getTowerWarnings({ page: 1, limit: 30 }).then((res) => {
this.page = 1;
this.warnings = res.data.data;
this.$nextTick(() => {
......@@ -707,6 +717,12 @@ export default {
this.autoScroll(1, 50, 1500, element);
});
},
showWarning(id) {
getWarningLogDetail(id).then((res) => {
this.warningData = res.data;
this.warningDialogVisible = true;
});
},
},
mounted() {
this.getTowerData();
......@@ -957,6 +973,7 @@ export default {
padding: 12px 0;
background: rgba(44, 96, 162, 0.05);
display: flex;
cursor: pointer;
&:nth-child(2n) {
background: rgba(44, 96, 162, 0.1);
}
......
......@@ -128,6 +128,7 @@
class="warning-table-column"
v-for="(column, index) in platformWarningList"
:key="index"
@click="showWarning(column._id)"
>
<div class="warning-table-run-time">{{ column.log_time }}</div>
<el-tooltip
......@@ -158,6 +159,11 @@
</div>
</div>
</ShadowContainer>
<warning-dialog
:data="warningData"
:visible="warningDialogVisible"
@changeVisible="(val) => (warningDialogVisible = val)"
></warning-dialog>
</div>
</div>
</template>
......@@ -170,10 +176,13 @@ import {
getPlatformRunningAnalysis,
getPlatformWarningStatus,
getPlatformWarningList,
getWarningLogDetail,
} from "@/api/index";
import WarningDialog from "@/components/earlywarning/WarningDialog";
import platformIcon from "@/assets/unloadingplatform/icon-platform.png";
export default {
name: "UnloadingPlatform",
components: { WarningDialog },
data() {
return {
platformList: [],
......@@ -198,6 +207,8 @@ export default {
interval1: null,
chartLoading: false,
mapLoading: false,
warningDialogVisible: false,
warningData: {},
};
},
methods: {
......@@ -499,6 +510,12 @@ export default {
this.autoScroll(1, 50, 1500, element);
});
},
showWarning(id) {
getWarningLogDetail(id).then((res) => {
this.warningData = res.data;
this.warningDialogVisible = true;
});
},
},
mounted() {
......@@ -523,6 +540,7 @@ export default {
};
</script>
<style lang="less" scoped>
@import "@/assets/common/element.less";
#unloading-platform {
padding: 12px 20px;
display: flex;
......@@ -709,6 +727,7 @@ export default {
padding: 12px 0;
background: rgba(44, 96, 162, 0.05);
display: flex;
cursor: pointer;
&:nth-child(2n) {
background: rgba(44, 96, 162, 0.1);
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment