From 80740fa2d68fb14149282d64df4d51f62807dd06 Mon Sep 17 00:00:00 2001 From: hejianhao <15708179461@qq.com> Date: 星期三, 26 三月 2025 09:03:13 +0800 Subject: [PATCH] 优化 --- src/views/DataScreen.vue | 84 +++++++++++++++++++++++++++++++++++++++++ 1 files changed, 83 insertions(+), 1 deletions(-) diff --git a/src/views/DataScreen.vue b/src/views/DataScreen.vue index 93e4948..47993a0 100644 --- a/src/views/DataScreen.vue +++ b/src/views/DataScreen.vue @@ -1,5 +1,11 @@ <template> <div class="data-screen" :style="screenStyle"> + <div v-if="!isFullscreen" class="fullscreen-mask" @click="enterFullScreen"> + <div class="fullscreen-tip"> + <i class="el-icon-full-screen"></i> + <p>点击进入全屏模式</p> + </div> + </div> <header-panel /> <left-panel v-if="!loading" :data="data" /> <center-panel v-if="!loading" :data="data" /> @@ -31,7 +37,8 @@ transformOrigin: 'left top' }, data: {}, - loading: true + loading: true, + isFullscreen: false }; }, created() { @@ -43,9 +50,18 @@ }, mounted() { window.addEventListener('resize', this.handleResize); + document.addEventListener('fullscreenchange', this.handleFullscreenChange); + document.addEventListener('webkitfullscreenchange', this.handleFullscreenChange); + document.addEventListener('mozfullscreenchange', this.handleFullscreenChange); + document.addEventListener('MSFullscreenChange', this.handleFullscreenChange); }, beforeDestroy() { window.removeEventListener('resize', this.handleResize); + document.removeEventListener('fullscreenchange', this.handleFullscreenChange); + document.removeEventListener('webkitfullscreenchange', this.handleFullscreenChange); + document.removeEventListener('mozfullscreenchange', this.handleFullscreenChange); + document.removeEventListener('MSFullscreenChange', this.handleFullscreenChange); + this.exitFullScreen(); }, methods: { handleResize() { @@ -53,6 +69,44 @@ const heightScale = window.innerHeight / 1080; const scale = Math.min(widthScale, heightScale); this.screenStyle.transform = `scale(${scale})`; + }, + handleFullscreenChange() { + this.isFullscreen = document.fullscreenElement || + document.webkitFullscreenElement || + document.mozFullScreenElement || + document.msFullscreenElement; + }, + enterFullScreen() { + const element = document.documentElement; + try { + if (element.requestFullscreen) { + element.requestFullscreen(); + } else if (element.webkitRequestFullscreen) { + element.webkitRequestFullscreen(); + } else if (element.mozRequestFullScreen) { + element.mozRequestFullScreen(); + } else if (element.msRequestFullscreen) { + element.msRequestFullscreen(); + } + } catch (error) { + console.error('全屏请求失败:', error); + } + }, + exitFullScreen() { + const element = document; + try { + if (element.exitFullscreen) { + element.exitFullscreen(); + } else if (element.webkitExitFullscreen) { + element.webkitExitFullscreen(); + } else if (element.mozCancelFullScreen) { + element.mozCancelFullScreen(); + } else if (element.msExitFullscreen) { + element.msExitFullscreen(); + } + } catch (error) { + console.error('退出全屏失败:', error); + } } } }; @@ -66,5 +120,33 @@ overflow: hidden; background: url('@/assets/背景色.png') no-repeat center center; background-size: 100% 100%; + + .fullscreen-mask { + position: fixed; + top: 0; + left: 0; + right: 0; + bottom: 0; + background: rgba(0, 0, 0, 0.8); + z-index: 9999; + display: flex; + justify-content: center; + align-items: center; + cursor: pointer; + + .fullscreen-tip { + text-align: center; + color: #fff; + + i { + font-size: 48px; + margin-bottom: 16px; + } + + p { + font-size: 24px; + } + } + } } </style> \ No newline at end of file -- Gitblit v1.7.1