liuyg
2022-03-22 e911c5fa1f968f5bb88d1ea3f893e285249c5933
Merge branch 'master' of http://192.168.0.105:10010/r/school-web
10 files modified
2 files added
2522 ■■■■ changed files
public/img/icon/close-video.png patch | view | raw | blame | history
public/img/icon/start-video.png patch | view | raw | blame | history
src/components/campusNav/index.vue 6 ●●●●● patch | view | raw | blame | history
src/components/map/components/dimension.vue 141 ●●●●● patch | view | raw | blame | history
src/components/map/components/mapPopup.vue 2243 ●●●● patch | view | raw | blame | history
src/components/map/index.vue 28 ●●●● patch | view | raw | blame | history
src/main.js 2 ●●●●● patch | view | raw | blame | history
src/pcLayout/index.vue 4 ●●● patch | view | raw | blame | history
src/pcviews/specialmap/welcome.vue 17 ●●●● patch | view | raw | blame | history
src/router/axios.js 2 ●●● patch | view | raw | blame | history
src/styles/pcpage/dc-ui.scss 17 ●●●● patch | view | raw | blame | history
src/styles/pcpage/element-ui.scss 62 ●●●●● patch | view | raw | blame | history
public/img/icon/close-video.png
public/img/icon/start-video.png
src/components/campusNav/index.vue
@@ -283,6 +283,7 @@
                tooltip.showAt(e.windowPosition, title)
            })
        },
        closeModel () {
            if (this.$route.path.indexOf('/campusnavi') != -1) {
                this.$store.dispatch('delVisitedViews', this.$route)
@@ -295,6 +296,9 @@
            this.comeNameText = ''
            this.comeNameList = []
            this.comeNameShow = false
            this.pathBoxList = []
            this.pathBoxShow = false
            if (CamPusNavLayer.campusRouteLayer != null) {
                CamPusNavLayer.campusRouteLayer.clear()
                this.isOverRouter = false
@@ -572,6 +576,8 @@
        clearLayer () {
            if (CamPusNavLayer.campusRouteLayer != null) {
                CamPusNavLayer.campusRouteLayer.clear()
                this.pathBoxList = []
                this.pathBoxShow = false
            }
        },
src/components/map/components/dimension.vue
@@ -56,7 +56,7 @@
let layerSATtwo = null
let tcLayer = null
const wallLayer = null
// const wallLayer = null
export default {
    name: 'dimension',
@@ -280,19 +280,26 @@
                    // 最小
                    global.viewer.scene.screenSpaceCameraController.minimumZoomDistance = 100
                    global.eagleViewer.scene.screenSpaceCameraController.minimumZoomDistance = 1100
                    // 最大
                    global.viewer.scene.screenSpaceCameraController.maximumZoomDistance = 400
                    global.eagleViewer.scene.screenSpaceCameraController.maximumZoomDistance = 1400
                    // 设置相机缩小时的速率
                    global.viewer.scene.screenSpaceCameraController._minimumZoomRate = 2000
                    // global.eagleViewer.scene.screenSpaceCameraController._minimumZoomRate = 2000
                    // 设置相机放大时的速率
                    global.viewer.scene.screenSpaceCameraController._maximumZoomRate = 5906376272000
                    // global.eagleViewer.scene.screenSpaceCameraController._maximumZoomRate = 5906376272000
                    // 视角平移
                    global.viewer.scene.screenSpaceCameraController.enableRotate = true
                    global.eagleViewer.scene.screenSpaceCameraController.enableRotate = true
                    // 视角缩放
                    global.viewer.scene.screenSpaceCameraController.enableZoom = true
                    global.eagleViewer.scene.screenSpaceCameraController.enableZoom = true
                    // 视角旋转
                    global.viewer.scene.screenSpaceCameraController.enableTilt = false
                    global.eagleViewer.scene.screenSpaceCameraController.enableTilt = false
                    that.createdLayers()
@@ -563,6 +570,7 @@
                        }
                    global.viewer.on(global.DC.SceneEventType.CAMERA_CHANGED, that.mapCameraEvent)
                    global.eagleViewer.on(global.DC.SceneEventType.CAMERA_CHANGED, that.smallMapCameraEvent)
                }
            }
        }
@@ -699,6 +707,90 @@
                        global.viewer.camera.positionCartographic.longitude,
                        global.viewer.camera.positionCartographic.latitude,
                        400
                    ),
                    orientation: {
                        // 指向
                        heading: global.DC.Namespace.Cesium.Math.toRadians(0, 0),
                        // 视角
                        pitch: global.DC.Namespace.Cesium.Math.toRadians(-90),
                        roll: 0.0
                    }
                })
            }
        },
        smallMapCameraEvent () {
            const height = Math.ceil(
                global.eagleViewer.camera.positionCartographic.height
            )
            global.eagleViewer.camera.setView({
                orientation: {
                    // 指向
                    heading: global.DC.Namespace.Cesium.Math.toRadians(0, 0),
                    // 视角
                    pitch: global.DC.Namespace.Cesium.Math.toRadians(-90),
                    roll: 0.0
                }
            })
            if (height < 1150) {
                global.eagleViewer.camera.setView({
                    destination: global.DC.Namespace.Cesium.Cartesian3.fromRadians(
                        global.eagleViewer.camera.positionCartographic.longitude,
                        global.eagleViewer.camera.positionCartographic.latitude,
                        1100
                    ),
                    orientation: {
                        // 指向
                        heading: global.DC.Namespace.Cesium.Math.toRadians(0, 0),
                        // 视角
                        pitch: global.DC.Namespace.Cesium.Math.toRadians(-90),
                        roll: 0.0
                    }
                })
            }
            if (height > 1150 && height <= 1250) {
                global.eagleViewer.camera.setView({
                    destination: global.DC.Namespace.Cesium.Cartesian3.fromRadians(
                        global.eagleViewer.camera.positionCartographic.longitude,
                        global.eagleViewer.camera.positionCartographic.latitude,
                        1200
                    ),
                    orientation: {
                        // 指向
                        heading: global.DC.Namespace.Cesium.Math.toRadians(0, 0),
                        // 视角
                        pitch: global.DC.Namespace.Cesium.Math.toRadians(-90),
                        roll: 0.0
                    }
                })
            }
            if (height > 1250 && height <= 1350) {
                global.eagleViewer.camera.setView({
                    destination: global.DC.Namespace.Cesium.Cartesian3.fromRadians(
                        global.eagleViewer.camera.positionCartographic.longitude,
                        global.eagleViewer.camera.positionCartographic.latitude,
                        1300
                    ),
                    orientation: {
                        // 指向
                        heading: global.DC.Namespace.Cesium.Math.toRadians(0, 0),
                        // 视角
                        pitch: global.DC.Namespace.Cesium.Math.toRadians(-90),
                        roll: 0.0
                    }
                })
            }
            if (height > 1350) {
                global.eagleViewer.camera.setView({
                    destination: global.DC.Namespace.Cesium.Cartesian3.fromRadians(
                        global.eagleViewer.camera.positionCartographic.longitude,
                        global.eagleViewer.camera.positionCartographic.latitude,
                        1400
                    ),
                    orientation: {
                        // 指向
@@ -871,8 +963,8 @@
        // 科技感删除
        removeSAT () {
            global.viewer.remove(layerSat)
            global.viewer.remove(layerSATtwo)
            global.viewer.removeLayer(layerSat)
            global.viewer.removeLayer(layerSATtwo)
            layerSat = null
            layerSATtwo = null
        },
@@ -946,6 +1038,7 @@
                that.createTC()
                global.viewer.off(global.DC.MouseEventType.MOUSE_MOVE, that.mouseMoveEvent)
                global.viewer.off(global.DC.SceneEventType.CAMERA_CHANGED, that.mapCameraEvent)
                global.eagleViewer.off(global.DC.SceneEventType.CAMERA_CHANGED, that.smallMapCameraEvent)
                that.removeLayers()
                global.viewer.imageryLayers.remove(baseMapLayer)
                baseMapLayer = null
@@ -969,11 +1062,15 @@
                global.viewer.addLayer(streenMlayer)
                // 最小
                global.viewer.scene.screenSpaceCameraController.minimumZoomDistance = 1.0
                global.eagleViewer.scene.screenSpaceCameraController.minimumZoomDistance = 1.0
                // 最大
                global.viewer.scene.screenSpaceCameraController.maximumZoomDistance =
                    Number.POSITIVE_INFINITY
                global.eagleViewer.scene.screenSpaceCameraController.maximumZoomDistance =
                    Number.POSITIVE_INFINITY
                // 视角旋转
                global.viewer.scene.screenSpaceCameraController.enableTilt = true
                global.eagleViewer.scene.screenSpaceCameraController.enableTilt = true
                // 115.877863,28.741661
                global.viewer.camera.setView({
                    // Cesium的坐标是以地心为原点,一向指向南美洲,一向指向亚洲,一向指向北极州
@@ -991,12 +1088,30 @@
                        roll: 0.0
                    }
                })
                global.eagleViewer.camera.setView({
                    // Cesium的坐标是以地心为原点,一向指向南美洲,一向指向亚洲,一向指向北极州
                    // fromDegrees()方法,将经纬度和高程转换为世界坐标
                    destination: global.DC.Namespace.Cesium.Cartesian3.fromDegrees(
                        that.mapCenter[0],
                        that.mapCenter[1],
                        1220.0
                    ),
                    orientation: {
                        // 指向
                        heading: global.DC.Namespace.Cesium.Math.toRadians(-9),
                        // 视角
                        pitch: global.DC.Namespace.Cesium.Math.toRadians(-34.54),
                        roll: 0.0
                    }
                })
            } else {
                that.btnGroupShow = false
                that.removeSAT()
                that.removeTC()
                global.viewer.on(global.DC.MouseEventType.MOUSE_MOVE, that.mouseMoveEvent)
                global.viewer.on(global.DC.SceneEventType.CAMERA_CHANGED, that.mapCameraEvent)
                global.eagleViewer.on(global.DC.SceneEventType.CAMERA_CHANGED, that.smallMapCameraEvent)
                tileset.off(global.DC.MouseEventType.CLICK, that.tilesetClick)
                tilesetLayer.removeOverlay(tileset)
                tilesetLayer.show = false
@@ -1028,12 +1143,32 @@
                        roll: 0.0
                    }
                })
                global.eagleViewer.camera.setView({
                    // Cesium的坐标是以地心为原点,一向指向南美洲,一向指向亚洲,一向指向北极州
                    // fromDegrees()方法,将经纬度和高程转换为世界坐标
                    destination: global.DC.Namespace.Cesium.Cartesian3.fromDegrees(
                        that.mapCenter[0],
                        that.mapCenter[1],
                        1400.0
                    ),
                    orientation: {
                        // 指向
                        heading: global.DC.Namespace.Cesium.Math.toRadians(0, 0),
                        // 视角
                        pitch: global.DC.Namespace.Cesium.Math.toRadians(-90),
                        roll: 0.0
                    }
                })
                // 最小
                global.viewer.scene.screenSpaceCameraController.minimumZoomDistance = 100
                global.eagleViewer.scene.screenSpaceCameraController.minimumZoomDistance = 1100
                // 最大
                global.viewer.scene.screenSpaceCameraController.maximumZoomDistance = 400
                global.eagleViewer.scene.screenSpaceCameraController.maximumZoomDistance = 1400
                // 视角旋转
                global.viewer.scene.screenSpaceCameraController.enableTilt = false
                global.eagleViewer.scene.screenSpaceCameraController.enableTilt = false
            }
        }
    }
src/components/map/components/mapPopup.vue
@@ -1,445 +1,431 @@
<template>
  <div>
    <div id="map_popup_content">
      <div v-if="detailsPopup" class="divForms-dom" id="divFormsDomBox">
        <div style="width: 100%; height: 100%">
          <div class="divForms divForms-theme">
            <div class="divForms-wrap">
              <div class="area">
                <div class="arrow-lt"></div>
                <div class="b-t"></div>
                <div class="b-r"></div>
                <div class="b-b"></div>
                <div class="b-l"></div>
                <div class="arrow-rb"></div>
                <div class="label-wrap">
                  <div class="title">
                    {{ stateName }}
                    <img
                      v-show="introduceText != null && introduceText != ''"
                      @click="audioPlay"
                      class="audio-control"
                      src="/img/navicon/audio.png"
                      alt
                    />
                    <img
                      @click="closeMapPopupBox"
                      class="close-box"
                      src="/img/navicon/close.png"
                      alt
                    />
                  </div>
                  <div class="label-content">
                    <div class="arc-bcg">
                      <img :src="popupBgUrl" alt />
                    </div>
                    <div
                      v-show="siteName != null && siteName != ''"
                      class="site"
                    >
                      <strong>地址:</strong>
                      {{ siteName }}
                    </div>
                    <div
                      v-show="telephone != null && telephone != ''"
                      class="phone"
                    >
                      <strong>电话:</strong>
                      {{ telephone }}
                    </div>
                    <div
                      v-show="introduceText != null && introduceText != ''"
                      class="introduce"
                    >
                      <p ref="DomIntroduceText">
                        <strong>介绍:</strong>
                        <span v-html="introduceText"></span>
                      </p>
                    </div>
                    <div class="popup-nav">
                      <ul>
                        <li @click="comeHereClick">
                          <i class="popup-icon come-nav deblurring"></i>
                          到这
                        </li>
                        <li @click="getToHereClick">
                          <i class="popup-icon start-nav deblurring"></i>
                          出发
                        </li>
                        <li v-show="pupupQRUrl != ''" @click="qrCodeClick">
                          <i class="popup-icon qr-code-nav deblurring"></i>
                          二维码
                        </li>
                        <li @click="imgsClick">
                          <i class="popup-icon atlas-nav deblurring"></i>
                          图集
                        </li>
                        <li
                          v-show="panoramaUrl != null && panoramaUrl != ''"
                          @click="panoramaClick"
                        >
                          <i class="popup-icon live-action-nav deblurring"></i>
                          实景
                        </li>
                        <!-- v-show="panoramaUrl != null && panoramaUrl != ''" -->
                        <li v-show="false" @click="monitorClick">
                          <i class="popup-icon monitor-nav deblurring"></i>
                          监控
                        </li>
                      </ul>
                    </div>
                    <div
                      v-show="teachList.length > 0 || liveList.length > 0"
                      class="arc-box"
                    >
                      <ul class="tab-btn">
                        <li
                          v-show="teachList.length > 0"
                          :class="{ on: tabBtnFlag == '教学科研行政' }"
                          @click="tabBtnClick('教学科研行政')"
                        >
                          教学科研行政
                        </li>
                        <li
                          v-show="liveList.length > 0"
                          :class="{ on: tabBtnFlag == '生活服务' }"
                          @click="tabBtnClick('生活服务')"
                        >
                          生活服务
                        </li>
                      </ul>
                      <div class="btm-content">
                        <div :class="{ on: tabBtnFlag == '教学科研行政' }">
                          <ul>
                            <li
                              v-for="(item, index) in teachList"
                              :key="index"
                              @click="mechanismDetailPopup(0, item)"
                            >
                              <i
                                class="popup-icon location-icon deblurring"
                              ></i>
                              {{ item }}
                            </li>
                          </ul>
    <div>
        <div id="map_popup_content">
            <div v-if="detailsPopup" class="divForms-dom" id="divFormsDomBox">
                <div style="width: 100%; height: 100%">
                    <div class="divForms divForms-theme">
                        <div class="divForms-wrap">
                            <div class="area">
                                <div class="arrow-lt"></div>
                                <div class="b-t"></div>
                                <div class="b-r"></div>
                                <div class="b-b"></div>
                                <div class="b-l"></div>
                                <div class="arrow-rb"></div>
                                <div class="label-wrap">
                                    <div class="title">
                                        {{ stateName }}
                                        <img
                                            v-show="introduceText != null && introduceText != ''"
                                            @click="audioPlay"
                                            class="audio-control"
                                            :src="audioImgUrl"
                                            alt
                                        />
                                        <img
                                            @click="closeMapPopupBox"
                                            class="close-box"
                                            src="/img/navicon/close.png"
                                            alt
                                        />
                                    </div>
                                    <div class="label-content">
                                        <div class="arc-bcg">
                                            <img :src="popupBgUrl" alt />
                                        </div>
                                        <div
                                            v-show="siteName != null && siteName != ''"
                                            class="site"
                                        >
                                            <strong>地址:</strong>
                                            {{ siteName }}
                                        </div>
                                        <div
                                            v-show="telephone != null && telephone != ''"
                                            class="phone"
                                        >
                                            <strong>电话:</strong>
                                            {{ telephone }}
                                        </div>
                                        <div
                                            v-show="introduceText != null && introduceText != ''"
                                            class="introduce"
                                        >
                                            <p ref="DomIntroduceText">
                                                <strong>介绍:</strong>
                                                <span v-html="introduceText"></span>
                                            </p>
                                        </div>
                                        <div class="popup-nav">
                                            <ul>
                                                <li @click="comeHereClick">
                                                    <i class="popup-icon come-nav deblurring"></i>
                                                    到这
                                                </li>
                                                <li @click="getToHereClick">
                                                    <i class="popup-icon start-nav deblurring"></i>
                                                    出发
                                                </li>
                                                <li v-show="pupupQRUrl != ''" @click="qrCodeClick">
                                                    <i class="popup-icon qr-code-nav deblurring"></i>
                                                    二维码
                                                </li>
                                                <li @click="imgsClick">
                                                    <i class="popup-icon atlas-nav deblurring"></i>
                                                    图集
                                                </li>
                                                <li
                                                    v-show="panoramaUrl != null && panoramaUrl != ''"
                                                    @click="panoramaClick"
                                                >
                                                    <i
                                                        class="popup-icon live-action-nav deblurring"
                                                    ></i>
                                                    实景
                                                </li>
                                                <!-- v-show="panoramaUrl != null && panoramaUrl != ''" -->
                                                <li v-show="false" @click="monitorClick">
                                                    <i class="popup-icon monitor-nav deblurring"></i>
                                                    监控
                                                </li>
                                            </ul>
                                        </div>
                                        <div
                                            v-show="teachList.length > 0 || liveList.length > 0"
                                            class="arc-box"
                                        >
                                            <ul class="tab-btn">
                                                <li
                                                    v-show="teachList.length > 0"
                                                    :class="{ on: tabBtnFlag == '教学科研行政' }"
                                                    @click="tabBtnClick('教学科研行政')"
                                                >教学科研行政</li>
                                                <li
                                                    v-show="liveList.length > 0"
                                                    :class="{ on: tabBtnFlag == '生活服务' }"
                                                    @click="tabBtnClick('生活服务')"
                                                >生活服务</li>
                                            </ul>
                                            <div class="btm-content">
                                                <div :class="{ on: tabBtnFlag == '教学科研行政' }">
                                                    <ul>
                                                        <li
                                                            v-for="(item, index) in teachList"
                                                            :key="index"
                                                            @click="mechanismDetailPopup(0, item)"
                                                        >
                                                            <i
                                                                class="popup-icon location-icon deblurring"
                                                            ></i>
                                                            {{ item }}
                                                        </li>
                                                    </ul>
                                                </div>
                                                <div :class="{ on: tabBtnFlag == '生活服务' }">
                                                    <ul>
                                                        <li
                                                            v-for="(item, index) in liveList"
                                                            :key="index"
                                                            @click="mechanismDetailPopup(1, item)"
                                                        >
                                                            <i
                                                                class="popup-icon location-icon deblurring"
                                                            ></i>
                                                            {{ item }}
                                                        </li>
                                                    </ul>
                                                </div>
                                            </div>
                                        </div>
                                        <div class="btm-box"></div>
                                    </div>
                                </div>
                            </div>
                            <div class="b-t-l"></div>
                            <div class="b-b-r"></div>
                        </div>
                        <div :class="{ on: tabBtnFlag == '生活服务' }">
                          <ul>
                            <li
                              v-for="(item, index) in liveList"
                              :key="index"
                              @click="mechanismDetailPopup(1, item)"
                            >
                              <i
                                class="popup-icon location-icon deblurring"
                              ></i>
                              {{ item }}
                            </li>
                          </ul>
                        </div>
                      </div>
                        <div class="arrow"></div>
                    </div>
                    <div class="btm-box"></div>
                  </div>
                </div>
              </div>
              <div class="b-t-l"></div>
              <div class="b-b-r"></div>
            </div>
            <div class="arrow"></div>
          </div>
        </div>
      </div>
      <div
        v-if="panoramaPopup"
        class="panorama-dom"
        :class="{ 'change-full': fullscreen }"
        id="PanoramaBox"
      >
        <div style="width: 100%; height: 100%">
          <div class="panorama-container">
            <div class="panorama-wrap">
              <div
                class="content-wrap"
            <div
                v-if="panoramaPopup"
                class="panorama-dom"
                :class="{ 'change-full': fullscreen }"
                id="FullScreenBox"
              >
                <div class="title">
                  <img
                    @click="returnDetailsPopup"
                    class="return-btn"
                    src="/img/icon/return.png"
                    alt
                  />
                  {{ stateName }}
                  <img
                    @click="screen"
                    class="full-srceen-btn"
                    :src="fullScreenUrl"
                    alt
                  />
                  <img
                    @click="closePanoramaPopupBox"
                    class="close-box"
                    src="/img/navicon/close.png"
                    alt
                  />
                </div>
                <div class="content">
                  <iframe
                    allowfullscreen="true"
                    :src="panoramaUrl"
                    frameborder="0"
                  ></iframe>
                </div>
              </div>
            </div>
            <div class="arrow"></div>
          </div>
        </div>
      </div>
      <div v-if="monitorPopup" class="monitor-dom" id="MonitorBox">
        <div style="width: 100%; height: 100%">
          <div class="monitor-container">
            <div class="monitor-wrap">
              <div class="content-wrap">
                <div class="title">
                  <img
                    @click="returnDetailsPopup"
                    class="return-btn"
                    src="/img/icon/return.png"
                    alt
                  />
                  {{ stateName }}
                  <img
                    @click="closeMonitorPopupBox"
                    class="close-box"
                    src="/img/navicon/close.png"
                    alt
                  />
                </div>
                <div class="content">
                  <video :src="monitorUrl" controls autoplay></video>
                </div>
              </div>
            </div>
            <div class="arrow"></div>
          </div>
        </div>
      </div>
      <div v-if="addTagPopup" class="divForms-dom" id="AddTagBox">
        <div style="width: 100%; height: 100%">
          <div class="divForms divForms-theme">
            <div class="divForms-wrap">
              <div class="area">
                <div class="arrow-lt"></div>
                <div class="b-t"></div>
                <div class="b-r"></div>
                <div class="b-b"></div>
                <div class="b-l"></div>
                <div class="arrow-rb"></div>
                <div class="label-wrap">
                  <div class="title">
                    地图标记
                    <img
                      @click="closeAddTagBox"
                      class="close-box"
                      src="/img/navicon/close.png"
                      alt
                    />
                  </div>
                  <div class="add-tag-content">
                    <div>
                      <el-input
                        v-model="addTagName"
                        placeholder="请输入标签名称"
                      ></el-input>
                id="PanoramaBox"
            >
                <div style="width: 100%; height: 100%">
                    <div class="panorama-container">
                        <div class="panorama-wrap">
                            <div
                                class="content-wrap"
                                :class="{ 'change-full': fullscreen }"
                                id="FullScreenBox"
                            >
                                <div class="title">
                                    <img
                                        @click="returnDetailsPopup"
                                        class="return-btn"
                                        src="/img/icon/return.png"
                                        alt
                                    />
                                    {{ stateName }}
                                    <img
                                        @click="screen"
                                        class="full-srceen-btn"
                                        :src="fullScreenUrl"
                                        alt
                                    />
                                    <img
                                        @click="closePanoramaPopupBox"
                                        class="close-box"
                                        src="/img/navicon/close.png"
                                        alt
                                    />
                                </div>
                                <div class="content">
                                    <iframe
                                        allowfullscreen="true"
                                        :src="panoramaUrl"
                                        frameborder="0"
                                    ></iframe>
                                </div>
                            </div>
                        </div>
                        <div class="arrow"></div>
                    </div>
                    <div>
                      <el-button type="primary" @click="createTag"
                        >生成标记</el-button
                      >
                </div>
            </div>
            <div v-if="monitorPopup" class="monitor-dom" id="MonitorBox">
                <div style="width: 100%; height: 100%">
                    <div class="monitor-container">
                        <div class="monitor-wrap">
                            <div class="content-wrap">
                                <div class="title">
                                    <img
                                        @click="returnDetailsPopup"
                                        class="return-btn"
                                        src="/img/icon/return.png"
                                        alt
                                    />
                                    {{ stateName }}
                                    <img
                                        @click="closeMonitorPopupBox"
                                        class="close-box"
                                        src="/img/navicon/close.png"
                                        alt
                                    />
                                </div>
                                <div class="content">
                                    <video :src="monitorUrl" controls autoplay></video>
                                </div>
                            </div>
                        </div>
                        <div class="arrow"></div>
                    </div>
                  </div>
                </div>
              </div>
              <div class="b-t-l"></div>
              <div class="b-b-r"></div>
            </div>
            <div class="arrow"></div>
          </div>
        </div>
      </div>
      <div v-if="labelLayerDataShow" class="divForms-dom" id="labelLayerid">
        <div style="width: 100%; height: 100%">
          <div class="divForms divForms-theme">
            <div class="divForms-wrap">
              <div class="area">
                <div class="arrow-lt"></div>
                <div class="b-t"></div>
                <div class="b-r"></div>
                <div class="b-b"></div>
                <div class="b-l"></div>
                <div class="arrow-rb"></div>
                <div class="label-wrap">
                  <div class="title">
                    {{ nowlabelLayerData.name }}
                    <img
                      @click="closelabelLayerid"
                      class="close-box"
                      src="/img/navicon/close.png"
                      alt
                    />
                  </div>
                  <div class="add-tag-content" style="height: 250px">
                    <!-- data:image/png;base64, -->
                    <img
                      :src="nowlabelLayerData.qrcode"
                      alt
                      class="labelLayeridewm"
                      style="width: 250px; height: 250px"
                    />
                  </div>
            <div v-if="addTagPopup" class="divForms-dom" id="AddTagBox">
                <div style="width: 100%; height: 100%">
                    <div class="divForms divForms-theme">
                        <div class="divForms-wrap">
                            <div class="area">
                                <div class="arrow-lt"></div>
                                <div class="b-t"></div>
                                <div class="b-r"></div>
                                <div class="b-b"></div>
                                <div class="b-l"></div>
                                <div class="arrow-rb"></div>
                                <div class="label-wrap">
                                    <div class="title">
                                        地图标记
                                        <img
                                            @click="closeAddTagBox"
                                            class="close-box"
                                            src="/img/navicon/close.png"
                                            alt
                                        />
                                    </div>
                                    <div class="add-tag-content">
                                        <div>
                                            <el-input v-model="addTagName" placeholder="请输入标签名称"></el-input>
                                        </div>
                                        <div>
                                            <el-button type="primary" @click="createTag">生成标记</el-button>
                                        </div>
                                    </div>
                                </div>
                            </div>
                            <div class="b-t-l"></div>
                            <div class="b-b-r"></div>
                        </div>
                        <div class="arrow"></div>
                    </div>
                </div>
              </div>
              <div class="b-t-l"></div>
              <div class="b-b-r"></div>
            </div>
            <div class="arrow"></div>
          </div>
        </div>
      </div>
    </div>
    <!-- 新增编辑标签 -->
    <div
      v-if="addIconsLayerIconPopup"
      class="monitor-dom add-sign-box-style"
      id="leftNavsAdd"
    >
      <div style="width: 100%; height: 100%">
        <div class="divForms divForms-theme">
          <div class="divForms-wrap">
            <div class="area">
              <div class="arrow-lt"></div>
              <div class="b-t"></div>
              <div class="b-r"></div>
              <div class="b-b"></div>
              <div class="b-l"></div>
              <div class="arrow-rb"></div>
              <div class="label-wrap">
                <div class="title">
                  <el-input
                    v-model="addIconFromcolumn[0].value"
                    placeholder="请输入标签名称"
                    class="addIconFromInput"
                  >
                    <template slot="prepend">标题:</template>
                  </el-input>
                  <img
                    @click="closeaddIconsLayerIconPopup"
                    class="close-box"
                    src="/img/navicon/close.png"
                    alt
                  />
            <div v-if="labelLayerDataShow" class="divForms-dom" id="labelLayerid">
                <div style="width: 100%; height: 100%">
                    <div class="divForms divForms-theme">
                        <div class="divForms-wrap">
                            <div class="area">
                                <div class="arrow-lt"></div>
                                <div class="b-t"></div>
                                <div class="b-r"></div>
                                <div class="b-b"></div>
                                <div class="b-l"></div>
                                <div class="arrow-rb"></div>
                                <div class="label-wrap">
                                    <div class="title">
                                        {{ nowlabelLayerData.name }}
                                        <img
                                            @click="closelabelLayerid"
                                            class="close-box"
                                            src="/img/navicon/close.png"
                                            alt
                                        />
                                    </div>
                                    <div class="add-tag-content" style="height: 250px">
                                        <!-- data:image/png;base64, -->
                                        <img
                                            :src="nowlabelLayerData.qrcode"
                                            alt
                                            class="labelLayeridewm"
                                            style="width: 250px; height: 250px"
                                        />
                                    </div>
                                </div>
                            </div>
                            <div class="b-t-l"></div>
                            <div class="b-b-r"></div>
                        </div>
                        <div class="arrow"></div>
                    </div>
                </div>
                <div class="add-tag-content">
                  <div class="addIconsLayer">
                    <div
                      :class="[
            </div>
        </div>
        <!-- 新增编辑标签 -->
        <div v-if="addIconsLayerIconPopup" class="monitor-dom add-sign-box-style" id="leftNavsAdd">
            <div style="width: 100%; height: 100%">
                <div class="divForms divForms-theme">
                    <div class="divForms-wrap">
                        <div class="area">
                            <div class="arrow-lt"></div>
                            <div class="b-t"></div>
                            <div class="b-r"></div>
                            <div class="b-b"></div>
                            <div class="b-l"></div>
                            <div class="arrow-rb"></div>
                            <div class="label-wrap">
                                <div class="title">
                                    <el-input
                                        v-model="addIconFromcolumn[0].value"
                                        placeholder="请输入标签名称"
                                        class="addIconFromInput"
                                    >
                                        <template slot="prepend">标题:</template>
                                    </el-input>
                                    <img
                                        @click="closeaddIconsLayerIconPopup"
                                        class="close-box"
                                        src="/img/navicon/close.png"
                                        alt
                                    />
                                </div>
                                <div class="add-tag-content">
                                    <div class="addIconsLayer">
                                        <div
                                            :class="[
                        'addIconsLayerinimgs',
                        ourImages.length > 3 ? 'isOverImgs' : '',
                      ]"
                    >
                      <!-- action="https://jsonplaceholder.typicode.com/posts/" -->
                      <el-upload
                        :action="
                                        >
                                            <!-- action="https://jsonplaceholder.typicode.com/posts/" -->
                                            <el-upload
                                                :action="
                          apiUrls +
                          '/blade-resource/oss/endpoint/put-files-talk'
                        "
                        list-type="picture-card"
                        :on-preview="handlePictureCardPreview"
                        :on-remove="handleRemove"
                        :on-success="onsuccess"
                      >
                        <i class="el-icon-plus"></i>
                      </el-upload>
                      <el-dialog
                        :visible.sync="dialogVisible"
                        :modal-append-to-body="false"
                        :append-to-body="true"
                      >
                        <img width="100%" :src="dialogImageUrl" alt />
                      </el-dialog>
                    </div>
                    <div
                      class="addIconsLayerin"
                      v-for="(item, index) in addIconFromcolumn"
                      :key="index"
                      v-show="index != 0"
                    >
                      <el-input
                        v-model="item.value"
                        :placeholder="'请输入' + item.label"
                        class="addIconFromInput"
                        :disabled="index == 2 || index == 3"
                      >
                        <template slot="prepend">{{ item.label }}:</template>
                      </el-input>
                                                list-type="picture-card"
                                                :on-preview="handlePictureCardPreview"
                                                :on-remove="handleRemove"
                                                :on-success="onsuccess"
                                            >
                                                <i class="el-icon-plus"></i>
                                            </el-upload>
                                            <el-dialog
                                                :visible.sync="dialogVisible"
                                                :modal-append-to-body="false"
                                                :append-to-body="true"
                                            >
                                                <img width="100%" :src="dialogImageUrl" alt />
                                            </el-dialog>
                                        </div>
                                        <div
                                            class="addIconsLayerin"
                                            v-for="(item, index) in addIconFromcolumn"
                                            :key="index"
                                            v-show="index != 0"
                                        >
                                            <el-input
                                                v-model="item.value"
                                                :placeholder="'请输入' + item.label"
                                                class="addIconFromInput"
                                                :disabled="index == 2 || index == 3"
                                            >
                                                <template slot="prepend">{{ item.label }}:</template>
                                            </el-input>
                      <el-dropdown
                        v-show="index == 2 || index == 3"
                        @command="chouseAddicon"
                      >
                        <span class="el-dropdown-link">
                          <i class="el-icon-arrow-down el-icon--right"></i>
                        </span>
                        <el-dropdown-menu slot="dropdown">
                          <el-dropdown-item
                            v-for="(itemc, indexc) in item.chouse"
                            :key="indexc"
                            :command="{ index: index, indexc: indexc }"
                            >{{ itemc.value }}</el-dropdown-item
                          >
                          <!-- @click="chouseAddicon(index, indexc)" -->
                        </el-dropdown-menu>
                      </el-dropdown>
                                            <el-dropdown
                                                v-show="index == 2 || index == 3"
                                                @command="chouseAddicon"
                                            >
                                                <span class="el-dropdown-link">
                                                    <i class="el-icon-arrow-down el-icon--right"></i>
                                                </span>
                                                <el-dropdown-menu slot="dropdown">
                                                    <el-dropdown-item
                                                        v-for="(itemc, indexc) in item.chouse"
                                                        :key="indexc"
                                                        :command="{ index: index, indexc: indexc }"
                                                    >{{ itemc.value }}</el-dropdown-item>
                                                    <!-- @click="chouseAddicon(index, indexc)" -->
                                                </el-dropdown-menu>
                                            </el-dropdown>
                                        </div>
                                    </div>
                                    <div class="addIconsLayerBut">
                                        <el-button type="primary" @click="saveIconsLayer">保存标签</el-button>
                                    </div>
                                </div>
                            </div>
                        </div>
                        <div class="b-t-l"></div>
                        <div class="b-b-r"></div>
                    </div>
                  </div>
                  <div class="addIconsLayerBut">
                    <el-button type="primary" @click="saveIconsLayer"
                      >保存标签</el-button
                    >
                  </div>
                    <div class="arrow"></div>
                </div>
              </div>
            </div>
            <div class="b-t-l"></div>
            <div class="b-b-r"></div>
          </div>
          <div class="arrow"></div>
        </div>
      </div>
    </div>
    <!-- 二维码弹框相关 -->
    <el-dialog
      title="场景二维码"
      :visible.sync="QRCodeFlag"
      :modal="false"
      :modal-append-to-body="false"
      width="44%"
    >
      <div style="margin: 0; position: relative; width: 100%; height: 352px">
        <img
          width="260"
          :src="pupupQRUrl"
          alt
          style="
        <!-- 二维码弹框相关 -->
        <el-dialog
            title="场景二维码"
            :visible.sync="QRCodeFlag"
            :modal="false"
            :modal-append-to-body="false"
            width="44%"
        >
            <div style="margin: 0; position: relative; width: 100%; height: 352px">
                <img
                    width="260"
                    :src="pupupQRUrl"
                    alt
                    style="
            position: absolute;
            top: 0;
            left: 0;
@@ -447,769 +433,778 @@
            bottom: 0;
            margin: auto;
          "
        />
        <div
          style="
                />
                <div
                    style="
            position: absolute;
            bottom: 0;
            width: 100%;
            line-height: 36px;
            text-align: center;
          "
        >
          (右键另存为图片)
        </div>
      </div>
    </el-dialog>
                >(右键另存为图片)</div>
            </div>
        </el-dialog>
    <el-image
      v-show="false"
      style="width: 100px; height: 100px"
      :src="popupImgAtlas[0]"
      :preview-src-list="popupImgAtlas"
      ref="popupImgs"
    ></el-image>
  </div>
        <el-image
            v-show="false"
            style="width: 100px; height: 100px"
            :src="popupImgAtlas[0]"
            :preview-src-list="popupImgAtlas"
            ref="popupImgs"
        ></el-image>
    </div>
</template>
<script>
import { mapGetters } from "vuex";
import { getMechanismDetail } from "@/api/pc/public/arc";
import { setlabel } from "@/api/pc/label";
import { add } from "@/api/pc/leftNav/index";
import { mapGetters } from 'vuex'
import { getMechanismDetail } from '@/api/pc/public/arc'
import { setlabel } from '@/api/pc/label'
import { add } from '@/api/pc/leftNav/index'
export default {
  name: "mapPopup",
    name: 'mapPopup',
  data() {
    return {
      ourImages: [],
      dialogImageUrl: "",
      dialogVisible: false,
      apiUrls: null,
      tabBtnFlag: "教学科研行政",
      QRCodeFlag: false,
      audioSource: "",
      audioFlag: false,
      audioCourse: false,
      audioSynth: null,
      audioMsg: null,
      fullscreen: false,
      fullScreenUrl: "/img/icon/bigScreen.png",
      addTagName: "",
      addIconFromcolumn: [
        // 顺序不要随便换
        {
          label: "名称",
          prop: "mechanismname",
          value: "",
        },
        {
          label: "电话",
          prop: "telephone",
          value: "",
        },
        {
          label: "所属建筑",
          prop: "type",
          dicUrl: "/api/blade-system/dict-biz/dictionary?code=building",
          props: {
            label: "dictValue",
            value: "dictKey",
          },
          value: "红旗校区",
          valueid: "1",
          chouse: [
            {
              id: "1",
              value: "红旗校区",
            },
            {
              id: "2",
              value: "黄河路",
            },
            {
              id: "3",
              value: "科学园",
            },
            {
              id: "4",
              value: "土木楼",
            },
            {
              id: "5",
              value: "三江校区",
            },
          ],
        },
        {
          label: "所属社区",
          searchLabelWidth: "110",
          value: "行政办公",
          valueid: "1",
          prop: "campus",
          dicUrl: "/api/blade-system/dict-biz/dictionary?code=campus",
          chouse: [
            {
              id: "1",
              value: "行政办公",
            },
            {
              id: "2",
              value: "教学科研",
            },
            {
              id: "3",
              value: "社区场馆",
            },
            {
              id: "4",
              value: "学生宿舍",
            },
            {
              id: "5",
              value: "文化风景",
            },
            {
              id: "6",
              value: "家属住宅",
            },
            {
              id: "7",
              value: "主要楼宇",
            },
          ],
        },
    data () {
        return {
            ourImages: [],
            dialogImageUrl: '',
            dialogVisible: false,
            apiUrls: null,
            tabBtnFlag: '教学科研行政',
            QRCodeFlag: false,
            audioImgUrl: '/img/icon/close-video.png',
            audioSource: '',
            audioFlag: false,
            audioCourse: false,
            audioSynth: null,
            audioMsg: null,
            fullscreen: false,
            fullScreenUrl: '/img/icon/bigScreen.png',
            addTagName: '',
            addIconFromcolumn: [
                // 顺序不要随便换
                {
                    label: '名称',
                    prop: 'mechanismname',
                    value: ''
                },
                {
                    label: '电话',
                    prop: 'telephone',
                    value: ''
                },
                {
                    label: '所属建筑',
                    prop: 'type',
                    dicUrl: '/api/blade-system/dict-biz/dictionary?code=building',
                    props: {
                        label: 'dictValue',
                        value: 'dictKey'
                    },
                    value: '红旗校区',
                    valueid: '1',
                    chouse: [
                        {
                            id: '1',
                            value: '红旗校区'
                        },
                        {
                            id: '2',
                            value: '黄河路'
                        },
                        {
                            id: '3',
                            value: '科学园'
                        },
                        {
                            id: '4',
                            value: '土木楼'
                        },
                        {
                            id: '5',
                            value: '三江校区'
                        }
                    ]
                },
                {
                    label: '所属社区',
                    searchLabelWidth: '110',
                    value: '行政办公',
                    valueid: '1',
                    prop: 'campus',
                    dicUrl: '/api/blade-system/dict-biz/dictionary?code=campus',
                    chouse: [
                        {
                            id: '1',
                            value: '行政办公'
                        },
                        {
                            id: '2',
                            value: '教学科研'
                        },
                        {
                            id: '3',
                            value: '社区场馆'
                        },
                        {
                            id: '4',
                            value: '学生宿舍'
                        },
                        {
                            id: '5',
                            value: '文化风景'
                        },
                        {
                            id: '6',
                            value: '家属住宅'
                        },
                        {
                            id: '7',
                            value: '主要楼宇'
                        }
                    ]
                },
        {
          label: "介绍",
          prop: "introduce",
          value: "",
          component: "AvueUeditor",
          options: {
            action: "/api/blade-resource/oss/endpoint/put-file",
            props: {
              res: "data",
              url: "link",
            },
          },
          hide: true,
          minRows: 5,
          span: 24,
        },
        {
          label: "地址",
          hide: true,
          prop: "address",
          value: "",
        },
        {
          label: "全景地址",
          prop: "panoramaurl",
          value: "",
        },
        {
          label: "监控地址",
          hide: true,
          prop: "videourl",
          value: "",
        },
        {
          label: "网站地址",
          prop: "websiteurl",
          value: "",
        },
        {
          label: "经度",
          prop: "jd",
          value: "",
          rules: [
            {
              required: true,
              message: "请输入经度",
              trigger: "blur",
            },
          ],
        },
        {
          label: "纬度",
          prop: "wd",
          value: "",
          rules: [
            {
              required: true,
              message: "请输入纬度",
              trigger: "blur",
            },
          ],
        },
        {
          label: "偏航角",
          addDisplay: false,
          hide: true,
          prop: "heading",
          value: 0,
        },
        {
          label: "俯仰角",
          addDisplay: false,
          hide: true,
          prop: "pitch",
          value: -90,
        },
        {
          label: "翻转角",
          addDisplay: false,
          hide: true,
          prop: "roll",
          value: 0,
        },
                {
                    label: '介绍',
                    prop: 'introduce',
                    value: '',
                    component: 'AvueUeditor',
                    options: {
                        action: '/api/blade-resource/oss/endpoint/put-file',
                        props: {
                            res: 'data',
                            url: 'link'
                        }
                    },
                    hide: true,
                    minRows: 5,
                    span: 24
                },
                {
                    label: '地址',
                    hide: true,
                    prop: 'address',
                    value: ''
                },
                {
                    label: '全景地址',
                    prop: 'panoramaurl',
                    value: ''
                },
                {
                    label: '监控地址',
                    hide: true,
                    prop: 'videourl',
                    value: ''
                },
                {
                    label: '网站地址',
                    prop: 'websiteurl',
                    value: ''
                },
                {
                    label: '经度',
                    prop: 'jd',
                    value: '',
                    rules: [
                        {
                            required: true,
                            message: '请输入经度',
                            trigger: 'blur'
                        }
                    ]
                },
                {
                    label: '纬度',
                    prop: 'wd',
                    value: '',
                    rules: [
                        {
                            required: true,
                            message: '请输入纬度',
                            trigger: 'blur'
                        }
                    ]
                },
                {
                    label: '偏航角',
                    addDisplay: false,
                    hide: true,
                    prop: 'heading',
                    value: 0
                },
                {
                    label: '俯仰角',
                    addDisplay: false,
                    hide: true,
                    prop: 'pitch',
                    value: -90
                },
                {
                    label: '翻转角',
                    addDisplay: false,
                    hide: true,
                    prop: 'roll',
                    value: 0
                },
        {
          label: "高度",
          hide: true,
          addDisplay: false,
          prop: "gd",
          value: 0,
        },
                {
                    label: '高度',
                    hide: true,
                    addDisplay: false,
                    prop: 'gd',
                    value: 0
                }
        // {
        //   label: "图片",
        //   prop: "tpurl",
        //   value: "",
        //   // dataType: 'string',
        //   type: "upload",
        //   propsHttp: {
        //     res: "data",
        //     url: "link",
        //   },
        //   span: 10,
        //   listType: "picture-card",
        //   tip: "只能上传jpg/png文件,且不超过500kb",
        //   action: "/api/blade-resource/oss/endpoint/put-file",
        // },
        // {
        //   label: "二维码",
        //   prop: "codeurl",
        //   value: "",
        //   type: "upload",
        //   listType: "picture-card",
        //   //dataType: 'string',
        //   action: "/api/blade-resource/oss/endpoint/put-file",
        //   propsHttp: {
        //     res: "data",
        //     url: "link",
        //   },
        //   span: 10,
        // },
      ],
    };
  },
  computed: {
    ...mapGetters([
      "popupBgUrl",
      "pupupQRUrl",
      // 终点
      "terminus",
      // 起点
      "startingPoint",
      // 点信息
      "pointPosition",
      // 点名称
      "stateName",
      // 地址
      "siteName",
      // 电话
      "telephone",
      // 介绍
      "introduceText",
      // 详情弹框显示关闭
      "detailsPopup",
      // 全景地址
      "panoramaUrl",
      // 全景弹框显示关闭
      "panoramaPopup",
      // 监控地址
      "monitorUrl",
      // 监控弹框显示关闭
      "monitorPopup",
      "popupImgAtlas",
      // 教学
      "teachList",
      // 科研
      "liveList",
      // 校区内导航的显示关闭
      "campusNavFlag",
      "addTagPopup",
      "addTagPosition",
      // 自定义标签弹窗
      "labelLayerDataShow",
      "nowlabelLayerData",
      "addIconsLayerIconPopup", // 自定义标签编辑窗口
      "addIconsLayerIconPosition", // 自定义标签坐标
    ]),
  },
  created() {
    this.apiUrls = window.$apiUrls;
    this.audioSynth = window.speechSynthesis;
    this.audioMsg = new window.SpeechSynthesisUtterance();
    this.audioMsg.onend = function () {
      this.audioSynth.cancel();
      this.audioFlag = false;
      this.audioCourse = false;
    };
  },
  mounted() {
    global.viewer.scene.globe.depthTestAgainstTerrain = false;
  },
  watch: {
    addIconsLayerIconPopup() {
      if (this.addIconsLayerIconPopup) {
        this.addIconFromcolumn[9].value = this.addIconsLayerIconPosition[0];
        this.addIconFromcolumn[10].value = this.addIconsLayerIconPosition[1];
      } else {
        for (const k in this.addIconFromcolumn) {
          if (k == 2) {
            this.addIconFromcolumn[k].value = "红旗校区";
            this.addIconFromcolumn[k].valueid = "1";
            continue;
          }
          if (k == 3) {
            this.addIconFromcolumn[k].value = "行政办公";
            this.addIconFromcolumn[k].valueid = "1";
            continue;
          }
          this.addIconFromcolumn[k].value = "";
                // {
                //   label: "图片",
                //   prop: "tpurl",
                //   value: "",
                //   // dataType: 'string',
                //   type: "upload",
                //   propsHttp: {
                //     res: "data",
                //     url: "link",
                //   },
                //   span: 10,
                //   listType: "picture-card",
                //   tip: "只能上传jpg/png文件,且不超过500kb",
                //   action: "/api/blade-resource/oss/endpoint/put-file",
                // },
                // {
                //   label: "二维码",
                //   prop: "codeurl",
                //   value: "",
                //   type: "upload",
                //   listType: "picture-card",
                //   //dataType: 'string',
                //   action: "/api/blade-resource/oss/endpoint/put-file",
                //   propsHttp: {
                //     res: "data",
                //     url: "link",
                //   },
                //   span: 10,
                // },
            ]
        }
        this.ourImages = [];
        this.$store.commit("set_closeMapClick", false); // 开启其他操作
      }
    },
    addTagPopup() {
      if (!this.addTagPopup) {
        // console.log("取消", "see");
        this.$store.commit("set_closeMapClick", false);
      }
    },
    introduceText: {
      immediate: true,
      handler(newQuestion, oldQuestion) {
        this.audioSource = newQuestion;
        if (this.audioFlag == true) {
          this.audioSynth.cancel();
          this.audioFlag = false;
          this.audioCourse = false;
        }
      },
    },
    teachList: {
      immediate: true,
      handler(newCode, oldCode) {
        if (newCode.length > 0) {
          this.tabBtnFlag = "教学科研行政";
        }
      },
    },
    liveList: {
      immediate: true,
      handler(newCode, oldCode) {
        if (newCode.length > 0 && this.teachList.length == 0) {
          this.tabBtnFlag = "生活服务";
        }
      },
    },
    detailsPopup: {
      immediate: true,
      handler(newCode, oldCode) {
        if (newCode == false) {
          this.audioSynth.cancel();
          this.audioFlag = false;
          this.audioCourse = false;
        } else {
          if (this.audioFlag == true) {
            this.audioSynth.cancel();
            this.audioFlag = false;
            this.audioCourse = false;
          }
        }
      },
    },
  },
  methods: {
    onsuccess(response, file, fileList) {
      this.ourImages = fileList;
    },
    handleRemove(file, fileList) {
      this.ourImages = fileList;
    },
    handlePictureCardPreview(file) {
      this.dialogImageUrl = file.url;
      this.dialogVisible = true;
    },
    chouseAddicon(item) {
      this.addIconFromcolumn[item.index].value =
        this.addIconFromcolumn[item.index].chouse[item.indexc].value;
      this.addIconFromcolumn[item.index].valueid =
        this.addIconFromcolumn[item.index].chouse[item.indexc].id;
    },
    closeaddIconsLayerIconPopup() {
      this.$store.commit("SET_addIconsLayerIconPopup", false);
    },
    saveIconsLayer() {
      var imgs = [];
      // console.log("see", this.ourImages);
      // return;
      for (var k in this.ourImages) {
        imgs.push(this.ourImages[k].response);
      }
      const d = {
        tpurl: imgs.join(","),
        mechanismname: this.addIconFromcolumn[0].value,
        telephone: this.addIconFromcolumn[1].value,
        type: this.addIconFromcolumn[2].valueid,
        campus: this.addIconFromcolumn[3].valueid,
        introduce: this.addIconFromcolumn[4].value,
        address: this.addIconFromcolumn[5].value,
        panoramaurl: this.addIconFromcolumn[6].value,
        videourl: this.addIconFromcolumn[7].value,
        websiteurl: this.addIconFromcolumn[8].value,
        jd: this.addIconFromcolumn[9].value,
        wd: this.addIconFromcolumn[10].value,
        heading: this.addIconFromcolumn[11].value,
        pitch: this.addIconFromcolumn[12].value,
        roll: this.addIconFromcolumn[13].value,
        gd: this.addIconFromcolumn[14].value,
      };
      // console.log(d, "see3");
      // return;
      // this.$store.commit("set_closeMapClick", false); //开启其他操作
      add(d).then(
        (res) => {
          // console.log(res);
          if (res.data.code == 200) {
            this.$message({
              type: "success",
              message: "操作成功!",
            });
          } else {
            this.$message({
              type: "error",
              message: "新增失败!",
            });
          }
    computed: {
        ...mapGetters([
            'popupBgUrl',
            'pupupQRUrl',
            // 终点
            'terminus',
            // 起点
            'startingPoint',
            // 点信息
            'pointPosition',
            // 点名称
            'stateName',
            // 地址
            'siteName',
            // 电话
            'telephone',
            // 介绍
            'introduceText',
            // 详情弹框显示关闭
            'detailsPopup',
            // 全景地址
            'panoramaUrl',
            // 全景弹框显示关闭
            'panoramaPopup',
            // 监控地址
            'monitorUrl',
            // 监控弹框显示关闭
            'monitorPopup',
          this.closeaddIconsLayerIconPopup();
            'popupImgAtlas',
            // 教学
            'teachList',
            // 科研
            'liveList',
            // 校区内导航的显示关闭
            'campusNavFlag',
            'addTagPopup',
            'addTagPosition',
            // 自定义标签弹窗
            'labelLayerDataShow',
            'nowlabelLayerData',
            'addIconsLayerIconPopup', // 自定义标签编辑窗口
            'addIconsLayerIconPosition' // 自定义标签坐标
        ])
    },
    created () {
        var that = this
        this.apiUrls = window.$apiUrls
        this.audioSynth = window.speechSynthesis
        this.audioMsg = new window.SpeechSynthesisUtterance()
        this.audioMsg.onend = function () {
            that.audioSynth.cancel()
            that.audioFlag = false
            that.audioCourse = false
            that.audioImgUrl = '/img/icon/close-video.png'
        }
    },
    mounted () {
        global.viewer.scene.globe.depthTestAgainstTerrain = false
    },
    watch: {
        addIconsLayerIconPopup () {
            if (this.addIconsLayerIconPopup) {
                this.addIconFromcolumn[9].value = this.addIconsLayerIconPosition[0]
                this.addIconFromcolumn[10].value = this.addIconsLayerIconPosition[1]
            } else {
                for (const k in this.addIconFromcolumn) {
                    if (k == 2) {
                        this.addIconFromcolumn[k].value = '红旗校区'
                        this.addIconFromcolumn[k].valueid = '1'
                        continue
                    }
                    if (k == 3) {
                        this.addIconFromcolumn[k].value = '行政办公'
                        this.addIconFromcolumn[k].valueid = '1'
                        continue
                    }
                    this.addIconFromcolumn[k].value = ''
                }
                this.ourImages = []
                this.$store.commit('set_closeMapClick', false) // 开启其他操作
            }
        },
        (error) => {
          window.console.log(error);
        addTagPopup () {
            if (!this.addTagPopup) {
                // console.log("取消", "see");
                this.$store.commit('set_closeMapClick', false)
            }
        },
        introduceText: {
            immediate: true,
            handler (newQuestion, oldQuestion) {
                this.audioSource = newQuestion
                if (this.audioFlag == true) {
                    this.audioSynth.cancel()
                    this.audioFlag = false
                    this.audioCourse = false
                    this.audioImgUrl = '/img/icon/close-video.png'
                }
            }
        },
        teachList: {
            immediate: true,
            handler (newCode, oldCode) {
                if (newCode.length > 0) {
                    this.tabBtnFlag = '教学科研行政'
                }
            }
        },
        liveList: {
            immediate: true,
            handler (newCode, oldCode) {
                if (newCode.length > 0 && this.teachList.length == 0) {
                    this.tabBtnFlag = '生活服务'
                }
            }
        },
        detailsPopup: {
            immediate: true,
            handler (newCode, oldCode) {
                if (newCode == 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.audioImgUrl = '/img/icon/close-video.png'
                    }
                }
            }
        }
      );
    },
    screen() {
      if (this.fullscreen) {
        this.fullScreenUrl = "/img/icon/bigScreen.png";
        this.fullscreen = !this.fullscreen;
    methods: {
        onsuccess (response, file, fileList) {
            this.ourImages = fileList
        },
        handleRemove (file, fileList) {
            this.ourImages = fileList
        },
        handlePictureCardPreview (file) {
            this.dialogImageUrl = file.url
            this.dialogVisible = true
        },
        chouseAddicon (item) {
            this.addIconFromcolumn[item.index].value =
                this.addIconFromcolumn[item.index].chouse[item.indexc].value
            this.addIconFromcolumn[item.index].valueid =
                this.addIconFromcolumn[item.index].chouse[item.indexc].id
        },
        closeaddIconsLayerIconPopup () {
            this.$store.commit('SET_addIconsLayerIconPopup', false)
        },
        saveIconsLayer () {
            var imgs = []
            // console.log("see", this.ourImages);
            // return;
            for (var k in this.ourImages) {
                imgs.push(this.ourImages[k].response)
            }
            const d = {
                tpurl: imgs.join(','),
                mechanismname: this.addIconFromcolumn[0].value,
                telephone: this.addIconFromcolumn[1].value,
                type: this.addIconFromcolumn[2].valueid,
                campus: this.addIconFromcolumn[3].valueid,
                introduce: this.addIconFromcolumn[4].value,
                address: this.addIconFromcolumn[5].value,
                panoramaurl: this.addIconFromcolumn[6].value,
                videourl: this.addIconFromcolumn[7].value,
                websiteurl: this.addIconFromcolumn[8].value,
                jd: this.addIconFromcolumn[9].value,
                wd: this.addIconFromcolumn[10].value,
                heading: this.addIconFromcolumn[11].value,
                pitch: this.addIconFromcolumn[12].value,
                roll: this.addIconFromcolumn[13].value,
                gd: this.addIconFromcolumn[14].value
            }
            // console.log(d, "see3");
            // return;
            // this.$store.commit("set_closeMapClick", false); //开启其他操作
            add(d).then(
                (res) => {
                    // console.log(res);
                    if (res.data.code == 200) {
                        this.$message({
                            type: 'success',
                            message: '操作成功!'
                        })
                    } else {
                        this.$message({
                            type: 'error',
                            message: '新增失败!'
                        })
                    }
        document.getElementById("pcElHeader").style.zIndex = 9999;
      } else {
        this.fullScreenUrl = "/img/icon/smallScreen.png";
        this.fullscreen = !this.fullscreen;
                    this.closeaddIconsLayerIconPopup()
                },
                (error) => {
                    window.console.log(error)
                }
            )
        },
        screen () {
            if (this.fullscreen) {
                this.fullScreenUrl = '/img/icon/bigScreen.png'
                this.fullscreen = !this.fullscreen
        document.getElementById("pcElHeader").style.zIndex = 9;
      }
    },
                document.getElementById('pcElHeader').style.zIndex = 9999
            } else {
                this.fullScreenUrl = '/img/icon/smallScreen.png'
                this.fullscreen = !this.fullscreen
    tabBtnClick(param) {
      this.tabBtnFlag = param;
    },
                document.getElementById('pcElHeader').style.zIndex = 9
            }
        },
    comeHereClick() {
      this.$store.commit("SET_COMENAME", this.stateName);
      this.$store.commit("SET_TERMINUS", this.pointPosition);
      if (this.campusNavFlag == false) {
        this.$store.commit("SET_CAMPUSNAVFLAG", true);
      }
    },
        tabBtnClick (param) {
            this.tabBtnFlag = param
        },
    getToHereClick() {
      this.$store.commit("SET_GETTONAME", this.stateName);
      this.$store.commit("SET_STARTINGPOINT", this.pointPosition);
      if (this.campusNavFlag == false) {
        this.$store.commit("SET_CAMPUSNAVFLAG", true);
      }
    },
        comeHereClick () {
            this.$store.commit('SET_COMENAME', this.stateName)
            this.$store.commit('SET_TERMINUS', this.pointPosition)
            if (this.campusNavFlag == false) {
                this.$store.commit('SET_CAMPUSNAVFLAG', true)
            }
        },
    qrCodeClick() {
      this.QRCodeFlag = true;
    },
        getToHereClick () {
            this.$store.commit('SET_GETTONAME', this.stateName)
            this.$store.commit('SET_STARTINGPOINT', this.pointPosition)
            if (this.campusNavFlag == false) {
                this.$store.commit('SET_CAMPUSNAVFLAG', true)
            }
        },
    imgsClick() {
      this.$refs.popupImgs.clickHandler();
    },
        qrCodeClick () {
            this.QRCodeFlag = true
        },
    panoramaClick() {
      if (this.audioFlag == true) {
        this.audioSynth.cancel();
        this.audioFlag = false;
        this.audioCourse = false;
      }
        imgsClick () {
            this.$refs.popupImgs.clickHandler()
        },
      // eslint-disable-next-line new-cap
      var positions = global.DC.Transform.transformWGS84ToCartesian(
        // eslint-disable-next-line new-cap
        new global.DC.Position.fromArray(this.pointPosition)
      );
        panoramaClick () {
            if (this.audioFlag == true) {
                this.audioSynth.cancel()
                this.audioFlag = false
                this.audioCourse = false
                this.audioImgUrl = '/img/icon/close-video.png'
            }
      // eslint-disable-next-line no-unused-vars
      var panorama = new global.DC.PanoramaBox(global.viewer, {
        domId: "PanoramaBox",
        position: [positions],
      });
            // eslint-disable-next-line new-cap
            var positions = global.DC.Transform.transformWGS84ToCartesian(
                // eslint-disable-next-line new-cap
                new global.DC.Position.fromArray(this.pointPosition)
            )
      this.$store.commit("SET_DETAILSPOPUP", false);
      this.$store.commit("SET_MONITORPOPUP", false);
      this.$store.commit("SET_PANORAMAPOPUP", true);
    },
            // eslint-disable-next-line no-unused-vars
            var panorama = new global.DC.PanoramaBox(global.viewer, {
                domId: 'PanoramaBox',
                position: [positions]
            })
    monitorClick() {
      if (this.audioFlag == true) {
        this.audioSynth.cancel();
        this.audioFlag = false;
        this.audioCourse = false;
      }
      // eslint-disable-next-line new-cap
      var positions = global.DC.Transform.transformWGS84ToCartesian(
        // eslint-disable-next-line new-cap
        new global.DC.Position.fromArray(this.pointPosition)
      );
      // eslint-disable-next-line no-unused-vars
      var monitor = new global.DC.PanoramaBox(global.viewer, {
        domId: "MonitorBox",
        position: [positions],
      });
      this.$store.commit("SET_PANORAMAPOPUP", false);
      this.$store.commit("SET_DETAILSPOPUP", false);
      this.$store.commit("SET_MONITORPOPUP", true);
    },
            this.$store.commit('SET_DETAILSPOPUP', false)
            this.$store.commit('SET_MONITORPOPUP', false)
            this.$store.commit('SET_PANORAMAPOPUP', true)
        },
    returnDetailsPopup() {
      var positions = global.DC.Transform.transformWGS84ToCartesian(
        // eslint-disable-next-line new-cap
        new global.DC.Position.fromArray(this.pointPosition)
      );
        monitorClick () {
            if (this.audioFlag == true) {
                this.audioSynth.cancel()
                this.audioFlag = false
                this.audioCourse = false
                this.audioImgUrl = '/img/icon/close-video.png'
            }
            // eslint-disable-next-line new-cap
            var positions = global.DC.Transform.transformWGS84ToCartesian(
                // eslint-disable-next-line new-cap
                new global.DC.Position.fromArray(this.pointPosition)
            )
            // eslint-disable-next-line no-unused-vars
            var monitor = new global.DC.PanoramaBox(global.viewer, {
                domId: 'MonitorBox',
                position: [positions]
            })
            this.$store.commit('SET_PANORAMAPOPUP', false)
            this.$store.commit('SET_DETAILSPOPUP', false)
            this.$store.commit('SET_MONITORPOPUP', true)
        },
      // eslint-disable-next-line no-unused-vars
      var divBox = new global.DC.PanoramaBox(global.viewer, {
        domId: "divFormsDomBox",
        position: [positions],
      });
        returnDetailsPopup () {
            var positions = global.DC.Transform.transformWGS84ToCartesian(
                // eslint-disable-next-line new-cap
                new global.DC.Position.fromArray(this.pointPosition)
            )
      global.viewer.zoomToPosition(
        // eslint-disable-next-line new-cap
        new global.DC.Position.fromArray(this.pointPosition)
      );
            // eslint-disable-next-line no-unused-vars
            var divBox = new global.DC.PanoramaBox(global.viewer, {
                domId: 'divFormsDomBox',
                position: [positions]
            })
      this.$store.commit("SET_DETAILSPOPUP", true);
      this.$store.commit("SET_MONITORPOPUP", false);
      this.$store.commit("SET_PANORAMAPOPUP", false);
    },
            global.viewer.zoomToPosition(
                // eslint-disable-next-line new-cap
                new global.DC.Position.fromArray(this.pointPosition)
            )
    closeMapPopupBox() {
      if (this.audioFlag == true) {
        this.audioSynth.cancel();
        this.audioFlag = false;
        this.audioCourse = false;
      }
      this.$store.commit("SET_DETAILSPOPUP", false);
    },
            this.$store.commit('SET_DETAILSPOPUP', true)
            this.$store.commit('SET_MONITORPOPUP', false)
            this.$store.commit('SET_PANORAMAPOPUP', false)
        },
    // 新增标记相关事件
    closeAddTagBox() {
      this.$store.commit("SET_ADDTAGPOPUP", false);
    },
    closelabelLayerid() {
      this.$store.commit("openLabelLayer", {
        show: false,
      });
    },
    createTag() {
      var that = this;
        closeMapPopupBox () {
            if (this.audioFlag == true) {
                this.audioSynth.cancel()
                this.audioFlag = false
                this.audioCourse = false
                this.audioImgUrl = '/img/icon/close-video.png'
            }
            this.$store.commit('SET_DETAILSPOPUP', false)
        },
      //   console.log(this.RemoveTheBlank(this.addTagName));
        // 新增标记相关事件
        closeAddTagBox () {
            this.$store.commit('SET_ADDTAGPOPUP', false)
        },
        closelabelLayerid () {
            this.$store.commit('openLabelLayer', {
                show: false
            })
        },
        createTag () {
            var that = this
      if (this.RemoveTheBlank(this.addTagName) == "") {
        this.$message("请输入标签名称");
        return;
      }
            //   console.log(this.RemoveTheBlank(this.addTagName));
      this.$store.commit("SET_ADDTAGPOPUP", false);
            if (this.RemoveTheBlank(this.addTagName) == '') {
                this.$message('请输入标签名称')
                return
            }
      // 2022.3.2对接接口
      // 新增标签
      const data = {
        name: this.RemoveTheBlank(this.addTagName),
        jd: this.addTagPosition.lng,
        wd: this.addTagPosition.lat,
      };
      //   console.log(data);
      let oks = setTimeout(() => {
        that.$message({
          message: "新增标签失败",
          type: "warning",
        });
      }, 5000);
      setlabel(data).then((res) => {
        clearTimeout(oks);
        if (res.data.code == 200) {
          doit();
          that.$message({
            message: "新增标签成功",
            type: "success",
          });
        } else {
          that.$message({
            message: "新增标签失败",
            type: "warning",
          });
            this.$store.commit('SET_ADDTAGPOPUP', false)
            // 2022.3.2对接接口
            // 新增标签
            const data = {
                name: this.RemoveTheBlank(this.addTagName),
                jd: this.addTagPosition.lng,
                wd: this.addTagPosition.lat
            }
            //   console.log(data);
            const oks = setTimeout(() => {
                that.$message({
                    message: '新增标签失败',
                    type: 'warning'
                })
            }, 5000)
            setlabel(data).then((res) => {
                clearTimeout(oks)
                if (res.data.code == 200) {
                    doit()
                    that.$message({
                        message: '新增标签成功',
                        type: 'success'
                    })
                } else {
                    that.$message({
                        message: '新增标签失败',
                        type: 'warning'
                    })
                }
                that.addTagName = ''
            })
            const doit = () => {
                that.$store.dispatch('addLabelLayerIcon', {
                    // list: [data],
                    add: true
                })
            }
        },
        closePanoramaPopupBox () {
            this.$store.commit('SET_PANORAMAURL', '')
            this.$store.commit('SET_PANORAMAPOPUP', false)
        },
        closeMonitorPopupBox () {
            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.audioImgUrl = '/img/icon/start-video.png'
            } else {
                if (this.audioCourse == true) {
                    this.audioSynth.pause()
                    this.audioCourse = false
                    this.audioImgUrl = '/img/icon/close-video.png'
                } else {
                    this.audioSynth.resume()
                    this.audioCourse = true
                    this.audioImgUrl = '/img/icon/start-video.png'
                }
            }
        },
        mechanismDetailPopup (num, param) {
            getMechanismDetail({ num: num, mechanismName: param }).then((res) => {
                var result = res.data.data
                this.$store.commit('CLEAR_ALL', null)
                var imgArr = result.tpurl.split(',')
                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)
                if (result.videourl && result.videourl != '') {
                    this.$store.commit('SET_MONITORURL', result.videourl)
                }
                this.newPopup(result)
                global.viewer.flyToPosition(
                    new global.DC.Position(
                        Number(result.jd),
                        Number(result.wd),
                        300,
                        Number(result.heading),
                        Number(result.pitch),
                        Number(result.roll)
                    ),
                    function () { },
                    3
                )
            })
        },
        newPopup (item) {
            const position = global.DC.Transform.transformWGS84ToCartesian(
                new global.DC.Position(
                    Number(item.jd),
                    Number(item.wd),
                    Number(item.gd)
                )
            )
            // eslint-disable-next-line no-unused-vars
            var popup = new global.DC.DivForms(global.viewer, {
                domId: 'divFormsDomBox',
                position: [position]
            })
            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, '')
        }
        that.addTagName = "";
      });
      const doit = () => {
        that.$store.dispatch("addLabelLayerIcon", {
          // list: [data],
          add: true,
        });
      };
    },
    closePanoramaPopupBox() {
      this.$store.commit("SET_PANORAMAURL", "");
      this.$store.commit("SET_PANORAMAPOPUP", false);
    },
    closeMonitorPopupBox() {
      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;
      } else {
        if (this.audioCourse == true) {
          this.audioSynth.pause();
          this.audioCourse = false;
        } else {
          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 imgArr = result.tpurl.split(",");
        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);
        if (result.videourl && result.videourl != "") {
          this.$store.commit("SET_MONITORURL", result.videourl);
        }
        this.newPopup(result);
        global.viewer.flyToPosition(
          new global.DC.Position(
            Number(result.jd),
            Number(result.wd),
            300,
            Number(result.heading),
            Number(result.pitch),
            Number(result.roll)
          ),
          function () {},
          3
        );
      });
    },
    newPopup(item) {
      const position = global.DC.Transform.transformWGS84ToCartesian(
        new global.DC.Position(
          Number(item.jd),
          Number(item.wd),
          Number(item.gd)
        )
      );
      // eslint-disable-next-line no-unused-vars
      var popup = new global.DC.DivForms(global.viewer, {
        domId: "divFormsDomBox",
        position: [position],
      });
      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, "");
    },
  },
};
    }
}
</script>
<style lang="scss">
.labelLayeridewm {
  width: 250px !important;
  height: 250px !important;
    width: 250px !important;
    height: 250px !important;
}
.add-sign-box-style {
  input:-moz-placeholder,
  textarea:-moz-placeholder {
    color: #fff;
  }
  input:-ms-input-placeholder,
  textarea:-ms-input-placeholder {
    color: #fff;
  }
  input::-webkit-input-placeholder,
  textarea::-webkit-input-placeholder {
    color: #fff;
  }
    input:-moz-placeholder,
    textarea:-moz-placeholder {
        color: #fff;
    }
    input:-ms-input-placeholder,
    textarea:-ms-input-placeholder {
        color: #fff;
    }
    input::-webkit-input-placeholder,
    textarea::-webkit-input-placeholder {
        color: #fff;
    }
  .addIconsLayerinimgs {
    margin-top: 4px;
  }
    .addIconsLayerinimgs {
        margin-top: 4px;
    }
  .addIconsLayerin {
    padding: 0 10px;
  }
    .addIconsLayerin {
        padding: 0 10px;
    }
}
</style>
src/components/map/index.vue
@@ -164,8 +164,6 @@
    mounted () {
        var that = this
        let eagleViewer
        function distanceSurface () {
            global.viewer.measure.distanceSurface()
        }
@@ -249,7 +247,7 @@
            that.$store.commit('SET_VIEWEREXIST', true)
            eagleViewer = new global.DC.Viewer('eagleEyeMap', {
            global.eagleViewer = new global.DC.Viewer('eagleEyeMap', {
                animation: false,
                baseLayerPicker: false,
                imageryProvider: false,
@@ -266,7 +264,7 @@
                // sceneMode: global.DC.Namespace.Cesium.SceneMode.SCENE2D
            })
            eagleViewer.imageryLayers.addImageryProvider(
            global.eagleViewer.imageryLayers.addImageryProvider(
                new global.DC.Namespace.Cesium.UrlTemplateImageryProvider({
                    url: 'http://t{s}.tianditu.gov.cn/DataServer?T=vec_w&x={x}&y={y}&l={z}&tk=9ae78c51a0a28f06444d541148496e36',
                    subdomains: ['0', '1', '2', '3', '4', '5', '6', '7'],
@@ -276,7 +274,7 @@
                })
            )
            eagleViewer.imageryLayers.addImageryProvider(
            global.eagleViewer.imageryLayers.addImageryProvider(
                new global.DC.Namespace.Cesium.UrlTemplateImageryProvider({
                    url: 'http://t{s}.tianditu.gov.cn/DataServer?T=cva_w&x={x}&y={y}&l={z}&tk=9ae78c51a0a28f06444d541148496e36',
                    subdomains: ['0', '1', '2', '3', '4', '5', '6', '7'],
@@ -287,7 +285,7 @@
            )
            var sceneL = global.viewer.scene
            var sceneR = eagleViewer.scene
            var sceneR = global.eagleViewer.scene
            var handlerL = new global.DC.Namespace.Cesium.ScreenSpaceEventHandler(sceneL.canvas)
            var handlerR = new global.DC.Namespace.Cesium.ScreenSpaceEventHandler(sceneR.canvas)
@@ -312,7 +310,7 @@
                if (isLeftTrigger) {
                    const position = global.DC.Transform.transformCartesianToWGS84(global.viewer.camera.position)
                    eagleViewer.camera.flyTo({
                    global.eagleViewer.camera.flyTo({
                        destination: global.DC.Transform.transformWGS84ToCartesian(new global.DC.Position(position.lng, position.lat, position.alt + 1000)),
@@ -338,17 +336,19 @@
            var synceagleViewer = function () {
                if (isRightTrigger && that.samllMapFlag) {
                    const position = global.DC.Transform.transformCartesianToWGS84(global.eagleViewer.camera.position)
                    global.viewer.camera.flyTo({
                        destination: eagleViewer.camera.position,
                        destination: global.DC.Transform.transformWGS84ToCartesian(new global.DC.Position(position.lng, position.lat, position.alt > 1100 ? position.alt - 1000 : 100)),
                        orientation: {
                            heading: eagleViewer.camera.heading,
                            heading: global.eagleViewer.camera.heading,
                            pitch: eagleViewer.camera.pitch,
                            pitch: global.eagleViewer.camera.pitch,
                            roll: eagleViewer.camera.roll
                            roll: global.eagleViewer.camera.roll
                        },
@@ -358,7 +358,7 @@
                }
            }
            eagleViewer.camera.setView({
            global.eagleViewer.camera.setView({
                // Cesium的坐标是以地心为原点,一向指向南美洲,一向指向亚洲,一向指向北极州
                // fromDegrees()方法,将经纬度和高程转换为世界坐标
                destination: global.DC.Namespace.Cesium.Cartesian3.fromDegrees(
@@ -373,9 +373,9 @@
                }
            })
            eagleViewer.camera.changed.addEventListener(synceagleViewer)
            global.eagleViewer.camera.changed.addEventListener(synceagleViewer)
            eagleViewer.scene.preRender.addEventListener(synceagleViewer)
            global.eagleViewer.scene.preRender.addEventListener(synceagleViewer)
            // global.viewer.camera.percentageChanged = 0.01
            // eagleViewer.camera.percentageChanged = 0.01
src/main.js
@@ -52,6 +52,8 @@
    tilesetLayer: null
}
global.viewer = null // 将viewer提升到全局变量,方便在工程中直接使用
global.eagleViewer = null // 将viewer提升到全局变量,方便在工程中直接使用
DC.accessToken = 'U2FsdGVkX19E68JwtuCiNYLQg2UETLoPcwbGWsp4SejjwWVGadfsVjxZ4AGTQDzle7IlVcGFE8ZNPxxFr5gOThfeJdsOCWDWe7gJPishuAw='
global.echarts = echarts // 将DC提升到全局变量,方便在工程中直接使用
src/pcLayout/index.vue
@@ -5,6 +5,8 @@
                <img src="/img/logo.png" alt />
                <div class="header-title">智慧校区大数据三维可视化平台</div>
                <el-menu
                    menu-trigger="click"
                    :unique-opened="true"
                    :default-active="$router.currentRoute.path"
                    class="el-menu-demo"
                    mode="horizontal"
@@ -40,7 +42,7 @@
                        <el-menu-item index="/pcLayout/default/arc/rest">主要楼宇</el-menu-item>
                    </el-submenu>
                    <el-submenu index="service">
                    <el-submenu popper-class="only-life-box" index="service">
                        <template slot="title">
                            <i class="custom-icon menu-shfw"></i> 生活服务设施
                        </template>
src/pcviews/specialmap/welcome.vue
@@ -18,7 +18,7 @@
                        <img
                            @click="audioPlay"
                            class="audio-control deblurring"
                            src="/img/navicon/audio.png"
                            :src="audioImgUrl"
                            alt
                        />
                    </a>
@@ -102,19 +102,23 @@
            audioCourse: false,
            audioSynth: null,
            audioMsg: null,
            panoramaShow: false
            panoramaShow: false,
            audioImgUrl: '/img/icon/start-video.png'
        }
    },
    created () { },
    mounted () {
        var that = this
        this.audioSynth = window.speechSynthesis
        this.audioMsg = new window.SpeechSynthesisUtterance()
        this.audioMsg.onend = function () {
            // this.audioSynth.cancel();
            this.audioFlag = false
            this.audioCourse = false
            that.audioFlag = false
            that.audioCourse = false
            that.audioImgUrl = '/img/icon/close-video.png'
        }
        this.getData()
@@ -232,16 +236,20 @@
                this.audioSynth.speak(this.audioMsg)
                this.audioFlag = true
                this.audioCourse = true
                this.audioImgUrl = '/img/icon/start-video.png'
            } else {
                if (this.audioCourse == true) {
                    this.audioSynth.pause()
                    this.audioCourse = false
                    this.audioImgUrl = '/img/icon/close-video.png'
                } else {
                    this.audioSynth.resume()
                    this.audioCourse = true
                    this.audioImgUrl = '/img/icon/start-video.png'
                }
            }
        },
        closeModel () {
            global.viewer.removeLayer(pathLayer)
            global.viewer.removeLayer(pointLayer)
@@ -253,6 +261,7 @@
            this.$store.dispatch('delVisitedViews', this.$route)
            this.$router.push('/pcLayout/default')
        },
        panoramaPlay () {
            this.panoramaShow = true
            this.panoramaUrl = this.panoramaUrlOne
src/router/axios.js
@@ -13,7 +13,7 @@
//   console.log(url);
// }, 3000);
window.$apiUrls = 'http://171.34.197.243:782'
// window.$apiUrls = 'http://192.168.0.110:82'
// window.$apiUrls = 'http://192.168.0.222:82'
const service = axios.create({
    //   baseURL: 'http://192.168.0.107:83',
src/styles/pcpage/dc-ui.scss
@@ -30,16 +30,15 @@
        fill: #2196f3;
    }
    .div-icon {
        .tag-entitys-box {
            animation: moveLayerIcon 0.5s linear 0;
        }
    // .div-icon {
    //     .tag-entitys-box {
    //         animation: moveLayerIcon 0.5s linear 0;
    //     }
        .tag-entitys-box:hover {
            animation: moveLayerIcon 0.5s linear infinite;
        }
    }
    //     .tag-entitys-box:hover {
    //         animation: moveLayerIcon 0.5s linear infinite;
    //     }
    // }
}
src/styles/pcpage/element-ui.scss
@@ -18,6 +18,8 @@
            border-bottom: none !important;
        }
        .el-menu-item:hover {
            background: #1A78C2 !important;
        }
@@ -42,6 +44,8 @@
                    font-size: 16px !important;
                }
            }
        }
        .el-main {
@@ -92,4 +96,62 @@
.el-image-viewer__wrapper {
    z-index: 111111 !important;
}
.el-menu--horizontal.only-life-box {
    position: fixed !important;
    top: 0 !important;
    left: 0 !important;
    right: 0 !important;
    bottom: 0 !important;
    margin: auto !important;
    padding: 10px !important;
    background: #2195f394;
    width: 720px;
    height: 258px;
    border-radius: 10px;
    overflow: hidden;
    ul {
        width: 100%;
        height: 100%;
        display: flex;
        flex-wrap: wrap;
        border-top: 1px solid #e5e5e5 !important;
        border-right: 1px solid #e5e5e5 !important;
        border-radius: 10px !important;
        overflow: hidden;
        li {
            width: 180px !important;
            height: 86px !important;
            line-height: 86px !important;
            // border-top: 1px solid #e5e5e5 !important;
            border-left: 1px solid #e5e5e5 !important;
            box-sizing: border-box;
        }
        li:nth-child(1) {
            border-top-left-radius: 10px
        }
        li:nth-child(4) {
            border-top-right-radius: 10px
        }
        li:nth-child(9) {
            border-bottom-left-radius: 10px
        }
        li:nth-child(12) {
            border-bottom-right-radius: 10px;
        }
        li:nth-child(12).el-menu-item {
            border-bottom: 1px solid #e5e5e5 !important;
        }
    }
}