From 3f2d362d2c1ea713b68b12511aed1aa7d6c1989a Mon Sep 17 00:00:00 2001
From: zhuzhuanzhuan
Date: 星期五, 01 十二月 2023 12:58:02 +0800
Subject: [PATCH] 全局顶部导航栏响应式布局
---
src/views/WorkshopSignage.vue | 130 +++++++++++++++++++++++++++++++-----------
1 files changed, 95 insertions(+), 35 deletions(-)
diff --git a/src/views/WorkshopSignage.vue b/src/views/WorkshopSignage.vue
index e3f9e6b..5dc5cb2 100644
--- a/src/views/WorkshopSignage.vue
+++ b/src/views/WorkshopSignage.vue
@@ -1,8 +1,8 @@
<template>
<dv-full-screen-container class="full-screen-container">
- <header class="page-header">
+ <header class="page-header" :style="{height: pageHeaderHeight+'px'}">
{{ workshopDetails.workshopName }}
- <div class="header-right" v-has="'home:saveDevicePositionAndSize'">
+ <div class="header-left" v-has="'home:saveDevicePositionAndSize'">
<a-space>
<span v-if="!isSwitchChecked">寮�鍚姛鑳�</span>
<span v-else>鍏抽棴鍔熻兘</span>
@@ -15,6 +15,13 @@
/>
</a-space>
<a-button type="primary" icon="save" size="large" @click="saveDevicePositionAndSizeByApi">淇濆瓨浣嶇疆</a-button>
+ </div>
+ <div class="device-status-info">
+ <a-space v-for="item in deviceStatusList" :key="item.value" class="single-status-info">
+ <div>{{ item.label }}</div>
+ <div class="status-square" :style="{ backgroundColor: item.color }"></div>
+ <div>{{ getDeviceNumberByStatus(item.value) }}</div>
+ </a-space>
</div>
</header>
@@ -30,14 +37,14 @@
v-on:resizing="resize($event, index)"
v-on:dragging="resize($event, index)"
:parentLimitation="true"
- :minw="100"
- :minh="100"
+ :minw="70"
+ :minh="70"
:isDraggable="isDraggable"
:isResizable="isResizable"
:stickSize="6"
>
<div class="single-device" :style="{ width: item.vw + 'px', height: item.vh + 'px' }"
- @mouseenter="openDetail(item)">
+ @click="openDetail(item)">
<div class="device-status">
<div
v-if="item.equipmentStatus == 2 || item.equipmentStatus == 1"
@@ -64,18 +71,12 @@
class="device-image"
></div>
</div>
- <div class="device-id" :style="{ fontSize: item.fontSize + 'px' }">
+ <div class="device-id" id="deviceId"
+ :style="{ fontSize: item.fontSize + 'px',color:workshopDetails.equipmentIdColor }">
{{ item.equipmentId }}
</div>
</div>
</VueDragResize>
- <div class="device-status-info">
- <div v-for="item in deviceStatusList" :key="item.value" class="single-status-info">
- <div>{{ item.label }}</div>
- <div class="status-square" :style="{ backgroundColor: item.color }"></div>
- <div>{{ getDeviceNumberByStatus(item.value) }}</div>
- </div>
- </div>
</div>
</dv-border-box-8>
@@ -101,6 +102,11 @@
},
data() {
return {
+ pageHeaderHeight: 80,// 椤靛ご楂樺害
+ taskBarHeight: window.screen.height - window.screen.availHeight,// 灞忓箷搴曢儴浠诲姟鏍忛珮搴�
+ utilsBarHeight: window.outerHeight - window.innerHeight,// 娴忚鍣ㄥ伐鍏锋爮楂樺害
+ normalPageHeight: 0,
+ fullScreenPageHeight: 0,
workshopDetails: {}, // 杞﹂棿璇︾粏淇℃伅,
isDraggable: false, // 鏄惁寮�鍚嫋鎷�
isResizable: false, // 鏄惁寮�鍚缉鏀�
@@ -139,7 +145,8 @@
value: 22,
color: '#FF0000'
}
- ] // 璁惧鐘舵�佹寚绀虹伅鍒楄〃
+ ],// 璁惧鐘舵�佹寚绀虹伅鍒楄〃锛�
+ isFullscreen: false
}
},
watch: {
@@ -183,6 +190,15 @@
this.$refs.deviceContainerRef.style.backgroundImage = `url(${this.getImgView(
this.workshopDetails.backgroundImage
)})`
+
+ this.fullScreenPageHeight = `calc(100% - ${this.pageHeaderHeight}px)`
+ this.normalPageHeight = `calc(100% - ${this.pageHeaderHeight}px - ${this.taskBarHeight}px - ${this.utilsBarHeight}px)`
+
+ if (this.isFullscreen) {
+ this.$refs.deviceContainerRef.style.height = this.fullScreenPageHeight
+ } else {
+ this.$refs.deviceContainerRef.style.height = this.normalPageHeight
+ }
})
},
@@ -281,6 +297,35 @@
// setTimeout( this.$refs.equmentDetaiModel.initData(item.equipmentId),0)
// },1000*10)
}
+ },
+
+ onResize() {
+ // 鍒╃敤灞忓箷鍒嗚鲸鐜囧拰window瀵硅薄鐨勫唴楂樺害鏉ュ垽鏂吋瀹笽E
+ let winFlag = window.innerHeight === window.screen.height
+ // 鍒╃敤window鍏ㄥ睆鏍囪瘑鏉ュ垽鏂� -- IE鏃犳晥
+ let isFull = window.fullScreen || document.webkitIsFullScreen
+
+ if (isFull === undefined) {
+ this.isFullscreen = winFlag
+ } else {
+ this.isFullscreen = winFlag || isFull
+ }
+ console.log(winFlag) // true鍏ㄥ睆 false涓嶆槸鍏ㄥ睆
+ console.log('浠诲姟鏍忛珮搴�', this.taskBarHeight)
+ console.log('宸ュ叿鏍忛珮搴�', this.utilsBarHeight)
+
+ //鍏ㄥ睆鍒欏浘绾哥洅瀛愬彲瑙嗛珮搴﹀噺鍘婚〉澶撮珮搴︼紝姝e父绐楀彛鍒欏噺鍘婚〉澶淬�佸睆骞曞簳閮ㄤ换鍔℃爮浠ュ強娴忚鍣ㄥ伐鍏锋爮楂樺害
+ if (winFlag) {
+ console.log('瑙﹀彂鍏ㄥ睆')
+ this.$refs.deviceContainerRef.style.height = this.fullScreenPageHeight
+
+ } else {
+ console.log('鍏抽棴鍏ㄥ睆')
+ // 濡傛灉鍒锋柊椤甸潰閲嶆柊鍔犺浇鍚庨粯璁ゅ浜庡叏灞忔ā寮忥紝鍒欏伐鍏锋爮楂樺害涓鸿礋鏁帮紝鍥犳闇�瑕侀��鍑哄叏灞忔ā寮忔椂閲嶇疆宸ュ叿鏍忛珮搴�
+ this.utilsBarHeight = window.outerHeight - window.innerHeight
+ this.normalPageHeight = `calc(100% - ${this.pageHeaderHeight}px - ${this.taskBarHeight}px - ${this.utilsBarHeight}px)`
+ this.$refs.deviceContainerRef.style.height = this.normalPageHeight
+ }
}
},
@@ -289,15 +334,29 @@
this.getDeviceListByApi(this.$route.params.id)
this.getWorkshopDetailsByApi(this.$route.params.id)
}
+
+
+ let winFlag = window.innerHeight === window.screen.height
+ // 鍒╃敤window鍏ㄥ睆鏍囪瘑鏉ュ垽鏂� -- IE鏃犳晥
+ let isFull = window.fullScreen || document.webkitIsFullScreen
+
+ if (isFull === undefined) {
+ this.isFullscreen = winFlag
+ } else {
+ this.isFullscreen = winFlag || isFull
+ }
+
+ // window.addEventListener('resize', this.onResize)
},
mounted() {
// 绂佹鐢ㄦ埛閫変腑鍐呭
document.onselectstart = () => false
},
beforeDestroy() {
- // 纭繚閿�姣佸畾鏃跺櫒鍙婂洖鏀惰祫婧�
+ // 纭繚閿�姣佸畾鏃跺櫒銆佷簨浠跺強鍥炴敹璧勬簮
clearInterval(this.timingAcquisition)
this.timingAcquisition = null
+ // window.removeEventListener('resize', this.onResize)
}
}
</script>
@@ -309,44 +368,36 @@
color: #fff;
.page-header {
- height: 80px;
font-size: 50px;
text-align: center;
position: relative;
- .header-right {
+ .header-left {
width: 450px;
position: absolute;
- right: 0px;
+ left: 0px;
top: 35px;
display: flex;
justify-content: space-evenly;
align-items: center;
font-size: 16px;
}
- }
-
- .content-container {
- position: relative;
- width: 100%;
- height: 100%;
- background-repeat: no-repeat;
- background-size: 100% 100%;
.device-status-info {
+ font-size: 16px;
width: 400px;
position: absolute;
- top: 5px;
- right: 5px;
+ top: 40px;
+ right: 40px;
display: flex;
align-items: center;
justify-content: space-between;
.single-status-info {
- width: 60px;
- display: flex;
- align-items: center;
- justify-content: space-between;
+ /*width: 70px;*/
+ /*display: flex;*/
+ /*align-items: center;*/
+ /*justify-content: space-between;*/
.status-square {
width: 14px;
@@ -356,6 +407,14 @@
}
}
}
+ }
+
+ .content-container {
+ width: 100%;
+ /*height: calc(100% - 200px);*/
+ /*height: 100%;*/
+ background-repeat: no-repeat;
+ background-size: 100% 100%;
.single-device {
position: absolute;
@@ -375,13 +434,14 @@
width: 100%;
height: 100%;
display: flex;
- justify-content: space-between;
+ align-items: end;
.status-image {
background-size: 100% 100%;
background-repeat: no-repeat;
- width: 45px;
- margin-right: 10px;
+ width: 10px;
+ height: 60%;
+ margin-right: 5px;
}
.device-image {
--
Gitblit v1.9.3