From 03cd344a15bf63bf7968dc77a026c77c78c304f4 Mon Sep 17 00:00:00 2001 From: pyt <626651354@qq.com> Date: 星期三, 26 三月 2025 11:44:32 +0800 Subject: [PATCH] Merge branch 'master' of http://120.76.84.145:10101/gitblit/r/H5/chongzhou-screen --- src/views/DataScreen.vue | 100 ++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 97 insertions(+), 3 deletions(-) diff --git a/src/views/DataScreen.vue b/src/views/DataScreen.vue index 07a15a8..8c89475 100644 --- a/src/views/DataScreen.vue +++ b/src/views/DataScreen.vue @@ -1,9 +1,15 @@ <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" /> - <right-panel /> + <right-panel v-if="!loading" :data="data" /> </div> </template> @@ -31,24 +37,84 @@ transformOrigin: 'left top' }, data: {}, - loading: true + loading: true, + isFullscreen: false, + timer: null }; }, created() { + this.handleResize(); getData().then(res => { this.data = res.data; this.loading = false; }); + this.timer = setInterval(() => { + getData().then(res => { + this.data = res.data; + this.loading = false; + }); + }, 10000); }, 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(); + clearInterval(this.timer); }, methods: { handleResize() { - this.screenStyle.transform = `scale(${window.innerWidth / 1920})`; + const widthScale = window.innerWidth / 1920; + 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); + } } } }; @@ -62,5 +128,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