Newer
Older
urbanLifeline_YanAn / src / views / oneMap / components / ZHHM_JCFX.vue
@zhangdeliang zhangdeliang on 7 Oct 12 KB update
<template>
  <!-- 海绵监测分析 -->
  <div id="ZHHM_JCFX">
    <div :class="['LeftBox', 'animate__animated', showPanel ? 'animate__fadeOutLeft' : 'animate__fadeInLeft']">
      <div class="ComBox">
        <!-- 降雨日历统计 -->
        <div class="Box_header">降雨日历统计</div>
        <div class="rainCal">
          <monitorCalender :hasClose="false" @change="getChangeDate" />
        </div>

        <!-- 内涝积水分析 -->
        <div class="Box_header">内涝积水分析</div>
        <div class="titSmall flex flex-align-center">
          <div class="flex">
            <span></span>
            <div class="name">内涝风险点</div>
          </div>
          <el-select clearable filterable v-model="riskStation" placeholder="请选择内涝风险点" size="small" class="picker">
            <el-option v-for="dict in riskList" :key="dict.value" :label="dict.label" :value="dict.value" />
          </el-select>
        </div>
        <div class="chartHeight">
          <chartLogging :data="chartData1" :refresh="chartData1.refresh"></chartLogging>
        </div>
        <div class="flex flexLeg">
          <div class="legPart"><span class="yellow"></span>轻微内涝警戒线</div>
          <div class="legPart"><span class="red"></span>严重内涝警戒线</div>
        </div>

        <!-- 内涝分析成因分析 -->
        <div class="titSmall flex flex-align-center">
          <div class="flex">
            <span></span>
            <div class="name">内涝分析成因分析</div>
          </div>
        </div>
        <table class="tableFX">
          <tr>
            <td class="title">当前状况</td>
            <td>未出现内涝积水情况</td>
          </tr>
          <tr>
            <td class="title">数据分析</td>
            <td>初雨出流较慢但持续一段时间正常</td>
          </tr>
          <tr>
            <td class="title">历史成因</td>
            <td>区域局部地理位置较低,收水范围过大</td>
          </tr>
        </table>
      </div>
    </div>
    <div :class="['RightBox', 'animate__animated', showPanel ? 'animate__fadeOutRight' : 'animate__fadeInRight']">
      <div class="ComBox">
        <!-- 典型项目分析 -->
        <div class="Box_header">典型项目分析</div>
        <div class="flex flex-justcontent-end">
          <el-select
            clearable
            filterable
            v-model="riskStation"
            placeholder="请选择典型项目"
            size="small"
            class="picker"
            style="margin: 10px 0px"
          >
            <el-option v-for="dict in riskList" :key="dict.value" :label="dict.label" :value="dict.value" />
          </el-select>
        </div>
        <div style="height: 220px">
          <projectDX :data="chartData2" :refresh="chartData2.refresh"></projectDX>
        </div>

        <!-- 关键管网分析 -->
        <div class="Box_header">关键管网分析</div>
        <div class="flex flex-justcontent-spacearound">
          <el-select
            clearable
            filterable
            v-model="riskStation"
            placeholder="请选择分区"
            size="small"
            class="picker"
            style="margin: 10px 0px"
          >
            <el-option label="延河南岸分区" value="1" />
          </el-select>
          <el-select
            clearable
            filterable
            v-model="riskStation"
            placeholder="请选择管网监测点"
            size="small"
            class="picker"
            style="margin: 10px 0px"
          >
            <el-option label="延河南岸监测点1" value="1" />
          </el-select>
        </div>
        <div class="chartHeightR">
          <pipeFX :data="chartData3" :refresh="chartData3.refresh"></pipeFX>
        </div>
        <div class="flex flexLeg">
          <div class="legPart"><span class="yellow"></span>轻微风险警戒线</div>
          <div class="legPart"><span class="red"></span>溢流风险警戒线</div>
        </div>

        <!-- 风险成因分析 -->
        <div class="titSmall flex flex-align-center">
          <div class="flex">
            <span></span>
            <div class="name">风险成因分析</div>
          </div>
        </div>
        <table class="tableFX">
          <tr>
            <td class="title">当前状况</td>
            <td>未出现风险运行</td>
          </tr>
          <tr>
            <td class="title" rowspan="2">数据分析</td>
            <td>出流时间与降雨峰值有时间偏差</td>
          </tr>
          <tr>
            <td>降雨过后1小时后管网有积水</td>
          </tr>
          <tr>
            <td class="title">管网管径</td>
            <td>DN300</td>
          </tr>
          <tr>
            <td class="title" rowspan="2">风险分析</td>
            <td>管网普查报告中该段管网存在缺陷</td>
          </tr>
          <tr>
            <td>溢流风险运行35分钟</td>
          </tr>
        </table>
      </div>
    </div>
    <!-- 中部建议 -->
    <div class="centerSuggest">
      <div class="flex">
        <div class="part">
          <div class="flex flex-align-center">
            <div class="left">
              <div>管网监测</div>
              <div style="font-weight: bold">(10/24)</div>
            </div>
            <div class="right">
              <div class="flex flex-justcontent-spacearound">今日预警站点(个):<span>10</span></div>
              <div class="flex flex-justcontent-spacearound">今日持续时长(分钟):<span>70</span></div>
            </div>
          </div>
        </div>
        <div class="part">
          <div class="flex flex-align-center">
            <div class="left">
              <div>排口监测</div>
              <div style="font-weight: bold">(20/29)</div>
            </div>
            <div class="right">
              <div class="flex flex-justcontent-spacearound">今日预警站点(个):<span>10</span></div>
              <div class="flex flex-justcontent-spacearound">今日持续时长(分钟):<span>70</span></div>
            </div>
          </div>
        </div>
        <div class="part">
          <div class="flex flex-align-center">
            <div class="left">
              <div>海绵地块</div>
              <div style="font-weight: bold">(10/12)</div>
            </div>
            <div class="right">
              <div class="flex flex-justcontent-spacearound">今日预警站点(个):<span>10</span></div>
              <div class="flex flex-justcontent-spacearound">今日持续时长(分钟):<span>70</span></div>
            </div>
          </div>
        </div>
      </div>
    </div>
  </div>
</template>

<script setup name="ZHHM_JCFX">
import { ref, reactive, toRefs, onMounted, defineProps, defineEmits } from 'vue';
import monitorCalender from './monitorCalender.vue';
import chartLogging from './chartLogging'; //内涝积水点
import projectDX from './projectDX'; //典型项目分析
import pipeFX from './pipeFX'; //管网分析

const showPanel = ref(true); //面板展开收起
const chartData1 = ref({
  xAxis: ['08:00', '09:00', '10:00', '11:00', '12:00', '13:00', '14:00', '15:00', '16:00', '17:00', '18:00', '19:00'],
  inverse: true,
  yAxis: [1, 2, 2.3, 2, 1.1, 2.5, 1.9, 2.5, 2.8, 1.1, 2.1, 3], //降雨量
  yAxis2: [0.1, 0.2, 0.3, 0.2, 0.1, 0.4, 0.3, 0.03, 0.6, 0.1, 0.2, 0.5], //流量
  refresh: 1,
});
const chartData2 = ref({
  xAxis: ['08:00', '09:00', '10:00', '11:00', '12:00', '13:00', '14:00', '15:00', '16:00', '17:00', '18:00', '19:00'],
  yAxis1: [0.1, 0.2, 0.3, 0.2, 0.1, 0.4, 0.5, 0.23, 0.6, 0.1, 0.2, 0.1], //水深
  yAxis2: [50, 55, 80, 50, 46, 65, 70, 50, 78, 52, 69, 90], //ss
  yAxisName1: '水深(cm)',
  yAxisName2: 'ss(mg/L)',
  refresh: 1,
});
const chartData3 = ref({
  xAxis: ['08:00', '09:00', '10:00', '11:00', '12:00', '13:00', '14:00', '15:00', '16:00', '17:00', '18:00', '19:00'],
  inverse: true,
  yAxis1: [1, 2, 2.3, 2, 1.1, 2.5, 1.9, 2.5, 2.8, 1.1, 2.1, 3], //降雨量
  yAxis2: [20, 20.2, 21.3, 20.2, 22.1, 19.4, 20, 21, 23.6, 20.1, 21.2, 29], //水深
  yAxis3: [0.1, 0.2, 0.3, 0.2, 0.1, 0.4, 0.3, 0.03, 0.6, 0.1, 0.2, 0.5], //流速
  refresh: 1,
});
const riskStation = ref('1');
const riskList = ref([{ value: '1', label: '大砭沟与北大街交叉口' }]);

// 面板内容展开收起控制
const props = defineProps({
  showPanel: {
    type: Boolean,
  },
});
watch(
  () => props.showPanel,
  () => {
    showPanel.value = props.showPanel;
  },
  { immediate: true }
);

// 日历点击获取相应日期
const getChangeDate = date => {
  console.log(date);
};

onMounted(() => {});
</script>

<style lang="scss" scoped>
#ZHHM_JCFX {
  width: 100%;
  height: 100%;
  .centerSuggest {
    position: absolute;
    left: 480px;
    top: 110px;
    z-index: 90;
    background: linear-gradient(0deg, rgba(0, 43, 67, 0.8) 0%, rgba(0, 69, 108, 0.8) 100%);
    border-radius: 6px;
    border: 1px solid #15d2fd;
    padding: 15px;
    width: calc(100vw - 1000px);
    box-shadow: inset 0 0 10px 10px #47eef38a;
    .part {
      font-family: Source Han Sans CN;
      font-weight: 400;
      font-size: 14px;
      color: #ffffff;
      width: 31.8%;
      margin-left: 10px;
      text-align: center;
      background: linear-gradient(0deg, rgba(0, 252, 255, 0.8) 0%, rgba(0, 43, 67, 0.2) 100%);
      border-radius: 2px;
      border: 1px solid #74dde1;
      box-shadow: 0px 0px 20px rgba(0, 0, 0, 0.3);
      padding: 6px 0px;
      line-height: 24px;
      .left {
        border-right: 1px solid #74dde1;
        width: 30%;
      }
      .right {
        flex: 1;
        span {
          font-family: Source Han Sans CN;
          font-weight: bold;
          font-size: 16px;
          color: #00f2ff;
          cursor: pointer;
        }
      }
    }
  }
  .chartHeight {
    width: 100%;
    height: calc(100vh - 720px);
    margin: 5px auto;
  }
  .chartHeightR {
    width: 100%;
    height: calc(100vh - 780px);
    margin: 5px auto;
  }
  .tableFX {
    border-collapse: collapse;
    width: 95%;
    margin: 10px 2%;
    td {
      border: 1px solid #1cf5fc;
      text-align: center;
      font-family: Source Han Sans CN;
      font-weight: 400;
      font-size: 14px;
      padding: 5px 0px;
      color: #a5d2ff;
      background: #075680;
    }
    .title {
      color: #00f2ff;
    }
  }
  .LeftBox {
    width: 450px;
    height: calc(100% - 98px);
    position: absolute;
    left: 10px;
    top: 70px;
    background: linear-gradient(0deg, rgba(0, 43, 67, 0.8) 0%, rgba(0, 69, 108, 0.8) 100%);
    border-radius: 6px;
    border: 1px solid #47eef3;
    box-sizing: border-box;
    padding: 10px;
    box-shadow: inset 0 0 5px 5px #47eef38a;
  }
  .RightBox {
    width: 450px;
    height: calc(100% - 98px);
    position: absolute;
    right: 10px;
    top: 70px;
    background: linear-gradient(0deg, rgba(0, 43, 67, 0.8) 0%, rgba(0, 69, 108, 0.8) 100%);
    border-radius: 6px;
    border: 1px solid #47eef3;
    box-sizing: border-box;
    padding: 10px;
    box-shadow: inset 0 0 5px 5px #47eef38a;
  }
  .ComBox {
    width: 100%;
    box-sizing: border-box;

    .Box_header {
      width: 100%;
      height: 43px;
      background: url('@/assets/images/Sponge_screen/Box_HeaderBackground.png') no-repeat center;
      background-size: cover;
      font-family: PangMenZhengDao;
      font-weight: 400;
      font-size: 23px;
      color: #ebfeff;
      line-height: 43px;
      box-sizing: border-box;
      padding-left: 35px;
    }
    .titSmall {
      justify-content: space-between;
      padding: 0px 15px;
      margin-top: 10px;
      .flex {
        font-family: Source Han Sans CN;
        font-weight: bold;
        font-size: 14px;
        color: #ebfeff;
        align-items: center;
        span {
          width: 10px;
          height: 10px;
          display: inline-block;
          margin-right: 6px;
          background: #fff;
          transform: rotate(45deg);
        }
        .name {
          background: linear-gradient(0deg, rgba(0, 242, 255, 0.5) 0%, rgba(0, 242, 255, 0) 100%);
          padding: 0px 3px;
          height: 10px;
          line-height: 0px;
          margin-top: 6px;
        }
      }
    }
    .flexLeg {
      justify-content: center;
      margin-bottom: 20px;
      .legPart {
        font-family: Source Han Sans CN;
        font-weight: bold;
        font-size: 14px;
        color: #ebfeff;
        text-align: center;
        margin-right: 20px;
        span {
          width: 10px;
          height: 10px;
          display: inline-block;
          margin-right: 6px;
        }
        .yellow {
          background: #ffff80;
        }
        .red {
          background: #e20f36;
        }
      }
    }
  }
}
</style>