管道基础大数据平台系统开发-【前端】-新系統界面
TreeWish
2023-02-27 eea0af2e6491549ef5b1b0044189a9c055b28f75
src/components/Screen/bottom.vue
@@ -3,43 +3,23 @@
    <div class="bottom1">
      <div class="bottom11"></div>
      <div class="bottom12">
        <div
          :class="currMenu == item.menuName ? 'active' : ''"
          v-for="item in menuList"
          :key="item.menuName"
          class="bottombtn"
          @click="handleMenuClick(item)"
        >
          <el-popover
            popper-class="popover"
            placement="top"
            width="100"
            trigger="click"
          >
        <div :class="currMenu == item.menuName ? 'active' : ''" v-for="item in menuList" :key="item.menuName"
          class="bottombtn" @click="handleMenuClick(item)">
          <el-popover popper-class="popover" placement="top" width="100" trigger="click">
            <!-- 内容 -->
            <span slot="reference">{{ item.menuName }}</span>
            <div class="popover-content">
              <div class="popover-content__header">项目信息</div>
              <div class="popover-content__search">
                <el-input
                  size="mini"
                  placeholder="请输入内容"
                  v-model="searchName"
                  @change="handleSearchChange(item)"
                >
                <el-input size="mini" placeholder="请输入内容" v-model="searchName" @change="handleSearchChange(item)">
                  <el-button slot="append" icon="el-icon-search"></el-button>
                </el-input>
              </div>
              <div class="popover-content__list">
                <div
                  class="popover-content__list__item"
                  v-for="(child, i) in currMenuList"
                  :key="child.id + i"
                  :class="currProject == child.name ? 'active' : ''"
                  @click="handlePopoverClick(child)"
                  :title="child.name"
                >
                <div class="popover-content__list__item" v-for="(child, i) in currMenuList" :key="child.id + i"
                  :class="currProject == child.name ? 'active' : ''" @click="handlePopoverClick(child)"
                  :title="child.name">
                  {{ child.name.slice(0, 8) }}
                </div>
              </div>
@@ -48,7 +28,8 @@
        </div>
      </div>
      <div class="bottom13">
        <img :src="yxImg" @click="ChangeBaseLayer" />
        <img :src="yxImg" @click="ChangeBaseLayer('yx')"  title="影像图" />
        <img :src="xrImg" @click="ChangeBaseLayer('xr')"  title="晕渲图"/>
      </div>
    </div>
    <div class="bottom2">
@@ -57,6 +38,7 @@
  </div>
</template>
<script>
let yunxuanLayer = null
import PipeLine from "@/assets/json/pipeline.json"
import {
  countProjectTour,
@@ -69,7 +51,10 @@
  data() {
    return {
      YXState: true,
      XRState: true,
      yunxuanLayer: null,//全球眩晕图
      yxImg: require("../../assets/img/Screen/yximg.png"),
      xrImg: require("../../assets/img/Screen/bdimg.png"),
      currMenu: "专题展示",
      currProject: "",
      searchName: "",
@@ -174,20 +159,50 @@
    this.getCountProjectTour()
  },
  methods: {
    ChangeBaseLayer() {
      if (this.YXState) {
        this.yxImg = require("../../assets/img/Screen/bdimg.png")
        //加载百度影像
        Viewer.imageryLayers._layers[1].show = true
        Viewer.imageryLayers._layers[2].show = false
        Viewer.imageryLayers._layers[3].show = false
      } else {
        this.yxImg = require("../../assets/img/Screen/yximg.png")
        Viewer.imageryLayers._layers[1].show = false
        Viewer.imageryLayers._layers[2].show = true
        Viewer.imageryLayers._layers[3].show = true
    ChangeBaseLayer(parm) {
      if (parm == 'yx') {
        if (this.YXState) {
          //this.yxImg = require("../../assets/img/Screen/bdimg.png")
          //加载百度影像
          Viewer.imageryLayers._layers[1].show = true
          Viewer.imageryLayers._layers[2].show = false
          Viewer.imageryLayers._layers[3].show = false
        } else {
          //this.yxImg = require("../../assets/img/Screen/yximg.png")
          Viewer.imageryLayers._layers[1].show = false
          Viewer.imageryLayers._layers[2].show = true
          Viewer.imageryLayers._layers[3].show = true
        }
        this.YXState = !this.YXState
      }
      this.YXState = !this.YXState
      if (parm == 'xr') {
        if (yunxuanLayer == null) {
          var urls = "https://tiles3.geovisearth.com/base/v1/ter"
          // 星图地球地形晕渲
          yunxuanLayer = sgworld.Creator.createUrlTemplateImageryProvider(
            "星图地球地形晕渲",
            {
              url:
                urls +
                "/{z}/{x}/{y}?format=webp&token=486dac3bec56d7d7c2a581c150be2bd937462f1e8f3bc9c78b5658b396122405",
            },
            "0",
            undefined,
            true,
            ""
          )
        }
        if (this.XRState) {
          yunxuanLayer.item.show = true;
        } else {
          yunxuanLayer.item.show = false;
        }
        this.XRState = !this.XRState;
      }
    },
    handleMenuClick(menu) {
      this.currMenu = menu.menuName
@@ -250,7 +265,7 @@
    //项目展示
    DisplayCurrentProject(params) {
      console.log(params)
      //打开或者加载图层
@@ -279,7 +294,7 @@
      return menu.children
      // return menu.children.filter(item => item.name.indexOf(searchName) > -1)
    },
    handleSearchChange(currMenu) {},
    handleSearchChange(currMenu) { },
    async getCountProjectDisplay() {
      const res = await countProjectLocation()
      if (res.code === 200) {
@@ -291,7 +306,7 @@
            wkt: item.wkt,
          }
        })
      }
    },
    async getCountProjectTour() {
@@ -305,7 +320,7 @@
            wkt: item.wkt,
          }
        })
      }
    },
    //专题展示
@@ -370,6 +385,7 @@
      color: #fff;
      font-weight: 600;
      cursor: pointer;
      &.active {
        background: url(~@/assets/img/Screen/centerbtnc.png);
        background-size: 100% 100%;
@@ -390,6 +406,7 @@
    }
  }
}
.popover {
  display: flex;
  justify-content: center;
@@ -398,9 +415,11 @@
  background: url(~@/assets/img/Screen/centerTooltipBg.png);
  background-size: 100% 100%;
  border: none;
  .popper__arrow {
    display: none;
  }
  .popover-content {
    &__header {
      display: flex;
@@ -411,6 +430,7 @@
      height: 30px;
      font-size: 18px;
      color: #fff;
      &::before,
      &::after {
        margin: 0 5px;
@@ -422,15 +442,18 @@
        height: 8px;
      }
    }
    &__search {
      margin-top: 8px;
      width: 145px;
      text-align: center;
      .el-input {
        width: 125px;
        height: 21px;
        background: rgba(0, 48, 111, 0.2);
        border: 0.25px solid #2a80a9;
        &__inner {
          background: rgba(0, 48, 111, 0.2);
          border-radius: inherit;
@@ -438,6 +461,7 @@
          padding: 0 5px;
          color: #fff;
        }
        .el-input-group__append {
          width: 32px;
          border: none;
@@ -480,6 +504,7 @@
      }
    }
  }
  ::-webkit-scrollbar {
    width: 2px;
    height: 2px;