gemercheung 2 lat temu
rodzic
commit
aa12bf4c8b
81 zmienionych plików z 2536 dodań i 216 usunięć
  1. 0 1
      packages/qjkankan-editor/src/core/utils.js
  2. 5 5
      packages/qjkankan-view/public/showviewer/lib/krpano/js/tour.js
  3. 1281 0
      packages/qjkankan-view/public/showviewer/lib/krpano/skin/vtourskin copy 2.xml
  4. 2 0
      packages/qjkankan-view/public/showviewer/lib/krpano/skin/vtourskin.xml
  5. 372 0
      packages/qjkankan-view/public/showviewer/lib/krpano/tooltip.xml
  6. BIN
      packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon-old/img_doticon_01.png
  7. 21 0
      packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon-old/img_doticon_01.svg
  8. 0 0
      packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon-old/img_doticon_01@2x.png
  9. BIN
      packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon-old/img_doticon_02.png
  10. 15 0
      packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon-old/img_doticon_02.svg
  11. 0 0
      packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon-old/img_doticon_02@2x.png
  12. BIN
      packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon-old/img_doticon_03.png
  13. 15 0
      packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon-old/img_doticon_03.svg
  14. 0 0
      packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon-old/img_doticon_03@2x.png
  15. BIN
      packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon-old/img_doticon_04.png
  16. 28 0
      packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon-old/img_doticon_04.svg
  17. 0 0
      packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon-old/img_doticon_04@2x.png
  18. BIN
      packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon-old/img_doticon_05.png
  19. 17 0
      packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon-old/img_doticon_05.svg
  20. 0 0
      packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon-old/img_doticon_05@2x.png
  21. BIN
      packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon-old/img_doticon_06.png
  22. 19 0
      packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon-old/img_doticon_06.svg
  23. 0 0
      packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon-old/img_doticon_06@2x.png
  24. BIN
      packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon-old/img_doticon_07.png
  25. 28 0
      packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon-old/img_doticon_07.svg
  26. 0 0
      packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon-old/img_doticon_07@2x.png
  27. BIN
      packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon-old/img_doticon_08.png
  28. 12 0
      packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon-old/img_doticon_08.svg
  29. 0 0
      packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon-old/img_doticon_08@2x.png
  30. BIN
      packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon-old/img_doticon_09.png
  31. 23 0
      packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon-old/img_doticon_09.svg
  32. 0 0
      packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon-old/img_doticon_09@2x.png
  33. BIN
      packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon-old/img_doticon_10.png
  34. 26 0
      packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon-old/img_doticon_10.svg
  35. 0 0
      packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon-old/img_doticon_10@2x.png
  36. BIN
      packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon-old/img_doticon_11.png
  37. 23 0
      packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon-old/img_doticon_11.svg
  38. 0 0
      packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon-old/img_doticon_11@2x.png
  39. BIN
      packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon-old/img_doticon_12.png
  40. 15 0
      packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon-old/img_doticon_12.svg
  41. 0 0
      packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon-old/img_doticon_12@2x.png
  42. BIN
      packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon/img_doticon_01.png
  43. 10 10
      packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon/img_doticon_01.svg
  44. BIN
      packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon/img_doticon_02.png
  45. 4 4
      packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon/img_doticon_02.svg
  46. BIN
      packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon/img_doticon_03.png
  47. 5 5
      packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon/img_doticon_03.svg
  48. 8 7
      packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon/img_doticon_04.svg
  49. BIN
      packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon/img_doticon_05.png
  50. 13 8
      packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon/img_doticon_05.svg
  51. 7 9
      packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon/img_doticon_06.svg
  52. BIN
      packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon/img_doticon_07.png
  53. 6 10
      packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon/img_doticon_07.svg
  54. BIN
      packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon/img_doticon_08.png
  55. 8 4
      packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon/img_doticon_08.svg
  56. BIN
      packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon/img_doticon_09.png
  57. 8 13
      packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon/img_doticon_09.svg
  58. BIN
      packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon/img_doticon_10.png
  59. 6 17
      packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon/img_doticon_10.svg
  60. BIN
      packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon/img_doticon_11.png
  61. 14 13
      packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon/img_doticon_11.svg
  62. BIN
      packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon/img_doticon_12.png
  63. 7 6
      packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon/img_doticon_12.svg
  64. BIN
      packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon/img_doticon_13.png
  65. 15 0
      packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon/img_doticon_13.svg
  66. BIN
      packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon/img_doticon_14.png
  67. 24 0
      packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon/img_doticon_14.svg
  68. BIN
      packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon/img_doticon_15.png
  69. 13 0
      packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon/img_doticon_15.svg
  70. BIN
      packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon/img_doticon_16.png
  71. 16 0
      packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon/img_doticon_16.svg
  72. BIN
      packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon/img_doticon_17.png
  73. 24 0
      packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon/img_doticon_17.svg
  74. 123 91
      packages/qjkankan-view/src/components/Pano/index.vue
  75. 1 0
      packages/qjkankan-view/src/components/assembly/MobileTags/index.vue
  76. 2 2
      packages/qjkankan-view/src/components/assembly/Opening.vue
  77. 4 0
      packages/qjkankan-view/src/components/assembly/Tags/index.vue
  78. 62 0
      packages/qjkankan-view/src/components/assembly/Tags/metas/metas-article.vue
  79. 62 0
      packages/qjkankan-view/src/components/assembly/Tags/metas/metas-imagetext.vue
  80. 46 11
      packages/qjkankan-view/src/sdk/QJKanKan/modules/Tags.js
  81. 146 0
      packages/qjkankan-view/src/sdk/QJKanKan/modules/hotspot.js

+ 0 - 1
packages/qjkankan-editor/src/core/utils.js

@@ -192,7 +192,6 @@ export default class Utils {
    */
 
   linkopen(sceneCode, id) {
-    // debugger;
     if (window.location.pathname.indexOf('show') > -1) {
       vue.$bus.emit('clickHotspot', id)
     }

Plik diff jest za duży
+ 5 - 5
packages/qjkankan-view/public/showviewer/lib/krpano/js/tour.js


Plik diff jest za duży
+ 1281 - 0
packages/qjkankan-view/public/showviewer/lib/krpano/skin/vtourskin copy 2.xml


+ 2 - 0
packages/qjkankan-view/public/showviewer/lib/krpano/skin/vtourskin.xml

@@ -1253,6 +1253,8 @@
 		if(startactions !== null, startactions() );
 	</action>
 
+    <!-- 现行热点 -->
+     <include url="%SWFPATH%/tooltip.xml" />
 
 	<!-- 底部logo -->
 	<hotspot name="nadirlogo" visible="false" keep="true" url="masking.png" ath="0" atv="90" handcursor="false" zoom="true" width="26%" height="prop" distorted="true" scale="0.5" rotate="0.0" />

+ 372 - 0
packages/qjkankan-view/public/showviewer/lib/krpano/tooltip.xml

@@ -0,0 +1,372 @@
+<krpano>
+    <!-- 1.20. 新热点模式 -->
+    <action name="addJQHotspot">
+        <!-- showlog(); -->
+        set(hsp_name,%1); 
+        set(hsp_type,%2); 
+        txtadd(iconUrl,'',%4);
+        txtreplace(iconUrl,'|',',');
+
+        trace('opentype::',%11);
+        if(%2 LE 1,
+             <!-- trace('id==',get(hsp_name),"::",get(iconUrl)); -->
+             set(hotspot[get(hsp_name)].type,'image');
+             set(hotspot[get(hsp_name)].url,get(iconUrl));
+         );
+        ifnot(%2 LE 1, set(hotspot[get(hsp_name)].type, 'text'));
+
+        <!-- 其他标签 (0,1,2)-->
+    
+        set(hotspot[get(hsp_name)].name,%1);
+        set(hotspot[get(hsp_name)].hotspottype,%2);
+        set(hotspot[get(hsp_name)].hotspottitle,%3);
+        set(hotspot[get(hsp_name)].hotspotStyle,%10);
+        set(hotspot[get(hsp_name)].opentype,%11);
+        set(hotspot[get(hsp_name)].hotlink,%7);
+        set(hotspot[get(hsp_name)].ath,%5);
+        set(hotspot[get(hsp_name)].atv,%6);
+        set(hotspot[get(hsp_name)].visible,true);
+        set(hotspot[get(hsp_name)].alpha,1);
+        set(hotspot[get(hsp_name)].scale,1);
+  
+        set(hotspot[get(hsp_name)].autoalpha,false);
+        set(hotspot[get(hsp_name)].distorted,false);
+        set(hotspot[get(hsp_name)].border,false);
+        <!-- set(hotspot[get(hsp_name)].onclick,'js(__krfn.utils.linkopen(%7,%1)); '); -->
+        set(hotspot[get(hsp_name)].onclick,'js(__sdk.Tags.linkopen(%11,%1)); ');
+        <!-- set(hotspot[get(hsp_name)].ondown,dragJQhotspot(););
+        set(hotspot[get(hsp_name)].onup,js(console.log('0');__krfn.angle.updateHotSpotData(get(xml.scene),get(name),get(ath),get(atv)))); -->
+
+        txtsplit(%10,'|',fontSize,pos,isHover,borderColor,fillColor,textColor,isShowLine,isTextWrap,lineDirection,textDirection,textNumPerLine,duration,frameNumber,framewidth);
+        set(hotspot[get(hsp_name)].pos,pos);
+        txtadd(hotspot[get(hsp_name)].onloaded,"add_tooltip_label();add_tooltip_dot();");
+
+        if(%2 LE 2,
+            set(hotspot[get(hsp_name)].height,%8);
+            set(hotspot[get(hsp_name)].width,%8);
+            set(hotspot[get(hsp_name)].crop,'');
+        
+               
+                if(%2 == 0,
+                txtreplace(iconUrl,'.svg','.png');
+                trace('system::',get(iconUrl));
+                set(hotspot[get(hsp_name)].url,get(iconUrl));
+                set(hotspot[get(hsp_name)].frameNumber,60);
+                set(hotspot[get(hsp_name)].duration,1);
+                set(hotspot[get(hsp_name)].frameRate,calc(1.0 / 60));
+                set(hotspot[get(hsp_name)].framewidth,84);
+                );
+            
+                if(%2 == 2,
+                trace('ser_frame::',get(framewidth));
+                set(hotspot[get(hsp_name)].url,get(iconUrl));
+                set(hotspot[get(hsp_name)].framewidth,get(framewidth));
+                set(hotspot[get(hsp_name)].frameNumber,get(frameNumber));
+                );
+        );
+        
+        <!-- 个性化标签(3) -->
+        if(%2 == 3,    
+           
+            set(hotspot[get(hsp_name)].height,80);
+            set(hotspot[get(hsp_name)].width,1);
+            set(hotspot[get(hsp_name)].padding,0);
+            set(hotspot[get(hsp_name)].background,false);
+            txtadd(line,'<div style="background-color: ',get(borderColor),';width:1px;height:80px;"></div>');
+            copy(hotspot[get(hsp_name)].html,line);
+            <!-- txtadd(hotspot[get(hsp_name)].onloaded,"add_tooltip_label();add_tooltip_dot();"); -->
+            set_label_dir(get(hsp_name),get(lineDirection),0);
+        );
+     
+        txtadd(hotspot[get(hsp_name)].onloaded,"make_hotsport_animation(get(framewidth),get(framewidth),get(frameRate));");
+        trace('last_add::',hotspot[get(hsp_name)].onloaded);
+        addhotspot(get(hsp_name));
+    </action>
+
+	<action name="make_hotsport_animation">
+    <!-- 1 square:(w/h) 2:imageW 3 imageH 4 frameRate -->
+       trace('imagewidth::',imagewidth,'::imageheight::',imageheight);
+        registerattribute(xframes, calc((imagewidth / %1) BOR 0));
+        registerattribute(yframes, calc((imageheight / %2) BOR 0)); 
+        registerattribute(frames, calc(xframes * yframes));
+        registerattribute(frame, 0); 
+        registerattribute(animatiedOn, 1); 
+        registerattribute(frameRate, %3);
+        trace('frameRate::',get(frameRate));
+        set(crop, '0|0|%1|%2'); 
+        clearinterval(calc('crop_anim_' + name));
+        if(%3 == '' OR frameRate == 0 OR isNaN(frameRate),
+        set(frameRate,calc(1.0 / 60));
+        trace('没有frameRate',get(calc(1.0 / 60)));
+        trace('没有frameRate-1',get(frameRate));
+        );
+        trace('params::1::',%1,'::2::',%2,'::3::',%3,':frameRate:',get(frameRate));
+        trace('xframes1::',get(xframes),'::yframes1::',get(yframes));
+   
+               
+        if(frameRate GE 0,
+        setinterval(
+            calc('crop_anim_' + name),
+            get(frameRate),
+            if(loaded, 
+                inc(frame); 
+               
+                <!-- trace('frame::',get(frame),'xframes2::',get(xframes),'::yframes2::',get(yframes)); -->
+                if(frame GE frames, if(onlastframe !== null, onlastframe() ); set(frame,0); );
+                mod(xpos,frame, xframes); 
+                div(ypos, frame, xframes);
+                Math.floor(ypos);
+                mul(xpos, %1);
+                mul(ypos, %2); 
+                calc(crop, xpos +'|' + ypos + '|%1|%2');
+ 
+                if(animatiedOn == 0, 
+                 calc(stopAniCrop,'0|0|'+imagewidth+'|'+imageheight +'|');
+                 set(crop, stopAniCrop);
+                );,
+                clearinterval(calc('crop_anim_' + name));
+            );
+        );
+        );   
+	</action>
+
+    <action name="add_tooltip_label">
+        txtadd(tooltipname, 'tooltip_', get(name)); 
+      
+        txtsplit(hotspotStyle,'|',fontSize,pos,isHover,borderColor,fillColor,textColor,isShowLine,isTextWrap,lineDirection,textDirection,textNumPerLine,duration,frameNumber);
+        txtadd(pName, get(name)); 
+        addlayer(get(tooltipname));
+        txtadd(layer[get(tooltipname)].parent, 'hotspot[', get(name), ']');
+        set(layer[get(tooltipname)].autowidth, true);
+        set(layer[get(tooltipname)].width,'prop');
+        set(layer[get(tooltipname)].autoheight,true); 
+        set(layer[get(tooltipname)].edge,center);
+        set(layer[get(tooltipname)].background,false);
+        set(layer[get(tooltipname)].pos,pos);
+        set(layer[get(tooltipname)].padding,0);
+        set(layer[get(tooltipname)].type,'html');
+        set(layer[get(tooltipname)].url,'%SWFPATH%/plugins/textfield.swf');
+        set(layer[get(tooltipname)].border,false);
+        set(layer[get(tooltipname)].align,center);
+        copy(layer[get(tooltipname)].hotlink, hotspot[get(name)].hotlink);
+        <!-- set(layer[get(tooltipname)].ondown,'dragJQlayer();'); -->
+        
+        set(layer[get(tooltipname)].onclick,JQlayerClick);
+        <!-- set(layer[get(tooltipname)].onup,js(console.log('1');__krfn.angle.updateHotSpotData(get(xml.scene),get(hsName),get(ath),get(atv)))); -->
+        <!-- set(hotspot[get(hsp_name)].onup,js(__krfn.angle.updateHotSpotData(get(xml.scene),get(name),get(ath),get(atv)))); -->
+        txtadd(labelCode, '<div style="display: flex; align-items: center; justify-content: center; position: relative; border: 1px solid ',get(borderColor),'; padding: 6px 10px; white-space: pre; border-radius: 5px; background: ',get(fillColor),'">','            <div style="text-align: left; font-size:',get(fontSize),'px; color: ',get(textColor),'; line-height: 1.4;">',get(hotspottitle),'</div>
+        </div>'); 
+        
+                                <!-- label方位 -->
+        if(get(hotspottype) LE 2,
+       <!-- trace('hotspottype::',get(hotspottype),'::tooltipname::',get(tooltipname),'pos::',get(pos)); -->
+        <!-- set_label_pos(get(tooltipname),get(pos)); -->
+        delayedcall(0.1,
+            txtadd(tooltipname, 'tooltip_', get(name)); 
+            set_label_pos(get(tooltipname),get(pos));
+         );
+       );
+
+        <!-- 个性化标签(3) -->
+        if(get(hotspottype) == 3,    
+          trace('add_tooltip_label::',get(lineDirection));
+            set(layer[get(tooltipname)].direction,get(lineDirection));
+            delayedcall(0.2,txtadd(tooltipname, 'tooltip_', get(name)); set_label_dir(get(tooltipname),get(layer[get(tooltipname)].direction),1); );
+      
+
+        );
+        copy(layer[get(tooltipname)].html, labelCode);
+        
+            
+    </action>
+    <!-- <style name="tooltip_dot_bg" type="container" border-radius="50%" bgcolor="0xFFFFFF" bgalpha="0.9" height="20" width="20" keep="true" /> -->
+    <action name='add_tooltip_dot'>
+        txtadd(tooldot, 'tooldot_', get(name)); 
+        <!-- trace('hey::',get(borderColor)); -->
+
+        <!-- trace('add-dot-type::',get(name),'::',get(hotspottype)); -->
+        addlayer(get(tooldot));
+        txtadd(layer[get(tooldot)].parent, 'hotspot[', get(name), ']');
+        set(layer[get(tooldot)].width,10); 
+        set(layer[get(tooldot)].height,10); 
+        set(layer[get(tooldot)].padding,0); 
+       
+        set(layer[get(tooldot)].align,center);
+        set(layer[get(tooldot)].type,'text');
+        set(layer[get(tooldot)].background,false);
+        txtadd(dborderColor,'rgba(255,255,255,0.5)');
+        txtadd(dot,'<div style="background-color: ',get(borderColor),';width:10px;height:10px;"></div>');
+        copy(layer[get(tooldot)].html,dot);
+        set(layer[get(tooldot)].backgroundcolor,get(borderColor)); 
+        set(layer[get(tooldot)].backgroundalpha,0.9); 
+        set(layer[get(tooldot)].bgroundedge,5);
+        set(layer[get(tooldot)].onclick,JQlayerClick);
+        <!-- set(layer[get(tooldot)].ondown,'dragJQlayer();'); -->
+        set(layer[get(tooldot)].visible,false);
+        <!-- set(layer[get(tooldot)].onup,js(console.log('2');__krfn.angle.updateHotSpotData(get(xml.scene),get(hsName),get(ath),get(atv)))); -->
+
+        <!-- 个性化标签(3) -->
+        if(get(hotspottype) == 3,    
+            <!-- trace('lineDirection3::',lineDirection);  -->
+                            <!-- call(set_label_dir); -->
+            set(layer[get(tooldot)].visible,true);
+            set_label_dir(get(tooldot),get(lineDirection),2);            
+        );
+
+    </action>
+    <action name='set_label_dir'>
+     txtadd(dirItem,'',%1);
+     txtadd(lineDirection,'',%2);
+     txtadd(dir,'',%3);
+     <!-- trace('get-lineDirection::',%2); -->
+     <!-- trace('set_label_dir::1::',get(dirItem),'::2::',get(lineDirection),'::3::',get(dir)); -->
+     if(
+        get(dir)==1,
+        <!-- trace('set_label_dir::1::',get(dirItem),'::2::',get(lineDirection),'::3::',get(dir)); -->
+        copy(labelWidth,layer[get(dirItem)].width);
+        copy(labelHeight,layer[get(dirItem)].height);
+  
+  
+     );
+
+        if(
+             get(lineDirection) == 'right-top',
+            if(get(dir)==0,set(hotspot[get(dirItem)].rotate,35));
+            if(get(dir)==1,add(allHeight,labelHeight,80);div(allHeight,2);mul(allHeight,-1);set(layer[get(dirItem)].rotate,0);set(layer[get(dirItem)].x,0);set(layer[get(dirItem)].y,get(allHeight));set(layer[get(dirItem)].rotate,-35););
+            if(get(dir)==2,set(layer[get(dirItem)].x,0);set(layer[get(dirItem)].y,40););
+        );
+        if(
+             get(lineDirection) == 'right-center',
+             if(get(dir)==0,set(hotspot[get(dirItem)].rotate,90););
+             if(get(dir)==1,
+                set(layer[get(dirItem)].rotate,-90);
+               add(allWidth,labelWidth,80);
+                div(allWidth,2);
+                mul(allWidth,-1);
+                trace('allWidth::',get(allWidth));
+                set(layer[get(dirItem)].x,0);
+                set(layer[get(dirItem)].y,get(allWidth));
+                );
+           
+             if(get(dir)==2,set(layer[get(dirItem)].x,0);set(layer[get(dirItem)].y,40););
+        );
+        if(
+             get(lineDirection) == 'right-bottom',
+            if(get(dir)==0,set(hotspot[get(dirItem)].rotate,-35));
+            if(get(dir)==1,add(allHeight,labelHeight,80);div(allHeight,2);mul(allHeight,1);set(layer[get(dirItem)].rotate,0);set(layer[get(dirItem)].x,0);set(layer[get(dirItem)].y,get(allHeight));set(layer[get(dirItem)].rotate,35););
+           if(get(dir)==2,set(layer[get(dirItem)].x,0);set(layer[get(dirItem)].y,-40););
+        );
+        if(
+             get(lineDirection) == 'center-top',
+            if(get(dir)==0,
+            set(hotspot[get(dirItem)].rotate,0);
+            );
+            if(get(dir)==1,add(allHeight,labelHeight,80);div(allHeight,2);mul(allHeight,-1);set(layer[get(dirItem)].rotate,0);set(layer[get(dirItem)].x,0);set(layer[get(dirItem)].y,get(allHeight)););
+            if(get(dir)==2,set(layer[get(dirItem)].x,0);set(layer[get(dirItem)].y,40););
+        );
+        if(get(lineDirection) == 'center-bottom',
+            if(get(dir)==0,set(hotspot[get(dirItem)].rotate,0));
+            if(get(dir)==1,add(allHeight,labelHeight,80);div(allHeight,2);mul(allHeight,1);
+               set(layer[get(dirItem)].rotate,0);
+               set(layer[get(dirItem)].x,0);
+               set(layer[get(dirItem)].y,get(allHeight));     
+              );
+            if(get(dir)==2,set(layer[get(dirItem)].x,0);set(layer[get(dirItem)].y,-40););
+        );
+        if( get(lineDirection) == 'left-top',
+            if(get(dir)==0,set(hotspot[get(dirItem)].rotate,-35));
+            if(get(dir)==1,add(allHeight,labelHeight,80);div(allHeight,2);mul(allHeight,-1);set(layer[get(dirItem)].rotate,0);set(layer[get(dirItem)].x,0);set(layer[get(dirItem)].y,get(allHeight));set(layer[get(dirItem)].rotate,35););
+            if(get(dir)==2,set(layer[get(dirItem)].x,0);set(layer[get(dirItem)].y,40););
+        );
+        if(
+             get(lineDirection) == 'left-center',
+             if(get(dir)==0,set(hotspot[get(dirItem)].rotate,90));
+             
+             if(get(dir)==1,
+                set(layer[get(dirItem)].rotate,-90);
+               add(allWidth,labelWidth,80);
+                div(allWidth,2);
+                trace('allWidth::',get(allWidth));
+                set(layer[get(dirItem)].x,0);
+                set(layer[get(dirItem)].y,get(allWidth));
+                );
+             if(get(dir)==2,set(layer[get(dirItem)].x,0);set(layer[get(dirItem)].y,-40););
+        );
+        if(
+            get(lineDirection) == 'left-bottom',
+            if(get(dir)==0,set(hotspot[get(dirItem)].rotate,35));
+            if(get(dir)==1,add(allHeight,labelHeight,80);div(allHeight,2);mul(allHeight,1);set(layer[get(dirItem)].rotate,0);set(layer[get(dirItem)].x,0);set(layer[get(dirItem)].y,get(allHeight));set(layer[get(dirItem)].rotate,-35););
+            if(get(dir)==2,set(layer[get(dirItem)].x,0);set(layer[get(dirItem)].y,-40););
+
+        );
+
+    </action>
+
+    <action name='set_label_pos'>
+        <!-- label方位 -->
+       set(posName,%1);
+       set(pos,%2);
+       copy(hp,posName);
+       txtreplace(hp,'tooltip_','');
+
+       copy(hwidth, hotspot[get(hp)].width);
+       copy(hheight, hotspot[get(hp)].height);
+   
+       copy(lwidth, layer[get(posName)].width);
+       copy(lheight, layer[get(posName)].height);
+   
+        if(
+            pos == 'top',
+            add(all,lheight,hheight);
+            div(dpy,all,2); 
+            add(lastPy,dpy,5);
+            trace('dpy::',dpy);
+            mul(lastPy, -1);
+            set(layer[get(posName)].align,center);
+            set(layer[get(posName)].y,get(lastPy));
+            set(layer[get(posName)].x,0);
+        );
+         if(
+            pos == 'bottom',
+            add(all,lheight,hheight);
+            div(dpy,all,2); 
+            add(lastPy,dpy,5);
+            mul(lastPy, 1);
+            set(layer[get(posName)].align,center);
+            set(layer[get(posName)].y,get(lastPy));
+            set(layer[get(posName)].x,0);
+        );
+        if(
+            pos == 'left',
+            add(all,lwidth,hwidth);
+            div(dpx,all,2); 
+            add(lastPx,dpx,10);
+            mul(lastPx, -1);
+            set(layer[get(posName)].align,center);
+            set(layer[get(posName)].x,get(lastPx));
+            set(layer[get(posName)].y,0);
+        );
+        if(
+            pos == 'right',
+            add(all,lwidth,hwidth);
+            div(dpx,all,2); 
+            add(lastPx,dpx,10);
+            mul(lastPx, 1);
+            set(layer[get(posName)].align,center);
+            set(layer[get(posName)].x,get(lastPx));
+            set(layer[get(posName)].y,0);
+        );
+    </action>
+
+ 
+
+<action name='JQlayerClick'>
+       txtadd(clickName, '', get(name)); 
+       txtreplace(clickName, 'tooltip_', ''); 
+       txtreplace(clickName, 'tooldot_', ''); 
+       trace('opentype::',get(hotspot[get(clickName)].opentype));
+       trace('clickName::',get(clickName));
+       js(__sdk.Tags.linkopen(get(hotspot[get(clickName)].opentype),get(clickName)));
+</action>
+
+</krpano>

BIN
packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon-old/img_doticon_01.png


+ 21 - 0
packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon-old/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>

packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon/img_doticon_01@2x.png → packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon-old/img_doticon_01@2x.png


BIN
packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon-old/img_doticon_02.png


+ 15 - 0
packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon-old/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>

packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon/img_doticon_02@2x.png → packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon-old/img_doticon_02@2x.png


BIN
packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon-old/img_doticon_03.png


+ 15 - 0
packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon-old/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>

packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon/img_doticon_03@2x.png → packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon-old/img_doticon_03@2x.png


BIN
packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon-old/img_doticon_04.png


+ 28 - 0
packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon-old/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>

packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon/img_doticon_04@2x.png → packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon-old/img_doticon_04@2x.png


BIN
packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon-old/img_doticon_05.png


Plik diff jest za duży
+ 17 - 0
packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon-old/img_doticon_05.svg


packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon/img_doticon_05@2x.png → packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon-old/img_doticon_05@2x.png


BIN
packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon-old/img_doticon_06.png


Plik diff jest za duży
+ 19 - 0
packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon-old/img_doticon_06.svg


packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon/img_doticon_06@2x.png → packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon-old/img_doticon_06@2x.png


BIN
packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon-old/img_doticon_07.png


+ 28 - 0
packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon-old/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>

packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon/img_doticon_07@2x.png → packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon-old/img_doticon_07@2x.png


BIN
packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon-old/img_doticon_08.png


Plik diff jest za duży
+ 12 - 0
packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon-old/img_doticon_08.svg


packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon/img_doticon_08@2x.png → packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon-old/img_doticon_08@2x.png


BIN
packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon-old/img_doticon_09.png


+ 23 - 0
packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon-old/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>

packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon/img_doticon_09@2x.png → packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon-old/img_doticon_09@2x.png


BIN
packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon-old/img_doticon_10.png


+ 26 - 0
packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon-old/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>

packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon/img_doticon_10@2x.png → packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon-old/img_doticon_10@2x.png


BIN
packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon-old/img_doticon_11.png


Plik diff jest za duży
+ 23 - 0
packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon-old/img_doticon_11.svg


packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon/img_doticon_11@2x.png → packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon-old/img_doticon_11@2x.png


BIN
packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon-old/img_doticon_12.png


+ 15 - 0
packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon-old/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>

packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon/img_doticon_12@2x.png → packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon-old/img_doticon_12@2x.png


BIN
packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon/img_doticon_01.png


Plik diff jest za duży
+ 10 - 10
packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon/img_doticon_01.svg


BIN
packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon/img_doticon_02.png


Plik diff jest za duży
+ 4 - 4
packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon/img_doticon_02.svg


BIN
packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon/img_doticon_03.png


Plik diff jest za duży
+ 5 - 5
packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon/img_doticon_03.svg


Plik diff jest za duży
+ 8 - 7
packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon/img_doticon_04.svg


BIN
packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon/img_doticon_05.png


Plik diff jest za duży
+ 13 - 8
packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon/img_doticon_05.svg


Plik diff jest za duży
+ 7 - 9
packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon/img_doticon_06.svg


BIN
packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon/img_doticon_07.png


+ 6 - 10
packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon/img_doticon_07.svg

@@ -6,21 +6,17 @@
             <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">
+        <radialGradient cx="50%" cy="50%" fx="50%" fy="50%" r="40.9199288%" 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 id="icon" transform="translate(-1398.000000, -520.000000)" fill-rule="nonzero">
+            <g id="img_doticon_07" transform="translate(1398.000000, 520.000000)">
+                <g id="组_3858-2" transform="translate(1.000000, 1.000000)">
+                    <circle id="椭圆_77-3" fill="url(#radialGradient-1)" cx="13" cy="13" r="13"></circle>
+                    <circle id="椭圆_78" fill="url(#radialGradient-2)" cx="13" cy="13" r="7.42857143"></circle>
                 </g>
             </g>
         </g>

BIN
packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon/img_doticon_08.png


Plik diff jest za duży
+ 8 - 4
packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon/img_doticon_08.svg


BIN
packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon/img_doticon_09.png


Plik diff jest za duży
+ 8 - 13
packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon/img_doticon_09.svg


BIN
packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon/img_doticon_10.png


Plik diff jest za duży
+ 6 - 17
packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon/img_doticon_10.svg


BIN
packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon/img_doticon_11.png


Plik diff jest za duży
+ 14 - 13
packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon/img_doticon_11.svg


BIN
packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon/img_doticon_12.png


Plik diff jest za duży
+ 7 - 6
packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon/img_doticon_12.svg


BIN
packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon/img_doticon_13.png


Plik diff jest za duży
+ 15 - 0
packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon/img_doticon_13.svg


BIN
packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon/img_doticon_14.png


+ 24 - 0
packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon/img_doticon_14.svg

@@ -0,0 +1,24 @@
+<?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_14</title>
+    <defs>
+        <polygon id="path-1" points="0 0 0 11 14 11 14 0"></polygon>
+    </defs>
+    <g id="编辑器" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+        <g id="icon" transform="translate(-1690.000000, -520.000000)">
+            <g id="img_doticon_14" transform="translate(1690.000000, 520.000000)">
+                <path d="M3,3 L25,3 L25,26 C25,26.5522847 24.5522847,27 24,27 L4,27 C3.44771525,27 3,26.5522847 3,26 L3,3 L3,3 Z" id="矩形_552" fill-opacity="0.600000024" fill="#000000" fill-rule="nonzero"></path>
+                <path d="M4,2 L24,2 C24.5522847,2 25,2.44771525 25,3 L25,24 C25,24.5522847 24.5522847,25 24,25 L4,25 C3.44771525,25 3,24.5522847 3,24 L3,3 C3,2.44771525 3.44771525,2 4,2 Z" id="矩形_552" fill-opacity="0.400000006" fill="#FFFFFF" fill-rule="nonzero"></path>
+                <path d="M3,24 L3,3 C3,2.44771525 3.44771525,2 4,2 L24,2 C24.5522847,2 25,2.44771525 25,3 L25,18.5857864 C25,18.8510029 24.8946432,19.1053568 24.7071068,19.2928932 L19.2928932,24.7071068 C19.1053568,24.8946432 18.8510029,25 18.5857864,25 L4,25 C3.44771525,25 3,24.5522847 3,24 Z M6,20 L6,22 L16,22 L16,20 L6,20 Z M6,5 L6,18 L22,18 L22,5 L6,5 Z" id="减去_10" fill="#FFFFFF" fill-rule="nonzero"></path>
+                <g id="三角形-+-椭圆形-+-三角形-蒙版" transform="translate(7.000000, 6.000000)">
+                    <mask id="mask-2" fill="white">
+                        <use xlink:href="#path-1"></use>
+                    </mask>
+                    <g id="蒙版"></g>
+                    <path d="M-1,12 L3.28571429,7 L5.285,9.334 L10.7142857,3 L18.4285714,12 L-1,12 Z" id="形状结合" fill="#FFFFFF" fill-rule="nonzero" mask="url(#mask-2)"></path>
+                    <circle id="椭圆形" fill="#FFFFFF" fill-rule="nonzero" mask="url(#mask-2)" cx="2.5" cy="2.5" r="1.5"></circle>
+                </g>
+            </g>
+        </g>
+    </g>
+</svg>

BIN
packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon/img_doticon_15.png


Plik diff jest za duży
+ 13 - 0
packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon/img_doticon_15.svg


BIN
packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon/img_doticon_16.png


Plik diff jest za duży
+ 16 - 0
packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon/img_doticon_16.svg


BIN
packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon/img_doticon_17.png


Plik diff jest za duży
+ 24 - 0
packages/qjkankan-view/public/showviewer/panoassets/images/hotspot/icon/img_doticon_17.svg


+ 123 - 91
packages/qjkankan-view/src/components/Pano/index.vue

@@ -1,24 +1,23 @@
 <template>
   <div id="pano" v-show="currentScene.type != '4dkk'"></div>
-  <Fdkk v-if="currentScene.type == '4dkk'&&hadGetInfo" />
+  <Fdkk v-if="currentScene.type == '4dkk' && hadGetInfo" />
 </template>
 
 <script setup>
-import { ref, onMounted, computed, watch, nextTick } from "vue";
+import { ref, onMounted, computed, watch, nextTick ,unref} from "vue";
 import { useStore } from "vuex";
 import { useApp, getApp } from "@/app";
 import Fdkk from "../Fdkk";
 import { getFdkkInfo } from "@/apis";
-import { useMusicPlayer, useSoundPlayer } from '@/utils/sound'
+import { useMusicPlayer, useSoundPlayer } from "@/utils/sound";
 import browser from "@/utils/browser";
 import config from "@/utils/config";
 
-
 //背景音乐
-const musicPlayer = useMusicPlayer()
+const musicPlayer = useMusicPlayer();
 
 //解说音乐
-const soundPlayer = useSoundPlayer()
+const soundPlayer = useSoundPlayer();
 
 const store = useStore();
 const isMobile = computed(() => browser.isMobile());
@@ -27,15 +26,21 @@ const lang = computed(() => config.lang);
 const currentScene = computed(() => store.getters["scene/currentScene"]);
 const scenesList = computed(() => store.getters["scene/list"]);
 const metadata = computed(() => store.getters["scene/metadata"]);
-const currentPlaying = computed(() => store.getters["functions/currentPlaying"]);
+const currentPlaying = computed(
+  () => store.getters["functions/currentPlaying"]
+);
 
-const hadGetInfo = ref(false)
+const hadGetInfo = ref(false);
 
 const loadScene = async (currentScene) => {
   let app = await getApp();
   if (app.krpanoDom) {
     let { sceneCode, initVisual, someData } = currentScene;
-    app.krpanoDom.call(`skin_loadscene('scene_${sceneCode}',${initVisual ? initVisual.vlookat : '0'},${initVisual ? initVisual.hlookat : '0'})`);
+    app.krpanoDom.call(
+      `skin_loadscene('scene_${sceneCode}',${
+        initVisual ? initVisual.vlookat : "0"
+      },${initVisual ? initVisual.hlookat : "0"})`
+    );
     console.log(sceneCode, someData);
 
     if (someData && someData.hotspots && someData.hotspots.length > 0) {
@@ -44,82 +49,101 @@ const loadScene = async (currentScene) => {
   }
 };
 
-watch(currentScene, (newVal, oldVal) => {
-  console.log(lang.value);
-
-  history.replaceState(null, null, "".concat(window.location.pathname, "?").concat(`id=${metadata.value.id}&vr=${newVal.sceneCode}&lang=${lang.value}`));
-
-  //默认版本是v4
-  store.commit("scene/setFdkkCurrentVersion", 'v4');
-  hadGetInfo.value = false
-  //恢复默认状态
-  store.commit("fdkk/setV3FdkkBGM", '');
-  store.commit("fdkk/setV3BGMStatus", '');
-  if (newVal.type == 'pano') {
-
-    //如果当前背景音乐是v4则重置
-    console.log(store.getters['fdkk/fdkkBGM'])
-    if (store.getters['fdkk/fdkkBGM']) {
-      store.commit('fdkk/setFdkkBGM', '')
-      useMusicPlayer.player.watchPlay(true)
-      if (isMobile.value) {
-        console.log(useMusicPlayer.player.isPlay,'useMusicPlayer.player.isPlay');
+watch(
+  currentScene,
+  (newVal, oldVal) => {
+    console.log(lang.value);
+
+    history.replaceState(
+      null,
+      null,
+      ""
+        .concat(window.location.pathname, "?")
+        .concat(
+          `id=${metadata.value.id}&vr=${newVal.sceneCode}&lang=${lang.value}`
+        )
+    );
+
+    //默认版本是v4
+    store.commit("scene/setFdkkCurrentVersion", "v4");
+    hadGetInfo.value = false;
+    //恢复默认状态
+    store.commit("fdkk/setV3FdkkBGM", "");
+    store.commit("fdkk/setV3BGMStatus", "");
+    if (newVal.type == "pano") {
+      //如果当前背景音乐是v4则重置
+      console.log(store.getters["fdkk/fdkkBGM"]);
+      if (store.getters["fdkk/fdkkBGM"]) {
+        store.commit("fdkk/setFdkkBGM", "");
+        useMusicPlayer.player.watchPlay(true);
+        if (isMobile.value) {
+          console.log(
+            useMusicPlayer.player.isPlay,
+            "useMusicPlayer.player.isPlay"
+          );
           if (useMusicPlayer.player.isPlay) {
             setTimeout(() => {
-              musicPlayer.play()
+              musicPlayer.play();
             }, 50);
           }
         }
-    }
+      }
 
-    nextTick(() => {
-      loadScene(newVal);
-      console.log(newVal,'newVal');
-    });
-  } else {
- 
-    getFdkkInfo({ num: newVal.sceneCode }).then((data) => {
-      hadGetInfo.value = true
-      if (data.data.isUpgrade != void 0) {
-        store.commit("scene/setFdkkCurrentVersion", data.data.isUpgrade !== 0 ? 'v4' : 'v3');
-
-        // v3
-        if (data.data.isUpgrade === 0) {
-          
-          musicPlayer.pauseFromOther = true
-          if (!browser.isMobile()) {
-            musicPlayer.pause()
-          } else {
-            let flag = data.data.bgMusic && data.data.bgMusic != '0' && data.data.bgMusic != 'noMusic'
-            store.commit("fdkk/setV3FdkkBGM", flag);
-            // 该v3场景有背景音乐
-            if (flag) {
-              musicPlayer.pause()
+      nextTick(() => {
+        loadScene(newVal);
+        console.log(newVal, "newVal");
+      });
+    } else {
+      getFdkkInfo({ num: newVal.sceneCode }).then((data) => {
+        hadGetInfo.value = true;
+        if (data.data.isUpgrade != void 0) {
+          store.commit(
+            "scene/setFdkkCurrentVersion",
+            data.data.isUpgrade !== 0 ? "v4" : "v3"
+          );
+
+          // v3
+          if (data.data.isUpgrade === 0) {
+            musicPlayer.pauseFromOther = true;
+            if (!browser.isMobile()) {
+              musicPlayer.pause();
+            } else {
+              let flag =
+                data.data.bgMusic &&
+                data.data.bgMusic != "0" &&
+                data.data.bgMusic != "noMusic";
+              store.commit("fdkk/setV3FdkkBGM", flag);
+              // 该v3场景有背景音乐
+              if (flag) {
+                musicPlayer.pause();
+              }
+              // console.log(data.data.bgMusic && data.data.bgMusic != '0' && data.data.bgMusic != 'noMusic','==========');
             }
-            // console.log(data.data.bgMusic && data.data.bgMusic != '0' && data.data.bgMusic != 'noMusic','==========');
           }
         }
-      }
 
-      // else{
-      //   useMusicPlayer.player.watchPlay(true)
-      // }
-
-      //上一个场景如果是四维看看场景且当前场景是v4 
-      // if (oldVal.type == '4dkk' && data.data.isUpgrade !== 0) {
-      //   store.commit('fdkk/setFdkkBGM', '')
-      //   musicPlayer.pause()
-      //   useMusicPlayer.player.watchPlay(true)
-      // }
-    })
+        // else{
+        //   useMusicPlayer.player.watchPlay(true)
+        // }
+
+        //上一个场景如果是四维看看场景且当前场景是v4
+        // if (oldVal.type == '4dkk' && data.data.isUpgrade !== 0) {
+        //   store.commit('fdkk/setFdkkBGM', '')
+        //   musicPlayer.pause()
+        //   useMusicPlayer.player.watchPlay(true)
+        // }
+      });
+    }
+  },
+  {
+    deep: true,
   }
-}, {
-  deep: true
-});
+);
 
 const updateListPosi = () => {
-
-  let catalog = metadata.value.catalogs.find((item) => item.id == currentScene.value.category);
+  let catalog = metadata.value.catalogs.find(
+    (item) => item.id == currentScene.value.category
+  );
 
   // 查询初始场景的所在1级分组
   metadata.value.catalogRoot.forEach((item) => {
@@ -132,29 +156,37 @@ const updateListPosi = () => {
 
   // 查询初始场景的所在2级分组
   store.commit("scene/setCurrentSecondary", catalog);
-
-}
+};
 
 useApp().then((app) => {
   app.Tags.on("clickHotspot", (data) => {
     let { id } = data;
-    let tt = currentScene.value.someData.hotspots.find((item) => item.name == id);
-    store.commit("functions/setPauseFrom", '');
-    if (tt.hotspotType == 'scene') {
-      store.commit("scene/setCurrentScene", scenesList.value.find(item=>item.id==tt.secne.id));
-      updateListPosi()
-    } else if(tt.hotspotType == 'link'){
-      if (tt.linkOpenType=='newTab') {
-        window.open(tt.hyperlink, "_blank");
-      }else{
-        store.commit("tags/setCurrentTag", tt);
-      }
-    } else {
-      store.commit("tags/setCurrentTag", tt);
-      if (tt.hotspotType == 'audio' || tt.hotspotType == 'video') {
-        store.commit("functions/setPauseFrom", currentPlaying.value);
-        musicPlayer.pause()
-        soundPlayer.pause()
+    let hotspot = unref(currentScene).someData.hotspots.find(
+      (item) => item.name.toLowerCase() === id.toLowerCase(),
+    );
+    // debugger
+    if (hotspot) {
+      console.log('click',hotspot);
+      store.commit("functions/setPauseFrom", "");
+      if (hotspot.hotspotType == "scene") {
+        store.commit(
+          "scene/setCurrentScene",
+          scenesList.value.find((item) => item.id == hotspot.secne.id)
+        );
+        updateListPosi();
+      } else if (hotspot.hotspotType == "link") {
+        if (hotspot.linkOpenType == "newTab") {
+          window.open(hotspot.hyperlink, "_blank");
+        } else {
+          store.commit("tags/setCurrentTag", hotspot);
+        }
+      } else {
+        store.commit("tags/setCurrentTag", hotspot);
+        if (hotspot.hotspotType == "audio" || hotspot.hotspotType == "video") {
+          store.commit("functions/setPauseFrom", currentPlaying.value);
+          musicPlayer.pause();
+          soundPlayer.pause();
+        }
       }
     }
   });

+ 1 - 0
packages/qjkankan-view/src/components/assembly/MobileTags/index.vue

@@ -10,6 +10,7 @@
       <metasAudio v-if="currentTag.hotspotType == 'audio'" />
       <metasVideo v-if="currentTag.hotspotType == 'video'" />
       <metasText v-if="currentTag.hotspotType == 'textarea'" />
+     
     </div>
   </teleport>
 </template>

+ 2 - 2
packages/qjkankan-view/src/components/assembly/Opening.vue

@@ -103,7 +103,7 @@ const showVideoDaoji = (isCall = false) => {
   }, 1000);
 }
 
-jumpVideo = (isCall = false) => {
+const jumpVideo = (isCall = false) => {
   closeVideo(isCall)
   if (isCall) {
     showImg.value = true
@@ -112,7 +112,7 @@ jumpVideo = (isCall = false) => {
 }
 
 // 执行图片封面
-executeImg = () => {
+const executeImg = () => {
   showImgDaoji(() => {
     closeImg()
 

+ 4 - 0
packages/qjkankan-view/src/components/assembly/Tags/index.vue

@@ -7,6 +7,8 @@
       <metasAudio  @close="close" v-if="currentTag.hotspotType == 'audio'" />
       <metasVideo v-if="currentTag.hotspotType == 'video'" />
       <metasText v-if="currentTag.hotspotType == 'textarea'" />
+      <metasArticle v-if="currentTag.hotspotType == 'article'" />
+      <metasImageText v-if="currentTag.hotspotType == 'imageText'" />
     </div>
   </teleport>
 </template>
@@ -17,6 +19,8 @@ import metasWeb from './metas/metas-web'
 import metasAudio from './metas/metas-audio'
 import metasVideo from './metas/metas-video'
 import metasText from './metas/metas-text'
+import metasArticle from './metas/metas-article.vue'
+import metasImageText from './metas/metas-imagetext.vue'
 
 import { reactive, defineEmits, onBeforeMount, onMounted, ref, watchEffect, computed, watch, nextTick } from "vue";
 import { useStore } from "vuex";

+ 62 - 0
packages/qjkankan-view/src/components/assembly/Tags/metas/metas-article.vue

@@ -0,0 +1,62 @@
+<template>
+  <div class="txtcon">
+    <div class="title">
+      <i class="iconfont icon-material_text"/>
+      {{currentTag.hotspotTitle}} 
+    </div>
+
+    <div class="txtbody" v-html="currentTag.articleInfo.html">
+    </div>
+  </div>
+</template>
+
+<script setup>
+import { reactive, defineEmits, onBeforeMount, onMounted, ref, watchEffect, computed, watch, nextTick } from "vue";
+import { useStore } from "vuex";
+const store = useStore();
+
+const currentTag = computed(() => store.getters['tags/currentTag'])
+  
+</script>
+
+<style lang="scss" scoped>
+.txtcon{
+  display: flex;
+  align-items: flex-start;
+  justify-content: center;
+  height: 100%;
+  width: 100%;
+  padding-top: 70px;
+  
+  .txtbody{
+    width: 744px;
+    background: rgba(0,0,0,0.6);
+    border-radius: 10px;
+    font-size: 14px;
+    color: #fff;
+    padding: 30px;
+    max-height: calc(100vh - 100px);
+    overflow-y: auto;
+    line-height: 1.5;
+    :deep(p) {
+      line-height: 24px;
+    }
+  }
+  .title{
+    position: absolute;
+    left: 20px;
+    top: 20px;
+    height: 36px;
+    line-height: 36px;
+    padding: 0 16px;
+    background: rgba(0,0,0,0.6);
+    border-radius: 20px;
+    color: #fff;
+    font-size: 14px;
+    z-index: 999;
+    >i{
+      margin-right: 4px;
+    }
+  }
+}
+</style>

+ 62 - 0
packages/qjkankan-view/src/components/assembly/Tags/metas/metas-imagetext.vue

@@ -0,0 +1,62 @@
+<template>
+  <div class="txtcon">
+    <div class="title">
+      <i class="iconfont icon-material_text"/>
+      {{currentTag.hotspotTitle}} 
+    </div>
+
+    <div class="txtbody" v-html="currentTag.articleInfo.html">
+    </div>
+  </div>
+</template>
+
+<script setup>
+import { reactive, defineEmits, onBeforeMount, onMounted, ref, watchEffect, computed, watch, nextTick } from "vue";
+import { useStore } from "vuex";
+const store = useStore();
+
+const currentTag = computed(() => store.getters['tags/currentTag'])
+  
+</script>
+
+<style lang="scss" scoped>
+.txtcon{
+  display: flex;
+  align-items: flex-start;
+  justify-content: center;
+  height: 100%;
+  width: 100%;
+  padding-top: 70px;
+  
+  .txtbody{
+    width: 744px;
+    background: rgba(0,0,0,0.6);
+    border-radius: 10px;
+    font-size: 14px;
+    color: #fff;
+    padding: 30px;
+    max-height: calc(100vh - 100px);
+    overflow-y: auto;
+    line-height: 1.5;
+    :deep(p) {
+      line-height: 24px;
+    }
+  }
+  .title{
+    position: absolute;
+    left: 20px;
+    top: 20px;
+    height: 36px;
+    line-height: 36px;
+    padding: 0 16px;
+    background: rgba(0,0,0,0.6);
+    border-radius: 20px;
+    color: #fff;
+    font-size: 14px;
+    z-index: 999;
+    >i{
+      margin-right: 4px;
+    }
+  }
+}
+</style>

+ 46 - 11
packages/qjkankan-view/src/sdk/QJKanKan/modules/Tags.js

@@ -1,5 +1,5 @@
 import Emiter from "@/sdk/utils/Emiter";
-
+import { convertJQHotspot } from './hotspot'
 export default class Tags extends Emiter {
   constructor(app) {
     super();
@@ -12,7 +12,7 @@ export default class Tags extends Emiter {
  */
 
   linkopen(sceneCode, id, hid) {
-    this.emit('clickHotspot', { sceneCode, id, hid })
+    this.emit('clickHotspot', { sceneCode, id})
   }
 
 
@@ -30,15 +30,12 @@ export default class Tags extends Emiter {
     return s;
   }
 
-  /**
-   * 添加热点
-   */
-
-  addhotspot(param, type) {
+  addhotspot1(param, type) {
     let ath = this.app.krpanoDom.get("curscreen_ath");
     let atv = this.app.krpanoDom.get("curscreen_atv");
+
     this.app.krpanoDom.call(`addImgTextHotSpot(
-        ${param.img.replace('static/','showviewer/').replace('.svg','.png').replace('@2x','')},
+        ${param.img.replace('static/', 'showviewer/').replace('.svg', '.png').replace('@2x', '')},
         ${param.name},
         ${this.htmlEncode(param.hotspotTitle)},
         ${param.ath != '' ? param.ath : ath},
@@ -50,9 +47,46 @@ export default class Tags extends Emiter {
         ${param.visible},
         ${(param.size * 50) || 1},
         ${Number(param.fontSize)})`);
+  }
+  addhotspot(param, type) {
+    /**
+     * type: 0,系统图标 , 1.自定义图际. 2.序列帧  3.个性标签
+     */
+    try {
+      // krpano.set("curscreen_x", krpano.get('stagewidth') / 2);
+      // krpano.set("curscreen_y", krpano.get('stageheight') / 2);
+      // let ath = this.app.krpanoDom.get("curscreen_ath");
+      // let atv = this.app.krpanoDom.get("curscreen_atv");
+      // krpano.call("screentosphere(curscreen_x, curscreen_y, curscreen_ath, curscreen_atv);");
+      const hotspot = convertJQHotspot(param);
+      // debugger;
+      const hotspotStyle = Object.values(hotspot.style);
+      const hotspotString = hotspotStyle.join('|');
+      const hotspotSize = (Number(hotspot.size) || 1) * 50;
+      const ath = hotspot.ath != '' ? hotspot.ath : this.app.krpanoDom.get("curscreen_ath");
+      const atv = hotspot.atv != '' ? hotspot.atv : this.app.krpanoDom.get("curscreen_atv");
+      let icon = hotspot.icon.replace(/,/g, '|');
+
+      const callString = `addJQHotspot(
+        ${hotspot.id},
+        ${hotspot.type},
+        ${hotspot.title},
+        "${icon.replace('static/', 'showviewer/').replace('.svg', '.png').replace('@2x', '')}",
+        ${ath},
+        ${atv},
+        "${hotspot.link}",
+        ${hotspotSize},
+        ${hotspot.visible},
+        "${hotspotString}",
+        "${param.secne ? param.secne.sceneCode : 'notjump'}",
+        )`;
+      // console.log('callString',callString); 
+      this.app.krpanoDom.call(callString);
+    } catch (error) {
+      console.error('error', error);
+    }
 
-
-    // // 设置热点图片默认的偏移值
+    // 设置热点图片默认的偏移值
     // let offset = '-130%'
     // if (param.size < 1) {
     //   offset = '-200%'
@@ -60,12 +94,13 @@ export default class Tags extends Emiter {
     // if (param.size > 1) {
     //   offset = '-100%'
     // }
-    // this.app.krpanoDom.set('layer[tooltip_' + param.name + '].y', `${offset}`)
+    // krpano.set('layer[tooltip_' + param.name + '].y', `${offset}`)
 
   }
 
 
 
+
   /**
   * 初始化
   */

+ 146 - 0
packages/qjkankan-view/src/sdk/QJKanKan/modules/hotspot.js

@@ -0,0 +1,146 @@
+/**
+ * krpano 1.20 全景hotspot统一schema
+ *
+ * 
+ *  */
+// import config from '../config'
+
+const initState = {
+    id: "",
+    title: "",
+    type: 0, // 热点大类型 
+    ath: 0,
+    atv: 0,
+    link: "",
+    icon: "",
+    visible: true,
+    size: 0,
+    style: {
+        fontSize: 12,
+        position: "top",
+        isHover: false,
+        borderColor: "",
+        fillColor: "",
+        textColor: "",
+        isShowLine: "",
+        isTextWrap: "",
+        lineDirection: "",
+        textDirection: "",
+        textNumPerLine: "",
+        duration: 0,
+        frameNumber: 0,
+        frameWidth: 0,
+    }
+}
+//基本样式汇总
+const convertBaseStyle = (dest, origin) => {
+    if (dest) {
+        // normal
+        dest.style.fontSize = origin.fontSize
+        dest.style.position = origin.titlePosition
+
+        if (origin && origin.titleDisplayMode == "always") {
+            dest.visible = true
+        }
+        if (origin && origin.titleDisplayMode == "never") {
+            dest.visible = false
+        }
+        dest.style.borderColor = '';
+        dest.style.fillColor = 'rgba(0,0,0,0.8)';
+        dest.style.textColor = 'rgba(255,255,255,1)';
+    }
+    //custom
+    if (origin && origin.hotspotIconType === 'serial_frame') {
+        dest.style.duration = origin.serialFrameInfo.duration
+        dest.style.frameNumber = origin.serialFrameInfo.frameNumber
+        dest.style.frameWidth = origin.serialFrameInfo.frameWidth
+    }
+    //custom
+    if (origin && origin.hotspotIconType === 'personalized_tag') {
+        dest.style.borderColor = origin.personalizedTagInfo.borderColor;
+        dest.style.fillColor = origin.personalizedTagInfo.fillColor
+        dest.style.isTextWrap = origin.personalizedTagInfo.isTextWrap
+        dest.style.lineDirection = origin.personalizedTagInfo.lineDirection
+        dest.style.textColor = origin.personalizedTagInfo.textColor
+        dest.style.textDirection = origin.personalizedTagInfo.textDirection
+        dest.style.textNumPerLine = origin.personalizedTagInfo.textNumPerLine
+    }
+
+}
+
+const coverSystemIconPart = (origin) => {
+    const duplicate = structuredClone(initState)
+    duplicate.id = origin.name;
+    duplicate.title = origin.hotspotTitle;
+    duplicate.ath = origin.ath;
+    duplicate.atv = origin.atv;
+    duplicate.type = 0;
+    duplicate.icon = origin.img || '';
+    duplicate.link = origin.link || '';
+    duplicate.size = origin.size;
+    convertBaseStyle(duplicate, origin)
+    return duplicate;
+}
+
+const coverImageconPart = (origin) => {
+    // const defaultImage = config.getStaticResource('/panoassets/images/hotspot/image_place_holder.png');
+    const duplicate = structuredClone(initState)
+    duplicate.id = origin.name;
+    duplicate.title = origin.hotspotTitle;
+    duplicate.ath = origin.ath;
+    duplicate.atv = origin.atv;
+    duplicate.type = 1;
+    duplicate.icon = origin.customIconInfo.img || '';
+    duplicate.link = origin.link || '';
+    duplicate.size = origin.size;
+    convertBaseStyle(duplicate, origin)
+    return duplicate;
+}
+const coverSerialFrame = (origin) => {
+    const duplicate = structuredClone(initState);
+    // const defaultImage = config.getStaticResource('/panoassets/images/hotspot/image_place_holder.png');
+    // console.log('defaultImage', defaultImage);
+    duplicate.id = origin.name;
+    duplicate.title = origin.hotspotTitle;
+    duplicate.ath = origin.ath;
+    duplicate.atv = origin.atv;
+    duplicate.type = 2;
+    duplicate.icon = origin.serialFrameInfo.img || '';
+    duplicate.link = origin.link || '';
+    duplicate.size = origin.size;
+
+    convertBaseStyle(duplicate, origin)
+    return duplicate;
+}
+
+
+const coverpersonalizedTag = (origin) => {
+    const duplicate = structuredClone(initState);
+    duplicate.id = origin.name;
+    duplicate.title = origin.hotspotTitle;
+    duplicate.ath = origin.ath;
+    duplicate.atv = origin.atv;
+    duplicate.type = 3;
+    duplicate.link = origin.link || '';
+    duplicate.size = origin.size;
+    convertBaseStyle(duplicate, origin)
+    return duplicate;
+}
+
+
+export const convertJQHotspot = (origin) => {
+    const type = origin.hotspotIconType
+    switch (type) {
+        case 'system_icon':
+            return coverSystemIconPart(origin);
+        case 'custom_image':
+            return coverImageconPart(origin);
+        case 'serial_frame':
+            return coverSerialFrame(origin);
+        case 'personalized_tag':
+            return coverpersonalizedTag(origin);
+        default:
+            return false;
+    }
+}
+