Newer
Older
KaiFengPC / src / views / sponeScreen / projectHM / index.vue
@zhangdeliang zhangdeliang 5 days ago 6 KB update
<template>
  <!-- 海绵综合一张图 项目建设 -->
  <div class="publicContainer">
    <div :class="['publicLeftHM', 'animate__animated', showPanel ? 'animate__fadeOutLeft' : 'animate__fadeInLeft']">
      <!-- 建设状态 -->
      <ConstructionStatus></ConstructionStatus>
      <!-- 降雨日历 -->
      <CaldarRain class="mt-5"></CaldarRain>
      <!--  项目展示-->
      <ProjectDisplay @qipaoDateMeth="qipaoDateMeth" class="mt-5"></ProjectDisplay>
    </div>
    <div :class="['publicRightHM', 'animate__animated', showPanel ? 'animate__fadeOutRight' : 'animate__fadeInRight']">
      <!--项目评估  -->
      <ProjectEvaluation></ProjectEvaluation>
    </div>

    <!-- 典型项目CAD图例说明 -->
    <div :class="['tuli_data_list', showPanel ? 'left20' : 'left480']" v-if="showLegendXM">
      <div class="tuli_title">
        图例说明 <el-icon style="float: right; margin: 10px 10px" @click="showLegendXM = false"><CircleCloseFilled /></el-icon>
      </div>
      <div class="tuli_content">
        <div class="flex list flex-justcontent-start flex-align-center" v-for="(item, index) in tuLiList" :key="index">
          <div class="img_icon flex" v-if="item.icon">
            <img :src="getImageUrl(item.icon, 'newImgs/layerIcon')" />
          </div>
          <div v-else :class="item.iconName"></div>
          <p class="title" :title="item.layerName">{{ item.layerName }}</p>
        </div>
      </div>
    </div>
  </div>

  <!-- 项目详情 -->
  <qipao v-if="visibleqipao" @closed="closed" :allDateList="allData"></qipao>
</template>
<script setup>
import { getImageUrl } from '@/utils/ruoyi';
import CaldarRain from '@/views/sponeScreen/waterFlood/rainCaldar.vue'; //降雨日历
import ConstructionStatus from '@/views/sponeScreen/projectHM/ConstructionStatus.vue'; //建设状态
import ProjectDisplay from '@/views/sponeScreen/projectHM/ProjectDisplay.vue'; //项目展示
import ProjectEvaluation from '@/views/sponeScreen/projectHM/ProjectEvaluation.vue'; //项目评估
import qipao from '@/views/sponeScreen/projectHM/gongchenkanbani_comp/qipao.vue';
import bus from '@/bus/index';

const { proxy } = getCurrentInstance();
const showPanel = ref(true); //面板展开收起
const visibleqipao = ref(false);
const allData = ref({});
const showLegendXM = ref(false);
//项目及设施图例
const tuLiList = [
  { icon: '', layerName: '红线范围', iconName: 'hongXianFanWei' },
  { icon: '', layerName: '生态停车位(透水铺装)', iconName: 'shengTaiTingCheWei' },
  { icon: '', layerName: '植草沟-CG', iconName: 'zhiCaoGou' },
  { icon: '', layerName: '雨水花园-YH', iconName: 'yuShuiHuaYuan' },
  { icon: '', layerName: '透水铺装', iconName: 'touShuiPuZhuang' },
  { icon: '', layerName: '蓄水池', iconName: 'xuShuiChi' },
  { icon: 'xiaChenShiLvDi.png', layerName: '下沉市绿地-AD', iconName: '' },
  { icon: '', layerName: '非直排雨水管', iconName: 'feiZhiPaiYuShuiGuan' },
  { icon: '', layerName: '直排雨水管', iconName: 'zhiPaiYuShuiGuan' },
];

// 面板内容展开收起控制
const props = defineProps({
  showPanel: {
    type: Boolean,
  },
});
watch(
  () => props.showPanel,
  () => {
    showPanel.value = props.showPanel;
  },
  { immediate: true }
);
function qipaoDateMeth(v, isShow) {
  visibleqipao.value = false;
  allData.value = v;
  setTimeout(() => {
    if (isShow) {
      visibleqipao.value = true;
    }
  }, 10);
}
function closed(v) {
  visibleqipao.value = v;
  newfiberMapbox.map.easeTo({
    center: [114.345, 34.801],
    zoom: 13.8,
    pitch: 30,
  });
}

onMounted(() => {
  // 显示图例控制
  bus.on('ifShowLegendXM', e => {
    showLegendXM.value = e;
  });
});
onBeforeUnmount(() => {
  bus.emit('removeMapDatas', ['warning_monitor']);
  bus.emit('setLayerVisible', { layername: 'warning_monitor', isCheck: false });
  bus.off('ifShowLegendXM');
});
</script>

<style lang="scss" scoped>
.publicContainer {
  position: relative;
  .left20 {
    left: 20px;
  }
  .left480 {
    left: 480px;
  }
  .tuli_data_list {
    position: fixed;
    width: auto;

    bottom: 60px;
    z-index: 99;
    background: linear-gradient(0deg, rgba(11, 71, 113, 0.9) 0%, rgba(22, 83, 126, 0.8) 100%);
    border-radius: 4px;
    border: 1px solid #42a4ef;
    transition: all 0.5s;
    background-size: 100% 100%;

    .tuli_title {
      line-height: 40px;
      text-align: center;
      font-size: 16px;
      color: #ffffff;
    }

    .tuli_content {
      padding: 0 10px 10px 10px;
      height: 100%;
      overflow: auto;

      .list {
        width: 100%;
        color: #dfdada;
        font-size: 14px;
        height: 30px;

        .img_icon {
          width: 35px;

          img {
            width: 100%;
          }
        }

        .hongXianFanWei {
          width: 35px;
          height: 3px;
          border: 3px dashed #e30013;
        }

        .shengTaiTingCheWei {
          width: 35px;
          height: 8px;
          background-color: #514cff;
        }

        .zhiCaoGou {
          width: 35px;
          height: 8px;
          background-color: #7cc961;
        }

        .yuShuiHuaYuan {
          width: 35px;
          height: 8px;
          background-color: #ff4cff;
        }

        .touShuiPuZhuang {
          width: 35px;
          height: 8px;
          background-color: #9b9b9b;
        }

        .xuShuiChi {
          width: 35px;
          height: 8px;
          background-color: #fed65d;
        }

        .lvDi {
          width: 35px;
          height: 8px;
          background-color: #2398d4;
        }

        .feiZhiPaiYuShuiGuan {
          width: 35px;
          height: 18px;
          position: relative;

          &::after {
            position: absolute;
            left: 50%;
            margin-left: -9px;
            content: '';
            width: 18px;
            height: 18px;
            border-radius: 50%;
            background-color: #fd00fc;
          }
        }

        .zhiPaiYuShuiGuan {
          width: 35px;
          height: 18px;
          position: relative;

          &::after {
            position: absolute;
            left: 50%;
            margin-left: -9px;
            content: '';
            width: 18px;
            height: 18px;
            border-radius: 50%;
            background-color: #22cf3f;
          }
        }

        .title {
          margin-left: 8px;
        }
      }
    }
  }
}
</style>