|  | @@ -2,12 +2,8 @@
 | 
											
												
													
														|  |    <BasicModal v-bind="$attrs" destroyOnClose @register="register" :title="`粉尘监测详情    ${currentTime}`" width="1200px">
 |  |    <BasicModal v-bind="$attrs" destroyOnClose @register="register" :title="`粉尘监测详情    ${currentTime}`" width="1200px">
 | 
											
												
													
														|  |      <div class="fiber-modal">
 |  |      <div class="fiber-modal">
 | 
											
												
													
														|  |        <div class="modal-left">
 |  |        <div class="modal-left">
 | 
											
												
													
														|  | -        <div
 |  | 
 | 
											
												
													
														|  | -          v-for="device in deviceList"
 |  | 
 | 
											
												
													
														|  | -          class="link-item"
 |  | 
 | 
											
												
													
														|  | -          :class="{ 'active-device-title': device.deviceID === activeDeviceID }"
 |  | 
 | 
											
												
													
														|  | -          :key="device.deviceID"
 |  | 
 | 
											
												
													
														|  | -        >
 |  | 
 | 
											
												
													
														|  | 
 |  | +        <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>
 |  |            <span class="" @click="selectDevice(device.deviceID)">{{ device.strinstallpos }}</span>
 | 
											
												
													
														|  |          </div>
 |  |          </div>
 | 
											
												
													
														|  |        </div>
 |  |        </div>
 | 
											
										
											
												
													
														|  | @@ -19,8 +15,8 @@
 | 
											
												
													
														|  |              </div>
 |  |              </div>
 | 
											
												
													
														|  |              <div class="item-container">
 |  |              <div class="item-container">
 | 
											
												
													
														|  |                <div class="title">巷道温度</div>
 |  |                <div class="title">巷道温度</div>
 | 
											
												
													
														|  | -              <div class="value"
 |  | 
 | 
											
												
													
														|  | -                ><span class="data">{{ dustMonitor.temperature ? dustMonitor.temperature : '-' }}</span> <span>℃</span>
 |  | 
 | 
											
												
													
														|  | 
 |  | +              <div class="value"><span class="data">{{ dustMonitor.temperature ? dustMonitor.temperature : '-' }}</span>
 | 
											
												
													
														|  | 
 |  | +                <span>℃</span>
 | 
											
												
													
														|  |                </div>
 |  |                </div>
 | 
											
												
													
														|  |              </div>
 |  |              </div>
 | 
											
												
													
														|  |            </div>
 |  |            </div>
 | 
											
										
											
												
													
														|  | @@ -30,9 +26,9 @@
 | 
											
												
													
														|  |              </div>
 |  |              </div>
 | 
											
												
													
														|  |              <div class="item-container">
 |  |              <div class="item-container">
 | 
											
												
													
														|  |                <div class="title">粉尘浓度</div>
 |  |                <div class="title">粉尘浓度</div>
 | 
											
												
													
														|  | -              <div class="value"
 |  | 
 | 
											
												
													
														|  | -                ><span class="data">{{ dustMonitor.humidity ? dustMonitor.humidity : '-' }}</span> <span>mg/m³</span></div
 |  | 
 | 
											
												
													
														|  | -              >
 |  | 
 | 
											
												
													
														|  | 
 |  | +              <div class="value"><span class="data">{{ dustMonitor.humidity ? dustMonitor.humidity : '-' }}</span>
 | 
											
												
													
														|  | 
 |  | +                <span>mg/m³</span>
 | 
											
												
													
														|  | 
 |  | +              </div>
 | 
											
												
													
														|  |              </div>
 |  |              </div>
 | 
											
												
													
														|  |            </div>
 |  |            </div>
 | 
											
												
													
														|  |            <div class="top-item">
 |  |            <div class="top-item">
 | 
											
										
											
												
													
														|  | @@ -41,9 +37,8 @@
 | 
											
												
													
														|  |              </div>
 |  |              </div>
 | 
											
												
													
														|  |              <div class="item-container">
 |  |              <div class="item-container">
 | 
											
												
													
														|  |                <div class="title">喷雾水压</div>
 |  |                <div class="title">喷雾水压</div>
 | 
											
												
													
														|  | -              <div class="value"
 |  | 
 | 
											
												
													
														|  | -                ><span class="data">{{ dustMonitor.waterPressure ? dustMonitor.waterPressure : '-' }}</span> <span>MPa</span></div
 |  | 
 | 
											
												
													
														|  | -              >
 |  | 
 | 
											
												
													
														|  | 
 |  | +              <div class="value"><span class="data">{{ dustMonitor.waterPressure ? dustMonitor.waterPressure : '-'
 | 
											
												
													
														|  | 
 |  | +                  }}</span> <span>MPa</span></div>
 | 
											
												
													
														|  |              </div>
 |  |              </div>
 | 
											
												
													
														|  |            </div>
 |  |            </div>
 | 
											
												
													
														|  |            <div class="top-item warning-box">
 |  |            <div class="top-item warning-box">
 | 
											
										
											
												
													
														|  | @@ -72,7 +67,8 @@
 | 
											
												
													
														|  |            <div class="dust-group">
 |  |            <div class="dust-group">
 | 
											
												
													
														|  |              <div class="dust-item">
 |  |              <div class="dust-item">
 | 
											
												
													
														|  |                <div class="title">粉尘浓度(实时)</div>
 |  |                <div class="title">粉尘浓度(实时)</div>
 | 
											
												
													
														|  | -              <div class="value">{{ dustMonitor.breathWeighted ? dustMonitor.breathWeighted : '-' }}<span>mg/m³</span></div>
 |  | 
 | 
											
												
													
														|  | 
 |  | +              <div class="value">{{ dustMonitor.breathWeighted ? dustMonitor.breathWeighted : '-' }}<span>mg/m³</span>
 | 
											
												
													
														|  | 
 |  | +              </div>
 | 
											
												
													
														|  |              </div>
 |  |              </div>
 | 
											
												
													
														|  |              <div class="dust-item">
 |  |              <div class="dust-item">
 | 
											
												
													
														|  |                <div class="title">总尘浓度(时间加权)</div>
 |  |                <div class="title">总尘浓度(时间加权)</div>
 | 
											
										
											
												
													
														|  | @@ -80,7 +76,8 @@
 | 
											
												
													
														|  |              </div>
 |  |              </div>
 | 
											
												
													
														|  |              <div class="dust-item">
 |  |              <div class="dust-item">
 | 
											
												
													
														|  |                <div class="title">呼吸加权容许浓度</div>
 |  |                <div class="title">呼吸加权容许浓度</div>
 | 
											
												
													
														|  | -              <div class="value">{{ dustMonitor.breathWeighted ? dustMonitor.breathWeighted : '-' }}<span>mg/m³</span></div>
 |  | 
 | 
											
												
													
														|  | 
 |  | +              <div class="value">{{ dustMonitor.breathWeighted ? dustMonitor.breathWeighted : '-' }}<span>mg/m³</span>
 | 
											
												
													
														|  | 
 |  | +              </div>
 | 
											
												
													
														|  |              </div>
 |  |              </div>
 | 
											
												
													
														|  |              <div class="dust-item">
 |  |              <div class="dust-item">
 | 
											
												
													
														|  |                <div class="title">爆炸浓度(煤尘)</div>
 |  |                <div class="title">爆炸浓度(煤尘)</div>
 | 
											
										
											
												
													
														|  | @@ -91,14 +88,8 @@
 | 
											
												
													
														|  |          <div class="right-bottom">
 |  |          <div class="right-bottom">
 | 
											
												
													
														|  |            <span class="base-title">粉尘预测曲线</span>
 |  |            <span class="base-title">粉尘预测曲线</span>
 | 
											
												
													
														|  |            <div class="echarts-box">
 |  |            <div class="echarts-box">
 | 
											
												
													
														|  | -            <BarAndLine
 |  | 
 | 
											
												
													
														|  | -              xAxisPropType="time"
 |  | 
 | 
											
												
													
														|  | -              :dataSource="posList"
 |  | 
 | 
											
												
													
														|  | -              height="100%"
 |  | 
 | 
											
												
													
														|  | -              :chartsColumns="chartsColumns"
 |  | 
 | 
											
												
													
														|  | -              :option="echatsOption"
 |  | 
 | 
											
												
													
														|  | -              chartsType="listMonitor"
 |  | 
 | 
											
												
													
														|  | -            />
 |  | 
 | 
											
												
													
														|  | 
 |  | +            <BarAndLine xAxisPropType="time" :dataSource="posList" height="100%" :chartsColumns="chartsColumns"
 | 
											
												
													
														|  | 
 |  | +              :option="echatsOption" chartsType="listMonitor" />
 | 
											
												
													
														|  |            </div>
 |  |            </div>
 | 
											
												
													
														|  |          </div>
 |  |          </div>
 | 
											
												
													
														|  |        </div>
 |  |        </div>
 | 
											
										
											
												
													
														|  | @@ -106,375 +97,445 @@
 | 
											
												
													
														|  |    </BasicModal>
 |  |    </BasicModal>
 | 
											
												
													
														|  |  </template>
 |  |  </template>
 | 
											
												
													
														|  |  <script lang="ts">
 |  |  <script lang="ts">
 | 
											
												
													
														|  | -  import { defineComponent, ref, watch, shallowRef, reactive } from 'vue';
 |  | 
 | 
											
												
													
														|  | -  import { BasicModal, useModalInner } from '/@/components/Modal';
 |  | 
 | 
											
												
													
														|  | -  import BarAndLine from '/@/components/chart/BarAndLine.vue';
 |  | 
 | 
											
												
													
														|  | -  import { SvgIcon } from '/@/components/Icon';
 |  | 
 | 
											
												
													
														|  | -  import { Decoration7 as DvDecoration7, ScrollBoard as DvScrollBoard } from '@kjgl77/datav-vue3';
 |  | 
 | 
											
												
													
														|  | -  import dayjs from 'dayjs';
 |  | 
 | 
											
												
													
														|  | -
 |  | 
 | 
											
												
													
														|  | -  export default defineComponent({
 |  | 
 | 
											
												
													
														|  | -    components: { BasicModal, BarAndLine, SvgIcon, DvScrollBoard, DvDecoration7 },
 |  | 
 | 
											
												
													
														|  | -    props: {
 |  | 
 | 
											
												
													
														|  | -      dataSource: { type: Array },
 |  | 
 | 
											
												
													
														|  | -      activeID: { type: String },
 |  | 
 | 
											
												
													
														|  | -    },
 |  | 
 | 
											
												
													
														|  | -    setup(props) {
 |  | 
 | 
											
												
													
														|  | -      const currentTime = ref(dayjs().format('YYYY-MM-DD HH:mm:ss'));
 |  | 
 | 
											
												
													
														|  | -      const modelRef = ref({});
 |  | 
 | 
											
												
													
														|  | -      const loading = ref(true);
 |  | 
 | 
											
												
													
														|  | -      const activeDeviceID = ref('');
 |  | 
 | 
											
												
													
														|  | -      const deviceList = ref<any[]>([]);
 |  | 
 | 
											
												
													
														|  | -      const posList = ref<any[]>([]);
 |  | 
 | 
											
												
													
														|  | -      const dustMonitor = shallowRef({});
 |  | 
 | 
											
												
													
														|  | -      const dustSwitch = ref(false);
 |  | 
 | 
											
												
													
														|  | -
 |  | 
 | 
											
												
													
														|  | -      const echatsOption = {
 |  | 
 | 
											
												
													
														|  | -        grid: {
 |  | 
 | 
											
												
													
														|  | -          top: '20%',
 |  | 
 | 
											
												
													
														|  | -          left: '2px',
 |  | 
 | 
											
												
													
														|  | -          right: '10px',
 |  | 
 | 
											
												
													
														|  | -          bottom: '3%',
 |  | 
 | 
											
												
													
														|  | -          containLabel: true,
 |  | 
 | 
											
												
													
														|  | -        },
 |  | 
 | 
											
												
													
														|  | -        toolbox: {
 |  | 
 | 
											
												
													
														|  | -          feature: {},
 |  | 
 | 
											
												
													
														|  | -        },
 |  | 
 | 
											
												
													
														|  | -      };
 |  | 
 | 
											
												
													
														|  | -
 |  | 
 | 
											
												
													
														|  | -      const chartsColumns = [
 |  | 
 | 
											
												
													
														|  | -        {
 |  | 
 | 
											
												
													
														|  | -          legend: '粉尘平均浓度',
 |  | 
 | 
											
												
													
														|  | -          seriesName: '(mg/m³)',
 |  | 
 | 
											
												
													
														|  | -          ymax: 5,
 |  | 
 | 
											
												
													
														|  | -          yname: 'mg/m³',
 |  | 
 | 
											
												
													
														|  | -          linetype: 'line',
 |  | 
 | 
											
												
													
														|  | -          yaxispos: 'left',
 |  | 
 | 
											
												
													
														|  | -          color: '#FDB146',
 |  | 
 | 
											
												
													
														|  | -          sort: 1,
 |  | 
 | 
											
												
													
														|  | -          xRotate: 0,
 |  | 
 | 
											
												
													
														|  | -          dataIndex: 'hourAvg',
 |  | 
 | 
											
												
													
														|  | -        },
 |  | 
 | 
											
												
													
														|  | -        {
 |  | 
 | 
											
												
													
														|  | -          legend: '粉尘最大浓度',
 |  | 
 | 
											
												
													
														|  | -          seriesName: '(mg/m³)',
 |  | 
 | 
											
												
													
														|  | -          ymax: 5,
 |  | 
 | 
											
												
													
														|  | -          yname: 'mg/m³',
 |  | 
 | 
											
												
													
														|  | -          linetype: 'line',
 |  | 
 | 
											
												
													
														|  | -          yaxispos: 'left',
 |  | 
 | 
											
												
													
														|  | -          color: '#EE6666',
 |  | 
 | 
											
												
													
														|  | -          sort: 1,
 |  | 
 | 
											
												
													
														|  | -          xRotate: 0,
 |  | 
 | 
											
												
													
														|  | -          dataIndex: 'hourMax',
 |  | 
 | 
											
												
													
														|  | -        },
 |  | 
 | 
											
												
													
														|  | -        {
 |  | 
 | 
											
												
													
														|  | -          legend: '粉尘最小浓度',
 |  | 
 | 
											
												
													
														|  | -          seriesName: '(mg/m³)',
 |  | 
 | 
											
												
													
														|  | -          ymax: 5,
 |  | 
 | 
											
												
													
														|  | -          yname: 'mg/m³',
 |  | 
 | 
											
												
													
														|  | -          linetype: 'line',
 |  | 
 | 
											
												
													
														|  | -          yaxispos: 'left',
 |  | 
 | 
											
												
													
														|  | -          color: '#9BCB75',
 |  | 
 | 
											
												
													
														|  | -          sort: 1,
 |  | 
 | 
											
												
													
														|  | -          xRotate: 0,
 |  | 
 | 
											
												
													
														|  | -          dataIndex: 'hourMin',
 |  | 
 | 
											
												
													
														|  | -        },
 |  | 
 | 
											
												
													
														|  | -      ];
 |  | 
 | 
											
												
													
														|  | -
 |  | 
 | 
											
												
													
														|  | -      const columns = [
 |  | 
 | 
											
												
													
														|  | -        {
 |  | 
 | 
											
												
													
														|  | -          title: '安装位置',
 |  | 
 | 
											
												
													
														|  | -          dataIndex: 'position',
 |  | 
 | 
											
												
													
														|  | -          width: 60,
 |  | 
 | 
											
												
													
														|  | -          align: 'center',
 |  | 
 | 
											
												
													
														|  | -          customRender: ({ index }) => {
 |  | 
 | 
											
												
													
														|  | -            return `测点${index}`;
 |  | 
 | 
											
												
													
														|  | -          },
 |  | 
 | 
											
												
													
														|  | -        },
 |  | 
 | 
											
												
													
														|  | -        {
 |  | 
 | 
											
												
													
														|  | -          title: '安装距离(m)',
 |  | 
 | 
											
												
													
														|  | -          dataIndex: 'pos',
 |  | 
 | 
											
												
													
														|  | -          align: 'center',
 |  | 
 | 
											
												
													
														|  | -          width: 60,
 |  | 
 | 
											
												
													
														|  | -        },
 |  | 
 | 
											
												
													
														|  | -        {
 |  | 
 | 
											
												
													
														|  | -          title: '测点温度',
 |  | 
 | 
											
												
													
														|  | -          dataIndex: 'value',
 |  | 
 | 
											
												
													
														|  | -          align: 'center',
 |  | 
 | 
											
												
													
														|  | -          width: 50,
 |  | 
 | 
											
												
													
														|  | 
 |  | +import { defineComponent, ref, watch, shallowRef, reactive } from 'vue';
 | 
											
												
													
														|  | 
 |  | +import { BasicModal, useModalInner } from '/@/components/Modal';
 | 
											
												
													
														|  | 
 |  | +import BarAndLine from '/@/components/chart/BarAndLine.vue';
 | 
											
												
													
														|  | 
 |  | +import { SvgIcon } from '/@/components/Icon';
 | 
											
												
													
														|  | 
 |  | +import { Decoration7 as DvDecoration7, ScrollBoard as DvScrollBoard } from '@kjgl77/datav-vue3';
 | 
											
												
													
														|  | 
 |  | +import dayjs from 'dayjs';
 | 
											
												
													
														|  | 
 |  | +import { array } from 'vue-types';
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +export default defineComponent({
 | 
											
												
													
														|  | 
 |  | +  components: { BasicModal, BarAndLine, SvgIcon, DvScrollBoard, DvDecoration7 },
 | 
											
												
													
														|  | 
 |  | +  props: {
 | 
											
												
													
														|  | 
 |  | +    dataSource: { type: Array },
 | 
											
												
													
														|  | 
 |  | +    activeID: { type: String },
 | 
											
												
													
														|  | 
 |  | +  },
 | 
											
												
													
														|  | 
 |  | +  setup(props) {
 | 
											
												
													
														|  | 
 |  | +    const currentTime = ref(dayjs().format('YYYY-MM-DD HH:mm:ss'));
 | 
											
												
													
														|  | 
 |  | +    const modelRef = ref({});
 | 
											
												
													
														|  | 
 |  | +    const loading = ref(true);
 | 
											
												
													
														|  | 
 |  | +    const activeDeviceID = ref('');
 | 
											
												
													
														|  | 
 |  | +    const deviceList = ref<any[]>([]);
 | 
											
												
													
														|  | 
 |  | +    const posList = ref<any[]>([]);
 | 
											
												
													
														|  | 
 |  | +    const dustMonitor = shallowRef({});
 | 
											
												
													
														|  | 
 |  | +    const dustSwitch = ref(false);
 | 
											
												
													
														|  | 
 |  | +    const echartDat = reactive<any[]>([])
 | 
											
												
													
														|  | 
 |  | +    const echartDatas = ref<any[]>([])
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +    const echatsOption = {
 | 
											
												
													
														|  | 
 |  | +      grid: {
 | 
											
												
													
														|  | 
 |  | +        top: '20%',
 | 
											
												
													
														|  | 
 |  | +        left: '2px',
 | 
											
												
													
														|  | 
 |  | +        right: '10px',
 | 
											
												
													
														|  | 
 |  | +        bottom: '3%',
 | 
											
												
													
														|  | 
 |  | +        containLabel: true,
 | 
											
												
													
														|  | 
 |  | +      },
 | 
											
												
													
														|  | 
 |  | +      toolbox: {
 | 
											
												
													
														|  | 
 |  | +        feature: {},
 | 
											
												
													
														|  | 
 |  | +      },
 | 
											
												
													
														|  | 
 |  | +    };
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +    const chartsColumns = [
 | 
											
												
													
														|  | 
 |  | +      {
 | 
											
												
													
														|  | 
 |  | +        legend: '实时值',
 | 
											
												
													
														|  | 
 |  | +        seriesName: '(mg/m³)',
 | 
											
												
													
														|  | 
 |  | +        ymax: 5,
 | 
											
												
													
														|  | 
 |  | +        yname: 'mg/m³',
 | 
											
												
													
														|  | 
 |  | +        linetype: 'line',
 | 
											
												
													
														|  | 
 |  | +        yaxispos: 'left',
 | 
											
												
													
														|  | 
 |  | +        color: '#FDB146',
 | 
											
												
													
														|  | 
 |  | +        sort: 1,
 | 
											
												
													
														|  | 
 |  | +        xRotate: 0,
 | 
											
												
													
														|  | 
 |  | +        dataIndex: 'dustval',
 | 
											
												
													
														|  | 
 |  | +      },
 | 
											
												
													
														|  | 
 |  | +      {
 | 
											
												
													
														|  | 
 |  | +        legend: '预测值',
 | 
											
												
													
														|  | 
 |  | +        seriesName: '(mg/m³)',
 | 
											
												
													
														|  | 
 |  | +        ymax: 5,
 | 
											
												
													
														|  | 
 |  | +        yname: 'mg/m³',
 | 
											
												
													
														|  | 
 |  | +        linetype: 'line',
 | 
											
												
													
														|  | 
 |  | +        yaxispos: 'left',
 | 
											
												
													
														|  | 
 |  | +        color: '#EE6666',
 | 
											
												
													
														|  | 
 |  | +        sort: 1,
 | 
											
												
													
														|  | 
 |  | +        xRotate: 0,
 | 
											
												
													
														|  | 
 |  | +        dataIndex: 'ratio',
 | 
											
												
													
														|  | 
 |  | +      },
 | 
											
												
													
														|  | 
 |  | +      {
 | 
											
												
													
														|  | 
 |  | +        legend: '最新值',
 | 
											
												
													
														|  | 
 |  | +        seriesName: '(mg/m³)',
 | 
											
												
													
														|  | 
 |  | +        ymax: 5,
 | 
											
												
													
														|  | 
 |  | +        yname: 'mg/m³',
 | 
											
												
													
														|  | 
 |  | +        linetype: 'line',
 | 
											
												
													
														|  | 
 |  | +        yaxispos: 'left',
 | 
											
												
													
														|  | 
 |  | +        color: '#9BCB75',
 | 
											
												
													
														|  | 
 |  | +        sort: 1,
 | 
											
												
													
														|  | 
 |  | +        xRotate: 0,
 | 
											
												
													
														|  | 
 |  | +        dataIndex: 'totalDust',
 | 
											
												
													
														|  | 
 |  | +      },
 | 
											
												
													
														|  | 
 |  | +    ];
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +    const columns = [
 | 
											
												
													
														|  | 
 |  | +      {
 | 
											
												
													
														|  | 
 |  | +        title: '安装位置',
 | 
											
												
													
														|  | 
 |  | +        dataIndex: 'position',
 | 
											
												
													
														|  | 
 |  | +        width: 60,
 | 
											
												
													
														|  | 
 |  | +        align: 'center',
 | 
											
												
													
														|  | 
 |  | +        customRender: ({ index }) => {
 | 
											
												
													
														|  | 
 |  | +          return `测点${index}`;
 | 
											
												
													
														|  |          },
 |  |          },
 | 
											
												
													
														|  | -        {
 |  | 
 | 
											
												
													
														|  | -          title: '测点状态',
 |  | 
 | 
											
												
													
														|  | -          dataIndex: 'state',
 |  | 
 | 
											
												
													
														|  | -          align: 'center',
 |  | 
 | 
											
												
													
														|  | -          width: 50,
 |  | 
 | 
											
												
													
														|  | -          customRender: () => {
 |  | 
 | 
											
												
													
														|  | -            return `正常`;
 |  | 
 | 
											
												
													
														|  | -          },
 |  | 
 | 
											
												
													
														|  | 
 |  | +      },
 | 
											
												
													
														|  | 
 |  | +      {
 | 
											
												
													
														|  | 
 |  | +        title: '安装距离(m)',
 | 
											
												
													
														|  | 
 |  | +        dataIndex: 'pos',
 | 
											
												
													
														|  | 
 |  | +        align: 'center',
 | 
											
												
													
														|  | 
 |  | +        width: 60,
 | 
											
												
													
														|  | 
 |  | +      },
 | 
											
												
													
														|  | 
 |  | +      {
 | 
											
												
													
														|  | 
 |  | +        title: '测点温度',
 | 
											
												
													
														|  | 
 |  | +        dataIndex: 'value',
 | 
											
												
													
														|  | 
 |  | +        align: 'center',
 | 
											
												
													
														|  | 
 |  | +        width: 50,
 | 
											
												
													
														|  | 
 |  | +      },
 | 
											
												
													
														|  | 
 |  | +      {
 | 
											
												
													
														|  | 
 |  | +        title: '测点状态',
 | 
											
												
													
														|  | 
 |  | +        dataIndex: 'state',
 | 
											
												
													
														|  | 
 |  | +        align: 'center',
 | 
											
												
													
														|  | 
 |  | +        width: 50,
 | 
											
												
													
														|  | 
 |  | +        customRender: () => {
 | 
											
												
													
														|  | 
 |  | +          return `正常`;
 | 
											
												
													
														|  |          },
 |  |          },
 | 
											
												
													
														|  | -      ];
 |  | 
 | 
											
												
													
														|  | -
 |  | 
 | 
											
												
													
														|  | -      const warningConfig = reactive({
 |  | 
 | 
											
												
													
														|  | -        data: [
 |  | 
 | 
											
												
													
														|  | -          ['测点6', '318℃', '严重报警'],
 |  | 
 | 
											
												
													
														|  | -          ['测点43', '142℃', '一般预警'],
 |  | 
 | 
											
												
													
														|  | -          ['测点23', '167℃', '一般预警'],
 |  | 
 | 
											
												
													
														|  | -          ['测点6', '198℃', '超高预警'],
 |  | 
 | 
											
												
													
														|  | -          ['测点65', '197℃', '超高预警'],
 |  | 
 | 
											
												
													
														|  | -          ['测点78', '154℃', '一般预警'],
 |  | 
 | 
											
												
													
														|  | -          ['测点61', '104℃', '一般预警'],
 |  | 
 | 
											
												
													
														|  | -          ['测点87', '150℃', '一般信息'],
 |  | 
 | 
											
												
													
														|  | -        ],
 |  | 
 | 
											
												
													
														|  | -        index: false,
 |  | 
 | 
											
												
													
														|  | -        columnWidth: [150],
 |  | 
 | 
											
												
													
														|  | -        oddRowBGC: '#009acd10',
 |  | 
 | 
											
												
													
														|  | -        evenRowBGC: '#009acd05',
 |  | 
 | 
											
												
													
														|  | -        align: ['center', 'center', 'center'],
 |  | 
 | 
											
												
													
														|  | -      });
 |  | 
 | 
											
												
													
														|  | 
 |  | +      },
 | 
											
												
													
														|  | 
 |  | +    ];
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | -      const [register, { setModalProps }] = useModalInner();
 |  | 
 | 
											
												
													
														|  | 
 |  | +    const warningConfig = reactive({
 | 
											
												
													
														|  | 
 |  | +      data: [
 | 
											
												
													
														|  | 
 |  | +        ['测点6', '318℃', '严重报警'],
 | 
											
												
													
														|  | 
 |  | +        ['测点43', '142℃', '一般预警'],
 | 
											
												
													
														|  | 
 |  | +        ['测点23', '167℃', '一般预警'],
 | 
											
												
													
														|  | 
 |  | +        ['测点6', '198℃', '超高预警'],
 | 
											
												
													
														|  | 
 |  | +        ['测点65', '197℃', '超高预警'],
 | 
											
												
													
														|  | 
 |  | +        ['测点78', '154℃', '一般预警'],
 | 
											
												
													
														|  | 
 |  | +        ['测点61', '104℃', '一般预警'],
 | 
											
												
													
														|  | 
 |  | +        ['测点87', '150℃', '一般信息'],
 | 
											
												
													
														|  | 
 |  | +      ],
 | 
											
												
													
														|  | 
 |  | +      index: false,
 | 
											
												
													
														|  | 
 |  | +      columnWidth: [150],
 | 
											
												
													
														|  | 
 |  | +      oddRowBGC: '#009acd10',
 | 
											
												
													
														|  | 
 |  | +      evenRowBGC: '#009acd05',
 | 
											
												
													
														|  | 
 |  | +      align: ['center', 'center', 'center'],
 | 
											
												
													
														|  | 
 |  | +    });
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | -      function handleVisibleChange(visible) {
 |  | 
 | 
											
												
													
														|  | -        if (visible) {
 |  | 
 | 
											
												
													
														|  | -          loading.value = true;
 |  | 
 | 
											
												
													
														|  | -          setModalProps({ loading: true, confirmLoading: true });
 |  | 
 | 
											
												
													
														|  | -
 |  | 
 | 
											
												
													
														|  | -          setTimeout(() => {
 |  | 
 | 
											
												
													
														|  | -            loading.value = false;
 |  | 
 | 
											
												
													
														|  | -            setModalProps({ loading: false, confirmLoading: false });
 |  | 
 | 
											
												
													
														|  | -          }, 1000);
 |  | 
 | 
											
												
													
														|  | -        }
 |  | 
 | 
											
												
													
														|  | -      }
 |  | 
 | 
											
												
													
														|  | 
 |  | +    const [register, { setModalProps }] = useModalInner();
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | -      // 选择监测
 |  | 
 | 
											
												
													
														|  | -      function selectDevice(id) {
 |  | 
 | 
											
												
													
														|  | 
 |  | +    function handleVisibleChange(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;
 | 
											
												
													
														|  | -          activeDeviceID.value = id;
 |  | 
 | 
											
												
													
														|  |            setModalProps({ loading: false, confirmLoading: false });
 |  |            setModalProps({ loading: false, confirmLoading: false });
 | 
											
												
													
														|  | -        }, 300);
 |  | 
 | 
											
												
													
														|  | 
 |  | +        }, 1000);
 | 
											
												
													
														|  |        }
 |  |        }
 | 
											
												
													
														|  | 
 |  | +    }
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | -      watch([() => props.dataSource, () => props.activeID], ([newDataSource, newActiveID], [oldDataSource, oldActiveID]) => {
 |  | 
 | 
											
												
													
														|  | -        deviceList.value = newDataSource as any[];
 |  | 
 | 
											
												
													
														|  | -        // if (newActiveID != oldActiveID) {
 |  | 
 | 
											
												
													
														|  | -        //   activeDeviceID.value = newActiveID as string;
 |  | 
 | 
											
												
													
														|  | -        // }
 |  | 
 | 
											
												
													
														|  | -        activeDeviceID.value = activeDeviceID.value ? activeDeviceID.value : newActiveID;
 |  | 
 | 
											
												
													
														|  | -        newDataSource?.forEach((item: any, index) => {
 |  | 
 | 
											
												
													
														|  | -          if ((!activeDeviceID.value && index == 0) || item.deviceID === activeDeviceID.value) {
 |  | 
 | 
											
												
													
														|  | -            // activeDeviceID.value = item.deviceID;
 |  | 
 | 
											
												
													
														|  | -            // const list = item.summaryHour
 |  | 
 | 
											
												
													
														|  | -            // list.filter(data => {
 |  | 
 | 
											
												
													
														|  | -            //   const date = new Date();     //1. js获取当前时间
 |  | 
 | 
											
												
													
														|  | -            //   const min = date.getMinutes();  //2. 获取当前分钟
 |  | 
 | 
											
												
													
														|  | -            //   return Object.assign(data, data.dustval, { readTime: (dayjs(date.setMinutes(min + 10))).format('YYYY-MM-DD HH:mm:ss') })
 |  | 
 | 
											
												
													
														|  | -            // })
 |  | 
 | 
											
												
													
														|  | -            // if(list.length > 0) posList.value = list
 |  | 
 | 
											
												
													
														|  | -            posList.value = item['history'];
 |  | 
 | 
											
												
													
														|  | -            dustMonitor.value = item.readData;
 |  | 
 | 
											
												
													
														|  | -          }
 |  | 
 | 
											
												
													
														|  | -        });
 |  | 
 | 
											
												
													
														|  | 
 |  | +    // 选择监测
 | 
											
												
													
														|  | 
 |  | +    function selectDevice(id) {
 | 
											
												
													
														|  | 
 |  | +      loading.value = true;
 | 
											
												
													
														|  | 
 |  | +      setModalProps({ loading: true, confirmLoading: true });
 | 
											
												
													
														|  | 
 |  | +      setTimeout(() => {
 | 
											
												
													
														|  | 
 |  | +        loading.value = false;
 | 
											
												
													
														|  | 
 |  | +        activeDeviceID.value = id;
 | 
											
												
													
														|  | 
 |  | +        setModalProps({ loading: false, confirmLoading: false });
 | 
											
												
													
														|  | 
 |  | +      }, 300);
 | 
											
												
													
														|  | 
 |  | +    }
 | 
											
												
													
														|  | 
 |  | +    function uniqueObjects(arr, key) {
 | 
											
												
													
														|  | 
 |  | +      const unique = arr.map((e) => e[key])
 | 
											
												
													
														|  | 
 |  | +        // 存储每个属性值
 | 
											
												
													
														|  | 
 |  | +        .map((e, i, final) => final.indexOf(e) === i && i)
 | 
											
												
													
														|  | 
 |  | +        // 移除重复值的索引
 | 
											
												
													
														|  | 
 |  | +        .filter((e) => arr[e])
 | 
											
												
													
														|  | 
 |  | +        // 映射到对应的对象
 | 
											
												
													
														|  | 
 |  | +        .map((e) => arr[e]);
 | 
											
												
													
														|  | 
 |  | +      return unique;
 | 
											
												
													
														|  | 
 |  | +    }
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +    watch([() => props.dataSource, () => props.activeID], ([newDataSource, newActiveID], [oldDataSource, oldActiveID]) => {
 | 
											
												
													
														|  | 
 |  | +      deviceList.value = newDataSource as any[];
 | 
											
												
													
														|  | 
 |  | +      // if (newActiveID != oldActiveID) {
 | 
											
												
													
														|  | 
 |  | +      //   activeDeviceID.value = newActiveID as string;
 | 
											
												
													
														|  | 
 |  | +      // }
 | 
											
												
													
														|  | 
 |  | +      activeDeviceID.value = activeDeviceID.value ? activeDeviceID.value : newActiveID;
 | 
											
												
													
														|  | 
 |  | +      newDataSource?.forEach((item: any, index) => {
 | 
											
												
													
														|  | 
 |  | +        if ((!activeDeviceID.value && index == 0) || item.deviceID === activeDeviceID.value) {
 | 
											
												
													
														|  | 
 |  | +          // activeDeviceID.value = item.deviceID;
 | 
											
												
													
														|  | 
 |  | +          // const list = item.summaryHour
 | 
											
												
													
														|  | 
 |  | +          // list.filter(data => {
 | 
											
												
													
														|  | 
 |  | +          //   const date = new Date();     //1. js获取当前时间
 | 
											
												
													
														|  | 
 |  | +          //   const min = date.getMinutes();  //2. 获取当前分钟
 | 
											
												
													
														|  | 
 |  | +          //   return Object.assign(data, data.dustval, { readTime: (dayjs(date.setMinutes(min + 10))).format('YYYY-MM-DD HH:mm:ss') })
 | 
											
												
													
														|  | 
 |  | +          // })
 | 
											
												
													
														|  | 
 |  | +          // if(list.length > 0) posList.value = list
 | 
											
												
													
														|  | 
 |  | +          // posList.value = item['history'];
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +          echartDatas.value = JSON.parse(item.readData.expectInfo)['list']
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +          echartDat.push({ id: '1', time: JSON.parse(item.readData.expectInfo)['aveTime'], value: JSON.parse(item.readData.expectInfo)['aveVal'] })
 | 
											
												
													
														|  | 
 |  | +          echartDat.push({ id: '2', time: JSON.parse(item.readData.expectInfo)['nowTime'], value: JSON.parse(item.readData.expectInfo)['nowVal'] })
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +          let unique = uniqueObjects(echartDat, 'time');
 | 
											
												
													
														|  | 
 |  | +          let setData = [...echartDatas.value, ...unique]
 | 
											
												
													
														|  | 
 |  | +          setData.forEach((m, n) => {
 | 
											
												
													
														|  | 
 |  | +            if (unique.filter(t => t.time == m.time).length != 0 && m.id == '1') {
 | 
											
												
													
														|  | 
 |  | +              m.ratio = m.value
 | 
											
												
													
														|  | 
 |  | +              m.totalDust = ''
 | 
											
												
													
														|  | 
 |  | +              m.dustval = ''
 | 
											
												
													
														|  | 
 |  | +            } else if (unique.filter(t => t.time == m.time).length != 0 && m.id == '2') {
 | 
											
												
													
														|  | 
 |  | +              m.ratio = ''
 | 
											
												
													
														|  | 
 |  | +              m.totalDust = m.value
 | 
											
												
													
														|  | 
 |  | +              m.dustval = ''
 | 
											
												
													
														|  | 
 |  | +            } else {
 | 
											
												
													
														|  | 
 |  | +              m.ratio = ''
 | 
											
												
													
														|  | 
 |  | +              m.totalDust = ''
 | 
											
												
													
														|  | 
 |  | +              m.dustval = m.value
 | 
											
												
													
														|  | 
 |  | +            }
 | 
											
												
													
														|  | 
 |  | +          })
 | 
											
												
													
														|  | 
 |  | +          posList.value = setData
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +          console.log(setData, '111111111111111============')
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +          dustMonitor.value = item.readData;
 | 
											
												
													
														|  | 
 |  | +        }
 | 
											
												
													
														|  |        });
 |  |        });
 | 
											
												
													
														|  | 
 |  | +    });
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | -      return {
 |  | 
 | 
											
												
													
														|  | -        register,
 |  | 
 | 
											
												
													
														|  | -        model: modelRef,
 |  | 
 | 
											
												
													
														|  | -        currentTime,
 |  | 
 | 
											
												
													
														|  | -        dustSwitch,
 |  | 
 | 
											
												
													
														|  | -        handleVisibleChange,
 |  | 
 | 
											
												
													
														|  | -        selectDevice,
 |  | 
 | 
											
												
													
														|  | -        deviceList,
 |  | 
 | 
											
												
													
														|  | -        activeDeviceID,
 |  | 
 | 
											
												
													
														|  | -        dustMonitor,
 |  | 
 | 
											
												
													
														|  | -        echatsOption,
 |  | 
 | 
											
												
													
														|  | -        posList,
 |  | 
 | 
											
												
													
														|  | -        chartsColumns,
 |  | 
 | 
											
												
													
														|  | -        columns,
 |  | 
 | 
											
												
													
														|  | -        warningConfig,
 |  | 
 | 
											
												
													
														|  | -      };
 |  | 
 | 
											
												
													
														|  | -    },
 |  | 
 | 
											
												
													
														|  | -  });
 |  | 
 | 
											
												
													
														|  | 
 |  | +    return {
 | 
											
												
													
														|  | 
 |  | +      register,
 | 
											
												
													
														|  | 
 |  | +      model: modelRef,
 | 
											
												
													
														|  | 
 |  | +      currentTime,
 | 
											
												
													
														|  | 
 |  | +      dustSwitch,
 | 
											
												
													
														|  | 
 |  | +      handleVisibleChange,
 | 
											
												
													
														|  | 
 |  | +      selectDevice,
 | 
											
												
													
														|  | 
 |  | +      deviceList,
 | 
											
												
													
														|  | 
 |  | +      activeDeviceID,
 | 
											
												
													
														|  | 
 |  | +      dustMonitor,
 | 
											
												
													
														|  | 
 |  | +      echatsOption,
 | 
											
												
													
														|  | 
 |  | +      posList,
 | 
											
												
													
														|  | 
 |  | +      chartsColumns,
 | 
											
												
													
														|  | 
 |  | +      columns,
 | 
											
												
													
														|  | 
 |  | +      warningConfig,
 | 
											
												
													
														|  | 
 |  | +    };
 | 
											
												
													
														|  | 
 |  | +  },
 | 
											
												
													
														|  | 
 |  | +});
 | 
											
												
													
														|  |  </script>
 |  |  </script>
 | 
											
												
													
														|  |  <style lang="less" scoped>
 |  |  <style lang="less" scoped>
 | 
											
												
													
														|  | -  .fiber-modal {
 |  | 
 | 
											
												
													
														|  | -    width: 100%;
 |  | 
 | 
											
												
													
														|  | -    height: 600px;
 |  | 
 | 
											
												
													
														|  | -    display: flex;
 |  | 
 | 
											
												
													
														|  | -    flex-direction: row;
 |  | 
 | 
											
												
													
														|  | -    justify-content: space-between;
 |  | 
 | 
											
												
													
														|  | -
 |  | 
 | 
											
												
													
														|  | -    .modal-left {
 |  | 
 | 
											
												
													
														|  | -      width: 200px;
 |  | 
 | 
											
												
													
														|  | -      height: 100%;
 |  | 
 | 
											
												
													
														|  | -      overflow-y: auto;
 |  | 
 | 
											
												
													
														|  | -      background: #ffffff11;
 |  | 
 | 
											
												
													
														|  | -      padding: 5px;
 |  | 
 | 
											
												
													
														|  | -      border-radius: 5px;
 |  | 
 | 
											
												
													
														|  | -      .active-device-title {
 |  | 
 | 
											
												
													
														|  | -        color: aqua;
 |  | 
 | 
											
												
													
														|  | 
 |  | +.fiber-modal {
 | 
											
												
													
														|  | 
 |  | +  width: 100%;
 | 
											
												
													
														|  | 
 |  | +  height: 600px;
 | 
											
												
													
														|  | 
 |  | +  display: flex;
 | 
											
												
													
														|  | 
 |  | +  flex-direction: row;
 | 
											
												
													
														|  | 
 |  | +  justify-content: space-between;
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +  .modal-left {
 | 
											
												
													
														|  | 
 |  | +    width: 200px;
 | 
											
												
													
														|  | 
 |  | +    height: 100%;
 | 
											
												
													
														|  | 
 |  | +    overflow-y: auto;
 | 
											
												
													
														|  | 
 |  | +    background: #ffffff11;
 | 
											
												
													
														|  | 
 |  | +    padding: 5px;
 | 
											
												
													
														|  | 
 |  | +    border-radius: 5px;
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +    .active-device-title {
 | 
											
												
													
														|  | 
 |  | +      color: aqua;
 | 
											
												
													
														|  | 
 |  | +    }
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +    .link-item {
 | 
											
												
													
														|  | 
 |  | +      position: relative;
 | 
											
												
													
														|  | 
 |  | +      cursor: pointer;
 | 
											
												
													
														|  | 
 |  | +      line-height: 30px;
 | 
											
												
													
														|  | 
 |  | +      padding-left: 30px;
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +      span:hover {
 | 
											
												
													
														|  | 
 |  | +        color: #89ffff;
 | 
											
												
													
														|  |        }
 |  |        }
 | 
											
												
													
														|  | -      .link-item {
 |  | 
 | 
											
												
													
														|  | -        position: relative;
 |  | 
 | 
											
												
													
														|  | -        cursor: pointer;
 |  | 
 | 
											
												
													
														|  | -        line-height: 30px;
 |  | 
 | 
											
												
													
														|  | -        padding-left: 30px;
 |  | 
 | 
											
												
													
														|  | -        span:hover {
 |  | 
 | 
											
												
													
														|  | -          color: #89ffff;
 |  | 
 | 
											
												
													
														|  | -        }
 |  | 
 | 
											
												
													
														|  | -        &::after {
 |  | 
 | 
											
												
													
														|  | -          content: '';
 |  | 
 | 
											
												
													
														|  | -          position: absolute;
 |  | 
 | 
											
												
													
														|  | -          display: block;
 |  | 
 | 
											
												
													
														|  | -          width: 8px;
 |  | 
 | 
											
												
													
														|  | -          height: 8px;
 |  | 
 | 
											
												
													
														|  | -          top: 12px;
 |  | 
 | 
											
												
													
														|  | -          left: 10px;
 |  | 
 | 
											
												
													
														|  | -          transform: rotateZ(45deg) skew(10deg, 10deg);
 |  | 
 | 
											
												
													
														|  | -          background: #45d3fd;
 |  | 
 | 
											
												
													
														|  | -        }
 |  | 
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +      &::after {
 | 
											
												
													
														|  | 
 |  | +        content: '';
 | 
											
												
													
														|  | 
 |  | +        position: absolute;
 | 
											
												
													
														|  | 
 |  | +        display: block;
 | 
											
												
													
														|  | 
 |  | +        width: 8px;
 | 
											
												
													
														|  | 
 |  | +        height: 8px;
 | 
											
												
													
														|  | 
 |  | +        top: 12px;
 | 
											
												
													
														|  | 
 |  | +        left: 10px;
 | 
											
												
													
														|  | 
 |  | +        transform: rotateZ(45deg) skew(10deg, 10deg);
 | 
											
												
													
														|  | 
 |  | +        background: #45d3fd;
 | 
											
												
													
														|  |        }
 |  |        }
 | 
											
												
													
														|  |      }
 |  |      }
 | 
											
												
													
														|  | -    .modal-right {
 |  | 
 | 
											
												
													
														|  | -      width: calc(100% - 220px);
 |  | 
 | 
											
												
													
														|  | -      overflow-y: auto;
 |  | 
 | 
											
												
													
														|  | -      .base-title {
 |  | 
 | 
											
												
													
														|  | -        line-height: 32px;
 |  | 
 | 
											
												
													
														|  | -        position: relative;
 |  | 
 | 
											
												
													
														|  | -        padding-left: 20px;
 |  | 
 | 
											
												
													
														|  | -        &::after {
 |  | 
 | 
											
												
													
														|  | -          content: '';
 |  | 
 | 
											
												
													
														|  | -          position: absolute;
 |  | 
 | 
											
												
													
														|  | -          display: block;
 |  | 
 | 
											
												
													
														|  | -          width: 4px;
 |  | 
 | 
											
												
													
														|  | -          height: 12px;
 |  | 
 | 
											
												
													
														|  | -          top: 4px;
 |  | 
 | 
											
												
													
														|  | -          left: 10px;
 |  | 
 | 
											
												
													
														|  | -          background: #45d3fd;
 |  | 
 | 
											
												
													
														|  | -          border-radius: 4px;
 |  | 
 | 
											
												
													
														|  | -        }
 |  | 
 | 
											
												
													
														|  | 
 |  | +  }
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +  .modal-right {
 | 
											
												
													
														|  | 
 |  | +    width: calc(100% - 220px);
 | 
											
												
													
														|  | 
 |  | +    overflow-y: auto;
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +    .base-title {
 | 
											
												
													
														|  | 
 |  | +      line-height: 32px;
 | 
											
												
													
														|  | 
 |  | +      position: relative;
 | 
											
												
													
														|  | 
 |  | +      padding-left: 20px;
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +      &::after {
 | 
											
												
													
														|  | 
 |  | +        content: '';
 | 
											
												
													
														|  | 
 |  | +        position: absolute;
 | 
											
												
													
														|  | 
 |  | +        display: block;
 | 
											
												
													
														|  | 
 |  | +        width: 4px;
 | 
											
												
													
														|  | 
 |  | +        height: 12px;
 | 
											
												
													
														|  | 
 |  | +        top: 4px;
 | 
											
												
													
														|  | 
 |  | +        left: 10px;
 | 
											
												
													
														|  | 
 |  | +        background: #45d3fd;
 | 
											
												
													
														|  | 
 |  | +        border-radius: 4px;
 | 
											
												
													
														|  |        }
 |  |        }
 | 
											
												
													
														|  | -      .right-top {
 |  | 
 | 
											
												
													
														|  | 
 |  | +    }
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +    .right-top {
 | 
											
												
													
														|  | 
 |  | +      display: flex;
 | 
											
												
													
														|  | 
 |  | +      flex-direction: row;
 | 
											
												
													
														|  | 
 |  | +      justify-content: space-between;
 | 
											
												
													
														|  | 
 |  | +      margin-bottom: 30px;
 | 
											
												
													
														|  | 
 |  | +      padding: 0 10px;
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +      .top-item {
 | 
											
												
													
														|  | 
 |  | +        width: 155px;
 | 
											
												
													
														|  | 
 |  | +        height: 60px;
 | 
											
												
													
														|  |          display: flex;
 |  |          display: flex;
 | 
											
												
													
														|  |          flex-direction: row;
 |  |          flex-direction: row;
 | 
											
												
													
														|  | -        justify-content: space-between;
 |  | 
 | 
											
												
													
														|  | -        margin-bottom: 30px;
 |  | 
 | 
											
												
													
														|  | -        padding: 0 10px;
 |  | 
 | 
											
												
													
														|  | -        .top-item {
 |  | 
 | 
											
												
													
														|  | -          width: 155px;
 |  | 
 | 
											
												
													
														|  | 
 |  | +        justify-content: center;
 | 
											
												
													
														|  | 
 |  | +        align-items: center;
 | 
											
												
													
														|  | 
 |  | +        background: url('/@/assets/images/vent/model_image/dust-monitor-bg.png') no-repeat;
 | 
											
												
													
														|  | 
 |  | +        padding-top: 16px;
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +        .icon {
 | 
											
												
													
														|  | 
 |  | +          width: 58px;
 | 
											
												
													
														|  |            height: 60px;
 |  |            height: 60px;
 | 
											
												
													
														|  |            display: flex;
 |  |            display: flex;
 | 
											
												
													
														|  | -          flex-direction: row;
 |  | 
 | 
											
												
													
														|  |            justify-content: center;
 |  |            justify-content: center;
 | 
											
												
													
														|  |            align-items: center;
 |  |            align-items: center;
 | 
											
												
													
														|  | -          background: url('/@/assets/images/vent/model_image/dust-monitor-bg.png') no-repeat;
 |  | 
 | 
											
												
													
														|  | -          padding-top: 16px;
 |  | 
 | 
											
												
													
														|  | -          .icon {
 |  | 
 | 
											
												
													
														|  | -            width: 58px;
 |  | 
 | 
											
												
													
														|  | -            height: 60px;
 |  | 
 | 
											
												
													
														|  | -            display: flex;
 |  | 
 | 
											
												
													
														|  | -            justify-content: center;
 |  | 
 | 
											
												
													
														|  | -            align-items: center;
 |  | 
 | 
											
												
													
														|  | 
 |  | +          position: relative;
 | 
											
												
													
														|  | 
 |  | +          top: -8px;
 | 
											
												
													
														|  | 
 |  | +        }
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +        .item-container {
 | 
											
												
													
														|  | 
 |  | +          width: 100px;
 | 
											
												
													
														|  | 
 |  | +          display: flex;
 | 
											
												
													
														|  | 
 |  | +          flex-direction: column;
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +          // justify-content: start;
 | 
											
												
													
														|  | 
 |  | +          div {
 | 
											
												
													
														|  | 
 |  | +            padding-left: 8px;
 | 
											
												
													
														|  | 
 |  | +          }
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +          .title {
 | 
											
												
													
														|  | 
 |  | +            font-size: 14px;
 | 
											
												
													
														|  | 
 |  | +            margin-bottom: 8px;
 | 
											
												
													
														|  | 
 |  | +          }
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +          .value {
 | 
											
												
													
														|  |              position: relative;
 |  |              position: relative;
 | 
											
												
													
														|  | 
 |  | +            width: 110px;
 | 
											
												
													
														|  |              top: -8px;
 |  |              top: -8px;
 | 
											
												
													
														|  | -          }
 |  | 
 | 
											
												
													
														|  | -          .item-container {
 |  | 
 | 
											
												
													
														|  | -            width: 100px;
 |  | 
 | 
											
												
													
														|  | -            display: flex;
 |  | 
 | 
											
												
													
														|  | -            flex-direction: column;
 |  | 
 | 
											
												
													
														|  | -            // justify-content: start;
 |  | 
 | 
											
												
													
														|  | -            div {
 |  | 
 | 
											
												
													
														|  | -              padding-left: 8px;
 |  | 
 | 
											
												
													
														|  | -            }
 |  | 
 | 
											
												
													
														|  | -            .title {
 |  | 
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +            .data {
 | 
											
												
													
														|  | 
 |  | +              display: inline-block;
 | 
											
												
													
														|  | 
 |  | +              width: 50px;
 | 
											
												
													
														|  | 
 |  | +              font-family: douyuFont;
 | 
											
												
													
														|  | 
 |  | +              font-weight: 600;
 | 
											
												
													
														|  |                font-size: 14px;
 |  |                font-size: 14px;
 | 
											
												
													
														|  | -              margin-bottom: 8px;
 |  | 
 | 
											
												
													
														|  | 
 |  | +              -webkit-background-clip: text;
 | 
											
												
													
														|  | 
 |  | +              background-clip: text;
 | 
											
												
													
														|  | 
 |  | +              color: #28dce4;
 | 
											
												
													
														|  |              }
 |  |              }
 | 
											
												
													
														|  | -            .value {
 |  | 
 | 
											
												
													
														|  | -              position: relative;
 |  | 
 | 
											
												
													
														|  | -              width: 110px;
 |  | 
 | 
											
												
													
														|  | -              top: -8px;
 |  | 
 | 
											
												
													
														|  | -              .data {
 |  | 
 | 
											
												
													
														|  | -                display: inline-block;
 |  | 
 | 
											
												
													
														|  | -                width: 50px;
 |  | 
 | 
											
												
													
														|  | -                font-family: douyuFont;
 |  | 
 | 
											
												
													
														|  | -                font-weight: 600;
 |  | 
 | 
											
												
													
														|  | -                font-size: 14px;
 |  | 
 | 
											
												
													
														|  | -                -webkit-background-clip: text;
 |  | 
 | 
											
												
													
														|  | -                background-clip: text;
 |  | 
 | 
											
												
													
														|  | -                color: #28dce4;
 |  | 
 | 
											
												
													
														|  | -              }
 |  | 
 | 
											
												
													
														|  | -              span {
 |  | 
 | 
											
												
													
														|  | -                font-family: Arial, Helvetica, sans-serif;
 |  | 
 | 
											
												
													
														|  | -                font-size: 14px;
 |  | 
 | 
											
												
													
														|  | -                color: #ffffffdd;
 |  | 
 | 
											
												
													
														|  | -              }
 |  | 
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +            span {
 | 
											
												
													
														|  | 
 |  | +              font-family: Arial, Helvetica, sans-serif;
 | 
											
												
													
														|  | 
 |  | +              font-size: 14px;
 | 
											
												
													
														|  | 
 |  | +              color: #ffffffdd;
 | 
											
												
													
														|  |              }
 |  |              }
 | 
											
												
													
														|  |            }
 |  |            }
 | 
											
												
													
														|  |          }
 |  |          }
 | 
											
												
													
														|  | -        .warning-box {
 |  | 
 | 
											
												
													
														|  | -          padding-top: 0px;
 |  | 
 | 
											
												
													
														|  | -          .icon {
 |  | 
 | 
											
												
													
														|  | -            margin-top: 20px;
 |  | 
 | 
											
												
													
														|  | -            .icon-style {
 |  | 
 | 
											
												
													
														|  | -              color: #fdb146;
 |  | 
 | 
											
												
													
														|  | -            }
 |  | 
 | 
											
												
													
														|  | 
 |  | +      }
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +      .warning-box {
 | 
											
												
													
														|  | 
 |  | +        padding-top: 0px;
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +        .icon {
 | 
											
												
													
														|  | 
 |  | +          margin-top: 20px;
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +          .icon-style {
 | 
											
												
													
														|  | 
 |  | +            color: #fdb146;
 | 
											
												
													
														|  |            }
 |  |            }
 | 
											
												
													
														|  | 
 |  | +        }
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +        .title {
 | 
											
												
													
														|  | 
 |  | +          padding-top: 0px;
 | 
											
												
													
														|  | 
 |  | +        }
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +        .warning-value {
 | 
											
												
													
														|  | 
 |  | +          font-family: electronicFont;
 | 
											
												
													
														|  | 
 |  | +          font-size: 18px;
 | 
											
												
													
														|  | 
 |  | +          color: #61ddb1;
 | 
											
												
													
														|  | 
 |  | +        }
 | 
											
												
													
														|  | 
 |  | +      }
 | 
											
												
													
														|  | 
 |  | +    }
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +    .right-center {
 | 
											
												
													
														|  | 
 |  | +      margin-top: 20px;
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +      .dust-group {
 | 
											
												
													
														|  | 
 |  | +        display: flex;
 | 
											
												
													
														|  | 
 |  | +        flex-direction: row;
 | 
											
												
													
														|  | 
 |  | +        justify-content: space-between;
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +        .dust-item {
 | 
											
												
													
														|  | 
 |  | +          width: 238px;
 | 
											
												
													
														|  | 
 |  | +          height: 148px;
 | 
											
												
													
														|  | 
 |  | +          background: url('/@/assets/images/vent/model_image/dust-bg.png') no-repeat;
 | 
											
												
													
														|  | 
 |  | +          scale: 0.9;
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  |            .title {
 |  |            .title {
 | 
											
												
													
														|  | -            padding-top: 0px;
 |  | 
 | 
											
												
													
														|  | 
 |  | +            position: absolute;
 | 
											
												
													
														|  | 
 |  | +            top: 80px;
 | 
											
												
													
														|  | 
 |  | +            left: 70px;
 | 
											
												
													
														|  | 
 |  | +            font-size: 16px;
 | 
											
												
													
														|  |            }
 |  |            }
 | 
											
												
													
														|  | -          .warning-value {
 |  | 
 | 
											
												
													
														|  | -            font-family: electronicFont;
 |  | 
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +          .value {
 | 
											
												
													
														|  | 
 |  | +            position: absolute;
 | 
											
												
													
														|  | 
 |  | +            top: 50px;
 | 
											
												
													
														|  | 
 |  | +            left: 50px;
 | 
											
												
													
														|  | 
 |  | +            font-family: 'douyuFont';
 | 
											
												
													
														|  | 
 |  | +            color: #20dbfd;
 | 
											
												
													
														|  | 
 |  | +            text-shadow: 0 0 25px #00d8ff;
 | 
											
												
													
														|  |              font-size: 18px;
 |  |              font-size: 18px;
 | 
											
												
													
														|  | -            color: #61ddb1;
 |  | 
 | 
											
												
													
														|  | -          }
 |  | 
 | 
											
												
													
														|  | -        }
 |  | 
 | 
											
												
													
														|  | -      }
 |  | 
 | 
											
												
													
														|  | -      .right-center {
 |  | 
 | 
											
												
													
														|  | -        margin-top: 20px;
 |  | 
 | 
											
												
													
														|  | -        .dust-group {
 |  | 
 | 
											
												
													
														|  | -          display: flex;
 |  | 
 | 
											
												
													
														|  | -          flex-direction: row;
 |  | 
 | 
											
												
													
														|  | -          justify-content: space-between;
 |  | 
 | 
											
												
													
														|  | -          .dust-item {
 |  | 
 | 
											
												
													
														|  | -            width: 238px;
 |  | 
 | 
											
												
													
														|  | -            height: 148px;
 |  | 
 | 
											
												
													
														|  | -            background: url('/@/assets/images/vent/model_image/dust-bg.png') no-repeat;
 |  | 
 | 
											
												
													
														|  | -            scale: 0.9;
 |  | 
 | 
											
												
													
														|  | -            .title {
 |  | 
 | 
											
												
													
														|  | -              position: absolute;
 |  | 
 | 
											
												
													
														|  | -              top: 80px;
 |  | 
 | 
											
												
													
														|  | -              left: 70px;
 |  | 
 | 
											
												
													
														|  | 
 |  | +            font-weight: bolder;
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +            span {
 | 
											
												
													
														|  | 
 |  | +              font-family: Arial, Helvetica, sans-serif;
 | 
											
												
													
														|  |                font-size: 16px;
 |  |                font-size: 16px;
 | 
											
												
													
														|  | -            }
 |  | 
 | 
											
												
													
														|  | -            .value {
 |  | 
 | 
											
												
													
														|  | -              position: absolute;
 |  | 
 | 
											
												
													
														|  | -              top: 50px;
 |  | 
 | 
											
												
													
														|  | -              left: 50px;
 |  | 
 | 
											
												
													
														|  | -              font-family: 'douyuFont';
 |  | 
 | 
											
												
													
														|  | -              color: #20dbfd;
 |  | 
 | 
											
												
													
														|  | -              text-shadow: 0 0 25px #00d8ff;
 |  | 
 | 
											
												
													
														|  | -              font-size: 18px;
 |  | 
 | 
											
												
													
														|  | -              font-weight: bolder;
 |  | 
 | 
											
												
													
														|  | -              span {
 |  | 
 | 
											
												
													
														|  | -                font-family: Arial, Helvetica, sans-serif;
 |  | 
 | 
											
												
													
														|  | -                font-size: 16px;
 |  | 
 | 
											
												
													
														|  | -                color: aliceblue;
 |  | 
 | 
											
												
													
														|  | -                margin-left: 8px;
 |  | 
 | 
											
												
													
														|  | -              }
 |  | 
 | 
											
												
													
														|  | 
 |  | +              color: aliceblue;
 | 
											
												
													
														|  | 
 |  | +              margin-left: 8px;
 | 
											
												
													
														|  |              }
 |  |              }
 | 
											
												
													
														|  |            }
 |  |            }
 | 
											
												
													
														|  |          }
 |  |          }
 | 
											
												
													
														|  |        }
 |  |        }
 | 
											
												
													
														|  | -      .right-bottom {
 |  | 
 | 
											
												
													
														|  | -        margin-top: 20px;
 |  | 
 | 
											
												
													
														|  | -        .echarts-box {
 |  | 
 | 
											
												
													
														|  | -          width: 100%;
 |  | 
 | 
											
												
													
														|  | -          height: 270px;
 |  | 
 | 
											
												
													
														|  | -        }
 |  | 
 | 
											
												
													
														|  | 
 |  | +    }
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +    .right-bottom {
 | 
											
												
													
														|  | 
 |  | +      margin-top: 20px;
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +      .echarts-box {
 | 
											
												
													
														|  | 
 |  | +        width: 100%;
 | 
											
												
													
														|  | 
 |  | +        height: 270px;
 | 
											
												
													
														|  |        }
 |  |        }
 | 
											
												
													
														|  |      }
 |  |      }
 | 
											
												
													
														|  |    }
 |  |    }
 | 
											
												
													
														|  | 
 |  | +}
 | 
											
												
													
														|  |  </style>
 |  |  </style>
 |