index.vue 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. <template>
  2. <div class="panocon">
  3. <div id="pano"></div>
  4. <span v-if="!hideScale" class="scale" @click="onFullScreen">
  5. <img :src="require('@/assets/images/icons/tool_full@2x.png')" alt="" />
  6. </span>
  7. </div>
  8. </template>
  9. <script>
  10. import * as krfn from "@/core/index.js";
  11. import { getSceneInfo } from "@/api";
  12. import config from "@/config";
  13. import browser from "@/utils/browser";
  14. import { $smallWaiting1 } from "@/components/shared/loading";
  15. import html2canvas from 'html2canvas';
  16. let __krfn = krfn.default;
  17. window.__krfn = __krfn;
  18. window.screenshot = function () {
  19. let canvas = $("#krpanoSWFObject canvas")[0];
  20. return html2canvas(canvas);
  21. };
  22. export default {
  23. data() {
  24. return {
  25. activeItem: "",
  26. someData: "",
  27. hideScale: browser.urlQueryValue("hideScale"),
  28. };
  29. },
  30. methods: {
  31. onFullScreen() {
  32. let element = document.documentElement;
  33. if (this.isFullscreen) {
  34. if (document.exitFullscreen) {
  35. document.exitFullscreen();
  36. } else if (document.webkitCancelFullScreen) {
  37. document.webkitCancelFullScreen();
  38. } else if (document.mozCancelFullScreen) {
  39. document.mozCancelFullScreen();
  40. } else if (document.msExitFullscreen) {
  41. document.msExitFullscreen();
  42. }
  43. } else {
  44. if (element.requestFullscreen) {
  45. element.requestFullscreen();
  46. } else if (element.webkitRequestFullScreen) {
  47. element.webkitRequestFullScreen();
  48. } else if (element.mozRequestFullScreen) {
  49. element.mozRequestFullScreen();
  50. } else if (element.msRequestFullscreen) {
  51. element.msRequestFullscreen();
  52. }
  53. }
  54. // 改变当前全屏状态
  55. this.isFullscreen = !this.isFullscreen;
  56. },
  57. onclick() {
  58. let canvas = $("#krpanoSWFObject canvas")[0];
  59. let krpano = document.getElementById("krpanoSWFObject");
  60. __krfn.utils.setInitView(krpano, canvas);
  61. },
  62. getSceneInfo() {
  63. getSceneInfo({}, (data) => {
  64. this.activeItem = data.data;
  65. });
  66. },
  67. },
  68. mounted() {
  69. window.vrVrInitFn = () => {
  70. $smallWaiting1.hide();
  71. };
  72. var settings = {
  73. "events[skin_events].onloadcomplete": "js(window.vrVrInitFn());",
  74. };
  75. // this.getSceneInfo()
  76. $("#pano").empty();
  77. removepano("#pano");
  78. $smallWaiting1.show();
  79. embedpano({
  80. // xml: "%HTMLPATH%/static/template/tour.xml",
  81. xml: `${this.$cdn}/pano/${config.sceneNum}/vtour/tour.xml`,
  82. swf: "%HTMLPATH%/static/template/tour.swf",
  83. target: "pano",
  84. html5: "auto",
  85. mobilescale: 1,
  86. vars: settings,
  87. webglsettings: { preserveDrawingBuffer: true },
  88. passQueryParameters: true,
  89. });
  90. },
  91. };
  92. </script>
  93. <style lang="less" scoped>
  94. .panocon {
  95. width: 100%;
  96. height: 100%;
  97. #pano {
  98. width: 100%;
  99. height: 100%;
  100. }
  101. .scale {
  102. font-size: 0;
  103. bottom: 10px;
  104. right: 10px;
  105. z-index: 99;
  106. cursor: pointer;
  107. position: absolute;
  108. color: #fff;
  109. width: 36px;
  110. height: 36px;
  111. background: rgba(0, 0, 0, 0.5);
  112. padding: 10px;
  113. border: 1px solid rgba(255, 255, 255, 0.2);
  114. border-radius: 18px;
  115. > img {
  116. width: 100%;
  117. height: 100%;
  118. cursor: pointer;
  119. }
  120. }
  121. }
  122. </style>