Newer
Older
KaiFengPC / src / views / floodSys / floodOneMap / tabContent.vue
@zhangdeliang zhangdeliang on 23 May 8 KB 初始化项目
<template>
  <div :class="['zksqImg', ifExpand ? 'leftZk' : 'leftSq']" @click="changeifExpand" title="展开收起"></div>
  <div :class="['tabRightContent', 'animate__animated', ifExpand ? 'animate__bounceInRight' : 'animate__bounceOutRight']">
    <tabRightWL @showStationRiverclose="handlemodle"></tabRightWL>
    <tabRightGJ></tabRightGJ>
    <tabRightFX></tabRightFX>
    <tabRightCX></tabRightCX>
  </div>
  <!-- 河道横断面分析 -->
  <transition name="fade">
    <div :class="toggles ? 'supervisePopupPKs  supervisePopupPK3' : ' supervisePopupPKs supervisePopupPK2'" v-if="showStationRiver">
      <div class="title">
        <div class="titleName">{{ supervisePopuplist.riverTitle }}</div>
        <div class="closePopup">
          <svg-icon icon-class="exit-fullscreen" class="screenfull" @click="toggle" />
          <el-icon :size="18" @click="closePopup"><Close /></el-icon>
        </div>
      </div>
      <div class="allContent">
        <RiverPorfileChart
          :echartData="supervisePopuplist.echartData"
          :refresh="supervisePopuplist.refresh"
          class="echartDatas"
          v-if="showStationRiver && toggles"
        ></RiverPorfileChart>
        <RiverPorfileChart
          :echartData="supervisePopuplist.echartData"
          :refresh="supervisePopuplist.refresh"
          class="echartDatas1"
          v-if="showStationRiver && !toggles"
        ></RiverPorfileChart>
        <el-table :data="supervisePopuplist.tableDatalist" style="width: 100%" v-if="toggles" height="460">
          <el-table-column prop="pointNumber" label="排口编号" width="180" />
          <el-table-column prop="groundElevation" label="地面高程(m)" width="180" />
          <el-table-column prop="y" label="标高(m)" />
          <el-table-column prop="roadName" label="所在街道" />
        </el-table>
      </div>
    </div>
  </transition>

  <!-- 查看详情弹窗 -->

  <div id="pop-up" :class="'detailbox'" v-if="showModal">
    <div class="weather-head">
      <div class="head-bg">视频监控详情</div>
      <el-icon :size="18" @click="closePopupshowModal" class="CloseOutline weather-icon"><Close /></el-icon>
    </div>
    <div class="weather-body Bubbleframe-body">
      <!-- <HKVideo videoHeightCus="300" :cameraIndexCode="cameraIndexCode"> </HKVideo> -->
      <!-- 实时预览 -->
      <HKVideo
        ref="video"
        :appkey="videoConfig.appKey"
        :secret="videoConfig.appSecret"
        :ip="videoConfig.ip"
        :port="videoConfig.port"
        :cameraIndexCode="AllData.cameraIndexCode"
      ></HKVideo>
    </div>
  </div>
</template>
<script setup name="tabRightContent">
import bus from '@/bus';
import HKVideo from '@/components/videoHK/index.vue'; //实时预览
import { HKconfig } from '@/utils/HKConfig';
// import Screenfull from '@/components/Screenfull';
import tabRightPS from './tabRightPS.vue'; //排水设施
import tabRightWL from './tabRightWL.vue'; //物联感知、
import tabRightGJ from './tabRightGJ.vue'; //监测告警
import tabRightFX from './tabRightFX.vue'; //风险研判
import tabRightCX from './tabRightCX.vue'; //长效养护
import RiverPorfileChart from '@/components/Echarts/riverPorfileChart.vue'; //河道横断面分析
const showStationRiver = ref(false);
const ifExpand = ref(true);
const supervisePopuplist = ref('');
const showStationRiver3 = ref(true);
const showModal = ref(false);
const toggles = ref(false);

const AllData = reactive({
  videoOK: true,
  videoBack: true,
  cameraIndexCode: 'f8b48c890c054ac190c124bb190a7007', //实时预览code
  cameraIndexCodeBK: '09aa2a2694744cb8b188442b0b2af9b7', //历史回放code
  layout: '1',
  defaultList: [
    { cameraIndexCode: 'f8b48c890c054ac190c124bb190a7007', wndId: 1 },
    { cameraIndexCode: '09aa2a2694744cb8b188442b0b2af9b7', wndId: 2 },
    { cameraIndexCode: '81eddc6915a440cfb15e3725116bb087', wndId: 3 },
    { cameraIndexCode: 'bb9b18f5b9be4277a6b648518f2b6878', wndId: 4 },
  ],
});
const videoConfig = reactive({
  appKey: HKconfig.appkey,
  appSecret: HKconfig.secret,
  ip: HKconfig.ip,
  port: HKconfig.port,
});

onMounted(() => {
  bus.on('VideosHK', e => {
    //视频弹窗
    showModal.value = true;
  });
});

const changeifExpand = val => {
  ifExpand.value = !ifExpand.value;
  bus.emit('ifexpandValue', ifExpand.value);
};

const handlemodle = val => {
  ifExpand.value = false;
  bus.emit('ifexpandValue', ifExpand.value);
  toggles.value = false;
  bus.emit('supervisePopupPK3', true);
  showStationRiver.value = true;
  supervisePopuplist.value = val;
};
//放大缩小
const toggle = val => {
  toggles.value = !toggles.value;
};
//关闭视频弹窗
const closePopupshowModal = () => {
  showModal.value = false;
};
// 关闭弹窗;
const closePopup = val => {
  showStationRiver.value = false;
  ifExpand.value = true;
  bus.emit('ifexpandValue', ifExpand.value);
  bus.emit('clonesupervisePopupPK3', true);
};

onMounted(() => {
  bus.on('tabconten2vlaue', e => {
    ifExpand.value = !ifExpand.value;
  });
}),
  onBeforeUnmount(() => {
    bus.off('VideosHK');
    bus.off('tabconten2vlaue');
  });
</script>
<style lang="scss" scoped>
.zksqImg {
  border-radius: 10px 10px 0px 0px;
  width: 13px;
  height: 147px;
  background: url('@/assets/newImgs/down.png');
  background-size: 100% 100%;
  transform: rotate(180deg);
  position: absolute;
  top: 340px;
  z-index: 115;
  cursor: pointer;
  transition: 0.5s ease-in-out;
}
.leftZk {
  right: 534px;
}
.leftSq {
  right: 2px;
}
.tabRightContent {
  width: 528px;
  height: 750px;
  top: 8%;
  right: 5px;
  position: absolute;
  z-index: 115;
}
.echartDatas {
  width: 100% !important;
  height: 380px !important;
  margin: 10px auto;
}
.echartDatas1 {
  width: 100% !important;
  height: 180px !important;
  margin: 10px auto;
}
.supervisePopupPKs {
  position: fixed;
  -webkit-transform: translate(-112%, 0%);
  -ms-transform: translate(-112%, 0%);
  transform: translate(-112%, 0%);
  background: #021534;
  border: 0.00521rem solid #114f89;
  z-index: 2000;
  padding: 10px;
  animation: slideUp 1s ease-in-out forwards;
  .title {
    display: flex;
    justify-content: space-between;
  }
  .closePopup {
    display: flex;
  }
  .screenfull {
    margin-right: 20px;
  }
  .allContent {
    display: flex;
    flex-direction: column;
  }
}
@keyframes slideUp {
  from {
    transform: translateY(200%);
    opacity: 0;
  }
  to {
    transform: translateY(0);
    opacity: 1;
  }
}
.supervisePopupPK2 {
  top: 75%;
  right: 0%;
  -webkit-transform: translate(-112%, 0%);
  -ms-transform: translate(-112%, 0%);
  transform: translate(-112%, 0%);
  width: 100%;
  height: 230px;
  background: #021534;
  border: 0.00521rem solid #114f89;
  z-index: 2000;
  padding: 10px;
}
.supervisePopupPK3 {
  position: fixed;
  top: 2%;
  right: 0%;
  -webkit-transform: translate(-112%, 0%);
  -ms-transform: translate(-112%, 0%);
  transform: translate(-112%, 0%);
  width: 100%;
  height: 100vh;
  background: #021534;
  border: 0.00521rem solid #114f89;
  z-index: 2000;
  padding: 10px;
  animation: slideUp 1s ease-in-out forwards;
}
#pop-up {
  position: fixed;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);
  width: 590px;
  height: 560px;
  background: #021534;
  border: 1px solid #114f89;
  z-index: 2000;

  .weather-head {
    position: relative;
    height: 36px;
    background: linear-gradient(0deg, #021f56 0%, #042d7b 100%);

    .head-bg {
      position: absolute;
      width: 290px;
      line-height: 34px;
      height: 36px;
      left: 0;
      bottom: 0;
      background-size: 100% 100%;
      font-size: 18px;
      font-family: Source Han Sans CN;
      font-weight: 550;
      color: #ffffff;
      padding-left: 20px;
    }

    .Bubbleframe-bg {
      position: absolute;
      width: 226px;
      line-height: 36px;
      height: 36px;
      left: 0;
      bottom: 0;
      background-size: 100% 100%;
      font-size: 18px;
      font-family: Source Han Sans CN;
      font-weight: 550;
      color: #ffffff;
      padding-left: 20px;
    }

    .weather-icon {
      cursor: pointer;
      position: absolute;
      right: 12px;
      top: 50%;
      transform: translateY(-50%);
      color: #1096db;
    }
  }

  .weather-body {
    padding: 11px;
    height: calc(100% - 36px);
    background: #021534;
    border: 1px solid #114f89;
    border-top: 1px solid #1096db;
  }
}
.weather-icon {
  cursor: pointer;
  position: absolute;
  right: 12px;
  top: 50%;
  transform: translateY(-50%);
  color: #1096db;
  font-size: 24px;
}
</style>