| | |
| | | <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" /> |
| | |
| | | transformOrigin: 'left top' |
| | | }, |
| | | data: {}, |
| | | loading: true |
| | | loading: true, |
| | | isFullscreen: false |
| | | }; |
| | | }, |
| | | created() { |
| | |
| | | }, |
| | | 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() { |
| | |
| | | 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); |
| | | } |
| | | } |
| | | } |
| | | }; |
| | |
| | | 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> |