Newer
Older
KaiFengPC / src / views / sponeScreen / projectHM / gongchenkanbani_comp / qipao.vue
@zhangdeliang zhangdeliang 12 days ago 7 KB update
<template>
  <!-- 海绵项目详情 -->
  <Transition name="slide-fade">
    <div class="pmpSitNewDialogw">
      <div class="title">
        <span class="text">{{ allData.projectName }}</span>
        <el-icon class="icon_clas" size="22" @click="dclosed">
          <Close />
        </el-icon>
      </div>
      <div class="content">
        <div class="left_content">
          <div>
            <div class="timage">
              建设规模及内容
              <div class="text_x" :title="BoxList.constructionAchievements">{{ BoxList.constructionAchievements }}</div>
            </div>
          </div>
          <div>
            <div class="timage">
              项目概况
              <div class="text_x" :title="BoxList.projectOverview">{{ BoxList.projectOverview }}</div>
            </div>
          </div>
          <div>
            <el-button @click="qitxiangq" class="timage qtxq">其他详情</el-button>
            <!-- bus.emit('checkProjectFX', { project: XmList.value[val], date: dateRain.value }); -->
            <el-button type="success" @click="checkDX" class="timage qtxq">查看效果</el-button>
          </div>
        </div>
        <div class="right_content">
          <el-carousel trigger="click" height="247px" v-if="srcList.length > 0">
            <el-carousel-item v-for="item in srcList" :key="item">
              <el-image
                preview-teleported
                class="img_age"
                :src="item"
                :zoom-rate="1.2"
                :max-scale="7"
                :min-scale="0.2"
                :preview-src-list="srcList"
                :initial-index="4"
              />
            </el-carousel-item>
          </el-carousel>
          <el-empty :image-size="30" v-else />

          <div class="text_x image_e" style="height: auto">完成照片</div>
        </div>
      </div>
    </div>
  </Transition>
  <!-- 海绵项目具体详情 -->
  <el-dialog class="pmpSitNewDialog" v-model="daLigoShow" :title="allData.projectName" :align-center="true" width="1200px" draggable>
    <el-tabs v-model="editableTabsValue" :stretch="true" @tab-click="TabsChange">
      <el-tab-pane v-for="item in editableTabs" :key="item.name" :label="item.title" :name="item.name"> </el-tab-pane>
      <keep-alive>
        <component :is="componentId"></component>
      </keep-alive>
    </el-tabs>
  </el-dialog>
</template>
<script setup name="gongChengPingJia">
import { ref, reactive, toRefs, onMounted } from 'vue';
import XiangXiXinXi from './XiangXiXinXi.vue';
import jianseduibi from './jianseduibi.vue';
import xmsgt from './xmsgt.vue';
import modalSJ from './modalSJ.vue';
import xmgkzl from './xmgkzl.vue';
import bus from '@/bus';
import { projectInfoNewById } from '@/api/project/projectInformationNew';
import { selectProjectImageList } from '@/api/sponeScreen/gcpjApi';

const emnits = defineEmits();
const allData = ref({});
const BoxList = ref([]);
const daLigoShow = ref(false);
const editableTabsValue = ref('XiangXiXinXi');
const componentId = ref(XiangXiXinXi);
const srcList = ref([]);
const editableTabs = ref([
  { name: 'XiangXiXinXi', title: '详细信息' },
  { name: 'xmgkzl', title: '项目管控资料' },
  { name: 'xmsgt', title: '项目施工图' },
  { name: 'jsdb', title: '项目成果展示' },
  { name: 'modalSJ', title: '实景图' },
]);

const props = defineProps({
  fullScreen: {
    type: Boolean,
    default: false,
  },
  allDateList: {
    type: Object,
  },
});
function dclosed() {
  editableTabsValue.value = 'XiangXiXinXi';
  emnits('closed', false);
}
function qitxiangq() {
  daLigoShow.value = true;
  projectInfoNew(allData.value.id);
}
function checkDX() {
  bus.emit('checkProjectFX', { project: BoxList.value });
}

// 获取项目详情
async function projectInfoNew(p) {
  let { data } = await projectInfoNewById(p);
  bus.emit('getProjectDate', data);
}
// 点击切换
function TabsChange({ props: { name } }) {
  projectInfoNew(allData.value.id);
  switch (name) {
    case 'XiangXiXinXi':
      componentId.value = XiangXiXinXi;
      break;
    case 'jsdb':
      componentId.value = jianseduibi;
      break;
    case 'xmsgt':
      componentId.value = xmsgt;
      break;
    case 'modalSJ':
      componentId.value = modalSJ;
      break;
    case 'xmgkzl':
      componentId.value = xmgkzl;
      break;
  }
}
const allImages = ref({});
async function selectProjectImage(p) {
  let { data } = await selectProjectImageList(p);
  BoxList.value = data[0];
  allImages.value = data[0];
  data[0]?.postConstructionFileList.forEach(i => {
    srcList.value.push(i.url);
  });
}

onMounted(() => {
  if (props?.allDateList) {
    allData.value = props.allDateList;
    selectProjectImage({ projectNo: props.allDateList.projectNo });
  }

  bus.on('mapClick', row => {
    allData.value = row;
    setTimeout(() => {
      selectProjectImage({ projectNo: row.projectNo });
      if (!allData.value.constructionPurpose) {
        daLigoShow.value = true;
        projectInfoNew(allData.value.id);
      }
    }, 200);
  });
});
onBeforeUnmount(() => {
  bus.off('mapClick');
});
</script>
<style lang="scss">
.pmpSitNewDialogw {
  width: 550px;
  height: 330px;
  position: absolute;
  top: 10px;
  left: 485px;
  z-index: 1012;
  opacity: 9;
  border-radius: 14px;

  .title {
    width: 100%;
    height: 40px;
    background: url('@/assets/newImgs/HMScreen/qipaotankuan.png') no-repeat;
    background-size: 100% 100%;
    position: relative;
    display: flex;
    border-radius: 8px;
    align-items: center;

    .icon_clas {
      position: absolute;
      right: 6px;
      top: 10px;
    }

    .text {
      font-size: 17px;
      font-weight: bold;
      color: #fff;
      display: inline-block;
      margin-left: 20px;
      white-space: nowrap;
      text-overflow: ellipsis;
      overflow: hidden;
      width: 93%;
    }

    .image {
      text-align: center;
    }
  }

  .content {
    padding: 10px;
    display: flex;
    background: #003b6d;
    margin-top: -3px;

    div {
      flex: 1;
    }

    .left_content {
      > div {
        margin-bottom: 15px;

        &:last-of-type {
          margin-bottom: 0;
        }
      }
    }

    .timage {
      background: linear-gradient(90deg, #005cba 0%, rgba(0, 92, 186, 0) 100%);
      height: 96px;
      color: #fff;
      font-size: 17px;
      font-weight: bold;
      padding: 0 10px;
    }

    .qtxq {
      height: 36px;
    }

    .text_x {
      font-family: Source Han Sans CN;
      font-weight: 400;
      font-size: 14px;
      color: #ffffff;
      overflow-y: scroll;
      height: 70px;
      cursor: pointer;
    }

    .image_e {
      text-align: center;
    }
  }
}
.pmpSitNewDialog {
  height: 680px;
  .el-dialog__header {
    width: 100%;
    height: 45px;
    background: url('@/assets/newImgs/HMScreen/qipaotankuan.png') no-repeat;
    background-size: 100% 100%;
    position: relative;
    display: flex;
    border-radius: 8px;
    align-items: center;
    padding-left: 40px;

    .icon_clas {
      position: absolute;
      right: 6px;
      top: 10px;
    }

    .el-dialog__headerbtn {
      position: absolute;
      top: -6px;
    }

    .el-dialog__title {
      color: #fff;
      margin-left: 10px;
      margin-top: -9px;
      white-space: nowrap;
      text-overflow: ellipsis;
      overflow: hidden;
      width: 93%;
    }
  }
  .el-tabs__item {
    font-size: 16px !important;
  }
}

.slide-fade-enter-active {
  transition: all 0.3s ease-out;
}

.slide-fade-leave-active {
  transition: all 0.8s cubic-bezier(1, 0.5, 0.8, 1);
}

.slide-fade-enter-from,
.slide-fade-leave-to {
  transform: translateX(20px);
  opacity: 0;
}

.img_age {
  width: 300px;
  height: 227px;
}
</style>