From 5cbba170e270e6f1c99a91e27dbb7951a27d596a Mon Sep 17 00:00:00 2001 From: “linengliang” <vanSuperEnergy@163.com> Date: 星期五, 24 十一月 2023 16:41:32 +0800 Subject: [PATCH] 故障报修验收 --- src/views/WorkshopSignage.vue | 177 ++++++++++++++++++++++++++++++++++++++-------------------- 1 files changed, 116 insertions(+), 61 deletions(-) diff --git a/src/views/WorkshopSignage.vue b/src/views/WorkshopSignage.vue index d13018c..7c0379b 100644 --- a/src/views/WorkshopSignage.vue +++ b/src/views/WorkshopSignage.vue @@ -1,62 +1,87 @@ <template> <dv-full-screen-container class="full-screen-container"> <header class="page-header"> - {{workshopDetails.workshopName}} - <div class="header-right" v-has="'home:saveDevicePositionAndSize'"> + {{ workshopDetails.workshopName }} + <div class="header-left" v-has="'home:saveDevicePositionAndSize'"> <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"> + <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> </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="true" + :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,10 +89,17 @@ 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 { @@ -136,7 +168,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 +180,13 @@ * @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 + )})` + + }) }, @@ -171,7 +207,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 +228,6 @@ description: '璇峰紑鍚姛鑳藉悗鍐嶈繘琛屼繚瀛�' }) } - }, /** @@ -222,7 +257,7 @@ * @returns {number} 璁惧鏁伴噺 */ getDeviceNumberByStatus(value) { - return this.deviceList.filter(item => item.equipmentStatus === value).length + return this.deviceList.filter((item) => item.equipmentStatus === value).length }, /** @@ -233,7 +268,25 @@ 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) + } } + }, created() { if (this.$route.params.id) { @@ -265,30 +318,23 @@ 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; @@ -307,6 +353,14 @@ } } } + } + + .content-container { + width: 100%; + height: calc(100% - 80px); + background-repeat: no-repeat; + background-size: 100% 100%; + .single-device { position: absolute; @@ -326,13 +380,15 @@ 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 { @@ -343,7 +399,6 @@ } } } - } } </style> \ No newline at end of file -- Gitblit v1.9.3