|
@@ -1,25 +1,28 @@
|
|
<template>
|
|
<template>
|
|
- <BasicModal v-bind="$attrs" @register="register" :title="`光纤测温详情 ${currentTime}`" width="1200px" @ok="handleOk"
|
|
|
|
- @cancel="handleCancel">
|
|
|
|
- <div class="fiber-modal">
|
|
|
|
- <div class="modal-left">
|
|
|
|
- <div v-for="device in deviceList" class="link-item"
|
|
|
|
- :class="{ 'active-device-title': device.deviceID === activeDeviceID }" :key="device.deviceID">
|
|
|
|
- <span class="" @click="selectDevice(device.deviceID)">{{ device.strinstallpos }}</span>
|
|
|
|
- </div>
|
|
|
|
|
|
+ <BasicModal v-bind="$attrs" @register="register" :title="`光纤测温详情 ${currentTime}`" width="1200px" @ok="handleOk" @cancel="handleCancel">
|
|
|
|
+ <div class="fiber-modal">
|
|
|
|
+ <div class="modal-left">
|
|
|
|
+ <div
|
|
|
|
+ v-for="device in deviceList"
|
|
|
|
+ class="link-item"
|
|
|
|
+ :class="{ 'active-device-title': device.deviceID === activeDeviceID }"
|
|
|
|
+ :key="device.deviceID"
|
|
|
|
+ >
|
|
|
|
+ <span class="" @click="selectDevice(device.deviceID)">{{ device.strinstallpos }}</span>
|
|
</div>
|
|
</div>
|
|
- <div class="modal-right">
|
|
|
|
- <div class="right-top">
|
|
|
|
- <div class="top-item">
|
|
|
|
- <div class="icon">
|
|
|
|
- <SvgIcon class="icon-style max-temperature" size="38" name="max-temperature" />
|
|
|
|
- </div>
|
|
|
|
- <div class="item-container">
|
|
|
|
- <div class="title">最高温度</div>
|
|
|
|
- <div class="value">{{ posMonitor.maxValue || '--' }} <span>℃</span> </div>
|
|
|
|
- </div>
|
|
|
|
|
|
+ </div>
|
|
|
|
+ <div class="modal-right">
|
|
|
|
+ <div class="right-top">
|
|
|
|
+ <div class="top-item">
|
|
|
|
+ <div class="icon">
|
|
|
|
+ <SvgIcon class="icon-style max-temperature" size="38" name="max-temperature" />
|
|
|
|
+ </div>
|
|
|
|
+ <div class="item-container">
|
|
|
|
+ <div class="title">最高温度</div>
|
|
|
|
+ <div class="value">{{ posMonitor.maxValue || '--' }} <span>℃</span> </div>
|
|
</div>
|
|
</div>
|
|
- <!-- <div class="top-item">
|
|
|
|
|
|
+ </div>
|
|
|
|
+ <!-- <div class="top-item">
|
|
<div class="icon">
|
|
<div class="icon">
|
|
<SvgIcon class="icon-style min-temperature" size="38" name="min-temperature" />
|
|
<SvgIcon class="icon-style min-temperature" size="38" name="min-temperature" />
|
|
</div>
|
|
</div>
|
|
@@ -37,48 +40,47 @@
|
|
<div class="value">{{ posMonitor.favg || '--' }} <span>℃</span></div>
|
|
<div class="value">{{ posMonitor.favg || '--' }} <span>℃</span></div>
|
|
</div>
|
|
</div>
|
|
</div> -->
|
|
</div> -->
|
|
- <div class="top-item warning-box">
|
|
|
|
- <div class="icon">
|
|
|
|
- <SvgIcon class="icon-style" size="38" name="risk-level" />
|
|
|
|
- </div>
|
|
|
|
- <div class="item-container">
|
|
|
|
- <div class="title">风险等级</div>
|
|
|
|
- <div class="warning-value">低风险</div>
|
|
|
|
- </div>
|
|
|
|
|
|
+ <div class="top-item warning-box">
|
|
|
|
+ <div class="icon">
|
|
|
|
+ <SvgIcon class="icon-style" size="38" name="risk-level" />
|
|
</div>
|
|
</div>
|
|
- </div>
|
|
|
|
- <div class="right-center">
|
|
|
|
- <div class="table-box">
|
|
|
|
- <span class="base-title">测点监测详情</span>
|
|
|
|
- <a-table size="small" :columns="columns" :data-source="posList" :pagination="false" :scroll="{ y: 200 }" />
|
|
|
|
|
|
+ <div class="item-container">
|
|
|
|
+ <div class="title">风险等级</div>
|
|
|
|
+ <div class="warning-value">低风险</div>
|
|
</div>
|
|
</div>
|
|
- <!-- <div class="warning-box">
|
|
|
|
|
|
+ </div>
|
|
|
|
+ </div>
|
|
|
|
+ <div class="right-center">
|
|
|
|
+ <div class="table-box">
|
|
|
|
+ <span class="base-title">测点监测详情</span>
|
|
|
|
+ <a-table size="small" :columns="columns" :data-source="posList" :pagination="false" :scroll="{ y: 200 }" />
|
|
|
|
+ </div>
|
|
|
|
+ <!-- <div class="warning-box">
|
|
<span class="base-title">预警历史详情</span>
|
|
<span class="base-title">预警历史详情</span>
|
|
<div class="warning-container">
|
|
<div class="warning-container">
|
|
<dv-scroll-board ref="scrollBoard" :config="warningConfig"
|
|
<dv-scroll-board ref="scrollBoard" :config="warningConfig"
|
|
style="width: 100%; height: 240px; overflow-y: auto; border: 1px solid #39e8ff33" />
|
|
style="width: 100%; height: 240px; overflow-y: auto; border: 1px solid #39e8ff33" />
|
|
</div>
|
|
</div>
|
|
</div> -->
|
|
</div> -->
|
|
- </div>
|
|
|
|
- <div class="right-bottom">
|
|
|
|
- <span class="base-title">测点监测曲线</span>
|
|
|
|
- <div class="echarts-box">
|
|
|
|
- <BarAndLine xAxisPropType="Section_MaxTemp" :dataSource="posList1" height="100%"
|
|
|
|
- :chartsColumns="chartsColumns" :option="echatsOption" />
|
|
|
|
- </div>
|
|
|
|
|
|
+ </div>
|
|
|
|
+ <div class="right-bottom">
|
|
|
|
+ <span class="base-title">测点监测曲线</span>
|
|
|
|
+ <div class="echarts-box">
|
|
|
|
+ <BarAndLine xAxisPropType="Section_MaxTemp" :dataSource="posList1" height="100%" :chartsColumns="chartsColumns" :option="echatsOption" />
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
- </BasicModal>
|
|
|
|
- </template>
|
|
|
|
- <script lang="ts">
|
|
|
|
|
|
+ </div>
|
|
|
|
+ </BasicModal>
|
|
|
|
+</template>
|
|
|
|
+<script lang="ts">
|
|
import { defineComponent, ref, watch, shallowRef, reactive } from 'vue';
|
|
import { defineComponent, ref, watch, shallowRef, reactive } from 'vue';
|
|
import { BasicModal, useModalInner } from '/@/components/Modal';
|
|
import { BasicModal, useModalInner } from '/@/components/Modal';
|
|
import BarAndLine from '/@/components/chart/BarAndLine.vue';
|
|
import BarAndLine from '/@/components/chart/BarAndLine.vue';
|
|
import { SvgIcon } from '/@/components/Icon';
|
|
import { SvgIcon } from '/@/components/Icon';
|
|
import { Decoration7 as DvDecoration7, ScrollBoard as DvScrollBoard } from '@kjgl77/datav-vue3';
|
|
import { Decoration7 as DvDecoration7, ScrollBoard as DvScrollBoard } from '@kjgl77/datav-vue3';
|
|
import dayjs from 'dayjs';
|
|
import dayjs from 'dayjs';
|
|
-
|
|
|
|
|
|
+
|
|
export default defineComponent({
|
|
export default defineComponent({
|
|
components: { BasicModal, BarAndLine, SvgIcon, DvScrollBoard, DvDecoration7 },
|
|
components: { BasicModal, BarAndLine, SvgIcon, DvScrollBoard, DvDecoration7 },
|
|
props: {
|
|
props: {
|
|
@@ -94,7 +96,7 @@
|
|
const posList = reactive<any[]>([]);
|
|
const posList = reactive<any[]>([]);
|
|
const posList1 = reactive<any[]>([]);
|
|
const posList1 = reactive<any[]>([]);
|
|
const posMonitor = shallowRef({});
|
|
const posMonitor = shallowRef({});
|
|
-
|
|
|
|
|
|
+
|
|
const echatsOption = {
|
|
const echatsOption = {
|
|
grid: {
|
|
grid: {
|
|
top: '20%',
|
|
top: '20%',
|
|
@@ -107,7 +109,7 @@
|
|
feature: {},
|
|
feature: {},
|
|
},
|
|
},
|
|
};
|
|
};
|
|
-
|
|
|
|
|
|
+
|
|
const chartsColumns = [
|
|
const chartsColumns = [
|
|
{
|
|
{
|
|
legend: '测点最高温度',
|
|
legend: '测点最高温度',
|
|
@@ -157,7 +159,7 @@
|
|
align: 'center',
|
|
align: 'center',
|
|
},
|
|
},
|
|
];
|
|
];
|
|
-
|
|
|
|
|
|
+
|
|
// const warningConfig = reactive({
|
|
// const warningConfig = reactive({
|
|
// header: ['测点', '温度', '预警信息'],
|
|
// header: ['测点', '温度', '预警信息'],
|
|
// data: [
|
|
// data: [
|
|
@@ -178,21 +180,21 @@
|
|
// evenRowBGC: '#009acd05',
|
|
// evenRowBGC: '#009acd05',
|
|
// align: ['center', 'center', 'center'],
|
|
// align: ['center', 'center', 'center'],
|
|
// });
|
|
// });
|
|
-
|
|
|
|
|
|
+
|
|
const [register, { setModalProps, closeModal }] = useModalInner();
|
|
const [register, { setModalProps, closeModal }] = useModalInner();
|
|
-
|
|
|
|
|
|
+
|
|
function handleVisibleChange(visible) {
|
|
function handleVisibleChange(visible) {
|
|
if (visible) {
|
|
if (visible) {
|
|
loading.value = true;
|
|
loading.value = true;
|
|
setModalProps({ loading: true, confirmLoading: true });
|
|
setModalProps({ loading: true, confirmLoading: true });
|
|
-
|
|
|
|
|
|
+
|
|
setTimeout(() => {
|
|
setTimeout(() => {
|
|
loading.value = false;
|
|
loading.value = false;
|
|
setModalProps({ loading: false, confirmLoading: false });
|
|
setModalProps({ loading: false, confirmLoading: false });
|
|
}, 1000);
|
|
}, 1000);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+
|
|
// 选择监测
|
|
// 选择监测
|
|
function selectDevice(id) {
|
|
function selectDevice(id) {
|
|
loading.value = true;
|
|
loading.value = true;
|
|
@@ -203,17 +205,17 @@
|
|
setModalProps({ loading: false, confirmLoading: false });
|
|
setModalProps({ loading: false, confirmLoading: false });
|
|
}, 300);
|
|
}, 300);
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+
|
|
function handleOk(e) {
|
|
function handleOk(e) {
|
|
e.preventDefault();
|
|
e.preventDefault();
|
|
closeModal();
|
|
closeModal();
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+
|
|
function handleCancel(e) {
|
|
function handleCancel(e) {
|
|
e.preventDefault();
|
|
e.preventDefault();
|
|
closeModal();
|
|
closeModal();
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+
|
|
watch([() => props.dataSource, () => props.activeID], ([newDataSource, newActiveID], [oldDataSource, oldActiveID]) => {
|
|
watch([() => props.dataSource, () => props.activeID], ([newDataSource, newActiveID], [oldDataSource, oldActiveID]) => {
|
|
console.log(newDataSource, 'newDataSource--------------');
|
|
console.log(newDataSource, 'newDataSource--------------');
|
|
deviceList.value = newDataSource as any[];
|
|
deviceList.value = newDataSource as any[];
|
|
@@ -232,7 +234,8 @@
|
|
Section_MaxTempPos: item.readData[`Section${i + 1}_MaxTempPos`],
|
|
Section_MaxTempPos: item.readData[`Section${i + 1}_MaxTempPos`],
|
|
Section_BeginPosition: item.readData[`Section${i + 1}_BeginPosition`],
|
|
Section_BeginPosition: item.readData[`Section${i + 1}_BeginPosition`],
|
|
Section_EndPosition: item.readData[`Section${i + 1}_EndPosition`],
|
|
Section_EndPosition: item.readData[`Section${i + 1}_EndPosition`],
|
|
- Section_AlarmTemp: item.readData[`Section${i + 1}_AlarmTemp`]=='0' ? '正常' :item.readData[`Section${i + 1}_AlarmTemp`]=='1' ? '报警' : '',
|
|
|
|
|
|
+ Section_AlarmTemp:
|
|
|
|
+ item.readData[`Section${i + 1}_AlarmTemp`] == '0' ? '正常' : item.readData[`Section${i + 1}_AlarmTemp`] == '1' ? '报警' : '',
|
|
});
|
|
});
|
|
}
|
|
}
|
|
posList.forEach((el, index) => {
|
|
posList.forEach((el, index) => {
|
|
@@ -243,7 +246,7 @@
|
|
}
|
|
}
|
|
});
|
|
});
|
|
});
|
|
});
|
|
-
|
|
|
|
|
|
+
|
|
return {
|
|
return {
|
|
register,
|
|
register,
|
|
model: modelRef,
|
|
model: modelRef,
|
|
@@ -264,15 +267,15 @@
|
|
};
|
|
};
|
|
},
|
|
},
|
|
});
|
|
});
|
|
- </script>
|
|
|
|
- <style lang="less" scoped>
|
|
|
|
|
|
+</script>
|
|
|
|
+<style lang="less" scoped>
|
|
.fiber-modal {
|
|
.fiber-modal {
|
|
width: 100%;
|
|
width: 100%;
|
|
height: 650px;
|
|
height: 650px;
|
|
display: flex;
|
|
display: flex;
|
|
flex-direction: row;
|
|
flex-direction: row;
|
|
justify-content: space-between;
|
|
justify-content: space-between;
|
|
-
|
|
|
|
|
|
+
|
|
.modal-left {
|
|
.modal-left {
|
|
width: 200px;
|
|
width: 200px;
|
|
height: 100%;
|
|
height: 100%;
|
|
@@ -280,21 +283,21 @@
|
|
background: #ffffff11;
|
|
background: #ffffff11;
|
|
padding: 5px;
|
|
padding: 5px;
|
|
border-radius: 5px;
|
|
border-radius: 5px;
|
|
-
|
|
|
|
|
|
+
|
|
.active-device-title {
|
|
.active-device-title {
|
|
color: aqua;
|
|
color: aqua;
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+
|
|
.link-item {
|
|
.link-item {
|
|
position: relative;
|
|
position: relative;
|
|
cursor: pointer;
|
|
cursor: pointer;
|
|
line-height: 30px;
|
|
line-height: 30px;
|
|
padding-left: 30px;
|
|
padding-left: 30px;
|
|
-
|
|
|
|
|
|
+
|
|
span:hover {
|
|
span:hover {
|
|
color: #89ffff;
|
|
color: #89ffff;
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+
|
|
&::after {
|
|
&::after {
|
|
content: '';
|
|
content: '';
|
|
position: absolute;
|
|
position: absolute;
|
|
@@ -308,16 +311,16 @@
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+
|
|
.modal-right {
|
|
.modal-right {
|
|
width: calc(100% - 220px);
|
|
width: calc(100% - 220px);
|
|
overflow-y: auto;
|
|
overflow-y: auto;
|
|
-
|
|
|
|
|
|
+
|
|
.base-title {
|
|
.base-title {
|
|
line-height: 32px;
|
|
line-height: 32px;
|
|
position: relative;
|
|
position: relative;
|
|
padding-left: 20px;
|
|
padding-left: 20px;
|
|
-
|
|
|
|
|
|
+
|
|
&::after {
|
|
&::after {
|
|
content: '';
|
|
content: '';
|
|
position: absolute;
|
|
position: absolute;
|
|
@@ -330,13 +333,13 @@
|
|
border-radius: 4px;
|
|
border-radius: 4px;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+
|
|
.right-top {
|
|
.right-top {
|
|
display: flex;
|
|
display: flex;
|
|
flex-direction: row;
|
|
flex-direction: row;
|
|
justify-content: space-between;
|
|
justify-content: space-between;
|
|
margin-bottom: 10px;
|
|
margin-bottom: 10px;
|
|
-
|
|
|
|
|
|
+
|
|
.top-item {
|
|
.top-item {
|
|
width: 49%;
|
|
width: 49%;
|
|
height: 80px;
|
|
height: 80px;
|
|
@@ -347,27 +350,27 @@
|
|
box-shadow: inset 0 0 10px rgba(0, 197, 255, 0.6);
|
|
box-shadow: inset 0 0 10px rgba(0, 197, 255, 0.6);
|
|
background: rgba(0, 0, 0, 0.06666666666666667);
|
|
background: rgba(0, 0, 0, 0.06666666666666667);
|
|
padding-top: 16px;
|
|
padding-top: 16px;
|
|
-
|
|
|
|
|
|
+
|
|
.icon {
|
|
.icon {
|
|
margin-right: 10px;
|
|
margin-right: 10px;
|
|
margin-top: 5px;
|
|
margin-top: 5px;
|
|
color: #fdb146;
|
|
color: #fdb146;
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+
|
|
.item-container {
|
|
.item-container {
|
|
width: 100px;
|
|
width: 100px;
|
|
display: flex;
|
|
display: flex;
|
|
flex-direction: column;
|
|
flex-direction: column;
|
|
justify-content: center;
|
|
justify-content: center;
|
|
-
|
|
|
|
|
|
+
|
|
div {
|
|
div {
|
|
text-align: center;
|
|
text-align: center;
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+
|
|
.title {
|
|
.title {
|
|
font-size: 18px;
|
|
font-size: 18px;
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+
|
|
.value {
|
|
.value {
|
|
text-shadow: 0 0 25px #00fbfe;
|
|
text-shadow: 0 0 25px #00fbfe;
|
|
background: linear-gradient(0deg, #45d3fd, #45d3fd, #61ddb1, #61ddb1);
|
|
background: linear-gradient(0deg, #45d3fd, #45d3fd, #61ddb1, #61ddb1);
|
|
@@ -380,7 +383,7 @@
|
|
-webkit-text-fill-color: transparent;
|
|
-webkit-text-fill-color: transparent;
|
|
position: relative;
|
|
position: relative;
|
|
top: -8px;
|
|
top: -8px;
|
|
-
|
|
|
|
|
|
+
|
|
span {
|
|
span {
|
|
font-family: Arial, Helvetica, sans-serif;
|
|
font-family: Arial, Helvetica, sans-serif;
|
|
font-size: 18px;
|
|
font-size: 18px;
|
|
@@ -389,57 +392,57 @@
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+
|
|
.warning-box {
|
|
.warning-box {
|
|
padding-top: 0px;
|
|
padding-top: 0px;
|
|
-
|
|
|
|
|
|
+
|
|
.icon {
|
|
.icon {
|
|
margin-top: 20px;
|
|
margin-top: 20px;
|
|
-
|
|
|
|
|
|
+
|
|
.icon-style {
|
|
.icon-style {
|
|
color: #fdb146;
|
|
color: #fdb146;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+
|
|
.warning-value {
|
|
.warning-value {
|
|
font-size: 18px;
|
|
font-size: 18px;
|
|
color: #61ddb1;
|
|
color: #61ddb1;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+
|
|
.right-center {
|
|
.right-center {
|
|
margin-top: 10px;
|
|
margin-top: 10px;
|
|
// display: flex;
|
|
// display: flex;
|
|
// flex-direction: row;
|
|
// flex-direction: row;
|
|
// justify-content: space-between;
|
|
// justify-content: space-between;
|
|
-
|
|
|
|
|
|
+
|
|
.table-box {
|
|
.table-box {
|
|
position: relative;
|
|
position: relative;
|
|
width: 100%;
|
|
width: 100%;
|
|
height: 250px;
|
|
height: 250px;
|
|
-
|
|
|
|
|
|
+
|
|
:deep(.zxm-table-wrapper) {
|
|
:deep(.zxm-table-wrapper) {
|
|
height: 220px !important;
|
|
height: 220px !important;
|
|
background: #ffffff05 !important;
|
|
background: #ffffff05 !important;
|
|
// border-bottom: 1px solid #91e9fe80 !important;
|
|
// border-bottom: 1px solid #91e9fe80 !important;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+
|
|
// .warning-box {
|
|
// .warning-box {
|
|
// width: calc(100% - 520px);
|
|
// width: calc(100% - 520px);
|
|
-
|
|
|
|
|
|
+
|
|
// .warning-container {
|
|
// .warning-container {
|
|
// width: 100%;
|
|
// width: 100%;
|
|
// height: convert;
|
|
// height: convert;
|
|
// background: #009acd00;
|
|
// background: #009acd00;
|
|
-
|
|
|
|
|
|
+
|
|
// :deep(.dv-scroll-board) {
|
|
// :deep(.dv-scroll-board) {
|
|
// .row-item {
|
|
// .row-item {
|
|
// height: 40px !important;
|
|
// height: 40px !important;
|
|
// line-height: 40px !important;
|
|
// line-height: 40px !important;
|
|
// }
|
|
// }
|
|
-
|
|
|
|
|
|
+
|
|
// .header-item {
|
|
// .header-item {
|
|
// border-top: 1px solid #91e9fe !important;
|
|
// border-top: 1px solid #91e9fe !important;
|
|
// border-bottom: 1px solid #91e9fe !important;
|
|
// border-bottom: 1px solid #91e9fe !important;
|
|
@@ -448,10 +451,10 @@
|
|
// }
|
|
// }
|
|
// }
|
|
// }
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+
|
|
.right-bottom {
|
|
.right-bottom {
|
|
margin-top: 20px;
|
|
margin-top: 20px;
|
|
-
|
|
|
|
|
|
+
|
|
.echarts-box {
|
|
.echarts-box {
|
|
width: 100%;
|
|
width: 100%;
|
|
height: 230px;
|
|
height: 230px;
|
|
@@ -459,17 +462,16 @@
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+
|
|
:deep(.zxm-table-body) {
|
|
:deep(.zxm-table-body) {
|
|
border: 1px solid rgba(57, 232, 255, 0.2) !important;
|
|
border: 1px solid rgba(57, 232, 255, 0.2) !important;
|
|
-
|
|
|
|
- .zxm-table-tbody>tr>td {
|
|
|
|
|
|
+
|
|
|
|
+ .zxm-table-tbody > tr > td {
|
|
border: none !important;
|
|
border: none !important;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+
|
|
:deep(.zxm-table-cell) {
|
|
:deep(.zxm-table-cell) {
|
|
border-right: none !important;
|
|
border-right: none !important;
|
|
}
|
|
}
|
|
- </style>
|
|
|
|
-
|
|
|
|
|
|
+</style>
|