From 81f54040c2cb65537c6c6e1db8358a39a57dea0d Mon Sep 17 00:00:00 2001
From: mayisheng <admin>
Date: Mon, 15 Aug 2022 16:14:01 +0800
Subject: [PATCH] 1

---
 src/pcviews/specialmap/welcome.vue | 1025 +++++++++++++++++++++++++++++++-------------------------
 1 files changed, 575 insertions(+), 450 deletions(-)

diff --git a/src/pcviews/specialmap/welcome.vue b/src/pcviews/specialmap/welcome.vue
index 619beb0..1968d5c 100644
--- a/src/pcviews/specialmap/welcome.vue
+++ b/src/pcviews/specialmap/welcome.vue
@@ -1,220 +1,307 @@
 /* * @Author: Morpheus * @Name: 校区迎新 * @Date: 2021-11-15 17:14:47 * @Last
 Modified by: Morpheus * @Last Modified time: 2022-01-26 10:51:24 */
 <template>
-  <div>
-    <div class="welcome-container">
-      <div class="header">
-        <div class="title">
-          {{ title }}
-          <a href="javascript:void(0);" title="全景浏览">
-            <img
-              @click="panoramaPlay"
-              class="panorama-control"
-              src="/img/icon/panorama.png"
-              alt=""
-            />
-          </a>
-          <a href="javascript:void(0);" title="语音介绍">
-            <img
-              @click="audioPlay"
-              class="audio-control"
-              src="/img/navicon/audio.png"
-              alt=""
-            />
-          </a>
-          <a href="javascript:void(0);" title="关闭">
-            <img
-              @click="closeModel"
-              class="close-box"
-              src="/img/navicon/close.png"
-              alt=""
-            />
-          </a>
+    <div>
+        <div class="welcome-container">
+            <div class="header">
+                <div class="title">
+                    {{ title }}
+                    <a href="javascript:void(0);" title="全景浏览">
+                        <img
+                            @click="panoramaPlay"
+                            class="panorama-control deblurring"
+                            src="/img/icon/panorama.png"
+                            alt
+                        />
+                    </a>
+                    <a href="javascript:void(0);" title="语音介绍">
+                        <img
+                            @click="audioPlay"
+                            class="audio-control deblurring"
+                            :src="audioImgUrl"
+                            alt
+                        />
+                    </a>
+                    <a href="javascript:void(0);" title="关闭">
+                        <img
+                            @click="closeModel"
+                            class="close-box deblurring"
+                            src="/img/navicon/close.png"
+                            alt
+                        />
+                    </a>
+                </div>
+            </div>
+            <div class="content-box">
+                <div class="img-exhibition">
+                    <div class="content">
+                        <el-carousel :interval="5000" arrow="always" height="300px">
+                            <el-carousel-item v-for="item in list" :key="item">
+                                <el-image :src="item" :preview-src-list="[item]"></el-image>
+                            </el-carousel-item>
+                        </el-carousel>
+                    </div>
+                </div>
+                <div class="organizer">主办:{{ sponsor }}</div>
+                <div class="undertake">承办:{{ undertake }}</div>
+                <div class="time-box">时间:{{ time }}</div>
+                <div class="text-introduce">
+                    <div class="title">相关介绍:</div>
+                    <div class="content">
+                        <p v-text="introduce"></p>
+                    </div>
+                </div>
+                <div class="panorama-box" v-show="panoramaShow">
+                    <div class="title">
+                        全景浏览
+                        <a href="javascript:void(0);" title="关闭">
+                            <img
+                                @click="(panoramaShow = false), (panoramaUrl = '')"
+                                class="close-box"
+                                src="/img/navicon/close.png"
+                                alt
+                            />
+                        </a>
+                    </div>
+                    <div class="content">
+                        <iframe
+                            style="width: 100%; height: 100%"
+                            :src="panoramaUrl"
+                            frameborder="0"
+                        ></iframe>
+                    </div>
+                </div>
+            </div>
         </div>
-      </div>
-      <div class="content-box">
-        <div class="img-exhibition">
-          <div class="content">
-            <el-carousel :interval="5000" arrow="always" height="300px">
-              <el-carousel-item v-for="item in list" :key="item">
-                <el-image :src="item" :preview-src-list="[item]"> </el-image>
-              </el-carousel-item>
-            </el-carousel>
-          </div>
+
+        <div v-show="layerList.length > 0" class="layer-manage-container">
+            <div class="header">图层管理</div>
+            <ul class="content">
+                <li v-for="(item, index) in layerList" :key="index">
+                    {{item.name}}:
+                    <el-switch v-model="item.flag" @change="switchChange(item)"></el-switch>
+                </li>
+            </ul>
         </div>
-        <div class="organizer">主办:{{ sponsor }}</div>
-        <div class="undertake">承办:{{ undertake }}</div>
-        <div class="time-box">时间:{{ time }}</div>
-        <div class="text-introduce">
-          <div class="title">相关介绍:</div>
-          <div class="content">
-            <p v-text="introduce"></p>
-          </div>
-        </div>
-        <div class="panorama-box" v-show="panoramaShow">
-          <div class="title">
-            全景浏览
-            <a href="javascript:void(0);" title="关闭">
-              <img
-                @click="(panoramaShow = false), (panoramaUrl = '')"
-                class="close-box"
-                src="/img/navicon/close.png"
-                alt=""
-              />
-            </a>
-          </div>
-          <div class="content">
-            <iframe
-              style="width: 100%; height: 100%"
-              :src="panoramaUrl"
-              frameborder="0"
-            ></iframe>
-          </div>
-        </div>
-      </div>
     </div>
-  </div>
 </template>
 
 <script>
-import { getWelcome } from "@/api/pc/public/specialmap";
-import { mapGetters } from "vuex";
+import { getWelcome } from '@/api/pc/public/specialmap'
+import { mapGetters } from 'vuex'
+
+let pathLayer = null
+let pointLayer = null
+let special = []
 
 export default {
-  data() {
-    return {
-      time: "",
-      sponsor: "",
-      undertake: "",
-      title: "",
-      introduce: "",
-      list: [],
-      pathList: [],
-      pointNameList: [],
-      pointList: [],
-      DC: null,
-      pathLayer: null,
-      pointLayer: null,
-      panoramaUrlOne: "",
-      panoramaUrl: "",
-      audioSource: "",
-      audioFlag: false,
-      audioCourse: false,
-      audioSynth: null,
-      audioMsg: null,
-      panoramaShow: false,
-    };
-  },
-  created() {},
-  mounted() {
-    // console.log("显示", "see1");
-
-    this.DC = global.DC;
-
-    this.audioSynth = window.speechSynthesis;
-
-    this.audioMsg = new window.SpeechSynthesisUtterance();
-
-    this.audioMsg.onend = function () {
-      // this.audioSynth.cancel();
-      this.audioFlag = false;
-      this.audioCourse = false;
-    };
-    this.getData();
-  },
-  computed: {
-    ...mapGetters([
-      "viewer",
-      // 校区内导航的显示关闭
-      "campusNavFlag",
-      "orgNavBarFlag",
-      "arcNavBarFlag",
-    ]),
-  },
-  methods: {
-    getData() {
-      getWelcome({ hdname: "校区迎新" }).then((res) => {
-        var result = res.data.data;
-        this.title = result.hdname;
-        this.time = result.time;
-        this.sponsor = result.sponsor;
-        this.undertake = result.undertake;
-        this.panoramaUrl = result.panoramaurl;
-        this.panoramaUrlOne = result.panoramaurl;
-        this.introduce = result.context;
-        this.audioSource = result.context;
-
-        this.audioPlay();
-
-        this.list = result.tpurl.split(",");
-        this.pointNameList = result.addressname.split(",");
-        this.pointList = result.address.split(";");
-
-        var a = result.lx.split(";");
-
-        a.forEach((item) => {
-          var b = item.split("(");
-          var c = b[1].substr(0, b[1].length - 1);
-          var d = c.split(",");
-          var j = [];
-          d.forEach((it) => {
-            var e = it.split(" ");
-            var f = e.join(",");
-            j.push(f);
-          });
-          var k = j.join(";");
-          this.pathList.push(k);
-        });
-
-        this.pathLayer = new this.DC.VectorLayer("pathLayer");
-        this.viewer.addLayer(this.pathLayer);
-
-        this.pointLayer = new this.DC.HtmlLayer("pointLayer");
-        this.viewer.addLayer(this.pointLayer);
-
-        this.pathList.forEach((item) => {
-          this.drawPolyline(item);
-        });
-
-        this.pointList.forEach((item, index) => {
-          this.drawPoint(item.split(","), this.pointNameList[index]);
-        });
-        if (this.pointList.length > 0) {
-          this.$store.dispatch("pcMoveView", {
-            viewer: this.viewer,
-            jd: +this.pointList[0].split(",")[0] - 0.0005,
-            wd: this.pointList[0].split(",")[1],
-          });
-        } else {
-          this.$store.dispatch("pcMoveView", {
-            viewer: this.viewer,
-            jd: +this.pathList[0].split(";")[0].split(",")[0] - 0.0005,
-            wd: this.pathList[0].split(";")[0].split(",")[1],
-          });
+    data () {
+        return {
+            url: '',
+            layerList: [],
+            time: '',
+            sponsor: '',
+            undertake: '',
+            title: '',
+            introduce: '',
+            list: [],
+            pathList: [],
+            pointNameList: [],
+            pointList: [],
+            panoramaUrlOne: '',
+            panoramaUrl: '',
+            audioSource: '',
+            audioFlag: false,
+            audioCourse: false,
+            audioSynth: null,
+            audioMsg: null,
+            panoramaShow: false,
+            audioImgUrl: '/img/icon/start-video.png',
+            urlDataName: null
         }
-      });
     },
-    drawPolyline(item) {
-      const polyline = new this.DC.Polyline(item);
+    created () { },
+    mounted () {
+        var that = this
 
-      polyline.setStyle({
-        width: 6,
-        arcType: true,
-        material: new this.DC.PolylineImageTrailMaterialProperty({
-          color: new this.DC.Color(255, 0, 0),
-          speed: 60,
-          image: "/img/icon/right.png",
-          repeat: { x: 320, y: 1 },
-        }),
-        clampToGround: true,
-      });
+        this.audioSynth = window.speechSynthesis
 
-      this.pathLayer.addOverlay(polyline);
+        this.audioMsg = new window.SpeechSynthesisUtterance()
+
+        this.audioMsg.onend = function () {
+            // this.audioSynth.cancel();
+            that.audioFlag = false
+            that.audioCourse = false
+            that.audioImgUrl = '/img/icon/close-video.png'
+        }
+
+        window.onbeforeunload = e => { // 刷新时弹出提示
+            this.audioSynth.cancel()
+        }
     },
-    drawPoint(item, name) {
-      const divIcon = new this.DC.DivIcon(
-        new this.DC.Position(Number(item[0]), Number(item[1]), 0),
-        `
+    watch: {
+        $route: {
+            immediate: true,
+            handler (newData, oldData) {
+                if (this.urlDataName == null) {
+                    this.urlDataName = this.$route.query.name
+                    this.getData()
+                } else if (newData.query.name != this.urlDataName) {
+                    if (special.length > 0) {
+                        special.forEach(item => {
+                            global.viewer.imageryLayers.remove(
+                                item.layer
+                            )
+                        })
+                    }
+                    special = []
+                    this.audioSynth.cancel()
+                    global.viewer.removeLayer(pathLayer)
+                    global.viewer.removeLayer(pointLayer)
+                    this.urlDataName = this.$route.query.name
+                    this.getData()
+                }
+                // if (this.$route.query.type) {//需要监听的参数
+                //     this.type = this.$route.query.type
+                // }
+            }
+        }
+    },
+    computed: {
+        ...mapGetters([
+            // 校区内导航的显示关闭
+            'campusNavFlag',
+            'orgNavBarFlag',
+            'arcNavBarFlag'
+        ])
+    },
+    methods: {
+        switchChange (item) {
+            if (item.flag == true) {
+                this.addArcgisLayer(item.url, item.name)
+            } else {
+                this.removeArcgisLayer(item.name)
+            }
+        },
+
+        addArcgisLayer (url, name) {
+            var layer = global.viewer.imageryLayers.addImageryProvider(
+                new global.DC.Namespace.Cesium.ArcGisMapServerImageryProvider({
+                    url: url
+                })
+            )
+            special.push({
+                layer,
+                name
+            })
+        },
+
+        removeArcgisLayer (name) {
+            special.forEach((item, index) => {
+                if (item.name == name) {
+                    global.viewer.imageryLayers.remove(
+                        item.layer
+                    )
+                    special.splice(index, 1)
+                }
+            })
+        },
+
+        getData () {
+            getWelcome({ hdname: this.urlDataName }).then((res) => {
+                var result = res.data.data
+                this.title = result.hdname
+                this.time = result.time
+                this.sponsor = result.sponsor
+                this.undertake = result.undertake
+                this.panoramaUrl = result.panoramaurl
+                this.panoramaUrlOne = result.panoramaurl
+                this.introduce = result.context
+                this.audioSource = result.context
+
+                this.audioPlay()
+
+                this.list = result.tpurl.split(',')
+                this.pointNameList = result.addressname.split(',')
+                this.pointList = result.address.split(';')
+                this.layerList = []
+
+                if (result.mapname != '' && result.mapname != null && result.mapname != undefined) {
+                    var mapname = result.mapname.split(',')
+                    var url = result.url.split(',')
+                    mapname.forEach((item, index) => {
+                        this.layerList.push({ flag: false, name: item, url: url[index] })
+                    })
+                    this.layerList[0].flag = true
+                    this.addArcgisLayer(this.layerList[0].url, this.layerList[0].name)
+                }
+
+                var a = result.lx.split(';')
+
+                a.forEach((item) => {
+                    var b = item.split('(')
+                    var c = b[1].substr(0, b[1].length - 1)
+                    var d = c.split(',')
+                    var j = []
+                    d.forEach((it) => {
+                        var e = it.split(' ')
+                        var f = e.join(',')
+                        j.push(f)
+                    })
+                    var k = j.join(';')
+                    this.pathList.push(k)
+                })
+
+                pathLayer = new global.DC.VectorLayer('pathLayer')
+                global.viewer.addLayer(pathLayer)
+
+                pointLayer = new global.DC.HtmlLayer('pointLayer')
+                global.viewer.addLayer(pointLayer)
+
+                this.pathList.forEach((item) => {
+                    this.drawPolyline(item)
+                })
+
+                this.pointList.forEach((item, index) => {
+                    this.drawPoint(item.split(','), this.pointNameList[index])
+                })
+
+                if (this.pointList.length > 0) {
+                    this.$store.dispatch('pcMoveView', {
+                        viewer: global.viewer,
+                        jd: +this.pointList[0].split(',')[0] - 0.0005,
+                        wd: this.pointList[0].split(',')[1]
+                    })
+                } else {
+                    this.$store.dispatch('pcMoveView', {
+                        viewer: global.viewer,
+                        jd: +this.pathList[0].split(';')[0].split(',')[0] - 0.0005,
+                        wd: this.pathList[0].split(';')[0].split(',')[1]
+                    })
+                }
+            })
+        },
+        drawPolyline (item) {
+            const polyline = new global.DC.Polyline(item)
+
+            polyline.setStyle({
+                width: 6,
+                arcType: true,
+                material: new global.DC.PolylineImageTrailMaterialProperty({
+                    color: global.DC.Namespace.Cesium.Color.fromBytes(10, 255, 10),
+                    speed: 60,
+                    image: '/img/icon/right.png',
+                    repeat: { x: 320, y: 1 }
+                }),
+                clampToGround: true
+            })
+
+            pathLayer.addOverlay(polyline)
+        },
+        drawPoint (item, name) {
+            const divIcon = new global.DC.DivIcon(
+                new global.DC.Position(Number(item[0]), Number(item[1]), 0),
+                `
                     <div class="point-entitys-box">
                         <div class="point-logo">
                             <img src="/img/icon/activity.png">
@@ -224,199 +311,77 @@
                         </div>
                     </div>
                 `
-      );
-      this.pointLayer.addOverlay(divIcon);
-    },
-    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;
+            )
+            pointLayer.addOverlay(divIcon)
+        },
+        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'
+                }
+            }
+        },
+        closeModel () {
+            if (special.length > 0) {
+                special.forEach(item => {
+                    global.viewer.imageryLayers.remove(
+                        item.layer
+                    )
+                })
+            }
+            special = []
+
+            global.viewer.removeLayer(pathLayer)
+            global.viewer.removeLayer(pointLayer)
+
+            this.audioSynth.cancel()
+            this.audioFlag = false
+            this.audioCourse = false
+
+            this.$store.dispatch('delVisitedViews', this.$route)
+            this.$router.push('/pcLayout/default')
+        },
+        panoramaPlay () {
+            this.panoramaShow = true
+            this.panoramaUrl = this.panoramaUrlOne
         }
-      }
     },
-    closeModel() {
-      this.viewer.removeLayer(this.pathLayer);
-      this.viewer.removeLayer(this.pointLayer);
-
-      this.audioSynth.cancel();
-      this.audioFlag = false;
-      this.audioCourse = false;
-
-      this.$store.dispatch("delVisitedViews", this.$route);
-      this.$router.push("/pcLayout/default");
-    },
-    panoramaPlay() {
-      this.panoramaShow = true;
-      this.panoramaUrl = this.panoramaUrlOne;
-    },
-  },
-  destroyed() {
-    // this.audioPlay();
-    // console.log("关闭", "see1");
-  },
-};
+    destroyed () {
+        this.audioSynth.cancel()
+        global.viewer.removeLayer(pathLayer)
+        global.viewer.removeLayer(pointLayer)
+        // console.log("关闭", "see1");
+    }
+}
 </script>
 
 <style lang="scss" scope>
 .welcome-container {
-  padding: 10px;
-  position: fixed;
-  top: 132px;
-  left: 132px;
-  width: 480px;
-  height: 720px;
-  background: rgba(40, 187, 240, 0.7);
-  border-radius: 10px;
-  color: #fff;
-  border: 1px solid #29baf1;
-  box-shadow: 0 0 10px 2px #29baf1;
+    padding: 10px;
+    position: fixed;
+    top: 132px;
+    left: 132px;
+    width: 480px;
+    height: 720px;
+    background: rgba(40, 187, 240, 0.7);
+    border-radius: 10px;
+    color: #fff;
+    border: 1px solid #29baf1;
+    box-shadow: 0 0 10px 2px #29baf1;
 
-  .header {
-    margin-bottom: 10px;
-    height: 36px;
-    line-height: 36px;
-    text-align: center;
-    position: relative;
-    background: #29baf1;
-
-    .title {
-      .panorama-control {
-        position: absolute;
-        top: 0;
-        right: 56px;
-        bottom: 0;
-        left: auto;
-        margin: auto;
-        width: 16px;
-        height: 16px;
-        cursor: pointer;
-      }
-
-      .audio-control {
-        position: absolute;
-        top: 0;
-        right: 32px;
-        bottom: 0;
-        left: auto;
-        margin: auto;
-        width: 16px;
-        height: 16px;
-        cursor: pointer;
-      }
-
-      .close-box {
-        position: absolute;
-        top: 0;
-        right: 8px;
-        bottom: 0;
-        left: auto;
-        margin: auto;
-        width: 16px;
-        height: 16px;
-        cursor: pointer;
-      }
-    }
-  }
-
-  .content-box {
-    padding: 0 16px;
-    height: calc(100% - 36px);
-
-    & > div {
-      margin-bottom: 10px;
-    }
-
-    & > div:last-child {
-      margin-bottom: 0px;
-    }
-
-    .text-introduce {
-      height: calc(100% - 458px);
-
-      .title {
-        position: relative;
-        padding-left: 24px;
-        height: 36px;
-        line-height: 36px;
-
-        &::before {
-          position: absolute;
-          top: 12px;
-          left: 0;
-          width: 0;
-          height: 6px;
-          border: 6px solid #fff;
-          box-sizing: border-box;
-          box-shadow: 0px 0px 4px 1px #fff;
-          border-radius: 50%;
-          content: "";
-        }
-      }
-
-      .content {
-        height: calc(100% - 36px);
-
-        p {
-          height: 100%;
-          text-indent: 2em;
-          font-size: 16px;
-          letter-spacing: 2px;
-          line-height: 24px;
-          overflow-y: auto;
-        }
-      }
-    }
-
-    .organizer,
-    .undertake,
-    .time-box {
-      padding-left: 24px;
-      position: relative;
-
-      height: 36px;
-      line-height: 36px;
-
-      &::before {
-        position: absolute;
-        top: 12px;
-        left: 0px;
-        width: 0;
-        height: 6px;
-        border: 6px solid #fff;
-        box-sizing: border-box;
-        box-shadow: 0px 0px 4px 1px #fff;
-        border-radius: 50%;
-        content: "";
-      }
-    }
-
-    .panorama-box {
-      padding: 10px;
-      margin: auto !important;
-      position: fixed;
-      top: 0;
-      left: 0;
-      right: 0;
-      bottom: 0;
-      z-index: 10;
-      width: 560px;
-      height: 406px;
-      background: rgba(40, 187, 240, 0.7);
-      border-radius: 10px;
-      color: #fff;
-      border: 1px solid #29baf1;
-      box-shadow: 0 0 10px 2px #29baf1;
-
-      .title {
+    .header {
         margin-bottom: 10px;
         height: 36px;
         line-height: 36px;
@@ -424,81 +389,241 @@
         position: relative;
         background: #29baf1;
 
-        .panorama-control {
-          position: absolute;
-          top: 0;
-          right: 56px;
-          bottom: 0;
-          left: auto;
-          margin: auto;
-          width: 16px;
-          height: 16px;
-          cursor: pointer;
-        }
+        .title {
+            .panorama-control {
+                position: absolute;
+                top: 0;
+                right: 56px;
+                bottom: 0;
+                left: auto;
+                margin: auto;
+                width: 16px;
+                height: 16px;
+                cursor: pointer;
+            }
 
-        .audio-control {
-          position: absolute;
-          top: 0;
-          right: 32px;
-          bottom: 0;
-          left: auto;
-          margin: auto;
-          width: 16px;
-          height: 16px;
-          cursor: pointer;
-        }
+            .audio-control {
+                position: absolute;
+                top: 0;
+                right: 32px;
+                bottom: 0;
+                left: auto;
+                margin: auto;
+                width: 16px;
+                height: 16px;
+                cursor: pointer;
+            }
 
-        .close-box {
-          position: absolute;
-          top: 0;
-          right: 8px;
-          bottom: 0;
-          left: auto;
-          margin: auto;
-          width: 16px;
-          height: 16px;
-          cursor: pointer;
+            .close-box {
+                position: absolute;
+                top: 0;
+                right: 8px;
+                bottom: 0;
+                left: auto;
+                margin: auto;
+                width: 16px;
+                height: 16px;
+                cursor: pointer;
+            }
         }
-      }
-
-      .content {
-        padding: 0 10px;
-        height: calc(100% - 46px);
-
-        .iframe {
-          width: 100%;
-          height: 100%;
-        }
-      }
     }
 
-    .img-exhibition {
-      height: 300px;
+    .content-box {
+        padding: 0 16px;
+        height: calc(100% - 36px);
 
-      .content {
-        .el-image {
-          position: absolute;
-          top: 0;
-          left: 0;
-          right: 0;
-          bottom: 0;
-          margin: auto;
-          // width: 100%;
-          height: 100%;
+        & > div {
+            margin-bottom: 10px;
+        }
 
-          img {
-            position: absolute;
+        & > div:last-child {
+            margin-bottom: 0px;
+        }
+
+        .text-introduce {
+            height: calc(100% - 458px);
+
+            .title {
+                position: relative;
+                padding-left: 24px;
+                height: 36px;
+                line-height: 36px;
+
+                &::before {
+                    position: absolute;
+                    top: 12px;
+                    left: 0;
+                    width: 0;
+                    height: 6px;
+                    border: 6px solid #fff;
+                    box-sizing: border-box;
+                    box-shadow: 0px 0px 4px 1px #fff;
+                    border-radius: 50%;
+                    content: '';
+                }
+            }
+
+            .content {
+                height: calc(100% - 36px);
+
+                p {
+                    height: 100%;
+                    text-indent: 2em;
+                    font-size: 16px;
+                    letter-spacing: 2px;
+                    line-height: 24px;
+                    overflow-y: auto;
+                }
+            }
+        }
+
+        .organizer,
+        .undertake,
+        .time-box {
+            padding-left: 24px;
+            position: relative;
+
+            height: 36px;
+            line-height: 36px;
+
+            &::before {
+                position: absolute;
+                top: 12px;
+                left: 0px;
+                width: 0;
+                height: 6px;
+                border: 6px solid #fff;
+                box-sizing: border-box;
+                box-shadow: 0px 0px 4px 1px #fff;
+                border-radius: 50%;
+                content: '';
+            }
+        }
+
+        .panorama-box {
+            padding: 10px;
+            margin: auto !important;
+            position: fixed;
             top: 0;
             left: 0;
             right: 0;
             bottom: 0;
-            margin: auto;
-            width: 100%;
-            height: 100%;
-          }
+            z-index: 10;
+            width: 560px;
+            height: 406px;
+            background: rgba(40, 187, 240, 0.7);
+            border-radius: 10px;
+            color: #fff;
+            border: 1px solid #29baf1;
+            box-shadow: 0 0 10px 2px #29baf1;
+
+            .title {
+                margin-bottom: 10px;
+                height: 36px;
+                line-height: 36px;
+                text-align: center;
+                position: relative;
+                background: #29baf1;
+
+                .panorama-control {
+                    position: absolute;
+                    top: 0;
+                    right: 56px;
+                    bottom: 0;
+                    left: auto;
+                    margin: auto;
+                    width: 16px;
+                    height: 16px;
+                    cursor: pointer;
+                }
+
+                .audio-control {
+                    position: absolute;
+                    top: 0;
+                    right: 32px;
+                    bottom: 0;
+                    left: auto;
+                    margin: auto;
+                    width: 16px;
+                    height: 16px;
+                    cursor: pointer;
+                }
+
+                .close-box {
+                    position: absolute;
+                    top: 0;
+                    right: 8px;
+                    bottom: 0;
+                    left: auto;
+                    margin: auto;
+                    width: 16px;
+                    height: 16px;
+                    cursor: pointer;
+                }
+            }
+
+            .content {
+                padding: 0 10px;
+                height: calc(100% - 46px);
+
+                .iframe {
+                    width: 100%;
+                    height: 100%;
+                }
+            }
         }
-      }
+
+        .img-exhibition {
+            height: 300px;
+
+            .content {
+                .el-image {
+                    position: absolute;
+                    top: 0;
+                    left: 0;
+                    right: 0;
+                    bottom: 0;
+                    margin: auto;
+                    // width: 100%;
+                    height: 100%;
+
+                    img {
+                        position: absolute;
+                        top: 0;
+                        left: 0;
+                        right: 0;
+                        bottom: 0;
+                        margin: auto;
+                        width: 100%;
+                        height: 100%;
+                    }
+                }
+            }
+        }
     }
-  }
+}
+
+.layer-manage-container {
+    padding: 0 10px 10px 10px;
+    position: fixed;
+    right: 10px;
+    bottom: 240px;
+    width: 120px;
+    background: rgba(40, 187, 240, 0.7);
+    border-radius: 10px;
+    color: #fff;
+    border: 1px solid #29baf1;
+    box-shadow: 0 0 10px 2px #29baf1;
+
+    .header {
+        line-height: 36px;
+        text-align: center;
+    }
+
+    .content {
+        max-height: calc(180px - 36px);
+        overflow-y: auto;
+        text-align: center;
+    }
 }
 </style>

--
Gitblit v1.9.3