liuyg
2022-03-31 f3e4a728bca47d424fb3f9f0e2ef438cec58a2e3
src/components/mobilePopupOurOnce/index.vue
@@ -1,34 +1,32 @@
<template>
  <div class="mobilePopupOurOnce">
    <div
      class="mobilePopupOurOnce_center"
      :style="{
    <div class="mobilePopupOurOnce">
        <div
            class="mobilePopupOurOnce_center"
            :style="{
        borderBottom: !ends ? '#d4d4d4 dashed 1px' : '',
        marginBottom: !ends ? '6px' : '',
      }"
    >
      <div class="mobilePopupOurOnce_left">
        <!-- <img :src="icon" alt="" :key="icon" /> -->
        <el-image
          style="width: 80px; height: 80px"
          :src="icon"
          :id="'mobileBigImgs' + icon + ''"
          :preview-src-list="srcList"
        >
          <!-- v-show="false" -->
        </el-image>
      </div>
      <div class="mobilePopupOurOnce_right" @click.self.stop="openOnce('定位')">
        <div
          class="mobilePopupOurOnce_r_up"
          @click.self.stop="openOnce('定位')"
        >
          {{ onceData.name }}
        </div>
        <div class="mobilePopupOurOnce_r_down">
          <div v-for="(item, index) in seebut" :key="index">
            <el-link
              :icon="
            <div class="mobilePopupOurOnce_left">
                <!-- <img :src="icon" alt="" :key="icon" /> -->
                <el-image
                    style="width: 80px; height: 80px"
                    :src="icon"
                    :id="'mobileBigImgs' + icon + ''"
                    :preview-src-list="srcList"
                >
                    <!-- v-show="false" -->
                </el-image>
            </div>
            <div class="mobilePopupOurOnce_right" @click.self.stop="openOnce('定位')">
                <div
                    class="mobilePopupOurOnce_r_up"
                    @click.self.stop="openOnce('定位')"
                >{{ onceData.name }}</div>
                <div class="mobilePopupOurOnce_r_down">
                    <div v-for="(item, index) in seebut" :key="index">
                        <el-link
                            :icon="
                item.name == '实景'
                  ? 'el-icon-place'
                  : item.name == '图集'
@@ -37,191 +35,193 @@
                  ? 'el-icon-map-location'
                  : ''
              "
              class="mobilePopupOurOnce_r_d_in"
              @click="openOnce(item.name)"
              >{{ item.name }}</el-link
            >
            <el-divider
              direction="vertical"
              class="mobilePopupOurOnce_r_d_in"
              v-if="index != seebut.length - 1"
            ></el-divider>
          </div>
                            class="mobilePopupOurOnce_r_d_in"
                            @click="openOnce(item.name)"
                        >{{ item.name }}</el-link>
                        <el-divider
                            direction="vertical"
                            class="mobilePopupOurOnce_r_d_in"
                            v-if="index != seebut.length - 1"
                        ></el-divider>
                    </div>
                </div>
            </div>
        </div>
      </div>
    </div>
  </div>
</template>
<script>
import { mapGetters } from "vuex";
import { getChildNavDetail } from "@/api/mobile/public/arc";
import { mapGetters } from 'vuex'
import { getChildNavDetail } from '@/api/mobile/public/arc'
export default {
  props: ["onceData", "ends"],
  name: "mobilePopupOurOnce",
  created() {
    if (this.onceData.icon) {
      this.srcList = this.onceData.icon;
      this.icon = this.srcList[0];
    }
    if (this.onceData.from == "校区建筑" || this.onceData.from == "文化风景") {
      this.getOnceCampus(this.onceData.id);
    } else {
      this.ourData = this.onceData;
    }
  },
  data() {
    return {
      icon: "",
      srcList: [],
      ourData: {},
    };
  },
  computed: {
    ...mapGetters(["mviewer"]),
    seebut() {
      const buts = this.onceData.buts;
      let b = [];
      for (const k in buts) {
        if (buts[k] == "实景") {
          continue;
    props: ['onceData', 'ends'],
    name: 'mobilePopupOurOnce',
    created () {
        if (this.onceData.icon) {
            this.srcList = this.onceData.icon
            this.icon = this.srcList[0]
        }
        b.push({
          name: buts[k],
        });
      }
      if (this.ourData.panoramaurl) {
        b.push({
          name: "实景",
        });
      } else {
        b = b.filter((res) => {
          return res.name != "实景";
        });
      }
      return b;
    },
  },
  methods: {
    openOnce(val) {
      if (!this.ourData.name) {
        console.log("数据传输失败");
        return;
      }
      const that = this;
      if (val == "定位") {
        // 活动定位
        if (this.ourData.name == "活动") {
          console.log(this.ourData);
          return;
        if (this.onceData.from == '校区建筑' || this.onceData.from == '文化风景') {
            this.getOnceCampus(this.onceData.id)
        } else {
            this.ourData = this.onceData
        }
        // 随地图移动窗口
        this.$store.commit("MSET_BIGPOPUP", false); // 关闭全屏弹窗
        setTimeout(() => {
          //   // 定制化窗体
          const d = {
            position: {},
            lntLat: that.ourData.lntLat,
            query: { ...this.ourData, seebut: this.seebut },
            useJWD: true, // 仅使用经纬度
            from: "PopupOurOnce",
          };
         that.$store.dispatch("setMobileWindows", d);
        }, 500);
        // 固定窗口
        // that.$store.dispatch("SET_OPENWIDOWFIXED", d);
      } else if (val == "实景") {
        this.$store.commit("MSET_OPENMOBILEPANORAMA", this.ourData.panoramaurl);
        // if(this.ourData.panoramaurl){
        // }
        // console.log(this.ourData.panoramaurl);
      } else if (val == "图集") {
        const imgsDom = document.getElementById(
          "mobileBigImgs" + this.icon + ""
        );
        imgsDom.click();
      }
    },
    // "校区建筑"↓
    getOnceCampus(id) {
      getChildNavDetail({ id: id }).then((res) => {
        var result = res.data.data[0].list;
        const d = {
          name: result.mechanismname,
          lntLat: [result.jd, result.wd],
          alt: result.gd,
          heading: result.heading,
          pitch: result.pitch,
          roll: result.roll,
          bgImg: result.tpurl,
          QRImg: result.codeurl,
          websiteUrl: result.websiteurl,
          telePhone: result.telephone,
          address: result.address,
          introduce: result.introduce,
          video: result.videourl,
          panoramaurl: result.panoramaurl, // 全景
        };
        this.ourData = d;
      });
    data () {
        return {
            icon: '',
            srcList: [],
            ourData: {}
        }
    },
    // "校区建筑"↑
  },
};
    computed: {
        ...mapGetters(['mviewer']),
        seebut () {
            const buts = this.onceData.buts
            let b = []
            for (const k in buts) {
                if (buts[k] == '实景') {
                    continue
                }
                b.push({
                    name: buts[k]
                })
            }
            if (this.ourData.panoramaurl) {
                b.push({
                    name: '实景'
                })
            } else {
                b = b.filter((res) => {
                    return res.name != '实景'
                })
            }
            return b
        }
    },
    methods: {
        openOnce (val) {
            console.log(this.ourData)
            if (!this.ourData.name) {
                console.log('数据传输失败')
                return
            }
            const that = this
            if (val == '定位') {
                // 活动定位
                if (this.ourData.name == '活动') {
                    console.log(this.ourData)
                    return
                }
                // 随地图移动窗口
                this.$store.commit('MSET_BIGPOPUP', false) // 关闭全屏弹窗
                setTimeout(() => {
                    //   // 定制化窗体
                    const d = {
                        position: {},
                        lntLat: that.ourData.lntLat,
                        query: { ...this.ourData, seebut: this.seebut },
                        useJWD: true, // 仅使用经纬度
                        from: 'PopupOurOnce'
                    }
                    that.$store.dispatch('setMobileWindows', d)
                }, 500)
                // 固定窗口
                // that.$store.dispatch("SET_OPENWIDOWFIXED", d);
            } else if (val == '实景') {
                this.$store.commit('MSET_OPENMOBILEPANORAMA', this.ourData.panoramaurl)
                // if(this.ourData.panoramaurl){
                // }
                // console.log(this.ourData.panoramaurl);
            } else if (val == '图集') {
                const imgsDom = document.getElementById(
                    'mobileBigImgs' + this.icon + ''
                )
                imgsDom.click()
            }
        },
        // "校区建筑"↓
        getOnceCampus (id) {
            console.log(id)
            getChildNavDetail({ id: id }).then((res) => {
                console.log(res, 5656)
                var result = res.data.data[0].list
                const d = {
                    name: result.mechanismname,
                    lntLat: [result.jd, result.wd],
                    alt: result.gd,
                    heading: result.heading,
                    pitch: result.pitch,
                    roll: result.roll,
                    bgImg: result.tpurl,
                    QRImg: result.codeurl,
                    websiteUrl: result.websiteurl,
                    telePhone: result.telephone,
                    address: result.address,
                    introduce: result.introduce,
                    video: result.videourl,
                    panoramaurl: result.panoramaurl // 全景
                }
                this.ourData = d
            })
        }
        // "校区建筑"↑
    }
}
</script>
<style lang="scss" scoped>
// 继承类
.flexCenter {
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
}
.mobilePopupOurOnce {
  padding: 8px 0 0 0;
  margin: 0 8px;
  // background-image: linear-gradient(#29baf1, #28bbf0);
  .mobilePopupOurOnce_center {
    // margin-bottom: 8px;
    height: 80px;
    // border-bottom: #d4d4d4 dashed 1px;
    padding-bottom: 8px;
    @extend .flexCenter;
    .mobilePopupOurOnce_left {
      width: 32%;
      height: 100%;
      @extend .flexCenter;
      img {
        width: 80px;
    padding: 8px 0 0 0;
    margin: 0 8px;
    // background-image: linear-gradient(#29baf1, #28bbf0);
    .mobilePopupOurOnce_center {
        // margin-bottom: 8px;
        height: 80px;
      }
    }
    .mobilePopupOurOnce_right {
      width: 68%;
      height: 100%;
      @extend .flexCenter;
      flex-direction: column;
      .mobilePopupOurOnce_r_up {
        height: 50%;
        width: 100%;
        font-size: 16px;
        text-indent: 1em;
        display: flex !important;
        align-items: center !important;
        // color: #fff;
      }
      .mobilePopupOurOnce_r_down {
        height: 50%;
        width: 100%;
        padding-left: 1em;
        display: flex !important;
        align-items: center !important;
        .mobilePopupOurOnce_r_d_in {
          // color: #fff;
          font-size: 17px;
        // border-bottom: #d4d4d4 dashed 1px;
        padding-bottom: 8px;
        @extend .flexCenter;
        .mobilePopupOurOnce_left {
            width: 32%;
            height: 100%;
            @extend .flexCenter;
            img {
                width: 80px;
                height: 80px;
            }
        }
      }
        .mobilePopupOurOnce_right {
            width: 68%;
            height: 100%;
            @extend .flexCenter;
            flex-direction: column;
            .mobilePopupOurOnce_r_up {
                height: 50%;
                width: 100%;
                font-size: 16px;
                text-indent: 1em;
                display: flex !important;
                align-items: center !important;
                // color: #fff;
            }
            .mobilePopupOurOnce_r_down {
                height: 50%;
                width: 100%;
                padding-left: 1em;
                display: flex !important;
                align-items: center !important;
                .mobilePopupOurOnce_r_d_in {
                    // color: #fff;
                    font-size: 17px;
                }
            }
        }
    }
  }
}
</style>