tremble 2 年之前
父節點
當前提交
cd28206e23

+ 2 - 2
public/index.html

@@ -16,11 +16,11 @@
     var _hmt = _hmt || [];
     (function() {
       var hm = document.createElement("script");
-      hm.src = "https://hm.baidu.com/hm.js?a1af463bc2692b6861ac40d2e024b07d";
+      hm.src = "https://hm.baidu.com/hm.js?de470ac542dcebd70489a7ce3e1705c3";
       var s = document.getElementsByTagName("script")[0]; 
       s.parentNode.insertBefore(hm, s);
     })();
-  </script>
+    </script>
 </head>
 
 <body>

+ 2 - 2
public/mobile.html

@@ -14,11 +14,11 @@
       var _hmt = _hmt || [];
       (function() {
         var hm = document.createElement("script");
-        hm.src = "https://hm.baidu.com/hm.js?a1af463bc2692b6861ac40d2e024b07d";
+        hm.src = "https://hm.baidu.com/hm.js?de470ac542dcebd70489a7ce3e1705c3";
         var s = document.getElementsByTagName("script")[0]; 
         s.parentNode.insertBefore(hm, s);
       })();
-    </script>
+      </script>
   </head>
   <body>
     <script src="<%= VUE_APP_STATIC_DIR %>/js/lib/jquery-2.1.1.min.js" class="build keep"></script>

+ 2 - 2
public/scene.html

@@ -31,11 +31,11 @@
       var _hmt = _hmt || [];
       (function() {
         var hm = document.createElement("script");
-        hm.src = "https://hm.baidu.com/hm.js?a1af463bc2692b6861ac40d2e024b07d";
+        hm.src = "https://hm.baidu.com/hm.js?de470ac542dcebd70489a7ce3e1705c3";
         var s = document.getElementsByTagName("script")[0]; 
         s.parentNode.insertBefore(hm, s);
       })();
-    </script>
+      </script>
   </head>
   <body>
     <script src="<%= VUE_APP_STATIC_DIR %>/js/lib/jquery-2.1.1.min.js" class="build keep"></script>

二進制
public/zhanxiang/images/one/A-12.jpg


二進制
public/zhanxiang/images/one/A-23.jpg


二進制
public/zhanxiang/images/one/A-24.jpg


二進制
public/zhanxiang/images/one/A-27.jpg


二進制
src/assets/images/proj2022/fullscreen.png


二進制
src/assets/images/proj2022/fullscreen_exit.png


二進制
src/assets/images/proj2022/pc/birdviewpc.jpg


+ 43 - 56
src/clients/mobile.vue

@@ -17,53 +17,53 @@ let shareUrl = "https://shuangchuang-api.kczg.org.cn/Web/jssdk";
 export default {
   methods: {
     wxShare() {
-      let url = location.href.split("#")[0];
+      let url = location.href;
 
       $.ajax({
-        url: shareUrl + `?url=${encodeURIComponent(url)}`,
+        url: "/Wechat/getWeiXinSignature",
         type: "get",
-        dataType: "json",
+        data: {
+          url,
+        },
         contentType: "application/json",
         success: (result) => {
-          if ("0" == result.code) {
-            wx.config({
-              debug: !1,
-              appId: result.data.appId,
-              timestamp: result.data.timestamp,
-              nonceStr: result.data.nonceStr,
-              signature: result.data.signature,
-              jsApiList: [
-                "checkJsApi",
-                "getLocation",
-                "onMenuShareTimeline",
-                "updateAppMessageShareData",
-                "updateTimelineShareData",
-                "onMenuShareAppMessage",
-                "hideMenuItems",
-              ],
+          wx.config({
+            debug: !1,
+            appId: result.data.appId,
+            timestamp: result.data.timestamp,
+            nonceStr: result.data.nonceStr,
+            signature: result.data.signature,
+            jsApiList: [
+              "checkJsApi",
+              "getLocation",
+              "onMenuShareTimeline",
+              "updateAppMessageShareData",
+              "updateTimelineShareData",
+              "onMenuShareAppMessage",
+              "hideMenuItems",
+            ],
+          });
+          wx.ready(function() {
+            wx.onMenuShareTimeline({
+              title: "2022年全国大众创业万众创新活动周云展览",
+              desc: "云上展厅分为序厅及五个主题展区,展出了144个项目,打造永不落幕的云端展览。",
+              link: url,
+              imgUrl: "https://img-yunzhanlan.kczg.org.cn/yunzhanlan/images/logo.jpg",
+              success: function() {},
+              cancel: function() {},
             });
-            wx.ready(function() {
-              wx.onMenuShareTimeline({
-                title: "2022年全国大众创业万众创新活动周云展览",
-                desc: "云上展厅分为序厅及五个主题展区,展出了144个项目,打造永不落幕的云端展览。",
-                link: url,
-                imgUrl: "https://img-yunzhanlan.kczg.org.cn/yunzhanlan/images/logo.jpg",
-                success: function() {},
-                cancel: function() {},
-              });
-              wx.onMenuShareAppMessage({
-                title: "2022年全国大众创业万众创新活动周云展览",
-                desc: "云上展厅分为序厅及五个主题展区,展出了144个项目,打造永不落幕的云端展览。",
-                link: url,
-                imgUrl: "https://img-yunzhanlan.kczg.org.cn/yunzhanlan/images/logo.jpg",
-                type: "",
-                dataUrl: "",
-                success: function() {},
-                cancel: function() {},
-              });
-              wx.error(function() {});
+            wx.onMenuShareAppMessage({
+              title: "2022年全国大众创业万众创新活动周云展览",
+              desc: "云上展厅分为序厅及五个主题展区,展出了144个项目,打造永不落幕的云端展览。",
+              link: url,
+              imgUrl: "https://img-yunzhanlan.kczg.org.cn/yunzhanlan/images/logo.jpg",
+              type: "",
+              dataUrl: "",
+              success: function() {},
+              cancel: function() {},
             });
-          }
+            wx.error(function() {});
+          });
         },
       });
     },
@@ -100,20 +100,9 @@ export default {
       // })
     });
 
-    $(document)
-      .off("click touchstart")
-      .on("click touchstart", () => {
-        this.tongji("click");
-      });
-
-    $(document)
-      .off("keydown")
-      .on("keydown", () => {
-        this.tongji("keydown");
-      });
-    this.wxShare();
-
-    
+    // if (typeof wx != 'undefined' && (window.navigator.userAgent.toLowerCase().match(/MicroMessenger/i) == "micromessenger")) {
+    //   this.wxShare();
+    // }
   },
 };
 </script>
@@ -134,8 +123,6 @@ body,
   visibility: hidden;
 }
 
-
-
 // /*竖屏*/
 // @media screen and (orientation: portrait) {
 //   .orientation-tip {

+ 66 - 54
src/components/bird_view/index.vue

@@ -1,10 +1,11 @@
 <template>
-  <div class="birdview" 
-  
-  :class="{ birdview_ipad: isiPad,birdview_pad_notlandscape:isiPad&&!g_isLandscape }" :style="{ backgroundImage: `url(${require(`@/assets/images/proj2022/pc/birdviewbg.jpg`)})` }">
+  <div class="birdview" :class="{ birdview_ipad: isiPad, birdview_pad_notlandscape: isiPad && !g_isLandscape }">
     <img v-if="!hideClose" class="close" @click="close" :src="require('@/assets/images/proj2022/pc/cancel.png')" alt="" />
-    <div class="tag" v-for="(item, i) in themes" :key="i" :class="item.id">
-      <img @click="onClick(item)" :src="require(`@/assets/images/proj2022/bird_view/${item.id}.png`)" alt="" />
+    <div class="con">
+      <img :src="require(`@/assets/images/proj2022/pc/birdviewpc.jpg`)" alt="" />
+      <div class="tag" v-for="(item, i) in themes" :key="i" :class="item.id">
+        <img @click="onClick(item)" :src="require(`@/assets/images/proj2022/bird_view/${item.id}.png`)" alt="" />
+      </div>
     </div>
   </div>
 </template>
@@ -78,55 +79,67 @@ export default {
     cursor: pointer;
     z-index: 99;
   }
-
-  .tag {
-    position: absolute;
-    max-width: 10%;
-    cursor: pointer;
-    display: inline-block;
-    &::after {
-      pointer-events: none;
-      animation: highlight-move 3s infinite;
-      background: linear-gradient(90deg, hsla(0, 0%, 100%, 0) 0, hsla(0, 0%, 100%, 0.3) 50%, hsla(0, 0%, 100%, 0));
-      content: "";
-      height: 88%;
-      left: 0%;
+  .con {
+    position: fixed;
+    text-align: center;
+    height: 100%;
+    display: flex;
+    justify-content: center;
+    transform: translate(-50%,-50%);
+    top: 50%;
+    left: 50%;
+    >img{
+      height: 100%;
+    }
+    .tag {
       position: absolute;
-      top: 0;
-      transform: skewX(-45deg);
-      width: 40%;
+      max-width: 10%;
+      cursor: pointer;
+      display: inline-block;
+      &::after {
+        pointer-events: none;
+        animation: highlight-move 3s infinite;
+        background: linear-gradient(90deg, hsla(0, 0%, 100%, 0) 0, hsla(0, 0%, 100%, 0.3) 50%, hsla(0, 0%, 100%, 0));
+        content: "";
+        height: 88%;
+        left: 0%;
+        position: absolute;
+        top: 0;
+        transform: skewX(-45deg);
+        width: 40%;
+      }
+      > img {
+        width: 100%;
+      }
     }
-    > img {
-      width: 100%;
+    .one {
+      top: 53%;
+      left: 49%;
+    }
+    .two {
+      top: 43%;
+      left: 57%;
+    }
+    .three {
+      top: 37%;
+      left: 65%;
+    }
+    .four {
+      top: 22%;
+      left: 48%;
+    }
+    .five {
+      top: 27%;
+      left: 40%;
+    }
+    .xuting {
+      top: 59%;
+      left: 41%;
+    }
+    .weiting {
+      top: 33%;
+      left: 33%;
     }
-  }
-  .one {
-    top: 53%;
-    left: 49%;
-  }
-  .two {
-    top: 43%;
-    left: 57%;
-  }
-  .three {
-    top: 37%;
-    left: 65%;
-  }
-  .four {
-    top: 22%;
-    left: 48%;
-  }
-  .five {
-    top: 27%;
-    left: 40%;
-  }
-  .xuting {
-    top: 59%;
-    left: 41%;
-  }
-  .weiting {
-    top: 33%;
-    left: 33%;
   }
 }
 
@@ -161,10 +174,10 @@ export default {
   }
 }
 .birdview_pad_notlandscape {
-    .tag {
+  .tag {
     position: absolute;
     max-width: 20%;
-    }
+  }
   .one {
     top: 50%;
     left: 51%;
@@ -195,7 +208,6 @@ export default {
   }
 }
 
-
 @keyframes highlight-move {
   0% {
     left: 0%;

+ 14 - 1
src/components/emoji/index.vue

@@ -1,5 +1,5 @@
 <template>
-  <div>
+  <div v-clickoutside="clickoutside">
     <div class="biaoqingContent" @click.stop>
       <img
         class="expression"
@@ -79,6 +79,9 @@ export default {
     },
   },
   methods: {
+    clickoutside() {
+      this.show = false;
+    },
     valueChange() {
       if (!this.value) return;
       let str = this.value;
@@ -126,6 +129,16 @@ export default {
   },
   mounted() {
     this.valueChange();
+
+    window.addEventListener("message", (res) => {
+      if (Object.prototype.toString.call(res.data) == "[object Object]") {
+        if (res.data.source === "clickScene") {
+          if (this.show) {
+            this.show = false;
+          }
+        }
+      }
+    });
   },
   components: {},
 };

+ 87 - 37
src/components/hotspot/model.vue

@@ -1,64 +1,47 @@
 <template>
-  <div class="hotspot" v-if="!isMobile">
-    <img class="aa" v-if="hotspot.model.length > 1" :src="require('@/assets/images/proj2022/pc/left_1.png')" alt="" @click="handlePage('prev')" />
+  <div class="hotspot" :class="{ isfullcon: isfull }" v-if="!isMobile">
+    <img class="aa" v-if="hotspot.model.length > 1" :src="require('@/assets/images/proj2022/pc/left_1.png')" alt=""
+      @click="handlePage('prev')" />
 
     <div class="vhotspotcon">
       <div class="vtitle" v-html="hotspot.title"></div>
       <div class="hotspotcon">
         <div class="img-con">
           <div class="imgmain">
-            <iframe
-              :key="active"
-              allowfullscreen
-              frameborder="0"
-              :src="hotspot.model[active]"
-            ></iframe>
+            <iframe :key="active" allowfullscreen frameborder="0" :src="hotspot.model[active]"></iframe>
+            <img class="screen" @click="isfull = !isfull"
+              :src="require(`@/assets/images/proj2022/${isfull ? 'fullscreen_exit' : 'fullscreen'}.png`)" alt="" />
           </div>
-       
+
         </div>
         <div class="pagna" v-if="hotspot.model.length > 1">
           <span>{{ active + 1 }}</span>
           /
           <span>{{ hotspot.model.length }}</span>
         </div>
-        <div
-          class="desc"
-          v-html="handleContent(hotspot.contents[active])"
-        ></div>
+        <div class="desc" v-html="handleContent(hotspot.contents[active])"></div>
+
+
       </div>
     </div>
-    <img class="aa" v-if="hotspot.model.length > 1" :src="require('@/assets/images/proj2022/pc/right_1.png')" alt="" @click="handlePage('next')" />
+    <img class="aa" v-if="hotspot.model.length > 1" :src="require('@/assets/images/proj2022/pc/right_1.png')" alt=""
+      @click="handlePage('next')" />
 
   </div>
 
   <div v-else class="mbhotspot">
     <div class="mbhcon">
       <div class="img-con">
-        <img
-          class="aa"
-          v-if="hotspot.model.length > 1"
-          :src="require('@/assets/images/project/icon/hotspot_l.png')"
-          alt=""
-          @click="handlePage('prev')"
-        />
+        <img class="aa" v-if="hotspot.model.length > 1" :src="require('@/assets/images/project/icon/hotspot_l.png')"
+          alt="" @click="handlePage('prev')" />
         <div class="imgmain" :class="{ bigImg: !hotspot.content }">
-          <iframe
-            :key="active"
-            allowfullscreen
-            frameborder="0"
-            :src="hotspot.model[active]"
-          ></iframe>
+          <iframe :key="active" allowfullscreen frameborder="0" :src="hotspot.model[active]"></iframe>
         </div>
-        <img
-          class="aa"
-          v-if="hotspot.model.length > 1"
-          :src="require('@/assets/images/project/icon/hotspot_r.png')"
-          alt=""
-          @click="handlePage('next')"
-        />
+        <img class="aa" v-if="hotspot.model.length > 1" :src="require('@/assets/images/project/icon/hotspot_r.png')"
+          alt="" @click="handlePage('next')" />
       </div>
 
-      <div class="desc"  v-if="hotspot.title||hotspot.contents[active]">
+      <div class="desc" v-if="hotspot.title || hotspot.contents[active]">
         <div class="title" v-html="hotspot.title"></div>
         <div v-html="handleContent(hotspot.contents[active], 14)"></div>
       </div>
@@ -72,6 +55,7 @@ export default {
   data() {
     return {
       active: 0,
+      isfull: false
     };
   },
   methods: {
@@ -99,14 +83,65 @@ export default {
   opacity: 0 !important;
   pointer-events: none !important;
 }
+
 @w: 82%;
 @fixw: 8px;
+
 .hotspot {
 
   .vhotspotcon {
-  
+    .hotspotcon {
+      .img-con {
+        .imgmain {
+          width: 80% !important;
+          position: relative;
+
+          >iframe {
+            width: 100% !important;
+          }
+
+          .screen {
+            position: absolute;
+            bottom: 10px;
+            right: 10px;
+            z-index: 999;
+            width: 30px !important;
+          }
+        }
+      }
+    }
+  }
+}
+
+.isfullcon {
+
+  .vhotspotcon {
+    .hotspotcon {
+      height: 100% !important;
+      position: fixed;
+      top: 0;
+      left: 0;
+      right: 0;
+      bottom: 0;
+
+      .img-con {
+        height: 100vh !important;
+
+        .imgmain {
+          width: 100% !important;
+          position: relative;
+
+          >iframe {
+            width: 100% !important;
+          }
+
+
+        }
+      }
+    }
   }
 }
+
 .mbhotspot {
   width: 100%;
   height: 100%;
@@ -116,6 +151,7 @@ export default {
   top: 0;
   backdrop-filter: blur(20px);
   z-index: 9999;
+
   .close {
     position: absolute;
     top: 26px;
@@ -123,6 +159,7 @@ export default {
     width: 20px;
     z-index: 1000;
   }
+
   .mbhcon {
     position: absolute;
     top: 50%;
@@ -130,6 +167,7 @@ export default {
     left: 50%;
     transform: translate(-50%, -50%);
     height: 100%;
+
     .img-con {
       display: flex;
       height: 100%;
@@ -137,27 +175,34 @@ export default {
       justify-content: space-between;
       position: relative;
       overflow: hidden;
+
       .imgmain {
         width: 100%;
         height: auto;
         min-height: 100%;
         display: flex;
         align-items: center;
+
         iframe {
           cursor: pointer;
           height: 60vh;
           width: 100%;
         }
       }
+
       @h: 100%;
+
       .bigImg {
         max-height: @h;
         margin: 0;
-        > img {
+
+        >img {
           max-height: @h;
         }
       }
+
       @pos: 14px;
+
       .aa {
         position: absolute;
         width: 10px;
@@ -166,12 +211,14 @@ export default {
         top: 50%;
         transform: translateY(-50%);
         left: @pos;
+
         &:last-of-type {
           right: @pos;
           left: unset;
         }
       }
     }
+
     .desc {
       position: absolute;
       z-index: 99999;
@@ -186,6 +233,7 @@ export default {
       background: rgba(0, 0, 0, 0.5);
       text-align: left;
       word-break: break-all;
+
       .title {
         width: 100%;
         display: inline-block;
@@ -198,8 +246,10 @@ export default {
   .fullcon {
     width: 100%;
     height: 100%;
+
     .img-con {
       height: 100%;
+
       .imgmain {
         width: 100%;
         height: auto;

+ 0 - 1
src/components/hotspot/video.vue

@@ -42,7 +42,6 @@
             controlslist="nodownload noremoteplayback"
             disablePictureInPicture
             controls
-            muted
             autoplay
             ref="videodeo"
             loop

+ 6 - 6
src/data/booth.js

@@ -141,8 +141,8 @@ let Booth = [
         name: "九蝶文创园",
         img: "A-13.jpg", //封面
         id: "one_13", //標識符
-        firstView: "&firstView=pano:37,qua:0.0008321838077567449,0.7063766021395119,-0.0008304689962190371,0.7078352257826168", //初始視角
-        panoId: "37", //对应点位id
+        firstView: "&firstView=pano:254,qua:0.0009429867258773012,0.7067382237115865,-0.000942006178391447,0.707473886276557", //初始視角
+        panoId: "254", //对应点位id
       },
       {
         name: "退役军人助力残疾人创业就业",
@@ -215,11 +215,11 @@ let Booth = [
         panoId: "21", //对应点位id
       },
       {
-        name: "呼和浩特市退役军人创业就业园",
+        name: "让退役军人在乡村振兴中再当“尖兵”",
         img: "A-24.jpg", //封面
         id: "one_24", //標識符
-        firstView: "&firstView=pano:21,qua:0.015077515143250472,0.7045052805028004,-0.014973894367882941,0.7093805471882944", //初始視角
-        panoId: "21", //对应点位id
+        firstView: "&firstView=pano:255,qua:0.010931398132855489,0.7062810359256071,-0.010908507975083475,0.707763103913852", //初始視角
+        panoId: "255", //对应点位id
       },
       {
         name: "团镇全知道",
@@ -236,7 +236,7 @@ let Booth = [
         panoId: "28", //对应点位id
       },
       {
-        name: "让退役军人在乡村振兴中再当“尖兵”",
+        name: "呼和浩特市退役军人创业就业园",
         img: "A-27.jpg", //封面
         id: "one_27", //標識符
         firstView: "&firstView=pano:26,qua:-0.0000018860131685044625,0.9999981150013324,0.001395715353945772,0.001351285187996736", //初始視角

+ 1 - 1
src/data/raw.js

@@ -38,7 +38,7 @@ let region = [
     desc: "拓展就业空间", //展区简介,
     short: "新业态",
     company: Booth.find(item=>item.id=='one').company,  //对应展位id
-    spread: calcuSpread(8, 47,[4,238,252,253],[47]),
+    spread: calcuSpread(8, 47,[4,238,252,253,254,255],[47]),
     firstView: {
       panoId: "4",
       panoQuaternion: {

+ 1 - 1
src/pages/mobilescene/components/daka.vue

@@ -15,7 +15,7 @@
         <span>打卡</span>
       </div>
       <div class="dakatitle">您正在游览</div>
-      <p>{{currentItem.name}}</p>
+      <p>{{currentItem.short}}</p>
       <div class="s-scroll">
         <ul :style="{top:top+'px'}">
           <li v-for="(item,i) in list" :key="i">

+ 1 - 1
src/pages/mobilescene/components/qrcode.vue

@@ -38,7 +38,7 @@
             <img class="real" v-if="tmpcImg" :src="tmpcImg" alt="" />
             <img class="qrc" :src="require(`@/assets/images/project/qrcode/${currentItem.id}.jpg`)" alt="" />
           </div>
-          <p v-html="currentItem.name"></p>
+          <p v-html="currentItem.short"></p>
         </div>
       </div>
     </div>

+ 4 - 1
src/pages/mobilescene/index.vue

@@ -27,7 +27,7 @@
 
       <template v-if="!showViewMode && !tourStatus">
         <vside :isShow="!tourStatus && showAside" @close="showAside = false" />
-        <zhanxiang @showSearch="showSearch = true" v-if="isShowZL" @close="isShowZL = false" :tourStatus="tourStatus" />
+        <zhanxiang @showSearch="showSearch = true" v-if="isShowZL" @close="isShowZL = false" :currentPanoid="currentPanoid" :zxdata="zhanxiangData" :tourStatus="tourStatus" />
         <rmenu :currentPanoid="currentPanoid" :isShowfunc="isShowfunc" :menuType="menuType" :tourStatus="tourStatus" @opencp="handlecp" />
         <vmenu :tourStatus="tourStatus" @play="startTour" />
         <vsearch :currentPanoid="currentPanoid" @closeSearch="closeSearch" v-if="showSearch" />
@@ -104,6 +104,9 @@ export default {
     currentItem() {
       return this.themes.find((item) => item.id == this.theme);
     },
+    zhanxiangData() {
+      return Booth.find((item) => item.id == this.theme);
+    },
     currentPano() {
       return all_booth.find((item) => item.panoId == this.currentPanoid) || {};
     },

+ 5 - 0
src/pages/mobilescene/scene.vue

@@ -111,6 +111,11 @@ export default {
   > iframe {
     width: 100%;
     height: 100%;
+    position: absolute;
+    left: 0;
+    right: 0;
+    top: 0;
+    bottom: 0;
   }
 }
 </style>

+ 84 - 48
src/pages/mobilescene/zhanxiang/index.vue

@@ -8,7 +8,7 @@
 
     <div class="zhan-con" ref="bgsw" v-swiper:mySwiper="swiperOptions">
       <ul class="swiper-wrapper">
-        <li @click="onClick(item)" class="swiper-slide" v-for="(item, i) in zhanxiangData.company" :key="i">
+        <li @click="onClick(item, i)" class="swiper-slide" v-for="(item, i) in zhanxiangData.company" :key="i">
           <div class="img">
             <img :src="`zhanxiang/images/${theme}/${item.img}`" alt="" />
           </div>
@@ -29,9 +29,11 @@ import "swiper/css/swiper.css";
 import { Booth } from "@/data/booth.js";
 
 export default {
+  props: ["zxdata", "currentPanoid"],
   data() {
     return {
       searchkey: "",
+      initIdx: 0
     };
   },
   methods: {
@@ -43,7 +45,10 @@ export default {
         show: false,
       });
     },
-    onClick(data) {
+    onClick(data, idx) {
+      if (this.swiper.realIndex != idx) {
+        return
+      }
       this.$bus.$emit("ifrMessage", {
         events: "flyToPano",
         data: data,
@@ -52,8 +57,6 @@ export default {
     },
     search() {
       this.$emit("showSearch", true);
-      // let idx = this.zhanxiangData.company.findIndex((item) => item.name.indexOf(this.searchkey) > -1)
-      // this.swiper.slideToLoop(idx);
     },
   },
   directives: {
@@ -64,6 +67,7 @@ export default {
       return this.$refs.bgsw.swiper;
     },
     zhanxiangData() {
+      console.log(Booth.find((item) => item.id == this.theme));
       return Booth.find((item) => item.id == this.theme);
     },
     swiperOptions() {
@@ -73,6 +77,7 @@ export default {
         effect: that.g_isLandscape ? "coverflow" : "slide",
         slidesPerView: "auto",
         centeredSlides: true,
+        initialSlide: this.initIdx,
         coverflowEffect: {
           rotate: 0,
           stretch: 124,
@@ -84,40 +89,54 @@ export default {
         on: that.g_isLandscape
           ? {}
           : {
-              progress: function() {
-                for (let i = 0; i < this.slides.length; i++) {
-                  var slide = this.slides.eq(i);
-                  var slideProgress = this.slides[i].progress;
-                  let modify = 1;
-                  let fixY = 0;
-
-                  if (Math.abs(slideProgress) > 1) {
-                    modify = (Math.abs(slideProgress) - 1) * 0.3 + 1;
-                  }
-                  let translateX = slideProgress * modify * 120 + "px";
-                  let translateY = fixY + (that.g_isLandscape ? Math.abs(slideProgress) : -Math.abs(slideProgress)) * 35 + "px";
-
-                  let zIndex = 999 - Math.abs(Math.round(10 * slideProgress));
-                  let opacity = 1 - Math.abs(slideProgress) / 10;
-
-                  slide.transform(`translateX(${translateX}) translateY(${translateY})`);
-                  slide.css("zIndex", zIndex);
-                  slide.css("opacity", opacity);
-                  if (Math.abs(slideProgress) > 3) {
-                    slide.css("opacity", 0);
-                  }
+            progress: function () {
+              for (let i = 0; i < this.slides.length; i++) {
+                var slide = this.slides.eq(i);
+                var slideProgress = this.slides[i].progress;
+                let modify = 1;
+                let fixY = 0;
+
+                if (Math.abs(slideProgress) > 1) {
+                  modify = (Math.abs(slideProgress) - 1) * 0.3 + 1;
                 }
-              },
-              setTransition: function(transition) {
-                for (var i = 0; i < this.slides.length; i++) {
-                  var slide = this.slides.eq(i);
-                  slide.transition(transition);
+                let translateX = slideProgress * modify * 120 + "px";
+                let translateY = fixY + (that.g_isLandscape ? Math.abs(slideProgress) : -Math.abs(slideProgress)) * 35 + "px";
+
+                let zIndex = 999 - Math.abs(Math.round(10 * slideProgress));
+                let opacity = 1 - Math.abs(slideProgress) / 10;
+
+                slide.transform(`translateX(${translateX}) translateY(${translateY})`);
+                slide.css("zIndex", zIndex);
+                slide.css("opacity", opacity);
+
+                if (Math.abs(slideProgress) > 3) {
+                  slide.css("opacity", 0);
                 }
-              },
+              }
             },
+            setTransition: function (transition) {
+              for (var i = 0; i < this.slides.length; i++) {
+                var slide = this.slides.eq(i);
+                slide.transition(transition);
+              }
+            }
+          },
       };
     },
   },
+  watch: {
+    currentPanoid: {
+      immediate: true,
+      handler: function (newVal) {
+        let idx = this.zxdata.company.findIndex((item) => newVal == item.panoId);
+        if (idx > -1) {
+          this.initIdx = idx
+        }
+      }
+    }
+
+  },
+
 };
 </script>
 
@@ -133,6 +152,7 @@ export default {
   left: 0;
   background-color: rgba(255, 255, 255, 0.5);
   backdrop-filter: blur(20px);
+
   .z-bar {
     height: 60px;
     width: 100%;
@@ -142,11 +162,13 @@ export default {
     justify-content: space-between;
     align-items: center;
     padding: 0 10px;
-    > img {
+
+    >img {
       width: 50px;
       flex-shrink: 0;
     }
-    > span {
+
+    >span {
       text-align: left;
       display: inline-block;
       flex: auto;
@@ -160,10 +182,12 @@ export default {
     position: relative;
     height: calc(100vh - 60px);
     padding-bottom: 30px;
-    > ul {
+
+    >ul {
       width: 100%;
       align-items: flex-end;
-      > li {
+
+      >li {
         width: 80%;
         max-height: 56vh;
         padding: 20px 16px;
@@ -174,24 +198,27 @@ export default {
         background-size: 100% auto;
         background-position: bottom left;
         background-repeat: no-repeat;
+
         .img {
           width: 100%;
           margin-top: 0;
 
-          > img {
+          >img {
             width: 100%;
           }
         }
 
-        > div {
+        >div {
           color: #000;
           text-align: center;
           margin-top: 30px;
-          > h3 {
+
+          >h3 {
             font-size: 20px;
             margin-bottom: 10px;
           }
-          > span {
+
+          >span {
             font-size: 16px;
             line-height: 1.5;
             display: inline-block;
@@ -215,6 +242,7 @@ export default {
     left: 0;
     background-color: rgba(255, 255, 255, 0.5);
     backdrop-filter: blur(20px);
+
     .z-bar {
       height: 60px;
       width: 100%;
@@ -224,11 +252,13 @@ export default {
       justify-content: space-between;
       align-items: center;
       padding: 0 10px;
-      > img {
+
+      >img {
         width: 50px;
         flex-shrink: 0;
       }
-      > span {
+
+      >span {
         text-align: left;
         display: inline-block;
         flex: auto;
@@ -242,10 +272,12 @@ export default {
       position: relative;
       height: calc(100vh - 60px);
       padding-bottom: 0;
-      > ul {
+
+      >ul {
         width: 100%;
         align-items: center;
-        > li {
+
+        >li {
           width: 58%;
           max-height: 90%;
           padding: 16px;
@@ -256,13 +288,15 @@ export default {
           background-position: bottom left;
           background-repeat: no-repeat;
           display: flex;
+
           .img {
             flex: 2;
             width: auto;
             text-align: center;
             position: relative;
             overflow: hidden;
-            > img {
+
+            >img {
               position: absolute;
               left: 50%;
               transform: translateX(-50%);
@@ -271,14 +305,15 @@ export default {
             }
           }
 
-          > div {
+          >div {
             color: #000;
             text-align: center;
             margin-top: 0;
             width: 24%;
             flex-shrink: 0;
             margin-left: 16px;
-            > h3 {
+
+            >h3 {
               position: absolute;
               top: 16px;
               right: 16px;
@@ -290,7 +325,8 @@ export default {
               text-align: left;
               height: 100%;
             }
-            > span {
+
+            >span {
               font-size: 18px;
               line-height: 1.2;
               margin-left: 10px;

+ 1 - 1
src/pages/scene/components/daka.vue

@@ -15,7 +15,7 @@
       <h3>打卡</h3>
       <div class="innercon" :style="{ backgroundImage: `url(${require(`@/assets/images/proj2022/pc/bg_r_s.png`)})` }">
         <div class="dakatitle">您正在游览</div>
-        <p>{{ currentItem.name }}</p>
+        <p>{{ currentItem.short }}</p>
         <p>{{ currentItem.desc }}</p>
         <div @click="daka" class="dakacccir" :style="{ backgroundImage: `url(${require(`@/assets/images/proj2022/pc/record_${theme}.png`)})` }">
           <span>打卡</span>

+ 1 - 1
src/pages/scene/components/qrcode.vue

@@ -39,7 +39,7 @@
         </div>
 
         <div class="li" v-if="currentItem.id">
-          <p v-html="currentItem.name + '<br/>' +currentItem.desc"></p>
+          <p v-html="currentItem.short + '<br/>' +currentItem.desc"></p>
           <img :src="require(`@/assets/images/project/qrcode/${currentItem.id}.jpg`)" alt="" />
           <div @click="download(currentItem.id, 'qrpgc_')" class="download">下载二维码</div>
         </div>

+ 18 - 4
src/pages/scenePage/index.vue

@@ -28,7 +28,7 @@
         <v-menu class="disable" />
 
         <!-- 导览 -->
-        <v-guide  :themescene="themescene" :isTour="isTour" :class="{ showGuide: isTour }" />
+        <v-guide :themescene="themescene" :isTour="isTour" :class="{ showGuide: isTour }" />
 
         <!-- logo -->
         <div
@@ -288,6 +288,18 @@ export default {
         }
       });
 
+      $("#player")
+        .off("click")
+        .on("click", () => {
+          window.parent.postMessage(
+            {
+              source: "clickScene",
+              data: true,
+            },
+            "*"
+          );
+        });
+
       // $(document)
       //   .off("click touchstart")
       //   .on("click touchstart", () => {
@@ -309,6 +321,9 @@ export default {
 </script>
 
 <style lang="less" scoped>
+html {
+  overflow: hidden;
+}
 .parent-body {
   width: 100%;
   height: 100%;
@@ -322,8 +337,7 @@ export default {
   bottom: 0 !important;
 }
 
-
-.hiddenzhangxiang{
-  bottom: -160px!important;
+.hiddenzhangxiang {
+  bottom: -160px !important;
 }
 </style>

+ 3 - 2
src/pages/scenePage/views/gui/guide.vue

@@ -9,12 +9,12 @@
           <img @click.stop="isZhankai=!isZhankai" :src="require(`@/assets/images/proj2022/pc/${!isZhankai?'zhankai_1':'shouqi_1'}.png`)" />
         </div>
       </template>
-      <img v-else  @click.stop="stop()" :src="require(`@/assets/images/proj2022/mobile/pause_${themescene}.png`)" />
+      <img v-else @click.stop="stop()" :src="require(`@/assets/images/proj2022/mobile/pause_${themescene}.png`)" />
     </div>
     <div id="drawer" class="fullWidth open">
       <div class="frame-container">
         <div id="scrollFrame" class="frame">
-          <ul id="thumb-container" class="slidee"  @touchstart.stop @click.stop ></ul>
+          <ul id="thumb-container" class="slidee"></ul>
         </div>
         <div class="scrollbar" id="scroller">
           <div class="handle"></div>
@@ -237,6 +237,7 @@ export default {
       display: inline-block;
       position: absolute;
       bottom: 58px;
+      z-index: 999;
       left: 10px;
       &::before,
       &::after {