Jelajahi Sumber

Merge branch 'master' of http://192.168.0.115:3000/chenzhiguang/xinjiang_army

zhouenguang 3 tahun lalu
induk
melakukan
6441ee8989
38 mengubah file dengan 72117 tambahan dan 2748 penghapusan
  1. 1 1
      edit-backstage/css/lzb.css
  2. 8 2
      edit-backstage/edit.html
  3. 176 0
      web/public/index.html
  4. 0 1
      web/public/scene.html
  5. TEMPAT SAMPAH
      web/public/star.png
  6. 6 8
      web/public/static/css/main.css
  7. 1041 2579
      web/public/static/data/xinjiang05.json
  8. 631 0
      web/public/static/data/xinjiangout.json
  9. 11381 1
      web/public/static/js/CAD/bundle.js
  10. 4 2
      web/public/static/js/CAD/loadCAD.js
  11. 7 1
      web/public/static/js/Hot.js
  12. 58372 0
      web/public/static/js/main_2020_show copy.js
  13. 152 64
      web/public/static/js/main_2020_show.js
  14. 7 13
      web/public/static/js/manage.js
  15. TEMPAT SAMPAH
      web/public/tip_bg.jpg
  16. 1 0
      web/src/App.vue
  17. TEMPAT SAMPAH
      web/src/assets/images/btnlist/cuo_ganlanlv.png
  18. TEMPAT SAMPAH
      web/src/assets/images/btnlist/cuo_huyangjin.png
  19. TEMPAT SAMPAH
      web/src/assets/images/btnlist/cuo_jiyinhong.png
  20. TEMPAT SAMPAH
      web/src/assets/images/icon/jieshuo_close.png
  21. TEMPAT SAMPAH
      web/src/assets/images/icon/jieshuo_open.png
  22. TEMPAT SAMPAH
      web/src/assets/images/jieshuo/junren_Stand.png
  23. TEMPAT SAMPAH
      web/src/assets/images/jieshuo/junren_speaking.png
  24. TEMPAT SAMPAH
      web/src/assets/images/jieshuo/junren_stand2.png
  25. TEMPAT SAMPAH
      web/src/assets/images/jieshuo/junren_standlook.png
  26. TEMPAT SAMPAH
      web/src/assets/video/welcone.mp4
  27. 14 2
      web/src/components/Danmaku.vue
  28. 56 0
      web/src/components/exhibition/index.vue
  29. 71 45
      web/src/components/popupLayout/Loading.vue
  30. 4 4
      web/src/components/popupLayout/index.js
  31. 4 1
      web/src/mixins/index.js
  32. 9 1
      web/src/views/layout/index.vue
  33. 1 1
      web/src/views/martyr/index.vue
  34. 1 1
      web/src/views/scene/components/question/datiing.vue
  35. 2 2
      web/src/views/scene/gui/hotspotlist.vue
  36. 24 8
      web/src/views/scene/gui/menu.vue
  37. 47 2
      web/src/views/scene/index.vue
  38. 97 9
      web/src/views/scene/scene.vue

+ 1 - 1
edit-backstage/css/lzb.css

@@ -454,7 +454,7 @@ ul.MenuOptions li.chosen {
 }
 
 #hotpointDetail .editCheckbox{
-    margin-left: 65px;
+    margin-left: 5px;
 } 
 .editCheckbox input:checked+label {
     border: 0;

+ 8 - 2
edit-backstage/edit.html

@@ -80,10 +80,10 @@
                         <span class="hotpoint"></span>
                         <label>热点</label>
                     </li>
-                    <!-- <li data-name="music">
+                    <li data-name="music">
                         <span class="music"></span>
                         <label>背景音乐</label>
-                    </li> -->
+                    </li>
                     <li data-name="snapTour">
                         <span class="snapTour"></span>
                         <label>自动导览</label>
@@ -1121,6 +1121,12 @@
                                             <label for="openHot"></label>
                                             <label for="openHot">打开热点</label>
                                         </li>
+
+                                        <li class="editCheckbox">
+                                            <input name="linkother" type="checkbox" value="linkother" id="linkother">
+                                            <label for="openHot"></label>
+                                            <label for="openHot">跳转到其他展厅(标题栏填写展厅名,简介栏填写场景码)</label>
+                                        </li>
                                     </ul>
                                 </li>
 

+ 176 - 0
web/public/index.html

@@ -9,8 +9,184 @@
     <meta name="format-detection" content="telephone=no">
     <link rel="icon" href="<%= BASE_URL %>favicon.png">
     <title>中国人民武装警察部队新疆生产建设兵团总队史馆门户网站</title>
+    <style>
+      .broswertips {
+        position: fixed;
+        top: 50%;
+        left: 50%;
+        transform: translate(-50%, -50%);
+        z-index: 99999999;
+        width: 100%;
+        height: 100%;
+        overflow: hidden;
+        display: none;
+      }
+  
+      .broswertips>img {
+        width: 100%;
+      }
+  
+      .broswertips>.alert {
+        position: absolute;
+        top: 50%;
+        left: 50%;
+        transform: translate(-50%, -50%);
+        width: 988px;
+        margin: 0 auto;
+        height: 500px;
+        z-index: 99;
+        color: #fff;
+        padding: 30px 36px 0;
+        border-top: 6px solid #D32424;
+        background: rgba(228, 173, 100, 0.7);
+        border-bottom: 6px solid #D32424;
+      }
+  
+      .broswertips>.alert>.qtitle {
+        margin-top: 6px;
+        text-align: center;
+        font-size: 28px;
+        font-weight: bold;
+        line-height: 38px;
+        color: #fff;
+      }
+  
+      .broswertips>.alert>.qline {
+        width: 50%;
+        height: 1px;
+        margin: 26px auto;
+        position: relative;
+        background: linear-gradient(90deg,
+            rgba(255, 255, 255, 0) 0%,
+            #ffffff 48%,
+            rgba(255, 255, 255, 0) 100%);
+      }
+  
+      .broswertips>.alert>.qline>img {
+        position: absolute;
+        left: 50%;
+        width: 32px;
+        transform: translateX(-50%);
+        top: -12px;
+      }
+  
+      .broswertips>.alert>.dati {
+        width: 100%;
+        height: 50%;
+        overflow-y: auto;
+        margin: 0 auto;
+        background-color: rgba(255, 255, 255, 0.7);
+        color: #626260;
+        display: flex;
+        justify-content: center;
+        align-items: center;
+        text-align: justify;
+        text-indent: 40px;
+        line-height: 2;
+        font-size: 18px;
+        padding: 0 66px;
+        max-width: 916px;
+      }
+  
+      .broswertips>.alert>.dati_btn {
+        text-align: center;
+      }
+  
+      .broswertips>.alert>.dati_btn>a {
+        display: inline-block;
+        font-size: 16px;
+        line-height: 36px;
+        height: 36px;
+        cursor: pointer;
+        text-align: center;
+        width: 180px;
+        margin: 48px 20px;
+        border: 1px solid #D32424;
+        color: #fff;
+        background: #D32424;
+      }
+    </style>
   </head>
   <body>
+    <div class="broswertips" id="broswertips">
+      <img src="./tip_bg.jpg" alt="">
+      <div class="alert">
+        <p class="qtitle">访客须知</p>
+        <div class="qline">
+          <img src="./star.png" alt="">
+        </div>
+        <div class="dati">
+          浏览器内核版本过低无法正常浏览网页,谷歌80.0、360安全浏览器13.0(极速模式)、火狐浏览器97以上版本浏览器浏览。
+        </div>
+        <div class="dati_btn">
+          <a target="_blank" href="/browser/Chrome.exe" >下载谷歌浏览器</a>
+          <a target="_blank" href="/browser/360.exe">下载360安全浏览器</a>
+          <a target="_blank" href="/browser/Firefox.exe">下载火狐浏览器</a>
+        </div>
+      </div>
+    </div>
+    <script>
+      function versions() {
+        var u = window.navigator.userAgent
+        var uLowCase = u.toLowerCase()
+  
+        return {
+          userAgent: u,
+          // IE内核
+          trident: u.indexOf('Trident') > -1,
+          // opera内核
+          presto: u.indexOf('Presto') > -1,
+          // 苹果、谷歌内核
+          webKit: u.indexOf('AppleWebKit') > -1,
+          // 火狐内核
+          gecko: u.indexOf('Gecko') > -1 && u.indexOf('KHTML') === -1,
+          // 是否为移动终端 / Tablets use desktop version
+          mobile: (/Android|webOS|iPhone|iPod|BlackBerry/i.test(navigator.userAgent)) && !(/Tablet|iPad/i.test(navigator.userAgent)),
+          // ios终端
+          ios: !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/),
+          // android终端或者uc浏览器
+          android: u.indexOf('Android') > -1 || u.indexOf('Linux') > -1,
+          // 是否为iPhone或者安卓QQ浏览器
+          iPhone: u.indexOf('iPhone') > -1 || u.indexOf('Mac') > -1,
+          // 是否为iPad
+          iPad: u.indexOf('iPad') > -1,
+          // 是否为web应用程序,没有头部与底部
+          webApp: u.indexOf('Safari') === -1,
+          // 是否为微信浏览器
+          weixin: ~u.indexOf('MicroMessenger'),
+          // 火狐内核版本
+          firefoxCore: uLowCase.match(/firefox\/([\d.]+)/),
+          // chrome内核版本
+          chromeCore: uLowCase.match(/chrome\/([\d.]+)/),
+          // webkit内核版本
+          webkitCore: uLowCase.match(/applewebkit\/([\d.]+)/),
+  
+        }
+      }
+  
+      var broswer = versions()
+      var dommmm = document.getElementById('broswertips')
+  
+      if (broswer.trident) {
+        dommmm.style.display = 'block'
+      }
+      // 火狐
+      else if (broswer.gecko) {
+        var version = broswer.firefoxCore[1].split(".")[0]
+        if (Number(version) < 80) {
+          dommmm.style.display = 'block'
+        }
+      }
+      // 谷歌
+      else if (broswer.webKit) {
+        var version = broswer.chromeCore[1].split(".")[0]
+        if (Number(version) < 69) {
+          dommmm.style.display = 'block'
+        }
+      }
+  
+  
+    </script>
     <div id="app"></div>
   </body>
 </html>

+ 0 - 1
web/public/scene.html

@@ -10,7 +10,6 @@
     <link rel="icon" href="<%= BASE_URL %>favicon.png">
     <link rel="stylesheet" href="<%= VUE_APP_STATIC_DIR %>/css/oldVer/main0.css"/>
     <link rel="stylesheet" href="<%= VUE_APP_STATIC_DIR %>/css/main.css?v=2.25"/>
-    <link rel="stylesheet" href="<%= VUE_APP_STATIC_DIR %>/CAD/cad.css?v=2.25"/>
     <script class="build keep">
         var number = window.location.href.substring(window.location.href.indexOf("=") + 1);
 

TEMPAT SAMPAH
web/public/star.png


+ 6 - 8
web/public/static/css/main.css

@@ -2648,7 +2648,7 @@ hr {
 
 #gui-thumb {
     height: 100%;
-    background-size: auto 100%;
+    background-size: 100% auto ;
     background-position: 50% 50%;
     background-repeat: no-repeat;
     z-index: 0;
@@ -3964,11 +3964,11 @@ a.hasHover:hover, a:active {
 }
 
 #gui .pinBottom.open.noScroll.playing {
-    bottom: 135px;
+    bottom: 155px;
 }
 
 #gui #drawer.playing, #gui .pinBottom.playing {
-    bottom: 20px
+    bottom: 30px
 }
 
 #thumb-container .thumbImg {
@@ -4023,10 +4023,9 @@ a.hasHover:hover, a:active {
 
 .frame .slidee li .overlay {
     position: absolute;
-    bottom: 2px;
-    left: 2px;
-    width: 130px;
-    height: 20px;
+    bottom: 0;
+    left: 0;
+    width: 100%;
     padding: 6px;
     color: #fff;
     background-color: rgba(0, 0, 0, .7);
@@ -4034,7 +4033,6 @@ a.hasHover:hover, a:active {
     white-space: nowrap;
     font-weight: 100;
     text-align: center;
-    line-height: 4px;
     z-index: 100;
     -moz-transform: translate3d(0, 0, 0);
     -ms-transform: translate3d(0, 0, 0);

File diff ditekan karena terlalu besar
+ 1041 - 2579
web/public/static/data/xinjiang05.json


File diff ditekan karena terlalu besar
+ 631 - 0
web/public/static/data/xinjiangout.json


File diff ditekan karena terlalu besar
+ 11381 - 1
web/public/static/js/CAD/bundle.js


+ 4 - 2
web/public/static/js/CAD/loadCAD.js

@@ -17,6 +17,8 @@ window.grendCAD = (function grendCAD() {
 
     $layer.className = id
     $cad.id = id
+    $cad.setAttribute('class',window.number)
+
     $layer.appendChild($cad)
 
 
@@ -25,7 +27,7 @@ window.grendCAD = (function grendCAD() {
       .${id} {
         position: fixed;
         right: -310px;
-        top: 110px;
+        top: 80px;
         width: 260px;
         height: 200px;
         z-index: 99;
@@ -122,6 +124,6 @@ $.ajax({
   url: `static/data/${window.number}.json`, 
   method: 'GET',
   success(res) {
-    grendCAD(res, document.documentElement, '#4f7d71', '#ffffff', '1px','cad')
+    grendCAD(res, document.documentElement, '#D32424', '#ffffff', '1px','cad')
   }
 })

+ 7 - 1
web/public/static/js/Hot.js

@@ -385,6 +385,7 @@ window.initHot = function(model){
                     this.styleImg = /* this.styleImg || */ [];
                     if(this.info.styleImg){
                         this.styleImg = this.info.styleImg.map((src)=>{  
+                            src = src.indexOf('4dagePoint')>-1?('static/'+src):src
                             return {src:/* manage.dealURL( */src } //如果要dealURL,在predeal里
                         }) 
                     }
@@ -412,7 +413,9 @@ window.initHot = function(model){
             
             styleImg = styleImg || this.styleImg
             var tex1, tex2
+            
             if(styleImg.length){
+                console.log(styleImg,'styleImg');
                 tex1 = Texture.load(styleImg[0].src);
                 tex2 = Texture.load(styleImg[1]&&styleImg[1].src || styleImg[0].src); 
                 
@@ -1096,7 +1099,10 @@ window.initHot = function(model){
             var needExamine = options.examine || (!settings.dontExamHot && this.info.actionType.examine)  
             if(!openHot && !needExamine)return;
             
-            
+            if(this.info.actionType['linkother']){
+                window.player.director.emit('linkother',this.info)
+                return;
+            }
             if(openHot && this.info.linkType!="common" && this.info.iframe && this.info.iframe[0]){
                 var src = getLink(this.info.iframe[0]);
                 

File diff ditekan karena terlalu besar
+ 58372 - 0
web/public/static/js/main_2020_show copy.js


+ 152 - 64
web/public/static/js/main_2020_show.js

@@ -4173,6 +4173,7 @@ window.Modernizr = function(n, e, t) {
                     case c.LEFT:
                         this.startRotationFrom(e.clientX, e.clientY)
                     }
+                    SoundManager.pause('tour') // 周恩光 点击场景时停止语音
                     this.emit(u.InputStart, "mouse")
                 }
             }
@@ -4533,6 +4534,25 @@ window.Modernizr = function(n, e, t) {
                 this.updateModel(),
                 this.resetAll(),
                 this.bindEvents()
+                
+                // 周恩光 查询pano对应的导览片段
+                if(!this.panoIdMap) {
+                    this.panoIdMap = new Map()
+                    this.model.heroLocations.forEach( (value, index) => {
+                        // value.heroLocations.forEach( hl => {
+                            if(value.heroLocations){
+                                let hl = value.heroLocations[0]
+                                let arr = this.panoIdMap.get(hl.panoId)
+                                if(arr){
+                                    this.panoIdMap.set(hl.panoId, [...arr, index])
+                                } else {
+                                    this.panoIdMap.set(hl.panoId, [index])
+                                }
+                            }
+
+                        // })
+                    })
+                }
             }
             ,
             n.prototype.resetAll = function() {
@@ -4786,8 +4806,17 @@ window.Modernizr = function(n, e, t) {
                 //音频 
                 
                 var musicInfo = this.model.heroLocations[this.destinationItem[0]].musicInfo
-                if(musicInfo && musicInfo.music){
-                    let src = musicInfo.music.includes(g_Prefix.slice(-10)) ? musicInfo.music :  g_Prefix + musicInfo.music;
+                // 手动导览不播放音频
+                if(musicInfo && musicInfo.music && !e){
+
+                    let musicType = localStorage.getItem('xunirole') || 'male'
+
+                    let isMale = musicType.indexOf('female') < 0
+
+                    let fixMusic = isMale?musicInfo.music:(musicInfo.fmusic||musicInfo.music)
+
+                    // let src = musicInfo.music.includes(g_Prefix.slice(-10)) ? musicInfo.music :  g_Prefix + musicInfo.music;
+                    let src = fixMusic
                     let audioObj = SoundManager.list.find(e=>e.name == 'tour')
                     let audioSrc1 = common.getFileNameFromUrl(audioObj.src);  
                     let audioSrc2 = common.getFileNameFromUrl(src)
@@ -4806,6 +4835,9 @@ window.Modernizr = function(n, e, t) {
                     
                      
                 }
+
+                let oldPos = this.player.position.clone();
+                let oldPano = this.player.currentPano
                 
                 if (this.onTheBus = !0,
                 this.emit("update.controls"),
@@ -4822,15 +4854,18 @@ window.Modernizr = function(n, e, t) {
                 if (this.player.flying || this.player.isWarping())
                     A.warn("Cannot go to new destination while player is flying or warping.");
                 else {
+
                     var r = this.model.getHeroDescriptorByIndex(this.destinationItem)
                       , o = null
                       , a1 = null;
+                    //   console.error(this.destinationItem)
                     if (r.isPano()) {
                     
                         //var s = 0 === this.destinationItem || e ? u.BLACK : this.nextWarpStyle;
                         //var walk = window.DATA.black ? 'black' : 'walk';
                         //若是点击item,直接瞬间过渡。
                         var s = e ? 'black' : this.getMomentTour(this.destinationItem)   //window.DATA.momentTour || "walk";
+                        if(this.destinationItem[0] == 0 && this.destinationItem[1] == 0) s = 'black' // 周恩光加 返回最初导览点是瞬间过渡
                         a1 = this.player.warpToPanoByHeroIndex.bind(this.player, this.destinationItem, v.Show, m.Slow,  s, true, i, this.actionComplete.bind(this)),
                         o = this.arrivedAtDestination.bind(this, !0)
                     
@@ -4850,6 +4885,9 @@ window.Modernizr = function(n, e, t) {
                     }
                     .bind(this), o),
                     this.emit("update.controls") 
+                    // 周恩光加 更新右侧导览当前位置
+                    let pano = this.model.panos.index[r.panoId]
+                    this.player.emit("flying.ended", pano.position, oldPos, pano, oldPano) 
                 }
             }
             ,
@@ -4861,8 +4899,15 @@ window.Modernizr = function(n, e, t) {
                 this.emit("update.controls"),
                 this.tourIsPlaying)
                     return this.atEndOfTour() && !this.endlessLoop ? (this.tourInProgress = !1,
-                    this.stopTour(true),
-                    this.emit(p.TourEnd),
+                    void this.awaitCompletion(function() {
+                        this.transitionStage = y.Interlude,
+                        this.player.tourInterlude(this.nextItem(this.currentItem),this.actionComplete.bind(this))
+                    }
+                    .bind(this), function(){
+                        this.currentItem = [0,0],
+                        this.stopTour(true),
+                        this.emit(p.TourEnd)
+                    }.bind(this)),
                     void (this.player.mode === c.PANORAMA && this.model.fadePanoMarkers(a.panorama.markerOpacity))) : void this.awaitCompletion(function() {
                         this.transitionStage = y.Interlude,
                         this.player.tourInterlude(this.nextItem(this.currentItem),this.actionComplete.bind(this))
@@ -4871,7 +4916,33 @@ window.Modernizr = function(n, e, t) {
             }
             ,
             n.prototype.playTour = function() {
-                if (!this.bounceable())
+                if (!this.bounceable()) {
+
+                    if(!this.currentItem) this.currentItem = []
+                    if(this.currentItem[0] != 0 || this.destinationItem[0]!= this.nItems-1){
+                        // 周恩光加 从当前pano进行自动导览
+                        let currentPanoDestinations = this.panoIdMap.get(this.player.currentPano.id)
+                        // this.model.heroLocations.forEach( (value, index) => {
+                            // if(value.heroLocations.find( hl => hl.panoId == this.player.currentPano.id )) {
+                            //     currentPanoDestinations.push(index)
+                            // }
+                        // })
+
+                        if(!currentPanoDestinations) { 
+                            // let panoIndex = this.model.panos.list.findIndex( pano => pano.id == this.player.currentPano.id )
+                            let panoIndex = this.model.panos.list.indexOf( this.player.currentPano )
+                            let neighbourIndex = [ panoIndex + 1, panoIndex - 1, panoIndex + 2, panoIndex - 2, panoIndex + 3, panoIndex - 3 ]
+                            for(var i = 0; i < neighbourIndex.length; i++) {
+                                currentPanoDestinations = this.panoIdMap.get(this.model.panos.list[neighbourIndex[i]]&&this.model.panos.list[neighbourIndex[i]].id)
+                                if(currentPanoDestinations && currentPanoDestinations[0] != 0) break
+                            }
+                            if(!currentPanoDestinations) currentPanoDestinations = [0];
+                        }
+                        if(currentPanoDestinations.indexOf(this.currentItem[0]) == -1) {
+                            this.currentItem[0] = currentPanoDestinations[0]
+                        }
+                    }
+
                     return this.tourIsPlaying ? void A.info("tour is already playing") : void (this.wouldInterrupt() || (this.player.emit("tour_auto", this.defaultWarpStyle),
                     this.tourInProgress = !0,
                     this.reachSource = "play",
@@ -4882,8 +4953,10 @@ window.Modernizr = function(n, e, t) {
                     this.emit("update.controls"),
                     this.emit(p.TourStart),
                     this.player.enablePreRendering(),
+                    this.currentItem[1] = null,
                     this.walkingSectionPaused ? (this.clearWalkingSectionPaused(),
                     this.goToDestination()) : this.goNext()))
+                }
             } 
 			,
 			/* n.prototype.bgmReplay = function() {//xzw add  结束tour后可能要继续播放背景音乐
@@ -4892,6 +4965,7 @@ window.Modernizr = function(n, e, t) {
 			} */
 			 
             n.prototype.stopTour = function(isAutoStop) {//停止导览        isAutoStop 希望仅在飞完结束自动停止时的stopTour不停止tourSound, 这样才能完整播放tourSound.  不过似乎会在倒数第二个片段点击按钮停止导览时也视作自动结束的(执行this.interrupt() )。
+                SoundManager.pause('tour'), // 周恩光 自动导览暂停时同时停止语音
                 this.isInterrupted() || this.transitionStage === y.Moving && this.checkAndHandleWalkingtourInterruption(this.nextWarpStyle) || (this.tourIsPlaying && (this.player.zoomEnabled = this.wasZoomEnabled),
                 this.tourIsPlaying = !1, 
                 this.interrupt(),
@@ -5055,18 +5129,28 @@ window.Modernizr = function(n, e, t) {
             n.prototype.tourAdvance = function(e) {//e是1或-1
                 
                 A.debug("tourAdvance(" + e + ")") 
+
+                // 周恩光改
                 if(null === this.currentItem || void 0 === this.currentItem){
-                    this.setDestinationItem(this.firstDestination()) 
-                }else{ 
-                    var item    
-                    if(e == 1){
-                        item = this.nextItem(this.currentItem)
-                    }else if(e == -1){
-                        item = this.prevItem(this.currentItem)    
-                        
-                    }  
-                    this.setDestinationItem(item) 
+                    // this.setDestinationItem(this.firstDestination()) 
+                    // this.setDestinationItem([currentPanoDestinations[0], 0]) 
+                    this.setDestinationItem([this.currentItem[0], 0]) 
+                }
+                else if(this.currentItem[1] == null) {
+                    this.setDestinationItem([this.currentItem[0], 0])
+                }
+                else{ 
+                    
+                        var item    
+                        if(e == 1){
+                            item = this.nextItem(this.currentItem)
+                        }else if(e == -1){
+                            item = this.prevItem(this.currentItem)    
+                            
+                        }
+                        this.setDestinationItem(item) 
                 }
+                
                 if(this.itemCompare(this.destinationItem, this.finalDestination(), 'equal')[0] < 0 ){ 
                     this.useSpecialTransition("reverse-looping to end") 
                 }else if(this.itemCompare(this.destinationItem, this.firstDestination(), 'equal')){ 
@@ -6599,6 +6683,18 @@ window.Modernizr = function(n, e, t) {
                 $(".gui-floor-number").text(" " + (e.floorIndex + 1)),
                 $(".floorChoice").removeClass("active"),
                 $(".floorChoice[data-index=" + e.floorIndex + "]").addClass("active")))
+
+                if(window.number == '1149_2'){
+                    if(e.floorIndex===0){
+                        $('.cad') && $('.cad').addClass('hidemap')
+                        $('.cad1') && $('.cad1').removeClass('hidemap')
+                    } 
+    
+                    if(e.floorIndex===1){
+                        $('.cad1') && $('.cad1').addClass('hidemap')
+                        $('.cad') && $('.cad').removeClass('hidemap')
+                    } 
+                }
             }
             function I(e) {
                 return e.describe().inTransition
@@ -7348,7 +7444,7 @@ window.Modernizr = function(n, e, t) {
                     $(".icon:visible").hide().show(0)
                 }, 100)
             }),
-            $("#gui-fullscreen").find("a").on("click", function(e) {
+            $("#gui-fullscreen").on("click", function(e) {
                 l(e),
                 K.requestFullscreen($("body")[0]),
                 J.track("showcase_gui", {
@@ -7358,7 +7454,7 @@ window.Modernizr = function(n, e, t) {
                 //czj
                 //W.reload()
             }),
-            $("#gui-fullscreen-exit").find("a").on("click", function(e) {
+            $("#gui-fullscreen-exit").on("click", function(e) {
                 l(e),
                 K.exitFullscreen(),
                 J.track("showcase_gui", {
@@ -7380,6 +7476,8 @@ window.Modernizr = function(n, e, t) {
             K.supportsFullscreen() || $("#gui-fullscreen").hide(),
             $("#pullTab").on("click", function(e) {
                 l(e),
+                window.player.director.emit('isPulltttttt',!$("#drawer").hasClass("open"));
+
                 $("#drawer").hasClass("open") ? (J.trackAlways("showcase_gui", {
                     gui_action: "hide_highlight_reel"
                 }),
@@ -7910,7 +8008,8 @@ window.Modernizr = function(n, e, t) {
         }
         function s(e, t) {
             setTimeout(function() {
-                if (h.isHelpEnabled()) {
+                // h.isHelpEnabled()
+                if (false) {
                     if (t(),
                     u.init(),
                     C.addClass("fadeIn landing " + u.deviceType),
@@ -8918,15 +9017,15 @@ window.Modernizr = function(n, e, t) {
         }
         function u(e, t) {
             if (t) {
-                var i = "keydown" === t.type
-                  , n = t.which === f.SPACE || C.tourIsPlaying;
+                // var i = "keydown" === t.type
+                //   , n = t.which === f.SPACE || C.tourIsPlaying;
                   
-                i && n || e || (O = !0),
-                C.atEndOfTour() && d(),
-                !C.tourIsPlaying && C.tourInProgress && (_.removeClass("fadeIn"),
-                d(),
-                t.which !== f.SPACE && a()),
-                i && n && s() 
+                // i && n || e || (O = !0),
+                // C.atEndOfTour() && d(),
+                // !C.tourIsPlaying && C.tourInProgress && (_.removeClass("fadeIn"),
+                // d(),
+                // t.which !== f.SPACE && a()),
+                // i && n && s() 
             }
         }
         function d() {
@@ -14612,9 +14711,9 @@ window.Modernizr = function(n, e, t) {
 							var e = N.calcFullLoadingTime();
 							de.warn("Total load time: " + e / 1e3),
 							H.loadComplete(e),
+                            window.dispatchEvent(window.evt);
 							de.warn("First render after model load finished.")
                             try {
-                                window.evt && window.dispatchEvent(window.evt);
                                 parent.postMessage({
                                     cmd: "loaded",
                                 }, "*")
@@ -17090,7 +17189,14 @@ window.Modernizr = function(n, e, t) {
                         if (cameraMode === a.MESH) return 
                                      
                         
-                        if(window.isLocal)src = manage.dealURL(src)
+                        if(window.isLocal){
+                            src = manage.dealURL(src)
+                            //本地文件莫名少了个"."
+                            if(src[src.length-1]=='.'){
+                               src = src.slice(0,-1) 
+                            }
+                        }
+                         
                         else src = "one" === g_version ? g_Prefix + src + "?" + randomTime().getTime() :  src + "?" + randomTime().getTime()
                          
                         var l = { 
@@ -18969,7 +19075,6 @@ window.Modernizr = function(n, e, t) {
                             }
                             t[this.id] || (t[this.id] = !0,
                             this.on(f.LoadComplete, function(e, t) {
-                                //console.warn('点位下载完成 ', 'id:'+this.id,  'count:'+t )
                                 var i = this.getWaitDeferred(e).deferred;
                                 i && "pending" === i.state() && this.highestPartialTileRenderOpCompleted >= e && (i.resolve(e, t),
                                 this.resetWaitDeferred(e))
@@ -18982,9 +19087,6 @@ window.Modernizr = function(n, e, t) {
                             }
                             .bind(this)),
                             this.on(f.TileLoaded, function(t, i, n) {
-                                //console.log('tileLoaded', 'id:'+this.id,  'size:'+t, 'index:'+i )
-
-
                                 var r = this.getWaitDeferred(t).deferred;
                                 if (r && "pending" === r.state()) {
                                     r.notify(t, i, n);
@@ -19768,7 +19870,7 @@ window.Modernizr = function(n, e, t) {
             n.prototype.getHeroIndexFromPanoId = function(e) {
                 for (var t = 0; t < this.model.heroLocations.length; t++) {
                     var i = this.model.heroLocations[t]
-                      , n = this.getHeroId(i);
+                    , n = this.getHeroId(i);
                     if (n && n === e)
                         return t
                 }
@@ -20245,7 +20347,7 @@ window.Modernizr = function(n, e, t) {
                   , o = new r.Vector3;
                 y.debug("Starting wait: " + (void 0 !== t));
                 
-                var currentLocation = this.model.getHeroDescriptorByIndex(this.director.currentItem)//this.model.heroLocations[this.director.currentItem[0]] 
+                var currentLocation = this.model.heroLocations[this.director.currentItem[0]] 
                 var s = currentLocation.dontRot || this.calcBurnsAmount(e)
                   , h = function() {
                     this.endWarpState(),
@@ -22074,7 +22176,9 @@ window.Modernizr = function(n, e, t) {
                     }
 
                     if(e.cameraChanged){
-                        this.mode == "panorama" && window.cad && cad.setSign && cad.setSign({ x: this.position.x, y: this.position.z }, this.cameraControls.controls.panorama.lon);
+                        this.mode == "panorama" && window.cad && cad.setSign({ x: this.position.x, y: this.position.z }, this.cameraControls.controls.panorama.lon);
+                        
+                       
                     }
                     if(e.cameraChanged2){ //变化要更大些
                         for(var i in this.model.hots){
@@ -22626,7 +22730,8 @@ window.Modernizr = function(n, e, t) {
                 for (var index in hots){
                     var visible; 
                     if(this.mode != "panorama"){
-                        visible = true;
+                        // visible = true;
+                        visible = false;    // 周恩光改 非全景模式下隐藏热点
                     }else{ 
                         //hots[index].mesh.material.depthTest = false;  
                         visible = !hots[index].visiblePanos || hots[index].visiblePanos.indexOf(pano.id) > -1
@@ -22748,7 +22853,7 @@ window.Modernizr = function(n, e, t) {
                      //---------before fly--------------- add
                     this.updateHotVisible(i); //更新热点显示
                     this.transitionPos({type:"beforeFlytopano", pano:i, dur:I})//add 
-                    Hot.updateVisibles([this.currentPano, i])
+                    //Hot.updateVisibles([this.currentPano, i])     // 周恩光 注释 只在fly完成时再显示热点
                     
                     //地标变化
                     if(this.model.floorLogos){
@@ -23014,7 +23119,7 @@ window.Modernizr = function(n, e, t) {
             }
             ,
             n.prototype.flyDirection = function(e, t, i) {
-				Hot.closePopup();//xzw add
+				Hot && Hot.closePopup();//xzw add
                 
                 var n = $.Deferred();
                 this.history.invalidate();
@@ -23607,9 +23712,7 @@ window.Modernizr = function(n, e, t) {
                 var defaultRotTime = DATA.tourRotTime * 1000
                 var timeEachItem = 2e3 / (DATA.tourWalkSpeed + DATA.tourBlackSpeed) * 200 //预估时间假设每个item飞的时间(如果距离远就少了)
                  
-                //var currentLocation = this.model.heroLocations[this.director.currentItem[0]] 
-                var currentLocation = this.model.getHeroDescriptorByIndex(this.director.currentItem)
-                
+                var currentLocation = this.model.heroLocations[this.director.currentItem[0]] 
                 var rotTime
                 if(currentLocation.rotTime == void 0 || currentLocation.rotTime == ''){
                     var restChildCount = currentLocation.heroLocations ? (currentLocation.heroLocations.length-this.director.currentItem[1]-1) : 0
@@ -23942,11 +24045,7 @@ window.Modernizr = function(n, e, t) {
               , s = new a(i);
             n.prototype.start = function() {
                 this.loadNextPano(function(e) {
-                    e ? this.start() : (s.debug("No suitable pano loaded, waiting a little while before looking again"),
-                    setTimeout(function() {
-                        this.start()
-                    }
-                    .bind(this), 1e3))
+                    e ? this.start() : (s.debug("No suitable pano loaded, waiting a little while before looking again"))
                 }
                 .bind(this))
             }
@@ -27432,6 +27531,7 @@ window.Modernizr = function(n, e, t) {
         }
         ,
         l.prototype.clearUploadQueue = function(e, t, i) {
+            if(!r || !r.tile) return
             void 0 !== t && null !== t || (t = 0);
             for (var n = 0; n < e.length; ) {
                 var r = e[n];
@@ -27494,10 +27594,6 @@ window.Modernizr = function(n, e, t) {
             var e = {}
               , t = (new h.Vector4,
             d.tiling.overlayStyle);
-
-            //var failHistory = {};
-
-
             return function(i, n) {
                 var r = i.panoId
                   , o = i.image
@@ -27525,14 +27621,6 @@ window.Modernizr = function(n, e, t) {
                 this.isTileUploaded(i) && (p = !1,
                 g = !1)),
                 p) {
-
-                    /* if(failHistory[''+r+s+l]){
-                        console.log('uploadTile retry', r, s, l)
-                    }
-
-                    console.log('uploadTile  成功', r, s, l)
-                     */
-                    
                     var C = u * a
                       , I = d * a
                       , E = a / s * y
@@ -27552,12 +27640,8 @@ window.Modernizr = function(n, e, t) {
                     m.uploadCount === c && this.emit(f.PanoRenderComplete, r, s, c),
                     this.setUploaded(i, !0),
                     this.addCoverageForNode(i.node)
-                } else{
+                } else
                     this.setUploaded(i, !1);
-                    console.log('uploadTile  失败', r, s, l)
-                    //failHistory[''+r+s+l] = true;
-
-                }
                 return i.uploadAttempted || (m.uploadAttempts++,
                 this.emit(f.TileUploadAttempted, r, s, l, c)),
                 i.uploadAttempted = !0,
@@ -30067,6 +30151,9 @@ window.Modernizr = function(n, e, t) {
                     return r("PATCH", e, t)
                 },
                 getImage: function(e, t) {
+                    if(!e){
+                        return
+                    }
                     function i() {
                         u.warn("Retrying ", e),
                         o.getImage(e, t - 1).done(n.resolve.bind(n)).progress(n.notify.bind(n)).fail(n.reject.bind(n))
@@ -31390,6 +31477,7 @@ window.Modernizr = function(n, e, t) {
           , a = {};
         t.exports = {
             load: function(e, t, i) {
+                if(!e) return;
                 var s = a[e];
                 return s ? (t && setTimeout(function() {
                     t(s)
@@ -58280,7 +58368,7 @@ var addMagnifier = function(){
             }))
             this.overlayMesh = new THREE.Mesh(circleGeo, new THREE.MeshBasicMaterial({
                 side: THREE.DoubleSide , 
-                map: Texture.load('static/images/crosshair.png') ,
+                map: Texture.load('images/crosshair.png') ,
                 transparent:true,
                 depthTest: !1,
                 depthWrite: !1,

+ 7 - 13
web/public/static/js/manage.js

@@ -1,9 +1,9 @@
   
 var g_ProjectName=window.location.pathname.substring(window.location.pathname.indexOf("/")+1,window.location.pathname.lastIndexOf("/"));
-var g_Prefix="http://192.168.0.245:8003/";
+// var g_Prefix="http://192.168.0.245:8003/";
 
-// var g_Prefix=window.location.origin+'/';
-// window.isLocal = true
+var g_Prefix=window.location.origin+'/';
+window.isLocal = true
 
 var g_index=null;
 var g_modeldata=null;
@@ -21,8 +21,7 @@ var g_HotMeshSize = {
 var g_HotStatus=null;
 var g_newHot = [];//存储新加热点
 var g_HotImage= {
-	"point":"static/images/4dagePoint2.png",
-	"point2":"static/images/4dagePoint.png"
+	
 };	
 var g_saveHot=false;
 
@@ -466,7 +465,7 @@ Manage.prototype.dealURL = function(src, type){
             return src.replace(wholeOldPrefix, settings.localPrefix)
         }
         
-        console.error("没有找到合适的本地链接") 
+        // console.error("没有找到合适的本地链接") 
         return src
     }else{
         //add https://
@@ -868,6 +867,7 @@ var SoundManager = {//暂不支持同时播放
                 object.audio.currentTime = currentTime
             }
             if(object.audio){
+                object.audio.muted = window.ISMUTED
                 object.audio.load();	// iOS 9   还需要额外的 load 一下, 否则直接 play 无效 *///https://www.cnblogs.com/interdrp/p/4211883.html   部分资料
                 object.audio.play();
                 object.callback && object.callback(true)
@@ -1000,13 +1000,7 @@ Manage.prototype.loadAudio = function() { //相关:g_tourAudio \  g_playAudio
             return this.bgmShouldPlay
         },
         callback:(state)=>{//play或pause时随之触发的函数(即使还没开始播放)
-            if(state){
-                $("#volume a img").attr("src", "./static/images/Volume btn_off.png")
-                $("#volume").attr("title", "关闭声音");
-            }else{
-                $("#volume a img").attr("src", "./static/images/Volume btn_on.png")
-                $("#volume").attr("title", "打开声音");
-            }
+        
         }
     })  
     SoundManager.createAudio({

TEMPAT SAMPAH
web/public/tip_bg.jpg


+ 1 - 0
web/src/App.vue

@@ -9,6 +9,7 @@
       </div>
       <div>{{link}}</div>
     </div>
+
     <!-- <button @click="changeColor">改变颜色</button> -->
   </div>
 </template>

TEMPAT SAMPAH
web/src/assets/images/btnlist/cuo_ganlanlv.png


TEMPAT SAMPAH
web/src/assets/images/btnlist/cuo_huyangjin.png


TEMPAT SAMPAH
web/src/assets/images/btnlist/cuo_jiyinhong.png


TEMPAT SAMPAH
web/src/assets/images/icon/jieshuo_close.png


TEMPAT SAMPAH
web/src/assets/images/icon/jieshuo_open.png


TEMPAT SAMPAH
web/src/assets/images/jieshuo/junren_Stand.png


TEMPAT SAMPAH
web/src/assets/images/jieshuo/junren_speaking.png


TEMPAT SAMPAH
web/src/assets/images/jieshuo/junren_stand2.png


TEMPAT SAMPAH
web/src/assets/images/jieshuo/junren_standlook.png


TEMPAT SAMPAH
web/src/assets/video/welcone.mp4


+ 14 - 2
web/src/components/Danmaku.vue

@@ -89,6 +89,9 @@ export default {
   },
   watch: {
     isNotInputAction: function() {},
+    isShowSelectList(newVal){
+      this.isShowList=!newVal
+    }
   },
 
   data() {
@@ -160,7 +163,7 @@ export default {
   },
   mounted() {
     this.autoPopAnimation();
-  },
+  }
 };
 </script>
 
@@ -176,6 +179,9 @@ export default {
   max-height: 288px;
   overflow-x: hidden;
   overflow-y: scroll;
+  &::-webkit-scrollbar{
+    display: none;
+  }
 }
 
 /* .hidedanmu{
@@ -191,6 +197,12 @@ export default {
   flex-direction: column;
   margin: 0;
   padding: 0;
+  &::-webkit-scrollbar{
+    width: 2px;
+  }
+  &::-webkit-scrollbar-thumb{
+    outline:none;
+  }
 }
 .danmaku-list li.danmaku-list-item {
   margin-bottom: 10px;
@@ -294,7 +306,7 @@ export default {
   width: 340px;
   color: #fff;
   border-radius: 10px;
-  max-height: 200px;
+  max-height: 288px;
   overflow-x: hidden;
   overflow-y: scroll;
   margin: 0;

+ 56 - 0
web/src/components/exhibition/index.vue

@@ -23,6 +23,10 @@ export default {
     return{
       isShow:true,
       list:[
+         {
+          id:'xinjiangout',
+          name:'胡杨卫士广场',
+        },
         {
           id:'xinjiang01',
           name:'发展历程厅',
@@ -83,4 +87,56 @@ export default {
     }
   }
 }
+</style>
+
+<style lang="less">
+.cad{
+  .xinjiang02{
+    transform: translateX(-40px);
+  }
+  .xinjiang03{
+    >svg{
+      >g{
+        transform: scale(1) translate(50px, 198px);
+      }
+    }
+  }
+
+   .xinjiang04{
+    >svg{
+      >g{
+        transform: scale(1.3) translate(-50px, 208px);
+        path{
+          stroke-width: 4
+        }
+        circle{
+          r: 6;
+          stroke-width: 1.69182;
+        }
+      }
+    }
+  }
+
+  .xinjiang05{
+    >svg{
+      >g{
+        transform: scale(3) translate(-90px, 260px);
+        path{
+          stroke-width: 2
+        }
+        .sign{
+          >path{
+            // d:path("M 201.7 -168.93 L 215.111 -175.821 L 219.111 -158.779 L 201.7 -160.67 Z");
+          }
+          circle{
+              r: 4;
+              stroke-width: 1.69182;
+          }
+        }
+        
+      }
+    }
+  }
+}
+
 </style>

+ 71 - 45
web/src/components/popupLayout/Loading.vue

@@ -1,67 +1,93 @@
 <template>
-    <div class="ui-loading">
-      <!-- <img class="bg" :src="`${$cdn}images/bg.jpg`" alt=""> -->
-
+  <div class="ui-loading">
+    <div class="loading-body">
       <div class="ui-con">
-        <div>
-          <img class="logo" :src="`${$cdn}images/k.png`" alt="">
-        </div>
-        <div>
-          <img class="loading" :src="`${$cdn}images/loading.png`" alt="">
-        </div>
-        <div class="ld-txt">loading...</div>
+        <div class="ld-txt">加载中...</div>
+      </div>
+      <div class="banbenTips">
+        <p>建议使用1920*1080 分辨率,谷歌80.0、360安全浏览器13.0(极速模式)、火狐浏览器97以上版本浏览器浏览。</p>
+        <a target="_blank" href="/browser/Chrome.exe" class="download primary">下载谷歌浏览器</a>
+        <a target="_blank" href="/browser/360.exe" class="download primary">下载360安全浏览器</a>
+        <a target="_blank" href="/browser/Firefox.exe" class="download primary">下载火狐浏览器</a>
       </div>
     </div>
+  </div>
 </template>
 <script>
+
 export default {
-    name: "ui-loading",
-    data() {
-        return {
-           
-        };
-    },
-    
+  name: "ui-loading",
+  data() {
+  },
+ 
 };
 </script>
 
 <style lang="less" scoped>
-.ui-loading{
+.ui-loading {
   width: 100%;
   height: 100%;
   position: fixed;
   z-index: 999;
   top: 0;
   left: 0;
-  .bg{
-    width: calc(100% - 200px);
-    top: 50%;
-    left: 0;
-    transform: translateY(-50%);
-    position: fixed;
-    user-select: none;
-  }
-  .ui-con{
-    position: absolute;
-    top: 48%;
-    left: calc(50% - 200px / 2);
-    transform: translate(-50%,-50%);
-    text-align: center;
-    >div:not(:last-of-type){
-      text-align: center;
-      margin-top: 40px;
-    }
-    .logo{
-      width: 340px;
+  width: 100%;
+  background: rgba(0, 0, 0, 0.5);
+
+  .loading-body {
+    width: 100%;
+    background: rgba(0, 0, 0, 1);
+    height: 100%;
+    .bg {
+      width: 100%;
+      top: 50%;
+      left: 0;
+      transform: translateY(-50%);
+      position: fixed;
+      user-select: none;
     }
-    .loading{
-      width: 480px;
+    .ui-con {
+      position: absolute;
+      top: 48%;
+      left: 50%;
+      transform: translate(-50%, -50%);
+      text-align: center;
+      > div:not(:last-of-type) {
+        text-align: center;
+        margin-top: 40px;
+      }
+      .logo {
+        width: 340px;
+      }
+      .loading {
+        width: 480px;
+      }
+      .ld-txt {
+        font-family: "SY-bold";
+        font-size: 18px;
+        margin-top: 16px;
+        color: #fff;
+      }
     }
-    .ld-txt{
-      font-family: 'SY-bold';
-      font-size: 18px;
-      margin-top: 16px;
+    .banbenTips {
+      color: #fff;
+      position: absolute;
+      text-align: center;
+      bottom: 0;
+      transform: translateX(-50%);
+      left: 50%;
+      .download {
+        width: 180px;
+        margin: 20px 10px;
+        cursor: pointer;
+        border-radius: 6px;
+        height: 40px;
+        line-height: 40px;
+        text-decoration: none;
+        color: #fff;
+        display: inline-block;
+      }
     }
   }
 }
-</style>
+</style>

+ 4 - 4
web/src/components/popupLayout/index.js

@@ -2,10 +2,10 @@ import Vue from 'vue'
 import UITips from './Tips.vue'
 import UIAlert from './Alert.vue'
 import UIConfirm from './Confirm.vue'
-import UILoading from './Loading.vue'
 import UIBroadcast from './Broadcast.vue'
 import UIMessage from './Message.vue'
 
+import UILoading from './Loading.vue'
 
 
 
@@ -67,6 +67,7 @@ export function $message(data={}) {
     })
 }
 
+
 let loadingInstance = ''
 export function $showLoading(data={}) {
     if (loadingInstance) {
@@ -76,7 +77,7 @@ export function $showLoading(data={}) {
         data
     }).$mount()
 
-    document.body.appendChild(loadingInstance.$el)
+    document.getElementById('app').appendChild(loadingInstance.$el)
 
     Vue.nextTick(() => {
         loadingInstance.show = true
@@ -85,13 +86,12 @@ export function $showLoading(data={}) {
 
 export function $hideLoading() {
     if (loadingInstance) {
-        document.body.removeChild(loadingInstance.$el)
+        document.getElementById('app').removeChild(loadingInstance.$el)
         loadingInstance = ''
     }
 }
 
 
-
 let broadcastInstance = ''
 export function $showBroadcast(data={}) {
     if (broadcastInstance) {

+ 4 - 1
web/src/mixins/index.js

@@ -2,6 +2,8 @@ import Vue from "vue";
 import {
   $showBroadcast,
   $hideBroadcast,
+  $showLoading,
+  $hideLoading
 } from '@/components/popupLayout'
 
 import '@/assets/theme/theme.less'
@@ -33,7 +35,6 @@ Vue.mixin({
   components:{stitle,sradio,sbutton,Danmaku,maside},
   data(){
     return{
-      g_defaultAvatar:require('@/assets/images/xinjiang/defaultImg.jpg')
     }
   },
   computed: {
@@ -49,6 +50,8 @@ Vue.mixin({
   methods: {
     $showBroadcast,
     $hideBroadcast,
+    $showLoading,
+    $hideLoading,
     formatTime
   }
 })

+ 9 - 1
web/src/views/layout/index.vue

@@ -75,7 +75,15 @@ export default {
           this.userName= ''
           this.password= ''
           this.closeLogin()
-          window.location.reload()
+          if (this.$route.name =='register' || this.$route.name =='forget') {
+            this.$router.push({path:'/'})
+            setTimeout(() => {
+              window.location.reload()
+            }, 100);
+          }
+          else{
+            window.location.reload()
+          }
       })
     },
   },

+ 1 - 1
web/src/views/martyr/index.vue

@@ -8,7 +8,7 @@
     <div class="d-body">
       <div class="left">
         <div class="img borderColor">
-          <img :src="data.thumb||g_defaultAvatar" alt="" />
+          <img :src="data.thumb||require('@/assets/images/xinjiang/defaultImg.jpg')" alt="" />
         </div>
         <sbutton :name="'网上祭拜'" @click.native="gotosacrifice" />
       </div>

+ 1 - 1
web/src/views/scene/components/question/datiing.vue

@@ -21,7 +21,7 @@
                   item.val != currentTimu.correct &&
                   isSubmit
               "
-              :src="require(`@/assets/images/btnlist/cuo.png`)"
+              :src="require(`@/assets/images/btnlist/cuo_${theme}.png`)"
             />
             <span v-if="timuselect == item.val && !isSubmit"></span>
           </div>

+ 2 - 2
web/src/views/scene/gui/hotspotlist.vue

@@ -3,7 +3,7 @@
       <div id="hotListTitle">
           <div>
               <span id="hotListText">热点列表</span>
-              <img id="hotListIcon" src="images/hotlist.png" alt="">
+              <img id="hotListIcon" src="static/images/hotlist.png" alt="">
           </div>
       </div>
       <div id="hotListContent">
@@ -11,7 +11,7 @@
           </ul>
       </div>
       <div id="hotListBottom">
-          <img id="hotListClose" src="images/hotListClose.png" alt="">
+          <img id="hotListClose" src="static/images/hotListClose.png" alt="">
       </div>
   </div>
 </template>

+ 24 - 8
web/src/views/scene/gui/menu.vue

@@ -191,7 +191,7 @@
           <li @click="openGameurl">
             <img title="游戏" :src="require(`@/assets/images/btnlist/game.png`)"/>
           </li>
-          <li @click="isBgm=!isBgm">
+          <li @click="isBgm=!isBgm" v-if="BgmUrl">
             <img
               title="音乐"
               :src="require(`@/assets/images/btnlist/bgm${isBgm?`_${theme}`:''}.png`)"
@@ -225,7 +225,7 @@
           </div>
           <div class="container"></div>
         </div>
-        <div id="volume" class="ui-icon wide">
+        <!-- <div id="volume" class="ui-icon wide">
           <a>
             <img
               :src="require('@/assets/images/btnlist/Volume btn_on.png')"
@@ -233,7 +233,7 @@
               height="24"
             />
           </a>
-        </div>
+        </div> -->
         <div id="vr" class="ui-icon wide hidden" style="display: none">
           <a>
             <i
@@ -252,9 +252,13 @@
             ></i>
           </a>
         </div>
+
+        <div class="ui-icon wide jieshuo111">
+          <img @click="isJieShuo=!isJieShuo" :src="require(`@/assets/images/icon/jieshuo_${!isJieShuo?'open':'close'}.png`)" alt="">
+        </div>
         <div
           id="gui-fullscreen"
-          class="ui-icon wide"
+          class="ui-icon wide hidden"
           data-placement="top"
           rel="tooltip"
           title="{[{ VIEW_FULLSCREEN }]}"
@@ -265,7 +269,7 @@
         </div>
         <div
           id="gui-fullscreen-exit"
-          class="ui-icon wide"
+          class="ui-icon wide hidden"
           data-placement="top"
           rel="tooltip"
           title="{[{ EXIT_FULLSCREEN }]}"
@@ -302,7 +306,7 @@ let menuli = [
 ];
 
 export default {
-  props:['itemctive'],
+  props:['itemctive','BgmUrl'],
   components:{
   },
   data() {
@@ -385,6 +389,7 @@ export default {
     return {
       isShow: true,
       isGuide: true,
+      isJieShuo:true,
       conLi,
       showAutoList: false,
       btnlistActive:this.itemctive,
@@ -398,13 +403,21 @@ export default {
       return menuli;
     }
   },
+  watch:{
+    isBgm(newVal){
+      window.manage.switchBgmState(!newVal)
+    },
+    isJieShuo(newVal){
+      this.$emit('isJieShou',newVal)
+    }
+    
+  },
   methods: {
     openGameurl(){
       window.open('/game/index.html','_blank')
     },
     handleItem(item) {
       this.btnlistActive = item.id
-      console.log('调用了');
       this.$emit('btnactive',item.id)
     },
     handleLike(){
@@ -662,6 +675,9 @@ export default {
   }
 }
 
-
+.jieshuo111{
+  background: none!important;
+  cursor: pointer;
+}
 
 </style>

+ 47 - 2
web/src/views/scene/index.vue

@@ -1,5 +1,9 @@
 <template>
   <div class="scene-body">
+    <div class="welcomeVideo" v-if="showWelcome">
+      <video autoplay ref="wevideo" controls :src="require('@/assets/video/welcone.mp4')"></video>
+      <span class="jump primary" @click="jump">跳过</span>
+    </div>
     <iframe ref="ifr" :key="scene" :src="`scene.html?m=${scene}`" allowfullscreen="true" frameborder="0"></iframe>
   </div>
 </template>
@@ -11,15 +15,33 @@ export default {
       this.$refs.ifr.contentWindow.postMessage({
           source: "changeTheme",
           data:newVal,
-      },'*')
+      },'*');
+      this.$bus.$emit('changeTheme',newVal)
     }
   },
   data(){
     return {
-      scene:'xinjiang01'
+      showWelcome:true,
+      scene:'xinjiangout'
+    }
+  },
+  methods: {
+    jump(){
+      this.showWelcome = false
     }
   },
   mounted() {
+    this.$nextTick(()=>{
+      this.$refs.wevideo.addEventListener
+       this.$refs.wevideo.addEventListener("ended", () => {
+          this.showWelcome = false
+        });
+        // this.$refs.wevideo.addEventListener("canplaythrough", () => {
+        //   setTimeout(() => {
+        //     this.isshowall = true
+        //   }, 2000);
+        // });
+    })
       window.addEventListener("message", (res) => {
         if (Object.prototype.toString.call(res.data) == "[object Object]") {
           let data = res.data.data;
@@ -45,5 +67,28 @@ export default {
       width: 100%;
       height: 100%;
     }
+    .welcomeVideo{
+      position: absolute;
+      z-index: 999;
+      left: 0;
+      top: 0;
+      width: 100%;
+      height: 100%;
+      >video{
+        width: 100%;
+        position: absolute;
+        top: 50%;
+        left: 50%;
+        transform: translate(-50%,-50%);
+      }
+      .jump{
+        position: absolute;
+        right: 20px;
+        top: 20px;
+        color: #fff;
+        padding: 10px 10px;
+        cursor: pointer;
+      }
+    }
 }
 </style>

+ 97 - 9
web/src/views/scene/scene.vue

@@ -28,7 +28,7 @@
         <v-title />
 
         <!-- 底部菜单 -->
-        <v-menu @btnactive="handleActive"/>
+        <v-menu :BgmUrl="BgmUrl" @isJieShou="data=>{isjieshuo = data}" @btnactive="handleActive"/>
 
         <!-- 导览 -->
         <v-guide />
@@ -80,6 +80,10 @@
       :arrowIcon="require('@/assets/images/icon/danmu_top.png')"
     />
     <vpopup @close="handlepopClose" :cp="cp" v-if="cp" />
+
+    <div class="jieshuo" v-show="isjieshuo">
+      <img :src="require(`@/assets/images/jieshuo/${isSpeak?'junren_speaking':'junren_stand2'}.png`)" alt="">
+    </div>
   </div>
 </template>
 
@@ -138,13 +142,47 @@ export default {
     });
 
     this.$nextTick(() => {
+      this.$showLoading()
+
       if (!window.evt) {
         window.evt = document.createEvent("HTMLEvents");
         window.evt.initEvent("loadfinish", false, false);
       }
       window.addEventListener("loadfinish", () => {
+        this.$hideLoading()
+
+        window.player.director.on("linkother", data => {
+          window.parent.postMessage(
+            {
+              source: "currentScene",
+              data: data.content,
+            },
+            "*"
+          );
+        });
+
+        window.player.director.on("tour.start", () => {
+          if(!window.ISMUTED){
+           this.isSpeak = true
+          }
+        });
+
+        window.player.director.on("tour.end", () => {
+           this.isSpeak = false
+        });
+
+        window.player.director.on("action.interrupted", () => {
+           this.isSpeak = false
+        });
+
         this.showExhi = true
+        let rotate = player.cameraControls.controls.panorama.rotationAcc
+         rotate.x = 0.001
+        setTimeout(() => {
+          rotate.x = 0
+        }, 0);
         $('.cad').css({right:'10px'})
+        this.BgmUrl = window.DATA.backgroundMusic
       }, false);
     });
 
@@ -185,20 +223,14 @@ export default {
       this.$bus.$emit("resetbtnactive");
     },
     handleActive(data) {
-      if (data == "question") {
         checkLogin((res) => {
           if (res.data) {
-            this.cp = "question";
+            this.cp = data;
           } else {
             alert("请登录后操作");
             this.$bus.$emit("resetbtnactive");
           }
         });
-      }
-      if (data == "comment") {
-        this.cp = "comment";
-      }
-      console.log(data);
     },
  
     async getData() {
@@ -211,11 +243,18 @@ export default {
       });
     },
   },
+  watch:{
+    isjieshuo(newVal){
+      window.ISMUTED = !newVal
+    }
+  },
   beforeDestroy() {
     this.destroy();
   },
   data() {
     return {
+      isSpeak:false,
+      isjieshuo:true,
       showExhi:false,
       quotes: [
         "很漂亮的线上展馆,支持!",
@@ -226,6 +265,7 @@ export default {
         "展馆的信息介绍很详细,干货满满!",
         "向人民解放军致敬",
       ],
+      BgmUrl:'',
       danmu: [],
       cp: "",
     };
@@ -278,8 +318,56 @@ export default {
 
 .exhibition {
   position: absolute;
-  top: 50px;
+  top: 20px;
   right: 0;
   z-index: 99;
 }
+
+@full:26500px;
+@single:500px;
+@scale:0.7;
+
+
+.jieshuo{
+  position: fixed;
+  bottom: 0;
+  right: 0;
+  z-index: 999;
+  width: @single * @scale;
+  height: @single* @scale;
+  overflow: hidden;
+  pointer-events: none;
+  // animation: trantobr 2.4s 1.2s forwards;
+
+
+  >img{
+    width: @full * @scale;
+    left: 0;
+    height: 100%;
+    position: absolute;
+    animation: jieshuo 2.4s steps(53) infinite;
+  }
+}
+
+@keyframes jieshuo {
+  100% {
+    left: -@full* @scale;
+  }
+}
+
+@keyframes trantobr {
+  0% {
+    top: 50%;
+    left: 50%;
+    transform: translate(-50%,-50%);
+  }
+
+  100% {
+    top: unset;
+    left: unset;
+    bottom: 0;
+    right: 0;
+    transform: translate(0);
+  }
+}
 </style>