马宇豪
2024-07-08 20b0ce2db27b64a60de60aee05dedd448099e330
src/views/riskWarningSys/warningBigScreen/indexs/components/mon.vue
@@ -1,4 +1,15 @@
<template>
  <div>
    <div class="tit">
      <div class="title">特殊作业实时监控</div>
    </div>
    <div class="chart-cont">
      <div class="chart">
        <monitor :size="2.5" ref="monRef" @getData="getData"></monitor>
      </div>
      <div class="chart-right">
        <dv-decoration-10 :color="lineColor" style="width:100%;height:5%;" />
        <div class="charts-des">
    <div id="descCont" class="dark-desc">
      <div class="des-tit">
        <div>监控列表</div>
@@ -7,7 +18,19 @@
      <div class="des-main">
        <div>
          <h4>请选择所要查看的监控:</h4>
          <p>监控系统待接入...</p>
                <div class="videoList" v-if="descContent && descContent.length>0">
                  <div style="cursor: pointer;padding: 10px" v-for="(item,index) in descContent" :key="index" @click="openVideo(item,index)" :class="index == activeIndex?'active':''">
                    {{item.name}}
                  </div>
                </div>
                <div v-else>
                  监控系统待接入...
                </div>
              </div>
            </div>
          </div>
        </div>
        <dv-decoration-10 :color="lineColor" style="width:100%;height:5%;"/>
        </div>
      </div>
    </div>
@@ -32,21 +55,24 @@
  // 定义接口来定义对象的类型
  interface stateType {
    descContent: Object;
    activeIndex: number
    lineColor: Array<string>;
  }
  export default defineComponent({
    name: 'monDesc',
    components: {},
    components: {
      monitor: defineAsyncComponent(() => import('/@/views/riskWarningSys/warningBigScreen/components/monitor.vue')),
    },
    props:{
      content: Object || null
    },
    setup(props) {
      const screenThemes = useScreenTheme()
      const { screenTheme } = storeToRefs(screenThemes);
      const monRef = ref()
      const state = reactive<stateType>({
        descContent: {
        },
        descContent: {},
        activeIndex: 0,
        lineColor: ['#11FEEE'],
      });
@@ -65,12 +91,23 @@
        //   state.descContent = props.content
        // }
      })
      const openVideo=(item,index)=>{
        state.activeIndex = index
        monRef.value.changeVideo(item.deviceNo)
      }
      const getData = (data:Array)=>{
        state.descContent = data
      }
      // 页面载入时执行方法
      onMounted(() => {
        getTheme();
      });
      return {
        monRef,
        getData,
        openVideo,
        ...toRefs(state)
      };
    }
@@ -78,6 +115,80 @@
</script>
<style scoped lang="scss">
.dark-page{
  width: 100%;
  height: 100%;
  border:1px #5a5959 solid;
  background: url('../../../../../assets/warningScreen/body-bg.jpg');
  padding: 4%;
  .btns{
    position: fixed;
    width: 8%;
    height: 6%;
    right: 5%;
    top: 1.25rem;
    font-size: 1.125rem;
    color: rgb(17, 254, 238);
    cursor: pointer;
  }
  .tit{
    width: 100%;
    height: 122px;
    background: url("../../../../../assets/warningScreen/pagebg-t.png") no-repeat center;
    background-size: 100% 100%;
    .title{
      width: 100%;
      height: 122px;
      line-height: 112px;
      border-radius: 8px;
      margin-bottom: 20px;
      font-size: 2.8rem;
      color: #11feee;
      font-weight: bolder;
      text-align: center;
      letter-spacing: 5px;
    }
  }
  .chart-cont{
    width: 100%;
    padding: 20px;
    height: calc(92vh - 122px);
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    .chart{
      width: calc((100% - 20px) * 0.63);
      height: 100%;
      padding: 3%;
      background: url("../../../../../assets/warningScreen/pagebg-l.png") no-repeat center;
      background-size: 100% 100%;
      position: relative;
      .selector-2{
        position: absolute;
        top: 5%;
        right: 10%;
        width: 20%;
        font-size: 1.25rem;
        color: #fff;
      }
      .main-chart{
        width: 100%;
        height: 100%;
      }
    }
    .chart-right{
      width: calc((100% - 20px) * 0.37);
      height: 100%;
      .charts-des{
        height: 90%;
        padding: 4%;
        background: url("../../../../../assets/warningScreen/pagebg-r.png") no-repeat center;
        background-size: 100% 100%;
  .dark-desc{
    width: 100%;
    height: 100%;
@@ -117,14 +228,96 @@
            margin-bottom: 10px;
          }
        }
        &>p{
          font-size: 1rem;
          margin-top: 10px;
        }
              .active{
                background: rgba(255,255,255,.2);
      }
    }
  }
        }
      }
    }
  }
}
.light-page{
  width: 100%;
  height: 100%;
  border:1px #5a5959 solid;
  background: #F0F0F0;
  padding: 4%;
  .btns{
    position: fixed;
    width: 8%;
    height: 6%;
    right: 5%;
    top: 1.25rem;
    font-size: 1.125rem;
    color: #333;
    cursor: pointer;
  }
  .tit{
    width: 100%;
    height: 122px;
    background: url("../../../../../assets/warningScreen/pagebg-t-light.png") no-repeat center;
    background-size: 100% 100%;
    .title{
      width: 100%;
      height: 122px;
      line-height: 112px;
      border-radius: 8px;
      margin-bottom: 20px;
      font-size: 2.8rem;
      color: #333;
      font-weight: bolder;
      text-align: center;
      letter-spacing: 5px;
    }
  }
  .chart-cont{
    width: 100%;
    padding: 20px;
    height: calc(92vh - 122px);
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    .chart{
      width: calc((100% - 20px) * 0.63);
      height: 100%;
      padding: 3%;
      background: url("../../../../../assets/warningScreen/pagebg-l-light.png") no-repeat center;
      background-size: 100% 100%;
      position: relative;
      .selector-2{
        position: absolute;
        top: 5%;
        right: 10%;
        width: 20%;
        font-size: 1.25rem;
        color: #fff;
      }
      .main-chart{
        width: 100%;
        height: 100%;
      }
    }
    .chart-right{
      width: calc((100% - 20px) * 0.37);
      height: 100%;
      .charts-des{
        height: 90%;
        padding: 4%;
        background: url("../../../../../assets/warningScreen/pagebg-r-light.png") no-repeat center;
        background-size: 100% 100%;
  .light-desc{
    width: 100%;
    height: 100%;
@@ -172,4 +365,9 @@
      }
    }
  }
      }
    }
  }
}
</style>