viewer.vue 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. <template>
  2. <div class="viewer">
  3. <img
  4. v-if="isShowback"
  5. class="btn-back"
  6. src="/img/sub_back_btn.png"
  7. @click="handleBack"
  8. />
  9. <iframe frameborder="0" :src="url"></iframe>
  10. </div>
  11. </template>
  12. <script setup>
  13. import { computed, watchEffect, ref, onMounted } from "vue";
  14. import { useRouter } from "vue-router";
  15. const isShowback = ref(true);
  16. const router = useRouter();
  17. defineOptions({
  18. name: "model-viewer",
  19. });
  20. const props = defineProps({
  21. id: {
  22. type: [Number, String],
  23. required: true,
  24. },
  25. });
  26. const url = computed(
  27. () =>
  28. `https://sit-qiushoubwg.4dage.com/scene/index.html#/?m=${
  29. props.id || "1196"
  30. }`
  31. );
  32. const handleBack = () => {
  33. console.log("handleBack");
  34. router.go(-1);
  35. };
  36. onMounted(() => {
  37. window.sceneBackIconStatus = (flag) => {
  38. isShowback.value = Boolean(flag) ? true : false;
  39. };
  40. });
  41. </script>
  42. <style scoped>
  43. .viewer,
  44. iframe {
  45. width: 100%;
  46. height: 100%;
  47. margin: 0;
  48. padding: 0;
  49. overflow: hidden;
  50. position: relative;
  51. }
  52. .btn-back {
  53. width: 3.75rem;
  54. height: auto;
  55. top: 3.25rem;
  56. left: 2.6875rem;
  57. position: absolute;
  58. z-index: 10;
  59. cursor: pointer;
  60. }
  61. </style>