|  | @@ -1,120 +1,124 @@
 | 
	
		
			
				|  |  |  <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.stationname }}</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 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.fmax }} <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="top-item">
 | 
	
		
			
				|  |  | -              <div class="icon">
 | 
	
		
			
				|  |  | -                <SvgIcon class="icon-style min-temperature" size="38" name="min-temperature" />
 | 
	
		
			
				|  |  | -              </div>
 | 
	
		
			
				|  |  | -              <div class="item-container">
 | 
	
		
			
				|  |  | -                <div class="title">最低温度</div>
 | 
	
		
			
				|  |  | -                <div class="value">{{ posMonitor.fmin }} <span>℃</span></div>
 | 
	
		
			
				|  |  | -              </div>
 | 
	
		
			
				|  |  | +            <div class="item-container">
 | 
	
		
			
				|  |  | +              <div class="title">最高温度</div>
 | 
	
		
			
				|  |  | +              <div class="value">{{ posMonitor.fmax }} <span>℃</span> </div>
 | 
	
		
			
				|  |  |              </div>
 | 
	
		
			
				|  |  | -            <div class="top-item">
 | 
	
		
			
				|  |  | -              <div class="icon">
 | 
	
		
			
				|  |  | -                <SvgIcon class="icon-style aveg-temperature" size="38" name="aveg-temperature" />
 | 
	
		
			
				|  |  | -              </div>
 | 
	
		
			
				|  |  | -              <div class="item-container">
 | 
	
		
			
				|  |  | -                <div class="title">平均温度</div>
 | 
	
		
			
				|  |  | -                <div class="value">{{ posMonitor.favg }} <span>℃</span></div>
 | 
	
		
			
				|  |  | -              </div>
 | 
	
		
			
				|  |  | +          </div>
 | 
	
		
			
				|  |  | +          <div class="top-item">
 | 
	
		
			
				|  |  | +            <div class="icon">
 | 
	
		
			
				|  |  | +              <SvgIcon class="icon-style min-temperature" size="38" name="min-temperature" />
 | 
	
		
			
				|  |  |              </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="item-container">
 | 
	
		
			
				|  |  | +              <div class="title">最低温度</div>
 | 
	
		
			
				|  |  | +              <div class="value">{{ posMonitor.fmin }} <span>℃</span></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="top-item">
 | 
	
		
			
				|  |  | +            <div class="icon">
 | 
	
		
			
				|  |  | +              <SvgIcon class="icon-style aveg-temperature" size="38" name="aveg-temperature" />
 | 
	
		
			
				|  |  | +            </div>
 | 
	
		
			
				|  |  | +            <div class="item-container">
 | 
	
		
			
				|  |  | +              <div class="title">平均温度</div>
 | 
	
		
			
				|  |  | +              <div class="value">{{ posMonitor.favg }} <span>℃</span></div>
 | 
	
		
			
				|  |  | +            </div>
 | 
	
		
			
				|  |  | +          </div>
 | 
	
		
			
				|  |  | +          <div class="top-item warning-box">
 | 
	
		
			
				|  |  | +            <div class="icon">
 | 
	
		
			
				|  |  | +              <SvgIcon class="icon-style" size="38" name="risk-level" />
 | 
	
		
			
				|  |  |              </div>
 | 
	
		
			
				|  |  | -            <div class="warning-box">
 | 
	
		
			
				|  |  | -              <span class="base-title">预警历史详情</span>
 | 
	
		
			
				|  |  | -              <div class="warning-container">
 | 
	
		
			
				|  |  | -                <dv-scroll-board ref="scrollBoard" :config="warningConfig" style="width: 100%; height: 240px; overflow-y: auto; border: 1px solid #39e8ff33;" />
 | 
	
		
			
				|  |  | -              </div>
 | 
	
		
			
				|  |  | +            <div class="item-container">
 | 
	
		
			
				|  |  | +              <div class="title">风险等级</div>
 | 
	
		
			
				|  |  | +              <div class="warning-value">低风险</div>
 | 
	
		
			
				|  |  |              </div>
 | 
	
		
			
				|  |  |            </div>
 | 
	
		
			
				|  |  | -          <div class="right-bottom">
 | 
	
		
			
				|  |  | -            <span class="base-title">测点监测曲线</span>
 | 
	
		
			
				|  |  | -            <div class="echarts-box">
 | 
	
		
			
				|  |  | -              <BarAndLine
 | 
	
		
			
				|  |  | -                xAxisPropType="pos"
 | 
	
		
			
				|  |  | -                :dataSource="posList"
 | 
	
		
			
				|  |  | -                height="100%"
 | 
	
		
			
				|  |  | -                :chartsColumns="chartsColumns"
 | 
	
		
			
				|  |  | -                :option="echatsOption"
 | 
	
		
			
				|  |  | -                chartsType="listMonitor" />
 | 
	
		
			
				|  |  | +        </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>
 | 
	
		
			
				|  |  | +            <div class="warning-container">
 | 
	
		
			
				|  |  | +              <dv-scroll-board
 | 
	
		
			
				|  |  | +                ref="scrollBoard"
 | 
	
		
			
				|  |  | +                :config="warningConfig"
 | 
	
		
			
				|  |  | +                style="width: 100%; height: 240px; overflow-y: auto; border: 1px solid #39e8ff33"
 | 
	
		
			
				|  |  | +              />
 | 
	
		
			
				|  |  |              </div>
 | 
	
		
			
				|  |  |            </div>
 | 
	
		
			
				|  |  |          </div>
 | 
	
		
			
				|  |  | +        <div class="right-bottom">
 | 
	
		
			
				|  |  | +          <span class="base-title">测点监测曲线</span>
 | 
	
		
			
				|  |  | +          <div class="echarts-box">
 | 
	
		
			
				|  |  | +            <BarAndLine
 | 
	
		
			
				|  |  | +              xAxisPropType="pos"
 | 
	
		
			
				|  |  | +              :dataSource="posList"
 | 
	
		
			
				|  |  | +              height="100%"
 | 
	
		
			
				|  |  | +              :chartsColumns="chartsColumns"
 | 
	
		
			
				|  |  | +              :option="echatsOption"
 | 
	
		
			
				|  |  | +              chartsType="listMonitor"
 | 
	
		
			
				|  |  | +            />
 | 
	
		
			
				|  |  | +          </div>
 | 
	
		
			
				|  |  | +        </div>
 | 
	
		
			
				|  |  |        </div>
 | 
	
		
			
				|  |  | -    </BasicModal>
 | 
	
		
			
				|  |  | -  </template>
 | 
	
		
			
				|  |  | -  <script lang="ts">
 | 
	
		
			
				|  |  | +    </div>
 | 
	
		
			
				|  |  | +  </BasicModal>
 | 
	
		
			
				|  |  | +</template>
 | 
	
		
			
				|  |  | +<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'
 | 
	
		
			
				|  |  | -  
 | 
	
		
			
				|  |  | +  import dayjs from 'dayjs';
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |    export default defineComponent({
 | 
	
		
			
				|  |  |      components: { BasicModal, BarAndLine, SvgIcon, DvScrollBoard, DvDecoration7 },
 | 
	
		
			
				|  |  |      props: {
 | 
	
		
			
				|  |  | -      dataSource: {type: Array},
 | 
	
		
			
				|  |  | -      activeID: {type: String}
 | 
	
		
			
				|  |  | +      dataSource: { type: Array },
 | 
	
		
			
				|  |  | +      activeID: { type: String },
 | 
	
		
			
				|  |  |      },
 | 
	
		
			
				|  |  |      setup(props) {
 | 
	
		
			
				|  |  | -      const currentTime = ref(dayjs().format('YYYY-MM-DD HH:mm:ss'))
 | 
	
		
			
				|  |  | +      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 posMonitor = shallowRef({})
 | 
	
		
			
				|  |  | -  
 | 
	
		
			
				|  |  | +      const deviceList = ref<any[]>([]);
 | 
	
		
			
				|  |  | +      const posList = ref<any[]>([]);
 | 
	
		
			
				|  |  | +      const posMonitor = shallowRef({});
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |        const echatsOption = {
 | 
	
		
			
				|  |  |          grid: {
 | 
	
		
			
				|  |  |            top: '20%',
 | 
	
		
			
				|  |  |            left: '2px',
 | 
	
		
			
				|  |  |            right: '10px',
 | 
	
		
			
				|  |  |            bottom: '3%',
 | 
	
		
			
				|  |  | -          containLabel: true
 | 
	
		
			
				|  |  | +          containLabel: true,
 | 
	
		
			
				|  |  |          },
 | 
	
		
			
				|  |  |          toolbox: {
 | 
	
		
			
				|  |  | -          feature: {}
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | -      }
 | 
	
		
			
				|  |  | -  
 | 
	
		
			
				|  |  | +          feature: {},
 | 
	
		
			
				|  |  | +        },
 | 
	
		
			
				|  |  | +      };
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |        const chartsColumns = [
 | 
	
		
			
				|  |  |          {
 | 
	
		
			
				|  |  |            legend: '测点温度',
 | 
	
	
		
			
				|  | @@ -128,8 +132,8 @@
 | 
	
		
			
				|  |  |            xRotate: 0,
 | 
	
		
			
				|  |  |            dataIndex: 'value',
 | 
	
		
			
				|  |  |          },
 | 
	
		
			
				|  |  | -      ]
 | 
	
		
			
				|  |  | -  
 | 
	
		
			
				|  |  | +      ];
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |        const columns = [
 | 
	
		
			
				|  |  |          {
 | 
	
		
			
				|  |  |            title: '安装位置',
 | 
	
	
		
			
				|  | @@ -137,8 +141,8 @@
 | 
	
		
			
				|  |  |            width: 60,
 | 
	
		
			
				|  |  |            align: 'center',
 | 
	
		
			
				|  |  |            customRender: ({ index }) => {
 | 
	
		
			
				|  |  | -            return `测点${index}`
 | 
	
		
			
				|  |  | -          }
 | 
	
		
			
				|  |  | +            return `测点${index}`;
 | 
	
		
			
				|  |  | +          },
 | 
	
		
			
				|  |  |          },
 | 
	
		
			
				|  |  |          {
 | 
	
		
			
				|  |  |            title: '安装距离(m)',
 | 
	
	
		
			
				|  | @@ -158,11 +162,11 @@
 | 
	
		
			
				|  |  |            align: 'center',
 | 
	
		
			
				|  |  |            width: 50,
 | 
	
		
			
				|  |  |            customRender: () => {
 | 
	
		
			
				|  |  | -            return `正常`
 | 
	
		
			
				|  |  | -          }
 | 
	
		
			
				|  |  | +            return `正常`;
 | 
	
		
			
				|  |  | +          },
 | 
	
		
			
				|  |  |          },
 | 
	
		
			
				|  |  |        ];
 | 
	
		
			
				|  |  | -  
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |        const warningConfig = reactive({
 | 
	
		
			
				|  |  |          header: ['测点', '温度', '预警信息'],
 | 
	
		
			
				|  |  |          data: [
 | 
	
	
		
			
				|  | @@ -183,237 +187,250 @@
 | 
	
		
			
				|  |  |          evenRowBGC: '#009acd05',
 | 
	
		
			
				|  |  |          align: ['center', 'center', 'center'],
 | 
	
		
			
				|  |  |        });
 | 
	
		
			
				|  |  | -      
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |        const [register, { setModalProps, closeModal }] = useModalInner();
 | 
	
		
			
				|  |  | -  
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |        function handleVisibleChange(visible) {
 | 
	
		
			
				|  |  |          if (visible) {
 | 
	
		
			
				|  |  |            loading.value = true;
 | 
	
		
			
				|  |  |            setModalProps({ loading: true, confirmLoading: true });
 | 
	
		
			
				|  |  | -  
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |            setTimeout(() => {
 | 
	
		
			
				|  |  |              loading.value = false;
 | 
	
		
			
				|  |  |              setModalProps({ loading: false, confirmLoading: false });
 | 
	
		
			
				|  |  |            }, 1000);
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |        }
 | 
	
		
			
				|  |  | -  
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |        // 选择监测
 | 
	
		
			
				|  |  | -      function selectDevice (id){
 | 
	
		
			
				|  |  | +      function selectDevice(id) {
 | 
	
		
			
				|  |  |          loading.value = true;
 | 
	
		
			
				|  |  |          setModalProps({ loading: true, confirmLoading: true });
 | 
	
		
			
				|  |  | -         setTimeout(() => {
 | 
	
		
			
				|  |  | +        setTimeout(() => {
 | 
	
		
			
				|  |  |            loading.value = false;
 | 
	
		
			
				|  |  | -          activeDeviceID.value = id
 | 
	
		
			
				|  |  | +          activeDeviceID.value = id;
 | 
	
		
			
				|  |  |            setModalProps({ loading: false, confirmLoading: false });
 | 
	
		
			
				|  |  |          }, 300);
 | 
	
		
			
				|  |  |        }
 | 
	
		
			
				|  |  | -  
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |        function handleOk(e) {
 | 
	
		
			
				|  |  | -        e.preventDefault()
 | 
	
		
			
				|  |  | -        closeModal()
 | 
	
		
			
				|  |  | +        e.preventDefault();
 | 
	
		
			
				|  |  | +        closeModal();
 | 
	
		
			
				|  |  |        }
 | 
	
		
			
				|  |  | -  
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |        function handleCancel(e) {
 | 
	
		
			
				|  |  | -        e.preventDefault()
 | 
	
		
			
				|  |  | -        closeModal()
 | 
	
		
			
				|  |  | +        e.preventDefault();
 | 
	
		
			
				|  |  | +        closeModal();
 | 
	
		
			
				|  |  |        }
 | 
	
		
			
				|  |  | -  
 | 
	
		
			
				|  |  | -      watch([() => props.dataSource, () => props.activeID], ([newDataSource, newActiveID], [oldDataSource, oldActiveID]) => {
 | 
	
		
			
				|  |  | -        deviceList.value = newDataSource as any[]
 | 
	
		
			
				|  |  | -        if(newActiveID != oldActiveID){
 | 
	
		
			
				|  |  | -          activeDeviceID.value = newActiveID as string
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | -        newDataSource?.forEach((item:any, index) => {
 | 
	
		
			
				|  |  | -          if((!activeDeviceID.value && index == 0) || item.deviceID === activeDeviceID.value){
 | 
	
		
			
				|  |  | -            activeDeviceID.value = item.deviceID
 | 
	
		
			
				|  |  | -            if(item.readData.fibreTemperature){
 | 
	
		
			
				|  |  | -              const list = JSON.parse(item.readData.fibreTemperature)
 | 
	
		
			
				|  |  | -              if (list.length > 0) posList.value = list
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | -            posMonitor.value = item.readData
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      watch(
 | 
	
		
			
				|  |  | +        [() => props.dataSource, () => props.activeID],
 | 
	
		
			
				|  |  | +        ([newDataSource, newActiveID], [oldDataSource, oldActiveID]) => {
 | 
	
		
			
				|  |  | +          deviceList.value = newDataSource as any[];
 | 
	
		
			
				|  |  | +          if (newActiveID != oldActiveID) {
 | 
	
		
			
				|  |  | +            activeDeviceID.value = newActiveID as string;
 | 
	
		
			
				|  |  |            }
 | 
	
		
			
				|  |  | -        })
 | 
	
		
			
				|  |  | -      })
 | 
	
		
			
				|  |  | -  
 | 
	
		
			
				|  |  | -      return { register, model: modelRef, currentTime, handleVisibleChange, selectDevice, handleOk, handleCancel, deviceList, activeDeviceID, posMonitor, echatsOption, posList, chartsColumns, columns, warningConfig };
 | 
	
		
			
				|  |  | +          newDataSource?.forEach((item: any, index) => {
 | 
	
		
			
				|  |  | +            if ((!activeDeviceID.value && index == 0) || item.deviceID === activeDeviceID.value) {
 | 
	
		
			
				|  |  | +              activeDeviceID.value = item.deviceID;
 | 
	
		
			
				|  |  | +              if (item.readData.fibreTemperature) {
 | 
	
		
			
				|  |  | +                const list = JSON.parse(item.readData.fibreTemperature);
 | 
	
		
			
				|  |  | +                if (list.length > 0) posList.value = list;
 | 
	
		
			
				|  |  | +              }
 | 
	
		
			
				|  |  | +              posMonitor.value = item.readData;
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +          });
 | 
	
		
			
				|  |  | +        },
 | 
	
		
			
				|  |  | +        { deep: true, immediate: true }
 | 
	
		
			
				|  |  | +      );
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      return {
 | 
	
		
			
				|  |  | +        register,
 | 
	
		
			
				|  |  | +        model: modelRef,
 | 
	
		
			
				|  |  | +        currentTime,
 | 
	
		
			
				|  |  | +        handleVisibleChange,
 | 
	
		
			
				|  |  | +        selectDevice,
 | 
	
		
			
				|  |  | +        handleOk,
 | 
	
		
			
				|  |  | +        handleCancel,
 | 
	
		
			
				|  |  | +        deviceList,
 | 
	
		
			
				|  |  | +        activeDeviceID,
 | 
	
		
			
				|  |  | +        posMonitor,
 | 
	
		
			
				|  |  | +        echatsOption,
 | 
	
		
			
				|  |  | +        posList,
 | 
	
		
			
				|  |  | +        chartsColumns,
 | 
	
		
			
				|  |  | +        columns,
 | 
	
		
			
				|  |  | +        warningConfig,
 | 
	
		
			
				|  |  | +      };
 | 
	
		
			
				|  |  |      },
 | 
	
		
			
				|  |  | -    
 | 
	
		
			
				|  |  |    });
 | 
	
		
			
				|  |  | -  </script>
 | 
	
		
			
				|  |  | -  <style lang="less" scoped>
 | 
	
		
			
				|  |  | -    .fiber-modal{
 | 
	
		
			
				|  |  | -      width: 100%;
 | 
	
		
			
				|  |  | -      height: 650px;
 | 
	
		
			
				|  |  | -      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;
 | 
	
		
			
				|  |  | +</script>
 | 
	
		
			
				|  |  | +<style lang="less" scoped>
 | 
	
		
			
				|  |  | +  .fiber-modal {
 | 
	
		
			
				|  |  | +    width: 100%;
 | 
	
		
			
				|  |  | +    height: 650px;
 | 
	
		
			
				|  |  | +    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);
 | 
	
		
			
				|  |  | -        .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);
 | 
	
		
			
				|  |  | +      .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: 10px;
 | 
	
		
			
				|  |  | +        .top-item {
 | 
	
		
			
				|  |  | +          width: 200px;
 | 
	
		
			
				|  |  | +          height: 80px;
 | 
	
		
			
				|  |  |            display: flex;
 | 
	
		
			
				|  |  |            flex-direction: row;
 | 
	
		
			
				|  |  | -          justify-content: space-between;
 | 
	
		
			
				|  |  | -          margin-bottom: 10px;
 | 
	
		
			
				|  |  | -          .top-item{
 | 
	
		
			
				|  |  | -            width: 200px;
 | 
	
		
			
				|  |  | -            height: 80px;
 | 
	
		
			
				|  |  | +          justify-content: center;
 | 
	
		
			
				|  |  | +          border: 1px solid rgba(25, 237, 255, 0.4);
 | 
	
		
			
				|  |  | +          box-shadow: inset 0 0 10px rgba(0, 197, 255, 0.6);
 | 
	
		
			
				|  |  | +          background: rgba(0, 0, 0, 0.06666666666666667);
 | 
	
		
			
				|  |  | +          padding-top: 16px;
 | 
	
		
			
				|  |  | +          .icon {
 | 
	
		
			
				|  |  | +            margin-right: 10px;
 | 
	
		
			
				|  |  | +            margin-top: 5px;
 | 
	
		
			
				|  |  | +            color: #fdb146;
 | 
	
		
			
				|  |  | +          }
 | 
	
		
			
				|  |  | +          .item-container {
 | 
	
		
			
				|  |  | +            width: 100px;
 | 
	
		
			
				|  |  |              display: flex;
 | 
	
		
			
				|  |  | -            flex-direction: row;
 | 
	
		
			
				|  |  | +            flex-direction: column;
 | 
	
		
			
				|  |  |              justify-content: center;
 | 
	
		
			
				|  |  | -            border: 1px solid rgba(25,237,255,.4);
 | 
	
		
			
				|  |  | -            box-shadow: inset 0 0 10px rgba(0,197,255,.6);
 | 
	
		
			
				|  |  | -            background: rgba(0,0,0,.06666666666666667);
 | 
	
		
			
				|  |  | -            padding-top: 16px;
 | 
	
		
			
				|  |  | -            .icon{
 | 
	
		
			
				|  |  | -              margin-right: 10px;
 | 
	
		
			
				|  |  | -              margin-top: 5px;
 | 
	
		
			
				|  |  | -              color: #FDB146;
 | 
	
		
			
				|  |  | +            div {
 | 
	
		
			
				|  |  | +              text-align: center;
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  | -            .item-container{
 | 
	
		
			
				|  |  | -              width: 100px;
 | 
	
		
			
				|  |  | -              display: flex;
 | 
	
		
			
				|  |  | -              flex-direction: column;
 | 
	
		
			
				|  |  | -              justify-content: center;
 | 
	
		
			
				|  |  | -              div{
 | 
	
		
			
				|  |  | -                text-align: center;
 | 
	
		
			
				|  |  | -              }
 | 
	
		
			
				|  |  | -              .title{
 | 
	
		
			
				|  |  | -                font-size: 18px;
 | 
	
		
			
				|  |  | -              }
 | 
	
		
			
				|  |  | -              .value{
 | 
	
		
			
				|  |  | -                text-shadow: 0 0 25px #00fbfe;
 | 
	
		
			
				|  |  | -                background: linear-gradient( 0deg,#45d3fd, #45d3fd, #61ddb1,#61ddb1);
 | 
	
		
			
				|  |  | -                font-style: normal;
 | 
	
		
			
				|  |  | -                background-size: cover;
 | 
	
		
			
				|  |  | -                font-family: electronicFont;
 | 
	
		
			
				|  |  | -                font-size: 30px;
 | 
	
		
			
				|  |  | -                -webkit-background-clip: text;
 | 
	
		
			
				|  |  | -                background-clip: text;
 | 
	
		
			
				|  |  | -                -webkit-text-fill-color: transparent;
 | 
	
		
			
				|  |  | -                position: relative;
 | 
	
		
			
				|  |  | -                top: -8px;
 | 
	
		
			
				|  |  | -                span{
 | 
	
		
			
				|  |  | -                  font-family: Arial, Helvetica, sans-serif;
 | 
	
		
			
				|  |  | -                  font-size: 18px;
 | 
	
		
			
				|  |  | -                  color: aliceblue;
 | 
	
		
			
				|  |  | -                }
 | 
	
		
			
				|  |  | -                
 | 
	
		
			
				|  |  | -              }
 | 
	
		
			
				|  |  | -              
 | 
	
		
			
				|  |  | +            .title {
 | 
	
		
			
				|  |  | +              font-size: 18px;
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  | -          }
 | 
	
		
			
				|  |  | -          .warning-box{
 | 
	
		
			
				|  |  | -            padding-top: 0px;
 | 
	
		
			
				|  |  | -            .icon{
 | 
	
		
			
				|  |  | -              margin-top: 20px;
 | 
	
		
			
				|  |  | -              .icon-style{
 | 
	
		
			
				|  |  | -                color: #FDB146;
 | 
	
		
			
				|  |  | +            .value {
 | 
	
		
			
				|  |  | +              text-shadow: 0 0 25px #00fbfe;
 | 
	
		
			
				|  |  | +              background: linear-gradient(0deg, #45d3fd, #45d3fd, #61ddb1, #61ddb1);
 | 
	
		
			
				|  |  | +              font-style: normal;
 | 
	
		
			
				|  |  | +              background-size: cover;
 | 
	
		
			
				|  |  | +              font-family: electronicFont;
 | 
	
		
			
				|  |  | +              font-size: 30px;
 | 
	
		
			
				|  |  | +              -webkit-background-clip: text;
 | 
	
		
			
				|  |  | +              background-clip: text;
 | 
	
		
			
				|  |  | +              -webkit-text-fill-color: transparent;
 | 
	
		
			
				|  |  | +              position: relative;
 | 
	
		
			
				|  |  | +              top: -8px;
 | 
	
		
			
				|  |  | +              span {
 | 
	
		
			
				|  |  | +                font-family: Arial, Helvetica, sans-serif;
 | 
	
		
			
				|  |  | +                font-size: 18px;
 | 
	
		
			
				|  |  | +                color: aliceblue;
 | 
	
		
			
				|  |  |                }
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  | -            .warning-value{
 | 
	
		
			
				|  |  | -              font-size: 18px;
 | 
	
		
			
				|  |  | -              color: #61ddb1;
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  |            }
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | -        .right-center{
 | 
	
		
			
				|  |  | -          margin-top: 20px;
 | 
	
		
			
				|  |  | -          display: flex;
 | 
	
		
			
				|  |  | -          flex-direction: row;
 | 
	
		
			
				|  |  | -          justify-content: space-between;
 | 
	
		
			
				|  |  | -          .table-box{
 | 
	
		
			
				|  |  | -            position: relative;
 | 
	
		
			
				|  |  | -            width: 500px;
 | 
	
		
			
				|  |  | -            height: 250px;
 | 
	
		
			
				|  |  | -          }
 | 
	
		
			
				|  |  | -          .warning-box{
 | 
	
		
			
				|  |  | -            width: calc(100% - 520px);
 | 
	
		
			
				|  |  | -            .warning-container{
 | 
	
		
			
				|  |  | -              width: 100%;
 | 
	
		
			
				|  |  | -              height: convert;
 | 
	
		
			
				|  |  | -              background: #009acd00;
 | 
	
		
			
				|  |  | -              :deep(.dv-scroll-board){
 | 
	
		
			
				|  |  | -                .row-item{
 | 
	
		
			
				|  |  | -                  height: 40px !important;
 | 
	
		
			
				|  |  | -                  line-height: 40px !important;
 | 
	
		
			
				|  |  | -                }
 | 
	
		
			
				|  |  | -                .header-item{
 | 
	
		
			
				|  |  | -                  border-top: 1px solid #91e9fe !important;
 | 
	
		
			
				|  |  | -                  border-bottom: 1px solid #91e9fe !important;
 | 
	
		
			
				|  |  | -                }
 | 
	
		
			
				|  |  | -              }
 | 
	
		
			
				|  |  | -  
 | 
	
		
			
				|  |  | +        .warning-box {
 | 
	
		
			
				|  |  | +          padding-top: 0px;
 | 
	
		
			
				|  |  | +          .icon {
 | 
	
		
			
				|  |  | +            margin-top: 20px;
 | 
	
		
			
				|  |  | +            .icon-style {
 | 
	
		
			
				|  |  | +              color: #fdb146;
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |            }
 | 
	
		
			
				|  |  | +          .warning-value {
 | 
	
		
			
				|  |  | +            font-size: 18px;
 | 
	
		
			
				|  |  | +            color: #61ddb1;
 | 
	
		
			
				|  |  | +          }
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | -        .right-bottom{
 | 
	
		
			
				|  |  | -          margin-top: 20px;
 | 
	
		
			
				|  |  | -          .echarts-box{
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +      .right-center {
 | 
	
		
			
				|  |  | +        margin-top: 20px;
 | 
	
		
			
				|  |  | +        display: flex;
 | 
	
		
			
				|  |  | +        flex-direction: row;
 | 
	
		
			
				|  |  | +        justify-content: space-between;
 | 
	
		
			
				|  |  | +        .table-box {
 | 
	
		
			
				|  |  | +          position: relative;
 | 
	
		
			
				|  |  | +          width: 500px;
 | 
	
		
			
				|  |  | +          height: 250px;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        .warning-box {
 | 
	
		
			
				|  |  | +          width: calc(100% - 520px);
 | 
	
		
			
				|  |  | +          .warning-container {
 | 
	
		
			
				|  |  |              width: 100%;
 | 
	
		
			
				|  |  | -            height: 230px;
 | 
	
		
			
				|  |  | +            height: convert;
 | 
	
		
			
				|  |  | +            background: #009acd00;
 | 
	
		
			
				|  |  | +            :deep(.dv-scroll-board) {
 | 
	
		
			
				|  |  | +              .row-item {
 | 
	
		
			
				|  |  | +                height: 40px !important;
 | 
	
		
			
				|  |  | +                line-height: 40px !important;
 | 
	
		
			
				|  |  | +              }
 | 
	
		
			
				|  |  | +              .header-item {
 | 
	
		
			
				|  |  | +                border-top: 1px solid #91e9fe !important;
 | 
	
		
			
				|  |  | +                border-bottom: 1px solid #91e9fe !important;
 | 
	
		
			
				|  |  | +              }
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  |            }
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | -  
 | 
	
		
			
				|  |  | -        
 | 
	
		
			
				|  |  |        }
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  | -    :deep(.zxm-table-body){
 | 
	
		
			
				|  |  | -      border: 1px solid rgba(57, 232, 255, 0.2) !important;
 | 
	
		
			
				|  |  | -      .zxm-table-tbody > tr > td{
 | 
	
		
			
				|  |  | -        border: none !important;
 | 
	
		
			
				|  |  | +      .right-bottom {
 | 
	
		
			
				|  |  | +        margin-top: 20px;
 | 
	
		
			
				|  |  | +        .echarts-box {
 | 
	
		
			
				|  |  | +          width: 100%;
 | 
	
		
			
				|  |  | +          height: 230px;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  |        }
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  | -    :deep(.zxm-table-cell){
 | 
	
		
			
				|  |  | -      border-right: none !important;
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +  :deep(.zxm-table-body) {
 | 
	
		
			
				|  |  | +    border: 1px solid rgba(57, 232, 255, 0.2) !important;
 | 
	
		
			
				|  |  | +    .zxm-table-tbody > tr > td {
 | 
	
		
			
				|  |  | +      border: none !important;
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  | -  </style>
 | 
	
		
			
				|  |  | -  
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +  :deep(.zxm-table-cell) {
 | 
	
		
			
				|  |  | +    border-right: none !important;
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +</style>
 |