From 2145108a5bf0c721fea728e0a4936cb7007a92a2 Mon Sep 17 00:00:00 2001
From: Lius <Lius2225@163.com>
Date: 星期六, 06 一月 2024 15:31:41 +0800
Subject: [PATCH] mdc更新
---
src/views/WorkshopSignage.vue | 213 ++++++++++++++++++++++++++++++++++++-----------------
1 files changed, 144 insertions(+), 69 deletions(-)
diff --git a/src/views/WorkshopSignage.vue b/src/views/WorkshopSignage.vue
index d13018c..0d993f3 100644
--- a/src/views/WorkshopSignage.vue
+++ b/src/views/WorkshopSignage.vue
@@ -1,62 +1,86 @@
<template>
<dv-full-screen-container class="full-screen-container">
- <header class="page-header">
- {{workshopDetails.workshopName}}
- <div class="header-right" v-has="'home:saveDevicePositionAndSize'">
+ <header class="page-header" :style="{height: pageHeaderHeight+'px'}">
+ {{ workshopDetails.workshopName }}
+ <div class="header-left" v-has="'home:saveDevicePositionAndSize'" v-if="!isFullScreen">
<a-space>
<span v-if="!isSwitchChecked">寮�鍚姛鑳�</span>
<span v-else>鍏抽棴鍔熻兘</span>
- <a-switch checked-children="寮�" un-checked-children="鍏�" @change="handleSwitchChange"
- v-model="isSwitchChecked" :disabled="isSwitchChecked"/>
+ <a-switch
+ checked-children="寮�"
+ un-checked-children="鍏�"
+ @change="handleSwitchChange"
+ v-model="isSwitchChecked"
+ :disabled="isSwitchChecked"
+ />
</a-space>
- <a-button type="primary" icon="save" size="large" @click="saveDevicePositionAndSizeByApi"
- >淇濆瓨浣嶇疆
- </a-button>
+ <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>
<dv-border-box-8>
<div class="content-container" ref="deviceContainerRef">
- <VueDragResize v-for="(item,index) in deviceList" :key="item.equipmentId" :w="item.vw"
- :h="item.vh" :x="item.coordinateLeft" :y="item.coordinateTop"
- v-on:resizing="resize($event,index)"
- v-on:dragging="resize($event,index)"
- :parentLimitation="true"
- :minw="100"
- :minh="100"
- :isDraggable="isDraggable"
- :isResizable="isResizable"
- :stickSize="6"
+ <VueDragResize
+ v-for="(item, index) in deviceList"
+ :key="item.equipmentId"
+ :w="item.vw"
+ :h="item.vh"
+ :x="item.coordinateLeft"
+ :y="item.coordinateTop"
+ v-on:resizing="resize($event, index)"
+ v-on:dragging="resize($event, index)"
+ :parentLimitation="parentLimitation"
+ :minw="70"
+ :minh="70"
+ :isDraggable="isDraggable"
+ :isResizable="isResizable"
+ :stickSize="6"
>
- <div class="single-device"
- :style="{width: item.vw+ 'px',height:item.vh+'px'}">
+ <div class="single-device" :style="{ width: item.vw + 'px', height: item.vh + 'px' }"
+ @click="openDetail(item)">
<div class="device-status">
- <div v-if="item.equipmentStatus==2||item.equipmentStatus==1"
- :style="{backgroundImage:`url(${require('@/assets/yellow.png')})`}" class="status-image"></div>
- <div v-if="item.equipmentStatus==22" :style="{backgroundImage:`url(${require('@/assets/red.png')})`}"
- class="status-image"></div>
- <div v-if="item.equipmentStatus==0" :style="{backgroundImage:`url(${require('@/assets/gray.png')})`}"
- class="status-image"></div>
- <div v-if="item.equipmentStatus==3" :style="{backgroundImage:`url(${require('@/assets/green.png')})`}"
- class="status-image"></div>
<div
- :style="{backgroundImage:`url(${getImgView(item.equipmentImage)||require('@/assets/8.png')})`}"
- class="device-image"></div>
+ v-if="item.equipmentStatus == 2 || item.equipmentStatus == 1"
+ :style="{ backgroundImage: `url(${require('@/assets/yellow.png')})` }"
+ class="status-image"
+ ></div>
+ <div
+ v-if="item.equipmentStatus == 22"
+ :style="{ backgroundImage: `url(${require('@/assets/red.png')})` }"
+ class="status-image"
+ ></div>
+ <div
+ v-if="item.equipmentStatus == 0"
+ :style="{ backgroundImage: `url(${require('@/assets/gray.png')})` }"
+ class="status-image"
+ ></div>
+ <div
+ v-if="item.equipmentStatus == 3"
+ :style="{ backgroundImage: `url(${require('@/assets/green.png')})` }"
+ class="status-image"
+ ></div>
+ <div
+ :style="{ backgroundImage: `url(${getImgView(item.equipmentImage) || require('@/assets/8.png')})` }"
+ class="device-image"
+ ></div>
</div>
- <div class="device-id" :style="{fontSize: item.fontSize+'px'}">
- {{item.equipmentId}}
+ <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>
+
+ <EquipmentDetailModal ref="EquipmentDetailModal"></EquipmentDetailModal>
</dv-full-screen-container>
</template>
@@ -64,13 +88,21 @@
import VueDragResize from 'vue-drag-resize'
import api from '@/api/mdc'
import { getFileAccessHttpUrl } from '@/api/manage'
+ import EquipmentDetailModal from './mdc/base/modules/WorkshopSignage/EquipmentDetailModal'
+ import { message } from 'ant-design-vue'
+
+ message.config({
+ maxCount: 3
+ })
export default {
components: {
- VueDragResize
+ VueDragResize,
+ EquipmentDetailModal
},
data() {
return {
+ pageHeaderHeight: 80,// 椤靛ご楂樺害
workshopDetails: {}, // 杞﹂棿璇︾粏淇℃伅,
isDraggable: false, // 鏄惁寮�鍚嫋鎷�
isResizable: false, // 鏄惁寮�鍚缉鏀�
@@ -109,7 +141,10 @@
value: 22,
color: '#FF0000'
}
- ] // 璁惧鐘舵�佹寚绀虹伅鍒楄〃
+ ],// 璁惧鐘舵�佹寚绀虹伅鍒楄〃锛�
+ windowHeight: null,// 褰撳墠娴忚鍣ㄥ彲瑙嗗尯鍩熼珮搴︼紙锛堜笉鍖呮嫭宸ュ叿鏍忋�佷功绛俱�佸簳閮ㄤ换鍔℃爮锛夛紝杩涘叆椤甸潰鏃惰绠椾竴娆★紝闄ら潪閲嶆柊鍔犺浇椤甸潰鍚﹀垯娴忚鍣ㄥ彲瑙嗗尯鍩熼珮搴﹀垯涓嶅彂鐢熸敼鍙�
+ isFullScreen: false,// 杩涘叆鐪嬫澘椤甸潰鏃舵槸鍚︿负鍏ㄥ睆妯″紡锛屼笉鍖呮嫭姝e父妯″紡杩涘叆鍚庡垏鎹负鍏ㄥ睆妯″紡
+ parentLimitation: false// 鎷栨嫿鍖哄煙鏄惁闄愬埗鍦ㄧ埗鍏冪礌鍖哄煙鍐�
}
},
watch: {
@@ -136,7 +171,7 @@
*/
getDeviceListByApi(id) {
console.log('閲嶆柊鍒锋柊')
- api.getDeviceListInWorkshopSignagePageApi(id).then(res => {
+ api.getDeviceListInWorkshopSignagePageApi(id).then((res) => {
if (res.result && res.result.length > 0) {
this.deviceList = res.result
}
@@ -148,9 +183,14 @@
* @param id 杞﹂棿Id
*/
getWorkshopDetailsByApi(id) {
- api.getWorkshopDetailByWorkshopIdApi(id).then(res => {
+ api.getWorkshopDetailByWorkshopIdApi(id).then((res) => {
this.workshopDetails = res.result
- this.$refs.deviceContainerRef.style.backgroundImage = `url(${this.getImgView(this.workshopDetails.backgroundImage)})`
+ this.$refs.deviceContainerRef.style.backgroundImage = `url(${this.getImgView(
+ this.workshopDetails.backgroundImage
+ )})`
+
+ this.$refs.deviceContainerRef.style.height = (this.windowHeight - this.pageHeaderHeight) + 'px'
+ this.parentLimitation = true // 鍦ㄧ埗鍏冪礌楂樺害璁剧疆鍚庡啀璁剧疆闄愬埗鎷栨嫿鍖哄煙锛屼笉杩欐牱鏈夋鐜囧鑷寸埗鍏冪礌楂樺害鏈缃氨闄愬埗鎷栨嫿
})
},
@@ -171,7 +211,7 @@
saveDevicePositionAndSizeByApi() {
console.log('瑙﹀彂淇濆瓨')
if (this.isOperatingDevice) {
- api.saveDevicePositionAndSizeApi(this.deviceList).then(res => {
+ api.saveDevicePositionAndSizeApi(this.deviceList).then((res) => {
if (res.code === 200) {
this.$notification.success({
message: '娑堟伅',
@@ -192,7 +232,6 @@
description: '璇峰紑鍚姛鑳藉悗鍐嶈繘琛屼繚瀛�'
})
}
-
},
/**
@@ -222,7 +261,7 @@
* @returns {number} 璁惧鏁伴噺
*/
getDeviceNumberByStatus(value) {
- return this.deviceList.filter(item => item.equipmentStatus === value).length
+ return this.deviceList.filter((item) => item.equipmentStatus === value).length
},
/**
@@ -233,6 +272,30 @@
this.isOperatingDevice = true
this.isResizable = !this.isResizable
this.isDraggable = !this.isDraggable
+ },
+
+ openDetail(item) {
+ if (!this.isSwitchChecked) {
+ if (item.equipmentStatus == 0) {
+ // this.$message.warn("璁惧澶勪簬鍏虫満鐘舵�侊紒");
+ this.$message.warning('璁惧澶勪簬鍏虫満鐘舵�侊紒')
+ return false
+ }
+ console.log(item)
+ console.log(this.$refs.EquipmentDetailModal)
+ this.$refs.EquipmentDetailModal.initData(item.equId)
+ this.$refs.EquipmentDetailModal.timerModel(item.equId)
+ // this.equipMessageTimer = setInterval(() => {
+ // setTimeout( this.$refs.equmentDetaiModel.initData(item.equipmentId),0)
+ // },1000*10)
+ }
+ },
+
+ /**
+ * 娴忚鍣ㄥ昂瀵稿彂鐢熸敼鍙樻椂瑙﹀彂
+ */
+ handleWindowSizeChange() {
+ if (this.isFullScreen) location.reload() // 濡傛灉椤甸潰杩涘叆鏃朵负鍏ㄥ睆妯″紡锛屽垯鍦ㄥ垏鎹㈡ā寮忔椂閲嶆柊鍔犺浇椤甸潰浠ラ噸鏂拌幏鍙栨祻瑙堝櫒鍙鍖哄煙楂樺害
}
},
created() {
@@ -244,9 +307,19 @@
mounted() {
// 绂佹鐢ㄦ埛閫変腑鍐呭
document.onselectstart = () => false
+
+ this.windowHeight =
+ window.innerHeight ||
+ document.documentElement.clientHeight ||
+ document.body.clientHeight
+
+ // 鍒ゆ柇娴忚鍣ㄥ彲瑙嗗尯鍩熼珮搴︽槸鍚︾瓑浜庡垎杈ㄧ巼锛岃嫢鐩哥瓑鍒欒〃绀鸿繘鍏ユ椂娴忚鍣ㄤ负鍏ㄥ睆妯″紡
+ if (this.windowHeight === screen.height) this.isFullScreen = true
+
+ window.addEventListener('resize', this.handleWindowSizeChange)
},
beforeDestroy() {
- // 纭繚閿�姣佸畾鏃跺櫒鍙婂洖鏀惰祫婧�
+ // 纭繚閿�姣佸畾鏃跺櫒銆佷簨浠跺強鍥炴敹璧勬簮
clearInterval(this.timingAcquisition)
this.timingAcquisition = null
}
@@ -260,44 +333,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: 0;
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;
@@ -307,6 +372,14 @@
}
}
}
+ }
+
+ .content-container {
+ width: 100%;
+ /*height: calc(100% - 200px);*/
+ /*height: 100%;*/
+ background-repeat: no-repeat;
+ background-size: 100% 100%;
.single-device {
position: absolute;
@@ -326,13 +399,16 @@
width: 100%;
height: 100%;
display: flex;
- justify-content: space-between;
+ -webkit-align-items: flex-end;
+ -moz-align-items: flex-end;
+ -ms-align-items: flex-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 {
@@ -343,7 +419,6 @@
}
}
}
-
}
}
</style>
\ No newline at end of file
--
Gitblit v1.9.3