Browse Source

update1129

tremble 3 năm trước cách đây
mục cha
commit
3298861f71
38 tập tin đã thay đổi với 527 bổ sung378 xóa
  1. 6 1
      pano/.eslintrc.js
  2. 46 0
      pano/package-lock.json
  3. 1 0
      pano/package.json
  4. 88 0
      pano/public/pano/skin/vtourskin.xml
  5. 5 4
      pano/public/pano/tour.xml
  6. BIN
      pano/public/static/panoassets/images/hotspot/icon/img_doticon_01.png
  7. 21 0
      pano/public/static/panoassets/images/hotspot/icon/img_doticon_01.svg
  8. 15 0
      pano/public/static/panoassets/images/hotspot/icon/img_doticon_02.svg
  9. 15 0
      pano/public/static/panoassets/images/hotspot/icon/img_doticon_03.svg
  10. 28 0
      pano/public/static/panoassets/images/hotspot/icon/img_doticon_04.svg
  11. 17 0
      pano/public/static/panoassets/images/hotspot/icon/img_doticon_05.svg
  12. 19 0
      pano/public/static/panoassets/images/hotspot/icon/img_doticon_06.svg
  13. 28 0
      pano/public/static/panoassets/images/hotspot/icon/img_doticon_07.svg
  14. 12 0
      pano/public/static/panoassets/images/hotspot/icon/img_doticon_08.svg
  15. 23 0
      pano/public/static/panoassets/images/hotspot/icon/img_doticon_09.svg
  16. 26 0
      pano/public/static/panoassets/images/hotspot/icon/img_doticon_10.svg
  17. 23 0
      pano/public/static/panoassets/images/hotspot/icon/img_doticon_11.svg
  18. 15 0
      pano/public/static/panoassets/images/hotspot/icon/img_doticon_12.svg
  19. BIN
      pano/public/static/panoassets/images/hotspot/xulie/ditu_000.png
  20. BIN
      pano/public/static/panoassets/images/hotspot/xulie/ditu_2021.png
  21. BIN
      pano/public/static/panoassets/images/hotspot/xulie/kaimen_000.png
  22. BIN
      pano/public/static/panoassets/images/hotspot/xulie/kaimen_2021.png
  23. BIN
      pano/public/static/panoassets/images/hotspot/xulie/shinei_000.png
  24. BIN
      pano/public/static/panoassets/images/hotspot/xulie/shinei_2021.png
  25. BIN
      pano/src/assets/images/project/CD.png
  26. BIN
      pano/src/assets/images/project/huakuai.png
  27. BIN
      pano/src/assets/images/project/left.png
  28. BIN
      pano/src/assets/images/project/right.png
  29. 1 1
      pano/src/components/hotspot/audio.vue
  30. 0 14
      pano/src/components/hotspot/index.vue
  31. 0 6
      pano/src/components/hotspot/video.vue
  32. 23 1
      pano/src/config/api.js
  33. 3 1
      pano/src/config/http.js
  34. 42 2
      pano/src/core/utils.js
  35. 11 0
      pano/src/main.js
  36. 0 332
      pano/src/mixins/api.js
  37. 4 4
      pano/src/mixins/index.js
  38. 55 12
      pano/src/views/Home.vue

+ 6 - 1
pano/.eslintrc.js

@@ -12,6 +12,11 @@ module.exports = {
   },
   rules: {
     'no-console': process.env.NODE_ENV === 'production' ? 'warn' : 'off',
-    'no-debugger': process.env.NODE_ENV === 'production' ? 'warn' : 'off'
+    'no-debugger': process.env.NODE_ENV === 'production' ? 'warn' : 'off',
+    'no-undef': 'off',
+    'vue/no-unused-vars': 'off',
+    'vue/require-v-for-key': 'off',
+    'no-unused-vars': 'off',
+    'vue/no-unused-components': 'off'
   }
 }

+ 46 - 0
pano/package-lock.json

@@ -10,6 +10,7 @@
       "dependencies": {
         "axios": "^0.26.0",
         "core-js": "^3.6.5",
+        "v-viewer": "^1.6.4",
         "vue": "^2.6.11",
         "vue-chat-scroll": "^1.4.0",
         "vue-router": "^3.2.0"
@@ -13100,6 +13101,14 @@
         "webpack": "^2.0.0 || ^3.0.0 || ^4.0.0"
       }
     },
+    "node_modules/throttle-debounce": {
+      "version": "2.3.0",
+      "resolved": "https://registry.npmmirror.com/throttle-debounce/-/throttle-debounce-2.3.0.tgz",
+      "integrity": "sha512-H7oLPV0P7+jgvrk+6mwwwBDmxTaxnu9HMXmloNLXwnNO0ZxZ31Orah2n8lU1eMPvsaowP2CX+USCgyovXfdOFQ==",
+      "engines": {
+        "node": ">=8"
+      }
+    },
     "node_modules/through": {
       "version": "2.3.8",
       "resolved": "https://registry.npmmirror.com/through/-/through-2.3.8.tgz",
@@ -13692,6 +13701,19 @@
         "uuid": "bin/uuid"
       }
     },
+    "node_modules/v-viewer": {
+      "version": "1.6.4",
+      "resolved": "https://registry.npmmirror.com/v-viewer/-/v-viewer-1.6.4.tgz",
+      "integrity": "sha512-LVkiUHpmsbsZXebeNXnu8krRCi5i2n07FeLFxoIVGhw8lVvTBO0ffpbDC6mLEuacCjrIh09HjIqpciwUtWE8lQ==",
+      "dependencies": {
+        "throttle-debounce": "^2.0.1",
+        "viewerjs": "^1.5.0"
+      },
+      "engines": {
+        "node": ">=4",
+        "npm": ">=3"
+      }
+    },
     "node_modules/v8-compile-cache": {
       "version": "2.3.0",
       "resolved": "https://registry.npmmirror.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz",
@@ -13743,6 +13765,11 @@
       "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==",
       "dev": true
     },
+    "node_modules/viewerjs": {
+      "version": "1.10.4",
+      "resolved": "https://registry.npmmirror.com/viewerjs/-/viewerjs-1.10.4.tgz",
+      "integrity": "sha512-CjMt64yC9D+XUx2t3F0TPbh/Yt5+/ke8/s3IizXa6NtksdJUFDoCcNxi/KRZ9eiZPR/D77pHnnQzAtCoLDaGIw=="
+    },
     "node_modules/vm-browserify": {
       "version": "1.1.2",
       "resolved": "https://registry.npmmirror.com/vm-browserify/-/vm-browserify-1.1.2.tgz",
@@ -25755,6 +25782,11 @@
         "neo-async": "^2.6.0"
       }
     },
+    "throttle-debounce": {
+      "version": "2.3.0",
+      "resolved": "https://registry.npmmirror.com/throttle-debounce/-/throttle-debounce-2.3.0.tgz",
+      "integrity": "sha512-H7oLPV0P7+jgvrk+6mwwwBDmxTaxnu9HMXmloNLXwnNO0ZxZ31Orah2n8lU1eMPvsaowP2CX+USCgyovXfdOFQ=="
+    },
     "through": {
       "version": "2.3.8",
       "resolved": "https://registry.npmmirror.com/through/-/through-2.3.8.tgz",
@@ -26242,6 +26274,15 @@
       "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==",
       "dev": true
     },
+    "v-viewer": {
+      "version": "1.6.4",
+      "resolved": "https://registry.npmmirror.com/v-viewer/-/v-viewer-1.6.4.tgz",
+      "integrity": "sha512-LVkiUHpmsbsZXebeNXnu8krRCi5i2n07FeLFxoIVGhw8lVvTBO0ffpbDC6mLEuacCjrIh09HjIqpciwUtWE8lQ==",
+      "requires": {
+        "throttle-debounce": "^2.0.1",
+        "viewerjs": "^1.5.0"
+      }
+    },
     "v8-compile-cache": {
       "version": "2.3.0",
       "resolved": "https://registry.npmmirror.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz",
@@ -26289,6 +26330,11 @@
         }
       }
     },
+    "viewerjs": {
+      "version": "1.10.4",
+      "resolved": "https://registry.npmmirror.com/viewerjs/-/viewerjs-1.10.4.tgz",
+      "integrity": "sha512-CjMt64yC9D+XUx2t3F0TPbh/Yt5+/ke8/s3IizXa6NtksdJUFDoCcNxi/KRZ9eiZPR/D77pHnnQzAtCoLDaGIw=="
+    },
     "vm-browserify": {
       "version": "1.1.2",
       "resolved": "https://registry.npmmirror.com/vm-browserify/-/vm-browserify-1.1.2.tgz",

+ 1 - 0
pano/package.json

@@ -10,6 +10,7 @@
   "dependencies": {
     "axios": "^0.26.0",
     "core-js": "^3.6.5",
+    "v-viewer": "^1.6.4",
     "vue": "^2.6.11",
     "vue-chat-scroll": "^1.4.0",
     "vue-router": "^3.2.0"

+ 88 - 0
pano/public/pano/skin/vtourskin.xml

@@ -1175,4 +1175,92 @@
 	</action>
 	
 
+	
+    <action name="addImgTextHotSpot">
+      set(schp_name,%2); 
+
+      set(hotspot[get(schp_name)].url,%1);
+      set(hotspot[get(schp_name)].ath,%4);
+      set(hotspot[get(schp_name)].atv,%5);
+      set(hotspot[get(schp_name)].hotspottitle,%3);
+      set(hotspot[get(schp_name)].wordcontent,%9);
+      set(hotspot[get(schp_name)].hotspotlink,%8);
+      set(hotspot[get(schp_name)].alpha,1);
+      set(hotspot[get(schp_name)].scale,1);
+      set(hotspot[get(schp_name)].autoalpha,false);
+      set(hotspot[get(schp_name)].distorted,false);
+      set(hotspot[get(schp_name)].width,'prop');
+      set(hotspot[get(schp_name)].height,%11);
+
+      set(hotspot[get(schp_name)].visible,true);
+	    set(hotspot[get(schp_name)].onhover,showtext(get(hotspottitle),skintext)); 
+      addhotspot(get(schp_name));
+      set(hotspot[get(schp_name)].onclick,'js(__krfn.utils.linkopen(%6,%2));');
+
+      if(%7 == false,
+        , 
+        set(hotspot[get(schp_name)].ondown,draghotspot(););
+        set(hotspot[get(schp_name)].onup,js(__krfn.angle.updateHotSpotData(get(xml.scene),get(name),get(ath),get(atv),"imgtext")));
+      );
+
+      <!-- if(%6 == '1',
+         txtadd(hotspot[get(schp_name)].onloaded,"do_crop_animation(60,60, 30);");
+		  ); -->
+    
+      txtadd(hotspot[get(schp_name)].onloaded,"add_all_the_time_tooltip(hotspot[get(name)].hotspottitle);");
+      set(hotspot[get(schp_name)].onhover,null);
+      set(hotspot[get(schp_name)].onout,null);
+      set(hotspot[get(schp_name)].onover,null);
+
+
+      txtadd(tooltipname, 'tooltip_', get(schp_name));
+         
+      set(plugin[get(tooltipname)].onclick,'js(__krfn.utils.linkopen(%8,%2));');
+
+      if(%10 == true,
+        set(plugin[get(tooltipname)].visible,true);,
+        set(plugin[get(tooltipname)].visible,false);
+      );
+
+      txtadd(csstxt, 'text-align:center; color:#FFFFFF; font-family:STXihei; font-size:', %12,'px');
+      set(plugin[get(tooltipname)].css,get(csstxt)));,
+
+    </action>
+
+    <action name="add_all_the_time_tooltip">
+      txtadd(tooltipname, 'tooltip_', get(name)); addplugin(get(tooltipname));
+        txtadd(plugin[get(tooltipname)].parent, 'hotspot[', get(name), ']');
+        set(plugin[get(tooltipname)].url,'%SWFPATH%/plugins/textfield.swf');
+        set(plugin[get(tooltipname)].align,center);
+        set(plugin[get(tooltipname)].edge,top);
+        set(plugin[get(tooltipname)].x,0);
+        set(plugin[get(tooltipname)].autowidth,true);
+        set(plugin[get(tooltipname)].height,36); 
+        if(device.mobile,set(plugin[get(tooltipname)].scale,0.7));
+        if(device.mobile,set(plugin[get(tooltipname)].height,48));
+
+        set(plugin[get(tooltipname)].background,true);
+        set(plugin[get(tooltipname)].backgroundcolor,0x000000); 
+        set(plugin[get(tooltipname)].roundedge,5);
+        set(plugin[get(tooltipname)].backgroundalpha,0.5);
+        set(plugin[get(tooltipname)].padding,5);
+        set(plugin[get(tooltipname)].vcenter,true); 
+        set(plugin[get(tooltipname)].border,false);
+        set(plugin[get(tooltipname)].borderwidth,1);
+        set(plugin[get(tooltipname)].bordercolor,0xFFFFFF);
+        set(plugin[get(tooltipname)].borderalpha,0.2);
+        set(plugin[get(tooltipname)].glow,0); 
+        set(plugin[get(tooltipname)].glowcolor,0xFFFFFF);
+        <!-- set(plugin[get(tooltipname)].css,'text-align:center; color:#FFFFFF; font-family:STXihei; font-size:14px;');
+        if(device.mobile,
+        set(plugin[get(tooltipname)].css,'text-align:center; color:#FFFFFF;
+        font-family:STXihei; font-weight:bold; font-size:14px;'); ); -->
+        set(plugin[get(tooltipname)].textshadow,0);
+        set(plugin[get(tooltipname)].textshadowrange,6.0); 
+        set(plugin[get(tooltipname)].textshadowangle,90); 
+        if(text ==
+        '' OR text === null, copy(plugin[get(tooltipname)].html,%1), copy(plugin[get(tooltipname)].html,text) );
+        set(plugin[get(tooltipname)].enabled,true);
+    </action>
+
 </krpano>

+ 5 - 4
pano/public/pano/tour.xml

@@ -1,4 +1,5 @@
-<krpano version="1.19" title="Virtual Tour">
+<krpano version="1.19" >
+ <!-- debugmode="true" logkey="true" -->
 
 	<include url="skin/vtourskin.xml" />
 
@@ -101,7 +102,7 @@
 		</image>
 
 
-		<hotspot name="scene_01" style="hotspotsty" onclick="skin_loadscene('scene_fd720_WnStauJQs')" ath="-87.8376" atv="12.81"  />
+		<!-- <hotspot name="scene_01" style="hotspotsty" onclick="skin_loadscene('scene_fd720_WnStauJQs')" ath="-87.8376" atv="12.81"  /> -->
 
 	</scene>
 
@@ -127,7 +128,7 @@
 			</level>
 		</image>
 
-		<hotspot name="scene_02" style="hotspotsty" onclick="skin_loadscene('scene_fd720_hZ9piJxYx')" ath="99.28456170662159" atv="25.196243513315427"  />
+		<!-- <hotspot name="scene_02" style="hotspotsty" onclick="skin_loadscene('scene_fd720_hZ9piJxYx')" ath="99.28456170662159" atv="25.196243513315427"  /> -->
 
 
 	</scene>
@@ -154,7 +155,7 @@
 				<cube url="panos/fd720_WnStauJQs.tiles/%s/l1/%v/l1_%s_%v_%h.jpg" />
 			</level>
 		</image>
-		<hotspot name="scene_03" style="hotspotsty" onclick="skin_loadscene('scene_fd720_b9PXZ20J8')" ath="-50.30" atv="16.7978"  />
+		<!-- <hotspot name="scene_03" style="hotspotsty" onclick="skin_loadscene('scene_fd720_b9PXZ20J8')" ath="-50.30" atv="16.7978"  /> -->
 	</scene>
 
 

BIN
pano/public/static/panoassets/images/hotspot/icon/img_doticon_01.png


+ 21 - 0
pano/public/static/panoassets/images/hotspot/icon/img_doticon_01.svg

@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="28px" height="28px" viewBox="0 0 28 28" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+    <title>img_doticon_01</title>
+    <g id="编辑器" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+        <g id="icon" transform="translate(-301.000000, -514.000000)" fill-rule="nonzero">
+            <g id="img_doticon_01" transform="translate(301.000000, 514.000000)">
+                <rect id="box" fill-opacity="0" fill="#FFFFFF" x="0" y="0" width="28" height="28"></rect>
+                <g id="组_3856" transform="translate(0.000000, 6.000000)">
+                    <path d="M14.001,7.555 L0.056,15.785 C0.0126054449,15.8112854 -0.00867245421,15.8627216 0.00347072632,15.9119816 C0.0156139069,15.9612417 0.058360381,15.9968951 0.109,16 L6.222,16 L13.999,11.41 L21.776,16 L27.89,16 C27.9406396,15.9968951 27.9833861,15.9612417 27.9955293,15.9119816 C28.0076725,15.8627216 27.9863946,15.8112854 27.943,15.785 L14.001,7.555 Z" id="路径_1339-2" fill="#000000" opacity="0.4"></path>
+                    <path d="M14.002,4.683 L19.961,7.875 L24.511,7.875 C24.5624468,7.87202014 24.6057597,7.83545696 24.6173305,7.78523975 C24.6289013,7.73502254 24.6059555,7.68319237 24.561,7.658 L14.002,2 L3.443,7.658 C3.39804452,7.68319237 3.37509869,7.73502254 3.38666948,7.78523975 C3.39824026,7.83545696 3.44155322,7.87202014 3.493,7.875 L8.043,7.875 L14.002,4.683 Z" id="路径_1340-2" fill="#000000" opacity="0.6"></path>
+                    <g id="编组" transform="translate(0.000000, 5.000000)" fill="#FFFFFF" opacity="0.8">
+                        <path d="M13.998,0.553 L0.051,8.796 C0.00871211887,8.82153017 -0.0116166444,8.87193307 0.00112551213,8.91965824 C0.0138676686,8.96738341 0.0566143459,9.00094578 0.106,9.002 L6.227,9.002 L13.996,4.411 L21.765,9.002 L27.888,9.002 C27.9373857,9.00094578 27.9801323,8.96738341 27.9928745,8.91965824 C28.0056166,8.87193307 27.9852879,8.82153017 27.943,8.796 L13.998,0.553 Z" id="路径_1339-3-2"></path>
+                    </g>
+                    <g id="编组" transform="translate(3.000000, 0.000000)" fill="#FFFFFF">
+                        <path d="M11.003,2.681 L16.956,5.873 L21.517,5.873 C21.567027,5.87169479 21.6099942,5.83707541 21.6219116,5.78847112 C21.633829,5.73986684 21.6117492,5.68929839 21.568,5.665 L11.003,-0.001 L0.437,5.665 C0.393250843,5.68929839 0.371170959,5.73986684 0.383088355,5.78847112 C0.395005751,5.83707541 0.437973037,5.87169479 0.488,5.873 L5.05,5.873 L11.003,2.681 Z" id="路径_1340-3-2"></path>
+                    </g>
+                </g>
+            </g>
+        </g>
+    </g>
+</svg>

+ 15 - 0
pano/public/static/panoassets/images/hotspot/icon/img_doticon_02.svg

@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="28px" height="28px" viewBox="0 0 28 28" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+    <title>img_doticon_02</title>
+    <g id="编辑器" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+        <g id="icon" transform="translate(-342.000000, -514.000000)" fill-rule="nonzero">
+            <g id="img_doticon_02" transform="translate(342.000000, 514.000000)">
+                <rect id="box-2" fill-opacity="0" fill="#FFFFFF" x="0" y="0" width="28" height="28"></rect>
+                <g id="组_3854" transform="translate(1.000000, 6.000000)">
+                    <path d="M13,4.8 L13,2 L0,7.6 L13,13.2 L13,10.4 C18.571,10.429 23.5,12.68 25.257,16 C25.7377609,15.1446367 25.9934183,14.1811901 26,13.2 C26.1,8.626 20.284,4.865 13,4.8 L13,4.8 Z" id="路径_5042" fill-opacity="0.600000024" fill="#000000"></path>
+                    <path d="M13,2.8 L13,0 L0,5.6 L13,11.2 L13,8.4 C18.571,8.429 23.5,10.68 25.257,14 C25.7377609,13.1446367 25.9934183,12.1811901 26,11.2 C26.1,6.626 20.284,2.865 13,2.8 L13,2.8 Z" id="路径_5042-2" fill="#FFFFFF"></path>
+                </g>
+            </g>
+        </g>
+    </g>
+</svg>

+ 15 - 0
pano/public/static/panoassets/images/hotspot/icon/img_doticon_03.svg

@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="28px" height="28px" viewBox="0 0 28 28" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+    <title>img_doticon_03</title>
+    <g id="编辑器" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+        <g id="icon" transform="translate(-384.000000, -514.000000)" fill-rule="nonzero">
+            <g id="img_doticon_03" transform="translate(384.000000, 514.000000)">
+                <rect id="box-3" fill-opacity="0" fill="#FFFFFF" x="0" y="0" width="28" height="28"></rect>
+                <g id="组_3855" transform="translate(1.000000, 6.000000)">
+                    <path d="M13,4.8 L13,2 L26,7.6 L13,13.2 L13,10.4 C7.429,10.429 2.5,12.68 0.743,16 C0.262239137,15.1446367 0.00658169466,14.1811901 -2.16840434e-19,13.2 C-0.1,8.626 5.716,4.865 13,4.8 L13,4.8 Z" id="路径_5042-3" fill-opacity="0.600000024" fill="#000000"></path>
+                    <path d="M13,2.8 L13,0 L26,5.6 L13,11.2 L13,8.4 C7.429,8.429 2.5,10.68 0.743,14 C0.262239137,13.1446367 0.00658169466,12.1811901 -2.16840434e-19,11.2 C-0.1,6.626 5.716,2.865 13,2.8 L13,2.8 Z" id="路径_5042-4" fill="#FFFFFF"></path>
+                </g>
+            </g>
+        </g>
+    </g>
+</svg>

+ 28 - 0
pano/public/static/panoassets/images/hotspot/icon/img_doticon_04.svg

@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="28px" height="28px" viewBox="0 0 28 28" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+    <title>img_doticon_04</title>
+    <defs>
+        <radialGradient cx="50%" cy="50%" fx="50%" fy="50%" r="216.666667%" gradientTransform="translate(0.500000,0.500000),scale(0.230769,1.000000),translate(-0.500000,-0.500000)" id="radialGradient-1">
+            <stop stop-color="#FFFFFF" stop-opacity="0" offset="0%"></stop>
+            <stop stop-color="#FFFFFF" stop-opacity="0.4" offset="100%"></stop>
+        </radialGradient>
+        <radialGradient cx="50%" cy="50%" fx="50%" fy="50%" r="200%" gradientTransform="translate(0.500000,0.500000),scale(0.250000,1.000000),translate(-0.500000,-0.500000)" id="radialGradient-2">
+            <stop stop-color="#FFFFFF" stop-opacity="0" offset="0%"></stop>
+            <stop stop-color="#FFFFFF" stop-opacity="0.6" offset="100%"></stop>
+        </radialGradient>
+    </defs>
+    <g id="编辑器" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+        <g id="icon" transform="translate(-425.000000, -514.000000)" fill-rule="nonzero">
+            <g id="img_doticon_04" transform="translate(425.000000, 514.000000)">
+                <rect id="box-4" fill-opacity="0" fill="#FFFFFF" x="0" y="0" width="28" height="28"></rect>
+                <g id="组_3859" transform="translate(1.000000, 4.000000)">
+                    <g id="编组" transform="translate(1.000000, 0.000000)" fill="#FFFFFF">
+                        <polygon id="路径_5041-2" points="18.857 0.003 12 6.86 5.143 0.003 0 0.003 12 12.003 24 0.003"></polygon>
+                    </g>
+                    <ellipse id="椭圆_72" fill="url(#radialGradient-1)" cx="13" cy="17" rx="13" ry="3"></ellipse>
+                    <ellipse id="椭圆_73" fill="url(#radialGradient-2)" cx="13" cy="16" rx="6" ry="1.5"></ellipse>
+                </g>
+            </g>
+        </g>
+    </g>
+</svg>

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 17 - 0
pano/public/static/panoassets/images/hotspot/icon/img_doticon_05.svg


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 19 - 0
pano/public/static/panoassets/images/hotspot/icon/img_doticon_06.svg


+ 28 - 0
pano/public/static/panoassets/images/hotspot/icon/img_doticon_07.svg

@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="28px" height="28px" viewBox="0 0 28 28" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+    <title>img_doticon_07</title>
+    <defs>
+        <radialGradient cx="50%" cy="50%" fx="50%" fy="50%" r="50%" id="radialGradient-1">
+            <stop stop-color="#FFFFFF" stop-opacity="0" offset="0%"></stop>
+            <stop stop-color="#FFFFFF" stop-opacity="0.4" offset="100%"></stop>
+        </radialGradient>
+        <radialGradient cx="50%" cy="50%" fx="50%" fy="50%" r="50%" id="radialGradient-2">
+            <stop stop-color="#FFFFFF" stop-opacity="0" offset="0%"></stop>
+            <stop stop-color="#FFFFFF" stop-opacity="0.6" offset="100%"></stop>
+        </radialGradient>
+    </defs>
+    <g id="编辑器" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+        <g id="icon" transform="translate(-549.000000, -514.000000)" fill-rule="nonzero">
+            <g id="img_doticon_07" transform="translate(549.000000, 514.000000)">
+                <rect id="box-7" fill-opacity="0" fill="#FFFFFF" x="0" y="0" width="28" height="28"></rect>
+                <g id="组_3858-2" transform="translate(4.000000, 1.000000)">
+                    <g id="编组" transform="translate(0.000000, 6.000000)" fill="#FFFFFF">
+                        <polygon id="路径_5047-4" points="7.606 20.004 -0.004 11.78 2.755 9.257 6.084 12.435 6.084 0.005 9.223 0.005 9.223 5.914 10.903 4.68 12.851 4.935 13.024 6.594 14.842 5.913 16.442 6.423 16.269 7.742 18.91 6.891 19.993 9.443 18.693 20.003"></polygon>
+                    </g>
+                    <circle id="椭圆_77-3" fill="url(#radialGradient-1)" cx="7.5" cy="6" r="6"></circle>
+                    <circle id="椭圆_78" fill="url(#radialGradient-2)" cx="7.5" cy="6" r="3"></circle>
+                </g>
+            </g>
+        </g>
+    </g>
+</svg>

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 12 - 0
pano/public/static/panoassets/images/hotspot/icon/img_doticon_08.svg


+ 23 - 0
pano/public/static/panoassets/images/hotspot/icon/img_doticon_09.svg

@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="28px" height="28px" viewBox="0 0 28 28" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+    <title>img_doticon_09</title>
+    <g id="编辑器" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+        <g id="icon" transform="translate(-631.000000, -514.000000)" fill="#FFFFFF" fill-rule="nonzero">
+            <g id="img_doticon_09" transform="translate(631.000000, 514.000000)">
+                <rect id="box-9" fill-opacity="0" x="0" y="0" width="28" height="28"></rect>
+                <g id="组_3861" transform="translate(1.000000, 1.000000)">
+                    <rect id="矩形_534" fill-opacity="0.400000006" transform="translate(13.000214, 13.000064) rotate(-135.000000) translate(-13.000214, -13.000064) " x="10.1352145" y="7.26956366" width="5.73" height="11.461"></rect>
+                    <g id="编组" transform="translate(0.000000, 10.000000)">
+                        <polygon id="路径_5051-2" points="9.623 2.325 6.923 5.025 10.975 9.077 13.675 6.377 15.532 8.234 7.766 16 0 8.234 7.766 0.468"></polygon>
+                    </g>
+                    <g id="编组" transform="translate(10.000000, 0.000000)">
+                        <polygon id="路径_5052-2" points="16 7.766 8.234 15.532 6.377 13.675 9.077 10.975 5.025 6.923 2.325 9.623 0.468 7.766 8.234 0"></polygon>
+                    </g>
+                    <g id="编组" transform="translate(9.000000, 9.000000)">
+                        <rect id="矩形_535-2" transform="translate(3.995861, 4.003565) rotate(-135.000000) translate(-3.995861, -4.003565) " x="3.04086093" y="0.18356512" width="1.91" height="7.64"></rect>
+                    </g>
+                </g>
+            </g>
+        </g>
+    </g>
+</svg>

+ 26 - 0
pano/public/static/panoassets/images/hotspot/icon/img_doticon_10.svg

@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="28px" height="28px" viewBox="0 0 28 28" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+    <title>img_doticon_10</title>
+    <g id="编辑器" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+        <g id="icon" transform="translate(-672.000000, -514.000000)" fill="#FFFFFF" fill-rule="nonzero">
+            <g id="img_doticon_10" transform="translate(672.000000, 514.000000)">
+                <rect id="box-10" fill-opacity="0" x="0" y="0" width="28" height="28"></rect>
+                <g id="组_3864" transform="translate(2.000000, 3.000000)">
+                    <g id="编组" stroke="#000000" stroke-opacity="0">
+                        <path d="M12,22 L12,22 L4.352,18.334 L0,18.334 L0,3.668 L4.351,3.668 L12,0 L12,22 Z M10,6 L8,6.506 L8,15.495 L10,16.001 L10,6.001 L10,6 Z" id="减去_7-2"></path>
+                    </g>
+                    <polygon id="路径_5057" fill-opacity="0.400000006" points="10 16 8 15.495 8 6.505 10 6"></polygon>
+                    <g id="编组" transform="translate(14.000000, 7.000000)" fill-opacity="0.800000012">
+                        <rect id="矩形_540-2" x="0" y="0" width="2" height="8"></rect>
+                    </g>
+                    <g id="编组" transform="translate(22.000000, 8.000000)">
+                        <rect id="矩形_541-2" x="0" y="0" width="2" height="6"></rect>
+                    </g>
+                    <g id="编组" transform="translate(18.000000, 4.000000)">
+                        <rect id="矩形_542-2" x="0" y="0" width="2" height="14"></rect>
+                    </g>
+                </g>
+            </g>
+        </g>
+    </g>
+</svg>

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 23 - 0
pano/public/static/panoassets/images/hotspot/icon/img_doticon_11.svg


+ 15 - 0
pano/public/static/panoassets/images/hotspot/icon/img_doticon_12.svg

@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="28px" height="28px" viewBox="0 0 28 28" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+    <title>img_doticon_12</title>
+    <g id="编辑器" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+        <g id="icon" transform="translate(-755.000000, -514.000000)" fill="#FFFFFF" fill-rule="nonzero">
+            <g id="img_doticon_12" transform="translate(755.000000, 514.000000)">
+                <rect id="box-12" fill-opacity="0" x="0" y="0" width="28" height="28"></rect>
+                <g id="组_3867" transform="translate(2.500000, 2.500000)">
+                    <rect id="矩形_552" fill-opacity="0.400000006" x="0.5" y="0.5" width="22" height="22"></rect>
+                    <path d="M16.5,22.5 L0.5,22.5 L0.5,0.5 L22.5,0.5 L22.5,16.5 L16.5,22.5 L16.5,22.5 Z M3.5,14.5 L3.5,16.5 L13.5,16.5 L13.5,14.5 L3.5,14.5 Z M3.5,9.5 L3.5,11.5 L19.5,11.5 L19.5,9.5 L3.5,9.5 Z M3.5,4.5 L3.5,6.5 L19.5,6.5 L19.5,4.5 L3.5,4.5 Z" id="减去_10"></path>
+                </g>
+            </g>
+        </g>
+    </g>
+</svg>

BIN
pano/public/static/panoassets/images/hotspot/xulie/ditu_000.png


BIN
pano/public/static/panoassets/images/hotspot/xulie/ditu_2021.png


BIN
pano/public/static/panoassets/images/hotspot/xulie/kaimen_000.png


BIN
pano/public/static/panoassets/images/hotspot/xulie/kaimen_2021.png


BIN
pano/public/static/panoassets/images/hotspot/xulie/shinei_000.png


BIN
pano/public/static/panoassets/images/hotspot/xulie/shinei_2021.png


BIN
pano/src/assets/images/project/CD.png


BIN
pano/src/assets/images/project/huakuai.png


BIN
pano/src/assets/images/project/left.png


BIN
pano/src/assets/images/project/right.png


+ 1 - 1
pano/src/components/hotspot/audio.vue

@@ -157,7 +157,7 @@ export default {
     },
   },
   watch:{
-    activeGeci(newVal,oldVal){
+    activeGeci(newVal){
       if (newVal) {
         this.singleidx = 0
         this.timer&&clearInterval(this.timer)

+ 0 - 14
pano/src/components/hotspot/index.vue

@@ -46,21 +46,7 @@ export default {
       }
     },
     close(){
-      
       this.$hideHotspot()
-      
-       window.parent.postMessage(
-            {
-              source: "closeHotspot",
-              data: true,
-            },
-            "*"
-          );
-      g_currentHot.closePopup && g_currentHot.closePopup()
-      
-      if(g_bgAudio && g_bgAudio.pauseByHot){
-        window.manage.switchBgmState(true);
-      }
     }
   },
   mounted(){

+ 0 - 6
pano/src/components/hotspot/video.vue

@@ -32,14 +32,8 @@
 </template>
 
 <script>
-import { directive } from "vue-awesome-swiper";
-// import style (<= Swiper 5.x)
-import "swiper/css/swiper.css";
 
 export default {
-  directives: {
-    swiper: directive,
-  },
   props: ["hotspot"],
   data() {
     return {

+ 23 - 1
pano/src/config/api.js

@@ -329,4 +329,26 @@ export function getCollectionDetail(data, cb=()=>{}) {
   }).then((res) => {
     cb(res);
   });
-}
+}
+
+
+//获取somedata
+export function getSomeData(cb=()=>{}) {
+  axios({
+    method: "get",
+    url: `https://oss-xiaoan.oss-cn-shenzhen.aliyuncs.com/720yun_fd_manage/865/someData.json`,
+  }).then((res) => {
+    cb(res);
+  });
+}
+
+
+//获取HotList
+export function getHotList(cb=()=>{}) {
+  axios({
+    method: "get",
+    url: `http://192.168.0.109:8004/data/1149_2/hot/js/data.js`,
+  }).then((res) => {
+    cb(res);
+  });
+}

+ 3 - 1
pano/src/config/http.js

@@ -56,7 +56,9 @@ axios.interceptors.response.use(
       case 0:
         break
       default:
-        alert(data.msg)
+        if (response.request.responseURL.indexOf('someData') < 0 && response.request.responseURL.indexOf('hot/js/') < 0 ) {
+          alert(data.msg)
+        }
         break
     }
     // tryHideFullScreenLoading()

+ 42 - 2
pano/src/core/utils.js

@@ -1,4 +1,6 @@
+import Vue from 'vue'
 
+let vue = new Vue()
 
 export default class Utils {
   constructor(){
@@ -8,8 +10,46 @@ export default class Utils {
    * 打开热点链接
    */
 
-  linkopen(sceneCode){
-    console.log(sceneCode);
+  linkopen(sceneCode,id){
+    vue.$bus.$emit('clickHotspot',{sceneCode,id})
   }
+
+
+  /**
+   * 添加热点
+   */
+  addhotspot(krpano,param, type){
+    let ath = krpano.get("curscreen_ath");
+    let atv = krpano.get("curscreen_atv");
+    krpano.call(`addImgTextHotSpot(
+      ${param.img},
+      ${param.name},
+      ${param.hotspotTitle},
+      ${param.ath!=''?param.ath:ath},
+      ${param.atv!=''?param.atv:atv},
+      ${param.secne?param.secne.sceneCode:true},
+      ${type},
+      ${param.link},
+      ${true},
+      ${param.visible},
+      ${(param.size * 50) || 1},
+      ${Number(param.fontSize)})`); 
+
+      
+  }
+
+   /**
+   * 初始化
+   */
+
+    initHotspot(krpano,someData,type){
+      if (!someData) {
+        return 
+      }
+      let mysd = JSON.parse(someData)
+      mysd.hotspots.forEach(item => {
+        this.addhotspot(krpano,item,type)
+      });
+    }
 }
 

+ 11 - 0
pano/src/main.js

@@ -2,9 +2,20 @@ import Vue from 'vue'
 import App from './App.vue'
 import './mixins'
 import VueChatScroll from "vue-chat-scroll";
+import 'viewerjs/dist/viewer.css'
+import Viewer from 'v-viewer'
 
 Vue.config.productionTip = false
 Vue.use(VueChatScroll);
+Vue.use(Viewer,{
+  defaultOptions: {
+    navbar:false,
+    button:false,
+    maxZoomRatio:2,
+    title:false,
+    zIndex:1000000
+  }
+})
 
 new Vue({
   render: h => h(App)

+ 0 - 332
pano/src/mixins/api.js

@@ -1,332 +0,0 @@
-import { axios } from "./http";
-
-// 获取列表
-export function getList(type,data, cb) {
-  let params = {
-    ...data
-  };
-
-  axios({
-    method: "post",
-    data: params,
-    url: `api/web/${type}/list`,
-  }).then((res) => {
-    cb(res);
-  });
-}
-
-// 获取专家列表
-export function getExpertList(data, cb) {
-
-  axios({
-    method: "post",
-    data,
-    url: `api/web/expertList`,
-  }).then((res) => {
-    cb(res);
-  });
-}
-
-// 获取沙盘列表
-export function getSandList(data, cb) {
-
-  axios({
-    method: "post",
-    data,
-    url: `api/web/sandList`,
-  }).then((res) => {
-    cb(res);
-  });
-}
-
-
-
-// 获取专家详情
-export function getExpertDetail(data,cb) {
-  axios({
-    method: "get",
-    url: `api/web/expertDetail/${data.id}`,
-  }).then((res) => {
-    cb(res);
-  });
-}
-
-// 获取详情
-export function getDetail(type,data, cb) {
-  let params = {
-    ...data
-  };
-
-  axios({
-    method: "post",
-    data: params,
-    url: `api/web/${type}/list`,
-  }).then((res) => {
-    cb(res);
-  });
-}
-
-
-// 访问量
-export function getVisit(cb) {
-  axios({
-    method: "get",
-    url: `api/web/webVisit`,
-  }).then((res) => {
-    cb(res);
-  });
-}
-
-
-// 登录
-export function login(data, cb) {
-  let params = {
-    ...data
-  };
-
-  axios({
-    method: "post",
-    data: params,
-    url: `admin/login`,
-  }).then((res) => {
-    cb(res);
-  });
-}
-
-// 登出
-export function logout(cb) {
-  axios({
-    method: "get",
-    url: `admin/logout`,
-  }).then((res) => {
-    cb(res);
-  });
-}
-
-// 用户详情
-export function getUserInfo(data,cb) {
-  axios({
-    method: "get",
-    url: `cms/web/manage/user/detail/${data.id}`,
-  }).then((res) => {
-    cb(res);
-  });
-}
-
-
-//获取留言树
-export function getMsg(data, cb) {
-  let params = {
-    ...data
-  };
-
-  axios({
-    method: "post",
-    data: params,
-    url: `api/web/commentList`,
-  }).then((res) => {
-    cb(res);
-  });
-}
-
-//提交留言接口
-export function saveMsg(data, cb) {
-  let params = {
-    ...data
-  };
-
-  axios({
-    method: "post",
-    data: params,
-    url: `api/web/comment/save`,
-  }).then((res) => {
-    cb(res);
-  });
-}
-
-//提交弹幕接口
-export function saveBarrage(data, cb) {
-  let params = {
-    ...data
-  };
-
-  axios({
-    method: "post",
-    data: params,
-    url: `api/web/barrageSave`,
-  }).then((res) => {
-    cb(res);
-  });
-}
-
-//获取详情
-export function getDetailById(type,data, cb) {
-  axios({
-    method: "get",
-    url: `api/web/${type}/detail/${data.id}`,
-  }).then((res) => {
-    cb(res);
-  });
-}
-
-//拜祭
-export function mournVisit(data, cb=()=>{}) {
-  axios({
-    method: "get",
-    url: `api/web/martyr/visit/${data.id}`,
-  }).then((res) => {
-    cb(res);
-  });
-}
-
-//获取搜索列表
-export function getSearchList(data, cb) {
-  axios({
-    method: "post",
-    data,
-    url: `api/web/search`,
-  }).then((res) => {
-    cb(res);
-  });
-}
-
-
-//获取题组列表
-export function getQuestionGroupList(data, cb) {
-  let params = {
-    ...data
-  };
-  axios({
-    method: "post",
-    data:params,
-    url: `api/web/questionGroup/list`,
-  }).then((res) => {
-    cb(res);
-  });
-}
-
-
-//获取题目详情
-export function getQuestionGroupDetail(data, cb) {
-  axios({
-    method: "get",
-    url: `cms/web/manage/questionGroup/detail/${data.id}`,
-  }).then((res) => {
-    cb(res);
-  });
-}
-
-
-
-
-//提交留言接口
-export function submitAnswers(data, cb) {
-  let params = {
-    ...data
-  };
-
-  axios({
-    method: "post",
-    data: params,
-    url: `cms/web/manage/questionUser/submit`,
-  }).then((res) => {
-    cb(res);
-  });
-}
-
-//获取排名列表
-export function getRanking(data, cb) {
-  axios({
-    method: "get",
-    url: `cms/web/manage/questionUser/ranking/${data.id}`,
-  }).then((res) => {
-    cb(res);
-  });
-}
-
-
-//检测是否登录
-export function checkLogin(cb) {
-  axios({
-    method: "get",
-    url: `admin/checkLogin`,
-  }).then((res) => {
-    cb(res);
-  });
-}
-
-//检测是否可修改密码
-export function checkCanEditPsd(data,cb) {
-  axios({
-    method: "post",
-    data,
-    url: `api/web/retrieve/password`,
-  }).then((res) => {
-    cb(res);
-  });
-}
-
-//找回密码
-export function updatePwd(data,cb) {
-  axios({
-    method: "post",
-    data,
-    url: `api/web/updatePwd`,
-  }).then((res) => {
-    cb(res);
-  });
-}
-
-//修改密码
-export function updateSysPwd(data,cb) {
-  axios({
-    method: "post",
-    data,
-    url: `sys/user/updatePwd`,
-  }).then((res) => {
-    cb(res);
-  });
-}
-//获取点赞
-export function getStar(cb) {
-  axios({
-    method: "get",
-    url: `api/web/scene/getStar`,
-  }).then((res) => {
-    cb(res);
-  });
-}
-
-
-//点赞
-export function dianzan(data,cb) {
-  axios({
-    method: "get",
-    url: `api/web/scene/star/${data.num}`,
-  }).then((res) => {
-    cb(res);
-  });
-}
-
-//捐赠
-export function donate(data,cb) {
-  axios({
-    method: "post",
-    data,
-    url: `api/web/donateSave`,
-  }).then((res) => {
-    cb(res);
-  });
-}
-
-
-
-//获取文物详情
-export function getCollectionDetail(data, cb=()=>{}) {
-  axios({
-    method: "get",
-    url: `api/web/goods/detail/${data.id}`,
-  }).then((res) => {
-    cb(res);
-  });
-}

+ 4 - 4
pano/src/mixins/index.js

@@ -4,7 +4,7 @@ import {
   $hideLoading
 } from '@/components/popupLayout'
 
-// import {$showHotspot,$hideHotspot } from '@/components/hotspot/index.js'
+import {$showHotspot,$hideHotspot } from '@/components/hotspot/index.js'
 
 import {axios} from '../config/http'
 
@@ -31,12 +31,12 @@ Vue.mixin({
    
   },
   methods: {
-    // $showHotspot,
-    // $hideHotspot,
+    $showHotspot,
+    $hideHotspot,
     $showLoading,
     $hideLoading,
     g_dealUrl(src){
-      return window.manage.dealURL(src)
+      return src
     },
     handleHighLight(str,key){
       if (!str) {

+ 55 - 12
pano/src/views/Home.vue

@@ -3,9 +3,12 @@
     <div id="pano"></div>
     <returnhome @getVisit="data=>{visit = data}"/>
 
-    <div class="hotspot1" @click="showVideo=true">视频</div>
+    <div class="hotspot1" @click="openImage">图片</div>
 
     <div @click="showIfr=true" class="hotspot1 hotspot2">模型</div>
+
+    <div @click="showVideo=true" class="hotspot1 hotspot2 hotspot3">视频</div>
+
     <div class="hover" v-if="showVideo||showIfr">
       <video v-if="showVideo" controls src="/goods/video/yideyifengjianshexianjindanweixianjingerenmingdan.mp4"></video>
       <iframe v-if="showIfr" src="http://192.168.0.109:8004/model-page/Model.html?m=zyy18.4dage" frameborder="0"></iframe>
@@ -29,6 +32,10 @@
 import vmenu from './menu.vue'
 import hovercom from "@/components/hovercom";
 import huizhang from "@/components/huizhang";
+import { getSomeData,getHotList } from "@/config/api";
+import * as krfn from "@/core/index.js";
+
+window.__krfn = krfn.default;
 
 export default {
   name: "Home",
@@ -41,11 +48,25 @@ export default {
       krpano:null,
       showType:'',
       timer:null,
-      visit:'-'
+      visit:'-',
+      someData:{},
+      hotspots:{}
     }
   },
   components:{vmenu,hovercom,huizhang},
   methods: {
+    getHotSpotList() {
+      getHotList(result=>{
+          console.log(result);
+          this.hotspots = result
+      })
+    },
+    openImage(){
+      this.$showHotspot({
+        hotspot: this.hotspots['4HyX2868150'],
+      });
+      // this.showVideo = true
+    },
     zidongdaolan(){
         if (!this.krpano) {
           this.krpano =  document.getElementById("krpanoSWFObject");
@@ -56,7 +77,8 @@ export default {
     handleshowType(data){
      this.showType = data
     },
-     handlepopClose(){
+
+    handlepopClose(){
       this.showType = ''
     },
   },
@@ -70,6 +92,7 @@ export default {
     }
   },
   mounted() {
+    this.getHotSpotList()
 
     this.$nextTick(()=>{
       this.timer && clearTimeout(this.timer)
@@ -77,13 +100,26 @@ export default {
           this.showhuizhang = true
         }, 3 * 60 * 1000);
 
+        this.$bus.$on('clickHotspot',data=>{
+        this.krpano.call(`skin_loadscene('scene_${data.sceneCode}')`)
+      })
+      
     })
+
+   
+
     window.newSceneFn = ()=>{
-       console.log(this.krpano.get('xml.scene'));
+
+      // console.log(this.krpano && this.krpano.get('xml.scene'));
     }
 
     window.vrInitFn = () => {
       this.krpano = document.getElementById("krpanoSWFObject");
+      let currentScene = this.krpano.get('xml.scene')
+      let scenes = this.someData.scenes
+      let ccs = scenes && scenes.find(item=>currentScene.toLowerCase().indexOf(item.sceneCode.toLowerCase())>-1)
+      window.__krfn.utils.initHotspot(this.krpano, ccs.someData, false);
+
     };
 
 
@@ -92,14 +128,17 @@ export default {
         "events[skin_events].onloadcomplete": "js(window.vrInitFn());",
       };
 
-    window.embedpano({
-      xml: "%HTMLPATH%/pano/tour.xml",
-      swf: "%HTMLPATH%/pano/tour.swf",
-      target: "pano",
-      html5: "auto",
-      mobilescale: 1,
-      vars:settings,
-      passQueryParameters: true,
+     getSomeData(data=>{
+      this.someData = data
+        window.embedpano({
+        xml: "%HTMLPATH%/pano/tour.xml",
+        swf: "%HTMLPATH%/pano/tour.swf",
+        target: "pano",
+        html5: "auto",
+        mobilescale: 1,
+        vars:settings,
+        passQueryParameters: true,
+      });
     });
   },
 };
@@ -137,6 +176,10 @@ export default {
   top: 60px;
 }
 
+.hotspot3{
+  top: 110px;
+}
+
 .hover {
   position: fixed;
   top: 0;