index.syjy.vue 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  1. <template>
  2. <div class="pinBottom-container">
  3. <div class="pinBottom left">
  4. <div class="viewContainer">
  5. <div id="previous" class="previous desktop-only ui-icon" style="display: none">
  6. <a>
  7. <img :src="PauseIcon" width="24" height="24" data-original-title="播放" />
  8. </a>
  9. </div>
  10. <div id="play" class="ui-icon" data-original-title="播放">
  11. <a>
  12. <img :src="PauseIcon" width="24" height="24" title="播放" />
  13. </a>
  14. </div>
  15. <div id="pause" class="ui-icon" style="display: none">
  16. <a>
  17. <img title="暂停" :src="PlayIcon" width="24" height="24" />
  18. </a>
  19. </div>
  20. <div id="next" class="next desktop-only ui-icon wide" style="display: none">
  21. <a>
  22. <i title="" class="icon icon-dpad-right" data-original-title="下一个"></i>
  23. </a>
  24. </div>
  25. <div id="gui-modes-map" class="ui-icon double active">
  26. <div data-original-title="导览" id="pullTab" title="导览" />
  27. <div id="hotList" title="热点列表" data-original-title="热点列表" style="display: none" />
  28. <div
  29. data-original-title="迷你模型"
  30. id="gui-modes-dollhouse"
  31. title="迷你模型"
  32. class=""
  33. ></div>
  34. <div data-original-title="俯视图" id="gui-modes-floorplan" title="俯视图"></div>
  35. <div data-original-title="VR" id="vr" title="" style="display: none"></div>
  36. <div
  37. data-original-title="消除外壳"
  38. id="gui-remove-face"
  39. title=""
  40. style="display: none; float: left"
  41. >
  42. <img class="icon icon-inside" src="/images/face.jpg" />
  43. </div>
  44. </div>
  45. </div>
  46. </div>
  47. <div class="pinBottom right hideTarget">
  48. <div class="rightViewContainer clearfix">
  49. <div class="ui-icon wide home-btn" title="首页" @click="goToHome"></div>
  50. <div id="sharing" class="ui-icon wide" title="分享" @click="shareVisible = true"></div>
  51. <div id="volume" class="ui-icon wide" style="display: none"></div>
  52. <div id="vr" class="ui-icon wide hidden" style="display: none">
  53. <a>
  54. <i title="{[{ VIEW_IN_VR }]}" class="icon icon-webvr"></i>
  55. </a>
  56. </div>
  57. <div
  58. id="gui-fullscreen"
  59. class="ui-icon wide"
  60. data-placement="top"
  61. title="{[{ VIEW_FULLSCREEN }]}"
  62. style="display: none"
  63. >
  64. <a>
  65. <i class="icon icon-fullscreen"></i>
  66. </a>
  67. </div>
  68. <div
  69. id="gui-fullscreen-exit"
  70. class="ui-icon wide"
  71. data-placement="top"
  72. title="{[{ EXIT_FULLSCREEN }]}"
  73. style="display: none"
  74. >
  75. <a>
  76. <i class="icon icon-fullscreen-exit"></i>
  77. </a>
  78. </div>
  79. <div class="pull-right terms terms2"></div>
  80. </div>
  81. </div>
  82. </div>
  83. <share-popup v-model:visible="shareVisible" />
  84. </template>
  85. <script setup lang="ts">
  86. import { onMounted, onUnmounted, ref } from 'vue';
  87. import PauseIcon from '@/assets/images/syjy/icon-manyou-1-min.png';
  88. import PlayIcon from '@/assets/images/syjy/icon-manyou-min.png';
  89. import { homeApi } from '@/api';
  90. import SharePopup from '../share-popup/index.vue';
  91. let helperVisible = false;
  92. const starSum = ref(0);
  93. const shareVisible = ref(false);
  94. const closeHelper = () => {
  95. window.$('#interaction-modal').removeClass('fadeIn');
  96. helperVisible = false;
  97. };
  98. const handleKeydown = () => {
  99. helperVisible && closeHelper();
  100. };
  101. const handleClick = (e: MouseEvent | TouchEvent) => {
  102. const clickedElement = e.target;
  103. // @ts-ignore
  104. const modalElement = clickedElement?.closest('#interaction-modal');
  105. // @ts-ignore
  106. const btnElement = clickedElement?.closest('.helper-btn');
  107. if (!modalElement && !btnElement && helperVisible) {
  108. closeHelper();
  109. }
  110. };
  111. const getDetail = async () => {
  112. const { data } = await homeApi.getSceneDetail(window.number);
  113. if (!data) return;
  114. starSum.value = data.starSum;
  115. };
  116. const goToHome = () => {
  117. location.href = 'https://houseoss.4dkankan.com/project/syjy/mobile/index.html';
  118. };
  119. onMounted(() => {
  120. getDetail();
  121. window.addEventListener('keydown', handleKeydown);
  122. window.addEventListener('click', handleClick);
  123. window.addEventListener('touchmove', handleClick);
  124. });
  125. onUnmounted(() => {
  126. window.removeEventListener('keydown', handleKeydown);
  127. window.removeEventListener('click', handleClick);
  128. window.removeEventListener('touchmove', handleClick);
  129. });
  130. </script>
  131. <style lang="scss" scoped>
  132. @use './index.syjy.scss';
  133. </style>