From a3e27f5cab583debe11a9c62d8cc0115783b0791 Mon Sep 17 00:00:00 2001
From: Gary Gu <garygu@Garydebijibendiannao.local>
Date: Wed, 28 May 2025 16:59:43 +0800
Subject: [PATCH] fix: 优化实况UI放大缩小

---
 src/Dashboard.vue         |   15 ++++++-
 src/components/Header.vue |    2 +
 src/views/Home.vue        |   48 +++++++++++++++++-------
 3 files changed, 48 insertions(+), 17 deletions(-)

diff --git a/src/Dashboard.vue b/src/Dashboard.vue
index c7a3d29..db1aa12 100644
--- a/src/Dashboard.vue
+++ b/src/Dashboard.vue
@@ -19,7 +19,13 @@
     }"
   >
     <!--头部-->
-    <app-header class="absolute z-[100] top-0 left-0 right-0" :selected-id="currentProjectId" @onHomeClick="switchView" @onSelectChange="onSelectChange" />
+    <app-header
+      class="absolute z-[100] top-0 left-0 right-0"
+      :selected-id="currentProjectId"
+      @onHomeClick="switchView"
+      @onSelectChange="onSelectChange"
+      @fullscreenChange="fullscreenChange"
+    />
 
     <!--页面内容-->
     <div class="content-wrapper px-[22px] py-[10px] absolute inset-0 top-[80px] flex gap-[20px]">
@@ -38,7 +44,7 @@
       <div class="w-[1080px]">
         <!-- 右侧模块 -->
         <div class="w-full h-full">
-          <Home v-if="isReady" :selected-id="selectedId" />
+          <Home v-if="isReady" :selected-id="selectedId" :is-full-screen="isFullScreen" />
         </div>
       </div>
     </div>
@@ -90,6 +96,7 @@
         clickTab: "home",
         iframeSrc: window.ProjectConfig.xieTongIframeSrc,
         selectedId: "",
+        isFullScreen: false,
       };
     },
     computed: {
@@ -105,7 +112,9 @@
     methods: {
       onSelectChange(val) {
         this.selectedId = val;
-        console.log("onSelectChange", val);
+      },
+      fullscreenChange(val) {
+        this.isFullScreen = val;
       },
       /**
        * 切换视图
diff --git a/src/components/Header.vue b/src/components/Header.vue
index 979b004..0d724cd 100644
--- a/src/components/Header.vue
+++ b/src/components/Header.vue
@@ -102,7 +102,9 @@
       handleFullscreen() {
         if (this.$fullscreen.isFullscreen) {
           this.$fullscreen.exit();
+          this.$emit("fullscreenChange", false);
         } else {
+          this.$emit("fullscreenChange", true);
           this.$fullscreen.request();
         }
       },
diff --git a/src/views/Home.vue b/src/views/Home.vue
index 068b371..5e01235 100644
--- a/src/views/Home.vue
+++ b/src/views/Home.vue
@@ -63,6 +63,18 @@
               v-if="currentView === '720'"
             ></iframe>
           </div>
+          <!-- 项目 -->
+          <div class="w-full h-full" ref="videoWrapper" v-if="currentView === 'project'">
+            <video
+              controls
+              muted
+              controlslist="nodownload"
+              autoplay
+              class="video-box"
+              ref="videoElement"
+              :style="'width: 100%; height: 450px;background-color: #000'"
+            ></video>
+          </div>
           <!-- 720全景图版本选择 -->
           <!--<div class="w-full h-[120px] bg-[rgba(19,40,64,0.8)] absolute bottom-0 left-0 right-0 flex items-center py-[10px]" :style="isFullScreen ? 'z-index: 100; height:' : ''" v-if="currentView === '720'">
       <div v-for="item in panoVersionList" :key="item.value" :style="isFullScreen ? 'z-index: 100;' : ''">
@@ -81,18 +93,6 @@
             <img src="../assets/images/backgrounds/zoomin.png" alt="放大" class="w-[16px] h-[16px] mt-[50px] ml-[15px] cursor-pointer" v-if="isFullScreen" />
             <img src="../assets/images/backgrounds/zoomout.png" alt="缩小" class="w-[16px] h-[16px] mt-[50px] ml-[15px] cursor-pointer" v-else />
           </div>
-        </div>
-        <!-- 项目 -->
-        <div class="w-full h-full" v-if="currentView === 'project'">
-          <video
-            controls
-            muted
-            controlslist="nodownload"
-            autoplay
-            class="video-box"
-            ref="videoElement"
-            style="width: 100%; height: 100%; background-color: #000"
-          ></video>
         </div>
       </div>
     </div>
@@ -127,6 +127,10 @@
       selectedId: {
         type: String,
         default: "",
+      },
+      isFullScreen: {
+        type: Boolean,
+        default: false,
       },
     },
     data() {
@@ -244,6 +248,19 @@
         deep: true, // 深度监听对象内部变化
         immediate: true, // 立即执行一次
       },
+      isFullScreen: {
+        handler(newVal) {
+          console.log("实况界面接收到的数据:", newVal);
+          // 处理数据变化的逻辑
+          if (newVal) {
+            this.$refs.videoElement.style.height = "100%";
+          } else {
+            this.$refs.videoElement.style.height = "450px";
+          }
+        },
+        deep: true, // 深度监听对象内部变化
+        immediate: true, // 立即执行一次
+      },
     },
     mounted() {
       setTimeout(() => {
@@ -269,7 +286,11 @@
         }
       }
     },
-
+    created() {
+      window.addEventListener("resize", function () {
+        this.$refs.vi;
+      });
+    },
     methods: {
       getItemImg(item) {
         return `${window.ProjectConfig.panoBaseUrl}/Panorama${this.panoObj.PbUrl}/vtour/panos/${item.PsScenename}.tiles/thumb.jpg`;
@@ -546,7 +567,6 @@
     height: calc(100vh - 100px);
     overflow: hidden;
   }
-
   .top-nav {
     height: 5vh;
     display: flex;

--
Gitblit v1.9.3