Sfoglia il codice sorgente

Merge branch 'master' of http://face3d.4dage.com:7005/chenzimin2/ZGZQBWG

任一存 2 anni fa
parent
commit
6ea63d9ab2
68 ha cambiato i file con 598 aggiunte e 61 eliminazioni
  1. 3 2
      scene/public/static/css/main.css
  2. 10 0
      scene/public/static/js/main_2020_show.js
  3. BIN
      scene/src/assets/images/icon/inside.png
  4. BIN
      scene/src/assets/images/icon/inside_active.png
  5. BIN
      scene/src/assets/images/icon/pause.png
  6. BIN
      scene/src/assets/images/icon/play.png
  7. BIN
      scene/src/assets/img/game.png
  8. 73 19
      scene/src/views/gui/menu.vue
  9. 1 0
      zhengquan/public/scene/css/app.27ab14d3.css
  10. 1 0
      zhengquan/public/scene/css/app.2befc506.css
  11. 1 0
      zhengquan/public/scene/css/app.484f604c.css
  12. 1 0
      zhengquan/public/scene/css/app.4a4d63f4.css
  13. 1 0
      zhengquan/public/scene/css/app.8d635a3d.css
  14. 1 0
      zhengquan/public/scene/css/app.9d6eafd8.css
  15. 1 0
      zhengquan/public/scene/css/app.a996bc07.css
  16. 1 0
      zhengquan/public/scene/css/app.e945ff2b.css
  17. 1 0
      zhengquan/public/scene/hot/css/app.c1e3c14c.css
  18. 9 0
      zhengquan/public/scene/hot/css/chunk-vendors.ff3e1284.css
  19. BIN
      zhengquan/public/scene/hot/img/IMGerror.f7bd5886.png
  20. BIN
      zhengquan/public/scene/hot/img/loading.236fa088.gif
  21. 1 0
      zhengquan/public/scene/hot/index.html
  22. 2 0
      zhengquan/public/scene/hot/js/about.168b35c2.js
  23. 1 0
      zhengquan/public/scene/hot/js/about.168b35c2.js.map
  24. 2 0
      zhengquan/public/scene/hot/js/app.e124a369.js
  25. 1 0
      zhengquan/public/scene/hot/js/app.e124a369.js.map
  26. 34 0
      zhengquan/public/scene/hot/js/chunk-vendors.e38b11cc.js
  27. 1 0
      zhengquan/public/scene/hot/js/chunk-vendors.e38b11cc.js.map
  28. 1 1
      zhengquan/public/scene/index.html
  29. 1 0
      zhengquan/public/scene/js/app.02033f6b.js
  30. 0 1
      zhengquan/public/scene/js/app.42e49f45.js
  31. 1 0
      zhengquan/public/scene/js/app.58ed97bc.js
  32. 1 0
      zhengquan/public/scene/js/app.7e86a53e.js
  33. 1 0
      zhengquan/public/scene/js/app.87935e31.js
  34. 1 0
      zhengquan/public/scene/js/app.9137e22d.js
  35. 1 0
      zhengquan/public/scene/js/app.c5979b58.js
  36. 3 2
      zhengquan/public/scene/static/css/main.css
  37. BIN
      zhengquan/public/scene/static/images/icon-close.png
  38. 6 6
      zhengquan/public/scene/static/js/Hot.js
  39. 1 1
      zhengquan/public/scene/static/js/loadCAD.js
  40. 10 0
      zhengquan/public/scene/static/js/main_2020_show.js
  41. BIN
      zhengquan/public/staticData/animation/1/greeting.png
  42. BIN
      zhengquan/public/staticData/animation/1/idle.png
  43. BIN
      zhengquan/public/staticData/animation/1/talk.png
  44. BIN
      zhengquan/public/staticData/animation/2/greeting.png
  45. BIN
      zhengquan/public/staticData/animation/3/greeting.png
  46. BIN
      zhengquan/public/staticData/animation/4/greeting.png
  47. BIN
      zhengquan/public/staticData/animation/5/greeting.png
  48. BIN
      zhengquan/public/staticData/animation/6/greeting.png
  49. BIN
      zhengquan/public/staticData/animation/7/greeting.png
  50. BIN
      zhengquan/public/staticData/animation/8/greeting.png
  51. BIN
      zhengquan/public/staticData/animation/8/idle.png
  52. BIN
      zhengquan/public/staticData/animation/8/talk.png
  53. BIN
      zhengquan/public/staticData/animation/9/greeting.png
  54. BIN
      zhengquan/public/staticData/animation/9/idle.png
  55. BIN
      zhengquan/public/staticData/animation/9/talk.png
  56. 182 8
      zhengquan/public/staticData/data.js
  57. BIN
      zhengquan/public/staticData/game/1.png
  58. BIN
      zhengquan/public/staticData/game/2.png
  59. BIN
      zhengquan/public/staticData/game/3.png
  60. BIN
      zhengquan/public/staticData/game/4.png
  61. BIN
      zhengquan/public/staticData/game/5.png
  62. BIN
      zhengquan/public/staticData/game/6.png
  63. BIN
      zhengquan/public/staticData/game/7.png
  64. BIN
      zhengquan/src/assets/images/scene/back.png
  65. BIN
      zhengquan/src/assets/images/scene/scoreText.png
  66. BIN
      zhengquan/src/assets/images/scene/userBg.png
  67. BIN
      zhengquan/src/assets/images/scene/userHead.png
  68. 243 21
      zhengquan/src/views/Scene/ScenePage.vue

+ 3 - 2
scene/public/static/css/main.css

@@ -4466,7 +4466,7 @@ a.tag-link {
 
 #gui #drawer.playing,
 #gui .pinBottom.playing {
-    bottom: 20px
+    /* bottom: 20px */
 }
 
 #thumb-container .thumbImg {
@@ -4645,7 +4645,8 @@ a.tag-link {
     transition-property: bottom;
     transition-duration: .5s;
     background-color: #000;
-    z-index: 50
+    z-index: 50;
+    display: none !important;
 }
 
 #playHead.playing {

+ 10 - 0
scene/public/static/js/main_2020_show.js

@@ -4853,6 +4853,9 @@ window.Modernizr = function(n, e, t) {
             }
             ,
             n.prototype.playTour = function() {
+                // alert('开始导航')
+                // 触发形象talk状态
+                window.parent.window.handleRobot('talk');
                 if (!this.bounceable())
                     return this.tourIsPlaying ? void A.info("tour is already playing") 
                     : void (
@@ -4882,6 +4885,9 @@ window.Modernizr = function(n, e, t) {
 			} */
 			 
             n.prototype.stopTour = function(isAutoStop) {//停止导览        isAutoStop 希望仅在飞完结束自动停止时的stopTour不停止tourSound, 这样才能完整播放tourSound.  不过似乎会在倒数第二个片段点击按钮停止导览时也视作自动结束的(执行this.interrupt() )。
+                // alert('停止导航')
+                // 回到idle状态
+                window.parent.window.handleRobot('idle');
                 SoundManager.pause('tour'), // 周恩光 自动导览暂停时同时停止语音
                 this.isInterrupted() || this.transitionStage === y.Moving && this.checkAndHandleWalkingtourInterruption(this.nextWarpStyle) || (this.tourIsPlaying && (this.player.zoomEnabled = this.wasZoomEnabled),
                 this.tourIsPlaying = !1, 
@@ -6287,6 +6293,10 @@ window.Modernizr = function(n, e, t) {
             }
             function a() {
                 // window.parent.handleRobot('greeting'),
+                // alert('打开列表')
+                $("#drawer").hasClass("open") ? alert('关闭列表'): alert('打开列表')
+                window.parent.window.handleTopRobot('top')
+                // $("#drawer").hasClass("open") ? function(){window.parent && window.parent.window.handleTopRobot ? window.parent.window.handleTopRobot('bottom'):''}: function(){ window.parent && window.parent.window.handleTopRobot ? window.parent.window.handleTopRobot('top'):''}
                 c(),
                 $(".pinBottom").toggleClass("open"),
                 $("#drawer").toggleClass("open"),

BIN
scene/src/assets/images/icon/inside.png


BIN
scene/src/assets/images/icon/inside_active.png


BIN
scene/src/assets/images/icon/pause.png


BIN
scene/src/assets/images/icon/play.png


BIN
scene/src/assets/img/game.png


+ 73 - 19
scene/src/views/gui/menu.vue

@@ -28,7 +28,7 @@
             <a>
               <img rel="tooltip" title="" :src="require('@/assets/images/icon/pause.png')" width="24" height="24"
                 data-original-title="暂停" />
-              <div class="btmText" style="margin-left: -7px;">自动漫游</div>
+              <div class="btmText" style="margin-left: -12px;">自动漫游</div>
             </a>
           </div>
           <div id="next" class="next desktop-only ui-icon wide" style="display: none">
@@ -75,6 +75,36 @@
               <img class="active icon icon-inside active" :src="require('@/assets/images/icon/floor_active.png')" />
               <div class="btmText">顶部俯视</div>
             </div>
+            <div class="toHomeBox" style="margin-right: '10px';float: left;">
+              <img style="display: block;" src="../../assets/img/game.png" @click="openGameBox()"
+                alt="" />
+              <div class="btmText">互动游戏</div>
+            </div>
+            <div id="volume" class="toHomeBox toHomeBox2" style="margin-right: '10px';float: left; ">
+              <img id="openMusic" style="display: block;" @click="switchBGM(true)" src="../../assets/img/musicAc.png"
+                alt="" />
+              <img id="closeMusic" style="display: none;" @click="switchBGM(false)" src="../../assets/img/music.png"
+                alt="" />
+              <div class="btmText">音乐</div>
+            </div>
+
+
+
+            <!-- <div data-original-title="音乐" id="volume" rel="tooltip" title="音乐">
+              <img id="openMusic" class="icon icon-inside" :src="require('@/assets/img/musicAc.png')" />
+              <img  class="active icon icon-inside active" :src="require('@/assets/img/music.png')" />
+              <div class="btmText">音乐</div>
+            </div> -->
+
+            <!-- <div id="volume" class="toHomeBox" style="margin-right: '10px'">
+              <img id="openMusic" style="display: block" @click="switchBGM(true)" src="../../assets/img/musicAc.png"
+                alt="" />
+              <img id="closeMusic" style="display: none" @click="switchBGM(false)" src="../../assets/img/music.png"
+                alt="" />
+              <div class="btmText">音乐</div>
+            </div> -->
+
+
 
             <!-- <div
               data-original-title="VR"
@@ -146,11 +176,7 @@
 
         <!-- 音乐 -->
         <!-- <div id="volume" class="ui-icon bgandshare wide"> -->
-        <div id="volume" class="toHomeBox" style="margin-right: '10px'">
-          <img id="openMusic" style="display: block" @click="switchBGM(true)" src="../../assets/img/musicAc.png" alt="" />
-          <img id="closeMusic" style="display: none" @click="switchBGM(false)" src="../../assets/img/music.png" alt="" />
-          <div class="btmText">音乐</div>
-        </div>
+
 
 
         <!-- 全屏 -->
@@ -222,19 +248,25 @@ export default {
       if (window.hotData) {
         clearInterval(timeA);
         window.parent.window.handleRobot('greeting');
-        setTimeout(() => {
-          window.parent.window.handleTopRobot('top');
-        }, 2000);
+        // setTimeout(() => {
+        //   window.parent.window.handleTopRobot('top');
+        // }, 2000);
       }
 
     }, 500);
-    setTimeout(() => {
-      window.parent.window.handleTopRobot('bottom');
-      console.log('形象下移触发')
-    }, 6000)
+    // setTimeout(() => {
+    //   window.parent.window.handleTopRobot('bottom');
+    //   console.log('形象下移触发')
+    // }, 6000)
 
   },
   methods: {
+    // 打开游戏界面
+    openGameBox(){
+      if(window.parent && window.parent.window.openGameBoxFu){
+        window.parent.window.openGameBoxFu()
+      }
+    },
     // 跳转到制定热点
     initCamera(locId) {
       const current = window.myHotList.find((item) => {
@@ -398,6 +430,12 @@ export default {
 
 #volume {
   margin-right: 16px;
+
+  @media screen and (max-width: 768px) {
+    img {
+      margin-bottom: 15px !important;
+    }
+  }
 }
 
 #volume,
@@ -451,7 +489,7 @@ export default {
     >img {
       width: @wh;
       height: @wh;
-      display: block !important;
+      display: block;
       margin-bottom: 5px;
     }
 
@@ -503,12 +541,16 @@ export default {
 }
 
 .toHomeBox {
+  width: 60px;
   margin-right: 40px;
   cursor: pointer;
   position: relative;
   // width: 44px;
   display: flex;
   justify-content: center;
+  @media screen and (max-width: 700px) {
+    width: 50px;
+  }
 
   img {
     width: @wh;
@@ -522,6 +564,12 @@ export default {
   }
 }
 
+.toHomeBox2{
+  @media screen and (max-width: 700px) {
+    margin: 10px 0;
+  }
+}
+
 .pinBottom-container {
   #myHotList {
     position: relative;
@@ -562,12 +610,18 @@ export default {
   .viewContainer {
     &>div {
       img {
-        width: 40px !important;
-        height: 40px !important;
+        width: 28px !important;
+        height: 28px !important;
       }
     }
   }
 
+  #myHotList {
+    img {
+      margin-bottom: 15px !important;
+    }
+  }
+
   .pinBottom-container #myHotList {
     width: 50px;
     margin-bottom: 15px;
@@ -596,9 +650,9 @@ export default {
           }
 
           img {
-            width: 40px;
-            height: 40px;
-            margin-bottom: 10px;
+            width: 28px;
+            height: 28px;
+            margin-bottom: 15px;
           }
         }
       }

File diff suppressed because it is too large
+ 1 - 0
zhengquan/public/scene/css/app.27ab14d3.css


File diff suppressed because it is too large
+ 1 - 0
zhengquan/public/scene/css/app.2befc506.css


File diff suppressed because it is too large
+ 1 - 0
zhengquan/public/scene/css/app.484f604c.css


File diff suppressed because it is too large
+ 1 - 0
zhengquan/public/scene/css/app.4a4d63f4.css


File diff suppressed because it is too large
+ 1 - 0
zhengquan/public/scene/css/app.8d635a3d.css


File diff suppressed because it is too large
+ 1 - 0
zhengquan/public/scene/css/app.9d6eafd8.css


File diff suppressed because it is too large
+ 1 - 0
zhengquan/public/scene/css/app.a996bc07.css


File diff suppressed because it is too large
+ 1 - 0
zhengquan/public/scene/css/app.e945ff2b.css


File diff suppressed because it is too large
+ 1 - 0
zhengquan/public/scene/hot/css/app.c1e3c14c.css


File diff suppressed because it is too large
+ 9 - 0
zhengquan/public/scene/hot/css/chunk-vendors.ff3e1284.css


BIN
zhengquan/public/scene/hot/img/IMGerror.f7bd5886.png


BIN
zhengquan/public/scene/hot/img/loading.236fa088.gif


File diff suppressed because it is too large
+ 1 - 0
zhengquan/public/scene/hot/index.html


+ 2 - 0
zhengquan/public/scene/hot/js/about.168b35c2.js

@@ -0,0 +1,2 @@
+(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["about"],{f820:function(t,e,n){"use strict";n.r(e);var a=function(){var t=this,e=t.$createElement;t._self._c;return t._m(0)},s=[function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"about"},[n("h1",[t._v("This is an about page")])])}],u=n("2877"),c={},i=Object(u["a"])(c,a,s,!1,null,null,null);e["default"]=i.exports}}]);
+//# sourceMappingURL=about.168b35c2.js.map

File diff suppressed because it is too large
+ 1 - 0
zhengquan/public/scene/hot/js/about.168b35c2.js.map


File diff suppressed because it is too large
+ 2 - 0
zhengquan/public/scene/hot/js/app.e124a369.js


File diff suppressed because it is too large
+ 1 - 0
zhengquan/public/scene/hot/js/app.e124a369.js.map


File diff suppressed because it is too large
+ 34 - 0
zhengquan/public/scene/hot/js/chunk-vendors.e38b11cc.js


File diff suppressed because it is too large
+ 1 - 0
zhengquan/public/scene/hot/js/chunk-vendors.e38b11cc.js.map


File diff suppressed because it is too large
+ 1 - 1
zhengquan/public/scene/index.html


File diff suppressed because it is too large
+ 1 - 0
zhengquan/public/scene/js/app.02033f6b.js


File diff suppressed because it is too large
+ 0 - 1
zhengquan/public/scene/js/app.42e49f45.js


File diff suppressed because it is too large
+ 1 - 0
zhengquan/public/scene/js/app.58ed97bc.js


File diff suppressed because it is too large
+ 1 - 0
zhengquan/public/scene/js/app.7e86a53e.js


File diff suppressed because it is too large
+ 1 - 0
zhengquan/public/scene/js/app.87935e31.js


File diff suppressed because it is too large
+ 1 - 0
zhengquan/public/scene/js/app.9137e22d.js


File diff suppressed because it is too large
+ 1 - 0
zhengquan/public/scene/js/app.c5979b58.js


+ 3 - 2
zhengquan/public/scene/static/css/main.css

@@ -4466,7 +4466,7 @@ a.tag-link {
 
 #gui #drawer.playing,
 #gui .pinBottom.playing {
-    bottom: 20px
+    /* bottom: 20px */
 }
 
 #thumb-container .thumbImg {
@@ -4645,7 +4645,8 @@ a.tag-link {
     transition-property: bottom;
     transition-duration: .5s;
     background-color: #000;
-    z-index: 50
+    z-index: 50;
+    display: none !important;
 }
 
 #playHead.playing {

BIN
zhengquan/public/scene/static/images/icon-close.png


+ 6 - 6
zhengquan/public/scene/static/js/Hot.js

@@ -1269,9 +1269,9 @@ window.initHot = function(model){
             var popup = document.getElementById("popup");
             
             if (openHot) {
-                if(window.parent.sceneBackIconStatus) {
-                    // 关闭返回按钮
-                    window.parent.sceneBackIconStatus(false)
+                // 热点打开关闭显示机器人
+                if(window.parent && window.parent.handleShowFigure) {
+                    window.parent.handleShowFigure(false)
                 }
                 g_currentHot = this,
                 popup.style.display = "block",
@@ -1742,9 +1742,9 @@ window.initHot = function(model){
     
     Hot.closePopup = ()=>{// 关闭热点页面
         if(!g_currentHot) return;
-        // 关闭热点,显示返回按钮
-        if(window.parent&&window.parent.sceneBackIconStatus){
-            window.parent.sceneBackIconStatus(true)
+        // 关闭热点,显示机器人
+        if(window.parent&&window.parent.handleShowFigure){
+            window.parent.handleShowFigure(true)
         }
         g_currentHot = null;
         var hotPop = document.getElementById('popup'); 

+ 1 - 1
zhengquan/public/scene/static/js/loadCAD.js

@@ -31,7 +31,7 @@ window.grendCAD = (function grendCAD() {
     let $name = document.createElement("div");
 
     $name.className = "name";
-    // $name.textContent = "当前位置:元大都展";
+    $name.textContent = "当前位置:元大都展";
     $layer.appendChild($name);
 
     $layer.className = "cad";

+ 10 - 0
zhengquan/public/scene/static/js/main_2020_show.js

@@ -4853,6 +4853,9 @@ window.Modernizr = function(n, e, t) {
             }
             ,
             n.prototype.playTour = function() {
+                // alert('开始导航')
+                // 触发形象talk状态
+                window.parent.window.handleRobot('talk');
                 if (!this.bounceable())
                     return this.tourIsPlaying ? void A.info("tour is already playing") 
                     : void (
@@ -4882,6 +4885,9 @@ window.Modernizr = function(n, e, t) {
 			} */
 			 
             n.prototype.stopTour = function(isAutoStop) {//停止导览        isAutoStop 希望仅在飞完结束自动停止时的stopTour不停止tourSound, 这样才能完整播放tourSound.  不过似乎会在倒数第二个片段点击按钮停止导览时也视作自动结束的(执行this.interrupt() )。
+                // alert('停止导航')
+                // 回到idle状态
+                window.parent.window.handleRobot('idle');
                 SoundManager.pause('tour'), // 周恩光 自动导览暂停时同时停止语音
                 this.isInterrupted() || this.transitionStage === y.Moving && this.checkAndHandleWalkingtourInterruption(this.nextWarpStyle) || (this.tourIsPlaying && (this.player.zoomEnabled = this.wasZoomEnabled),
                 this.tourIsPlaying = !1, 
@@ -6287,6 +6293,10 @@ window.Modernizr = function(n, e, t) {
             }
             function a() {
                 // window.parent.handleRobot('greeting'),
+                // alert('打开列表')
+                // $("#drawer").hasClass("open") ? alert('关闭列表'): alert('打开列表')
+                // window.parent.window.handleTopRobot('top')
+                $("#drawer").hasClass("open") ? window.parent && window.parent.window.handleTopRobot ? window.parent.window.handleTopRobot('bottom'):'': window.parent && window.parent.window.handleTopRobot ? window.parent.window.handleTopRobot('top'):''
                 c(),
                 $(".pinBottom").toggleClass("open"),
                 $("#drawer").toggleClass("open"),

BIN
zhengquan/public/staticData/animation/1/greeting.png


BIN
zhengquan/public/staticData/animation/1/idle.png


BIN
zhengquan/public/staticData/animation/1/talk.png


BIN
zhengquan/public/staticData/animation/2/greeting.png


BIN
zhengquan/public/staticData/animation/3/greeting.png


BIN
zhengquan/public/staticData/animation/4/greeting.png


BIN
zhengquan/public/staticData/animation/5/greeting.png


BIN
zhengquan/public/staticData/animation/6/greeting.png


BIN
zhengquan/public/staticData/animation/7/greeting.png


BIN
zhengquan/public/staticData/animation/8/greeting.png


BIN
zhengquan/public/staticData/animation/8/idle.png


BIN
zhengquan/public/staticData/animation/8/talk.png


BIN
zhengquan/public/staticData/animation/9/greeting.png


BIN
zhengquan/public/staticData/animation/9/idle.png


BIN
zhengquan/public/staticData/animation/9/talk.png


File diff suppressed because it is too large
+ 182 - 8
zhengquan/public/staticData/data.js


BIN
zhengquan/public/staticData/game/1.png


BIN
zhengquan/public/staticData/game/2.png


BIN
zhengquan/public/staticData/game/3.png


BIN
zhengquan/public/staticData/game/4.png


BIN
zhengquan/public/staticData/game/5.png


BIN
zhengquan/public/staticData/game/6.png


BIN
zhengquan/public/staticData/game/7.png


BIN
zhengquan/src/assets/images/scene/back.png


BIN
zhengquan/src/assets/images/scene/scoreText.png


BIN
zhengquan/src/assets/images/scene/userBg.png


BIN
zhengquan/src/assets/images/scene/userHead.png


+ 243 - 21
zhengquan/src/views/Scene/ScenePage.vue

@@ -12,10 +12,12 @@ declare global {
     handleRobot: (state: string) => void,
     handleTopRobot: (state: string) => void,
     handleShowFigure: (v: boolean) => void,
+    openGameBoxFu: (v: boolean) => void,
   }
 }
 
 const route = useRoute()
+const router = useRouter()
 const store = useStore()
 
 const isShowHosList = ref(false)
@@ -25,23 +27,55 @@ const currentHot = ref({} as any)
 const isReady = ref(false)
 const changeUnit = (unit: any) => {
   currentUnit.value = unit
+  animalZhenShuNumber.value = currentUnit.value.xuliezhen[animalStat.value].zhenShu
+  duration.value = currentUnit.value.xuliezhen[animalStat.value].duration
   isShowHosList.value = false
 }
-const hotspots = ref([])
+const hotspots = ref([] as any)
+
+// 用Object.keys 和 reduce 方法过滤空值属性
+const filterEmptyProps = (obj: any) => {
+  return Object.keys(obj).reduce((acc, key) => {
+    if (obj[key].title !== '' && obj[key].title !== ' ') {
+      // @ts-ignore
+      acc[key] = obj[key];
+    }
+    return acc;
+  }, {});
+}
 // 获取所有单元的热点列表
 const getAllHotspot = () => {
   store.dataAll.sceneList.forEach((item: any) => {
     axios.get(`https://super.4dage.com/data/${item.code}/data2.js?m=${new Date().getTime()}`).then((res: any) => {
-      console.log('热点列表', res.data)
       //@ts-ignore
       hotspots.value.push({
         id: item.id,
         unit: item.name,
-        hots: res.data.hots,
+        hots: filterEmptyProps(res.data.hots),
         code: item.code,
+        xuliezhen: item.xuliezhen
       })
+      if (item.code == route.query.code) {
+        currentUnit.value = {
+          id: item.id,
+          unit: item.name,
+          hots: filterEmptyProps(res.data.hots),
+          code: item.code,
+          xuliezhen: item.xuliezhen
+        }
+      }
     })
   })
+  setTimeout(() => {
+    // let newList = []
+    hotspots.value.forEach((item: any, index: number) => {
+      if (item.id == 1) {
+        hotspots.value.unshift(hotspots.value.splice(index, 1)[0])
+      } else if (item.id == 9) {
+        hotspots.value.push(hotspots.value.splice(index, 1)[0])
+      }
+    })
+  }, 500)
 }
 watch(hotspots.value, (newVal: any) => {
   if (newVal.length == store.dataAll.sceneList.length) {
@@ -49,9 +83,17 @@ watch(hotspots.value, (newVal: any) => {
     currentUnit.value = hotspots.value.filter((item: any) => {
       return item.code == route.query.code
     })[0]
+    animalZhenShuNumber.value = currentUnit.value.xuliezhen[animalStat.value].zhenShu
+    duration.value = currentUnit.value.xuliezhen[animalStat.value].duration
   }
 }, { immediate: true })
 
+watch(isShowHosList, (newVal: any) => {
+  if (newVal && browser.mobile) {
+    isShowFigure.value = false
+  }
+})
+
 const goHotCamarer = (hot: any) => {
   const iframe = document.getElementById('sceneiframe') as HTMLIFrameElement
   //@ts-ignore
@@ -62,9 +104,26 @@ const goHotCamarer = (hot: any) => {
 
 // 形象状态 greeting-招呼 idle-静默 talk-说话
 const animalStat = ref('greeting')
+const animalZhenShuNumber = ref(48 as number)
+const animalZhenShu = computed(() => {
+  return `steps(${animalZhenShuNumber.value})`
+})
+const translateXNumber = computed(() => {
+  return browser.mobile ? `${-100 * animalZhenShuNumber.value}px` : `${-150 * animalZhenShuNumber.value}px`
+})
+const duration = ref(`3s`)
 const xingxiangListShow = ref(false)
 const isShowFigure = ref(true)
 
+
+const isShowGameList = ref(false)
+
+// 内嵌小游戏界面打开
+const openGame = (game: any) => {
+  console.log(game)
+}
+
+
 onMounted(() => {
   getAllHotspot()
   // store.hotspots.length == 0 ? getAllHotspot() : hotspots.value = store.hotspots, currentUnit.value = hotspots.value[0]
@@ -75,28 +134,39 @@ onMounted(() => {
   // 机器人状态改变
   // greeting-招呼 idle-静默 talk-说话
   window.handleRobot = (state: string) => {
-    console.log('handleRobot!!!', state);
-
     animalStat.value = state
+    animalZhenShuNumber.value = currentUnit.value.xuliezhen[animalStat.value].zhenShu
+    duration.value = currentUnit.value.xuliezhen[animalStat.value].duration
     isReady.value = true
   }
 
   // 机器人在上面  top:上  bottom:下
+  // @ts-ignore
   window.handleTopRobot = (state: string) => {
     const xuliezhenDom = document.getElementById('xuliezhenid')
-    state == 'top' ? !browser.mobile ? xuliezhenDom!.style.bottom = '200px' : xuliezhenDom!.style.bottom = '120px' : !browser.mobile ? xuliezhenDom!.style.bottom = '100px' : xuliezhenDom!.style.bottom = '10px'
+    state == 'top' ? !browser.mobile ? xuliezhenDom!.style.bottom = '120px' : xuliezhenDom!.style.bottom = '120px' : !browser.mobile ? xuliezhenDom!.style.bottom = '0px' : xuliezhenDom!.style.bottom = '10px'
   }
 
   // 机器人隐藏与显示(热点打开时隐藏)
   window.handleShowFigure = (state: boolean) => {
     isShowFigure.value = state
   }
+
+  // 打开游戏界面弹窗
+  window.openGameBoxFu = () => {
+    isShowGameList.value = true
+  }
 })
 </script>
 
 <template>
   <div class='all'>
+    <!-- 返回按钮 -->
+    <img class="backBtn" v-show="isShowFigure" src="@/assets/images/scene/back.png" alt=""
+      @click="() => { router.replace('/home') }">
     <iframe id="sceneiframe" :src="`./scene/index.html?m=${currentUnit.code}`"></iframe>
+    <!-- 本地 -->
+    <!-- <iframe id="sceneiframe" :src="`./scene/index.html?m=${currentUnit.code}`"></iframe> -->
     <!-- 热点列表 -->
     <div v-show="isShowHosList" class="hots-box">
       <img v-show="browser.mobile" @click="isShowHosList = false" class="close-icon" src="@/assets/images/close-icon.png"
@@ -111,6 +181,7 @@ onMounted(() => {
         <img v-show="!browser.mobile" @click="isShowHosList = false" class="close-icon"
           src="@/assets/images/close-icon.png" alt="">
         <div class="right-content">
+          <div v-show="JSON.stringify(currentUnit.hots) == '{}'" class="right-item">暂无热点</div>
           <div class="right-item" :title="item.title" v-for="(item, index) in currentUnit.hots" :key="index"
             @click="goHotCamarer(item)" :style="{ color: currentHot.sid == item.sid ? '#C5A16C' : '' }">{{ item.title
             }}
@@ -118,10 +189,23 @@ onMounted(() => {
         </div>
       </div>
     </div>
-    <div class="xingxiangBox" v-show="isShowFigure">
+    <div id="xuliezhenid" class="xingxiangBox" v-show="isShowFigure">
       <!-- 形象人 -->
-      <div id="xuliezhenid" class="xuliezhen" v-if="isReady" @click="xingxiangListShow = true"
-        :style="{ backgroundImage: `url(${baseUrl}/animation/${currentUnit.id + 1}/${animalStat}.png)`, backgroundSize: 'cover' }">
+      <div class="xuliezhen" v-if="isReady" @click="xingxiangListShow = true"
+        :style="{ backgroundImage: `url(${baseUrl}/animation/${currentUnit.id}/${animalStat}.png)`, backgroundSize: 'cover' }">
+      </div>
+      <!-- 积分牌 -->
+      <div class="score-box" v-if="isReady">
+        <img class="headImg" src="@/assets/images/scene/userHead.png" alt="">
+        <!-- 已登录状态 -->
+        <div>
+          <div class="title">积分</div>
+          <div class="scroll-wrap">
+            <div class="scroll-item" title="56666666">
+              56666666
+            </div>
+          </div>
+        </div>
       </div>
       <!-- 形象listBox -->
       <div class="xulielistBox" v-show="xingxiangListShow">
@@ -131,6 +215,18 @@ onMounted(() => {
         </div>
       </div>
     </div>
+
+    <!-- 游戏列表弹窗 -->
+    <div class="game-list-box" v-show="isShowGameList">
+      <div class="game-list">
+        <div class="game-list-item" v-for="(item, index) in store.dataAll.gameList" :key="index" @click="openGame(item)">
+          <img :src="`${baseUrl}/game/${item.id}.png`" alt="">
+          <div>{{ item.name }}</div>
+        </div>
+      </div>
+      <img src="@/assets/images/close-icon.png" class="close-icon" @click="isShowGameList = false" alt="">
+    </div>
+
   </div>
 </template>
 
@@ -140,6 +236,13 @@ onMounted(() => {
   height: 100%;
   overflow: hidden;
 
+  .backBtn {
+    position: absolute;
+    top: 3%;
+    left: 2%;
+    cursor: pointer;
+  }
+
   iframe {
     width: 100%;
     height: 100%;
@@ -195,7 +298,6 @@ onMounted(() => {
           background: #66141885;
         }
 
-        ;
       }
 
       .left-item:first-child {
@@ -218,6 +320,7 @@ onMounted(() => {
       align-items: center;
       justify-content: end;
       position: relative;
+      padding: 0 10px;
 
       // .close-icon {
       //   width: 30px;
@@ -261,20 +364,22 @@ onMounted(() => {
 
   .xingxiangBox {
     position: absolute;
-    right: 100px;
+    right: 1%;
     bottom: 0;
+    transition-property: bottom;
+    transition-duration: .5s;
 
     .xuliezhen {
       position: absolute;
       right: 0;
-      bottom: 100px;
+      bottom: 150px;
       width: 150px;
       height: 150px;
       background-position-x: 0;
       background-repeat: no-repeat;
       animation-name: xuliezhen-animation;
-      animation-timing-function: steps(60);
-      animation-duration: 3s;
+      animation-timing-function: v-bind('animalZhenShu');
+      animation-duration: v-bind('duration');
       animation-iteration-count: infinite;
       transition-property: bottom;
       transition-duration: 0.4s;
@@ -287,13 +392,124 @@ onMounted(() => {
       }
 
       to {
-        background-position-x: -9000px;
+        background-position-x: v-bind('translateXNumber');
       }
     }
 
     .xulielistBox {
       display: none;
     }
+
+    .score-box {
+      width: 70px;
+      height: 110px;
+      background: url(@/assets/images/scene/userBg.png);
+      background-size: 100% 100%;
+      position: absolute;
+      right: 40px;
+      bottom: 30px;
+      display: flex;
+      flex-direction: column;
+      align-items: center;
+      text-align: center;
+      font-size: 12px;
+      color: #EBC68F;
+      text-shadow: 0 1px 2px 0 #00000091;
+      font-family: 'SourceHanSansCN-Medium';
+
+      img {
+        width: 75%;
+      }
+
+      div:first-child {
+        // margin-top: 2px;
+      }
+
+      .scroll-wrap {
+        max-width: 40%;
+        display: inline-block;
+        vertical-align: top;
+        overflow: hidden;
+        white-space: nowrap;
+        margin-top: -3px;
+
+        .scroll-item {
+          animation: scroll linear 4s alternate infinite;
+          float: left;
+        }
+
+        @keyframes scroll {
+          0% {
+            margin-left: 0;
+            transform: translateX(0);
+          }
+
+          10% {
+            margin-left: 0;
+            transform: translateX(0);
+          }
+
+          90% {
+            margin-left: 100%;
+            transform: translateX(-100%);
+          }
+
+          100% {
+            margin-left: 100%;
+            transform: translateX(-100%);
+          }
+        }
+      }
+    }
+  }
+
+  .game-list-box {
+    width: 100%;
+    height: 100%;
+    position: absolute;
+    left: 0;
+    top: 0;
+    display: flex;
+    flex-direction: column;
+    justify-content: center;
+    align-items: center;
+    background: rgba(0, 0, 0, 0.486);
+    backdrop-filter: blur(10px);
+
+    .game-list {
+      width: 80%;
+      height: 80%;
+      background: #ffffff85;
+      border-radius: 15px;
+      padding: 20px;
+      display: grid;
+      grid-template-columns: repeat(4, 1fr);
+      justify-items: center;
+      font-family: 'AlibabaPuHuiTi2.0-105Heavy';
+      color: white;
+
+      .game-list-item {
+        width: 100%;
+        display: flex;
+        flex-direction: column;
+        // justify-content: center;
+        align-items: center;
+
+        img {
+          width: 70%;
+          height: 50%;
+          object-fit: contain;
+          margin-bottom: 10px;
+        }
+      }
+    }
+
+    img {
+      width: 44px;
+      height: 44px;
+      margin-top: 20px;
+      cursor: pointer;
+    }
   }
 
 
@@ -342,7 +558,7 @@ onMounted(() => {
 
         .left-item {
           height: 15%;
-          font-size: 1.1em;
+          font-size: 1em;
 
           &:hover {
             background: #66141885;
@@ -397,14 +613,15 @@ onMounted(() => {
       .xuliezhen {
         position: absolute;
         right: 0;
-        bottom: 10px;
+        bottom: 120px;
         width: 100px;
         height: 100px;
         background-position-x: 0;
         background-repeat: no-repeat;
-        animation: mouse-in 3s;
-        animation-timing-function: steps(60);
-        animation-iteration-count: forwards;
+        animation: mouse-in;
+        animation-duration: v-bind('duration');
+        animation-timing-function: v-bind('animalZhenShu');
+        animation-iteration-count: infinite;
         transition-property: bottom;
         transition-duration: 0.4s;
         cursor: pointer;
@@ -416,13 +633,18 @@ onMounted(() => {
         }
 
         to {
-          background-position-x: -6000px;
+          background-position-x: v-bind('translateXNumber');
         }
       }
 
       .xulielistBox {
         display: none;
       }
+
+      .score-box {
+        bottom: 13px;
+        right: 15px;
+      }
     }
   }