shuishen
2022-03-05 ebc12b5f54c664bfd06e884dc2040223392558f8
src/components/map/components/mapPopup.vue
@@ -78,7 +78,9 @@
                          v-show="panoramaUrl != null && panoramaUrl != ''"
                          @click="panoramaClick"
                        >
                          <i class="popup-icon live-action-nav deblurring"></i>
                                                    <i
                                                        class="popup-icon live-action-nav deblurring"
                                                    ></i>
                          实景
                        </li>
                        <!-- v-show="panoramaUrl != null && panoramaUrl != ''" -->
@@ -97,16 +99,12 @@
                          v-show="teachList.length > 0"
                          :class="{ on: tabBtnFlag == '教学科研行政' }"
                          @click="tabBtnClick('教学科研行政')"
                        >
                          教学科研行政
                        </li>
                                                >教学科研行政</li>
                        <li
                          v-show="liveList.length > 0"
                          :class="{ on: tabBtnFlag == '生活服务' }"
                          @click="tabBtnClick('生活服务')"
                        >
                          生活服务
                        </li>
                                                >生活服务</li>
                      </ul>
                      <div class="btm-content">
                        <div :class="{ on: tabBtnFlag == '教学科研行政' }">
@@ -241,15 +239,10 @@
                  </div>
                  <div class="add-tag-content">
                    <div>
                      <el-input
                        v-model="addTagName"
                        placeholder="请输入标签名称"
                      ></el-input>
                                            <el-input v-model="addTagName" placeholder="请输入标签名称"></el-input>
                    </div>
                    <div>
                      <el-button type="primary" @click="createTag"
                        >生成标记</el-button
                      >
                                            <el-button type="primary" @click="createTag">生成标记</el-button>
                    </div>
                  </div>
                </div>
@@ -287,9 +280,9 @@
                    <!-- data:image/png;base64, -->
                    <img
                      :src="nowlabelLayerData.qrcode"
                      alt=""
                                            alt
                      class="labelLayeridewm"
                      style="width:250px,height:250px"
                                            style="width: 250px; height: 250px"
                    />
                  </div>
                </div>
@@ -333,9 +326,7 @@
            line-height: 36px;
            text-align: center;
          "
        >
          (右键另存为图片)
        </div>
                >(右键另存为图片)</div>
      </div>
    </el-dialog>
@@ -350,254 +341,254 @@
</template>
<script>
import { mapGetters } from "vuex";
import { getMechanismDetail } from "@/api/pc/public/arc";
import { setlabel } from "@/api/pc/label";
import { mapGetters } from 'vuex'
import { getMechanismDetail } from '@/api/pc/public/arc'
import { setlabel } from '@/api/pc/label'
export default {
  name: "mapPopup",
    name: 'mapPopup',
  data() {
    return {
      DC: null,
      tabBtnFlag: "教学科研行政",
            tabBtnFlag: '教学科研行政',
      QRCodeFlag: false,
      audioSource: "",
            audioSource: '',
      audioFlag: false,
      audioCourse: false,
      audioSynth: null,
      audioMsg: null,
      fullscreen: false,
      fullScreenUrl: "/img/icon/bigScreen.png",
      addTagName: "",
      addTagLayer: null,
    };
            fullScreenUrl: '/img/icon/bigScreen.png',
            addTagName: '',
            addTagLayer: null
        }
  },
  computed: {
    ...mapGetters([
      "viewer",
      "popupBgUrl",
      "pupupQRUrl",
            'viewer',
            'popupBgUrl',
            'pupupQRUrl',
      // 终点
      "terminus",
            'terminus',
      // 起点
      "startingPoint",
            'startingPoint',
      // 点信息
      "pointPosition",
            'pointPosition',
      // 点名称
      "stateName",
            'stateName',
      // 地址
      "siteName",
            'siteName',
      // 电话
      "telephone",
            'telephone',
      // 介绍
      "introduceText",
            'introduceText',
      // 详情弹框显示关闭
      "detailsPopup",
            'detailsPopup',
      // 全景地址
      "panoramaUrl",
            'panoramaUrl',
      // 全景弹框显示关闭
      "panoramaPopup",
            'panoramaPopup',
      // 监控地址
      "monitorUrl",
            'monitorUrl',
      // 监控弹框显示关闭
      "monitorPopup",
            'monitorPopup',
      "popupImgAtlas",
            'popupImgAtlas',
      // 教学
      "teachList",
            'teachList',
      // 科研
      "liveList",
            'liveList',
      // 校区内导航的显示关闭
      "campusNavFlag",
      "addTagPopup",
      "addTagPosition",
            'campusNavFlag',
            'addTagPopup',
            'addTagPosition',
      //自定义标签弹窗
      "labelLayerDataShow",
      "nowlabelLayerData",
    ]),
            'labelLayerDataShow',
            'nowlabelLayerData'
        ])
  },
  created() {
    this.DC = global.DC;
        this.DC = global.DC
    this.audioSynth = window.speechSynthesis;
    this.audioMsg = new window.SpeechSynthesisUtterance();
        this.audioSynth = window.speechSynthesis
        this.audioMsg = new window.SpeechSynthesisUtterance()
    this.audioMsg.onend = function () {
      this.audioSynth.cancel();
      this.audioFlag = false;
      this.audioCourse = false;
    };
            this.audioSynth.cancel()
            this.audioFlag = false
            this.audioCourse = false
        }
  },
  mounted() {},
  watch: {
    addTagPopup() {
      if (!this.addTagPopup) {
        // console.log("取消", "see");
        this.$store.commit("set_closeMapClick", false);
                this.$store.commit('set_closeMapClick', false)
      }
    },
    introduceText: {
      immediate: true,
      handler(newQuestion, oldQuestion) {
        this.audioSource = newQuestion;
                this.audioSource = newQuestion
        if (this.audioFlag == true) {
          this.audioSynth.cancel();
          this.audioFlag = false;
          this.audioCourse = false;
                    this.audioSynth.cancel()
                    this.audioFlag = false
                    this.audioCourse = false
        }
      },
            }
    },
    teachList: {
      immediate: true,
      handler(newCode, oldCode) {
        if (newCode.length > 0) {
          this.tabBtnFlag = "教学科研行政";
                    this.tabBtnFlag = '教学科研行政'
        }
      },
            }
    },
    liveList: {
      immediate: true,
      handler(newCode, oldCode) {
        if (newCode.length > 0 && this.teachList.length == 0) {
          this.tabBtnFlag = "生活服务";
                    this.tabBtnFlag = '生活服务'
        }
      },
            }
    },
    detailsPopup: {
      immediate: true,
      handler(newCode, oldCode) {
        if (newCode == false) {
          this.audioSynth.cancel();
          this.audioFlag = false;
          this.audioCourse = false;
                    this.audioSynth.cancel()
                    this.audioFlag = false
                    this.audioCourse = false
        } else {
          if (this.audioFlag == true) {
            this.audioSynth.cancel();
            this.audioFlag = false;
            this.audioCourse = false;
                        this.audioSynth.cancel()
                        this.audioFlag = false
                        this.audioCourse = false
          }
        }
      },
    },
            }
        }
  },
  methods: {
    screen() {
      if (this.fullscreen) {
        this.fullScreenUrl = "/img/icon/bigScreen.png";
        this.fullscreen = !this.fullscreen;
                this.fullScreenUrl = '/img/icon/bigScreen.png'
                this.fullscreen = !this.fullscreen
        document.getElementById("pcElHeader").style.zIndex = 9999;
                document.getElementById('pcElHeader').style.zIndex = 9999
      } else {
        this.fullScreenUrl = "/img/icon/smallScreen.png";
        this.fullscreen = !this.fullscreen;
                this.fullScreenUrl = '/img/icon/smallScreen.png'
                this.fullscreen = !this.fullscreen
        document.getElementById("pcElHeader").style.zIndex = 9;
                document.getElementById('pcElHeader').style.zIndex = 9
      }
    },
    tabBtnClick(param) {
      this.tabBtnFlag = param;
            this.tabBtnFlag = param
    },
    comeHereClick() {
      this.$store.commit("SET_COMENAME", this.stateName);
      this.$store.commit("SET_TERMINUS", this.pointPosition);
            this.$store.commit('SET_COMENAME', this.stateName)
            this.$store.commit('SET_TERMINUS', this.pointPosition)
      if (this.campusNavFlag == false) {
        this.$store.commit("SET_CAMPUSNAVFLAG", true);
                this.$store.commit('SET_CAMPUSNAVFLAG', true)
      }
    },
    getToHereClick() {
      this.$store.commit("SET_GETTONAME", this.stateName);
      this.$store.commit("SET_STARTINGPOINT", this.pointPosition);
            this.$store.commit('SET_GETTONAME', this.stateName)
            this.$store.commit('SET_STARTINGPOINT', this.pointPosition)
      if (this.campusNavFlag == false) {
        this.$store.commit("SET_CAMPUSNAVFLAG", true);
                this.$store.commit('SET_CAMPUSNAVFLAG', true)
      }
    },
    qrCodeClick() {
      this.QRCodeFlag = true;
            this.QRCodeFlag = true
    },
    imgsClick() {
      this.$refs.popupImgs.clickHandler();
            this.$refs.popupImgs.clickHandler()
    },
    panoramaClick() {
      if (this.audioFlag == true) {
        this.audioSynth.cancel();
        this.audioFlag = false;
        this.audioCourse = false;
                this.audioSynth.cancel()
                this.audioFlag = false
                this.audioCourse = false
      }
      // eslint-disable-next-line new-cap
      var positions = this.DC.Transform.transformWGS84ToCartesian(
        // eslint-disable-next-line new-cap
        new this.DC.Position.fromArray(this.pointPosition)
      );
      this.viewer.scene.globe.depthTestAgainstTerrain = false;
            )
            this.viewer.scene.globe.depthTestAgainstTerrain = false
      // eslint-disable-next-line no-unused-vars
      var panorama = new this.DC.PanoramaBox(this.viewer, {
        domId: "PanoramaBox",
        position: [positions],
      });
                domId: 'PanoramaBox',
                position: [positions]
            })
      this.$store.commit("SET_DETAILSPOPUP", false);
      this.$store.commit("SET_MONITORPOPUP", false);
      this.$store.commit("SET_PANORAMAPOPUP", true);
            this.$store.commit('SET_DETAILSPOPUP', false)
            this.$store.commit('SET_MONITORPOPUP', false)
            this.$store.commit('SET_PANORAMAPOPUP', true)
    },
    monitorClick() {
      if (this.audioFlag == true) {
        this.audioSynth.cancel();
        this.audioFlag = false;
        this.audioCourse = false;
                this.audioSynth.cancel()
                this.audioFlag = false
                this.audioCourse = false
      }
      // eslint-disable-next-line new-cap
      var positions = this.DC.Transform.transformWGS84ToCartesian(
        // eslint-disable-next-line new-cap
        new this.DC.Position.fromArray(this.pointPosition)
      );
      this.viewer.scene.globe.depthTestAgainstTerrain = false;
            )
            this.viewer.scene.globe.depthTestAgainstTerrain = false
      // eslint-disable-next-line no-unused-vars
      var monitor = new this.DC.PanoramaBox(this.viewer, {
        domId: "MonitorBox",
        position: [positions],
      });
      this.$store.commit("SET_PANORAMAPOPUP", false);
      this.$store.commit("SET_DETAILSPOPUP", false);
      this.$store.commit("SET_MONITORPOPUP", true);
                domId: 'MonitorBox',
                position: [positions]
            })
            this.$store.commit('SET_PANORAMAPOPUP', false)
            this.$store.commit('SET_DETAILSPOPUP', false)
            this.$store.commit('SET_MONITORPOPUP', true)
    },
    closeMapPopupBox() {
      if (this.audioFlag == true) {
        this.audioSynth.cancel();
        this.audioFlag = false;
        this.audioCourse = false;
                this.audioSynth.cancel()
                this.audioFlag = false
                this.audioCourse = false
      }
      this.$store.commit("SET_DETAILSPOPUP", false);
            this.$store.commit('SET_DETAILSPOPUP', false)
    },
    // 新增标记相关事件
    closeAddTagBox() {
      this.$store.commit("SET_ADDTAGPOPUP", false);
            this.$store.commit('SET_ADDTAGPOPUP', false)
    },
    closelabelLayerid() {
      this.$store.commit("openLabelLayer", {
        show: false,
      });
            this.$store.commit('openLabelLayer', {
                show: false
            })
    },
    createTag() {
      var that = this;
            var that = this
      //   console.log(this.RemoveTheBlank(this.addTagName));
      if (this.RemoveTheBlank(this.addTagName) == "") {
        this.$message("请输入标签名称");
        return;
            if (this.RemoveTheBlank(this.addTagName) == '') {
                this.$message('请输入标签名称')
                return
      }
      this.$store.commit("SET_ADDTAGPOPUP", false);
            this.$store.commit('SET_ADDTAGPOPUP', false)
      //   if (this.addTagLayer == null) {
      //     this.addTagLayer = new this.DC.HtmlLayer("addTagLayer");
@@ -606,33 +597,33 @@
      //2022.3.2对接接口
      // 新增标签
      let data = {
            const data = {
        name: this.RemoveTheBlank(this.addTagName),
        jd: this.addTagPosition.lng,
        wd: this.addTagPosition.lat,
      };
                wd: this.addTagPosition.lat
            }
      //   console.log(data);
      setlabel(data).then((res) => {
        console.log(res);
                console.log(res)
        if (res.data.code == 200) {
          doit();
                    doit()
          that.$message({
            message: "新增标签成功",
            type: "success",
          });
                        message: '新增标签成功',
                        type: 'success'
                    })
        } else {
          that.$message({
            message: "新增标签失败",
            type: "warning",
          });
                        message: '新增标签失败',
                        type: 'warning'
                    })
        }
        that.addTagName = "";
      });
      let doit = () => {
        that.$store.dispatch("addLabelLayerIcon", {
                that.addTagName = ''
            })
            const doit = () => {
                that.$store.dispatch('addLabelLayerIcon', {
          // list: [data],
          add: true,
        });
                    add: true
                })
        // const divIcon = new this.DC.DivIcon(
        //   new that.DC.Position(
        //     Number(that.addTagPosition.lng),
@@ -651,64 +642,64 @@
        //             `
        // );
        // this.addTagLayer.addOverlay(divIcon);
      };
            }
    },
    closePanoramaPopupBox() {
      this.$store.commit("SET_PANORAMAURL", "");
      this.$store.commit("SET_PANORAMAPOPUP", false);
            this.$store.commit('SET_PANORAMAURL', '')
            this.$store.commit('SET_PANORAMAPOPUP', false)
    },
    closeMonitorPopupBox() {
      this.$store.commit("SET_MONITORURL", "");
      this.$store.commit("SET_MONITORPOPUP", false);
            this.$store.commit('SET_MONITORURL', '')
            this.$store.commit('SET_MONITORPOPUP', false)
    },
    audioPlay() {
      if (this.audioFlag == false) {
        this.audioMsg.text = this.audioSource;
        this.audioSynth.speak(this.audioMsg);
        this.audioFlag = true;
        this.audioCourse = true;
                this.audioMsg.text = this.audioSource
                this.audioSynth.speak(this.audioMsg)
                this.audioFlag = true
                this.audioCourse = true
      } else {
        if (this.audioCourse == true) {
          this.audioSynth.pause();
          this.audioCourse = false;
                    this.audioSynth.pause()
                    this.audioCourse = false
        } else {
          this.audioSynth.resume();
          this.audioCourse = true;
                    this.audioSynth.resume()
                    this.audioCourse = true
        }
      }
    },
    mechanismDetailPopup(num, param) {
      getMechanismDetail({ num: num, mechanismName: param }).then((res) => {
        var result = res.data.data;
        this.$store.commit("CLEAR_ALL", null);
                var result = res.data.data
                this.$store.commit('CLEAR_ALL', null)
        var imgArr = result.tpurl.split(",");
                var imgArr = result.tpurl.split(',')
        this.$store.commit("SET_POPUPBGURL", imgArr[0]);
        this.$store.commit("SET_POPUPQRURL", result.codeurl);
        this.$store.commit("SET_POINTPOSITION", [
                this.$store.commit('SET_POPUPBGURL', imgArr[0])
                this.$store.commit('SET_POPUPQRURL', result.codeurl)
                this.$store.commit('SET_POINTPOSITION', [
          Number(result.jd),
          Number(result.wd),
          Number(result.gd),
          Number(result.heading),
          Number(result.pitch),
          Number(result.roll),
        ]);
        this.$store.commit("SET_STATENAME", result.mechanismname);
        this.$store.commit("SET_SITENAME", result.address);
        this.$store.commit("SET_TELEPHONE", result.telephone);
        this.$store.commit("SET_INTRODUCETEXT", result.introduce);
        this.$store.commit("SET_POPUPIMGATLAS", imgArr);
                    Number(result.roll)
                ])
                this.$store.commit('SET_STATENAME', result.mechanismname)
                this.$store.commit('SET_SITENAME', result.address)
                this.$store.commit('SET_TELEPHONE', result.telephone)
                this.$store.commit('SET_INTRODUCETEXT', result.introduce)
                this.$store.commit('SET_POPUPIMGATLAS', imgArr)
        if (result.videourl && result.videourl != "") {
          this.$store.commit("SET_MONITORURL", result.videourl);
                if (result.videourl && result.videourl != '') {
                    this.$store.commit('SET_MONITORURL', result.videourl)
        }
        this.newPopup(result);
                this.newPopup(result)
        this.viewer.flyToPosition(
          new this.DC.Position(
            Number(result.jd),
@@ -720,33 +711,33 @@
          ),
          function () {},
          3
        );
      });
                )
            })
    },
    newPopup(item) {
      const position = this.DC.Transform.transformWGS84ToCartesian(
        new this.DC.Position(Number(item.jd), Number(item.wd), Number(item.gd))
      );
            )
      // eslint-disable-next-line no-unused-vars
      var popup = new this.DC.DivForms(this.viewer, {
        domId: "divFormsDomBox",
        position: [position],
      });
                domId: 'divFormsDomBox',
                position: [position]
            })
      this.$store.commit("SET_PANORAMAPOPUP", false);
      this.$store.commit("SET_MONITORPOPUP", false);
      this.$store.commit("SET_DETAILSPOPUP", true);
            this.$store.commit('SET_PANORAMAPOPUP', false)
            this.$store.commit('SET_MONITORPOPUP', false)
            this.$store.commit('SET_DETAILSPOPUP', true)
    },
    /**
     * 删除左右两端的空格
     */
    RemoveTheBlank(str) {
      return str.replace(/(^\s*)|(\s*$)/g, "");
    },
  },
};
            return str.replace(/(^\s*)|(\s*$)/g, '')
        }
    }
}
</script>
<style>