From b4d09a09d2a8ffc939e97f8b400ff94a64d13eb7 Mon Sep 17 00:00:00 2001
From: zhuzhuanzhuan
Date: 星期一, 04 三月 2024 17:46:01 +0800
Subject: [PATCH] 优化用户管理页面表单填写界面选择设备功能,车间重新选择后重置选择设备

---
 src/views/WorkshopSignage.vue |  651 ++++++++++++++++++++++++++++++++++++++++++++--------------
 1 files changed, 487 insertions(+), 164 deletions(-)

diff --git a/src/views/WorkshopSignage.vue b/src/views/WorkshopSignage.vue
index cddcdfe..c803017 100644
--- a/src/views/WorkshopSignage.vue
+++ b/src/views/WorkshopSignage.vue
@@ -1,186 +1,451 @@
 <template>
   <dv-full-screen-container class="full-screen-container">
-    <header class="page-header">
-      {{getWorkshopName}}
-      <div class="header-right">
-        <a-button type="primary" icon="save" size="large" @click="saveDevicePositionByApi">淇濆瓨浣嶇疆</a-button>
-      </div>
-    </header>
+    <div>
+      <!--椤靛ご鍖哄煙-->
+      <header class="page-header" :style="{height: pageHeaderHeight+'px'}">
+        <a-row style="height: 100%">
+          <a-col :span="7" class="header-left">
+            <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-button type="primary" icon="save" size="large" @click="saveDevicePositionAndSizeByApi">淇濆瓨浣嶇疆</a-button>
+            </a-space>
+          </a-col>
 
-    <dv-border-box-8 class="content-container">
-      <div v-for="item in deviceList" :key="item.equipmentId" class="single-device"
-           :style="{top:item.top+'px',left:item.left+'px',height:'135px',width:'175px'}" @mousedown="handleMouseDown"
-           :id="item.equipmentId">
-        <div class="device-status">
-          <img v-if="item.status==0" src="@/assets/yellow.png" draggable="false">
-          <img v-if="item.status==1" src="@/assets/red.png" draggable="false">
-          <img v-if="item.status==2" src="@/assets/gray.png" draggable="false">
-          <img v-if="item.status==3" src="@/assets/green.png" draggable="false">
-          <img :src="item.equipmentImageUrl" draggable="false">
-        </div>
-        <div class="device-id">{{item.equipmentId}}</div>
-        <!--<div draggable="false" class="device-info">-->
-        <!--<div v-if="item.status==0" class="status-square" style="background-color: gray"></div>-->
-        <!--<div v-if="item.status==1" class="status-square" style="background-color: red"></div>-->
-        <!--<div v-if="item.status==2" class="status-square" style="background-color: green"></div>-->
-        <!--<div v-if="item.status==3" class="status-square" style="background-color: yellow"></div>-->
-        <!--<div class="device-id">{{item.equipmentId}}</div>-->
-        <!--</div>-->
+          <a-col :span="10" class="workshop-name">{{ workshopDetails.workshopName }}</a-col>
+
+          <a-col :span="7" class="device-status-info">
+            <!--<a-space v-for="item in deviceStatusList" :key="item.value" class="single-status-info"-->
+            <!--@click="handleScreenDevive(item)">-->
+            <!--<div :style="{color:item.checked?'#1890FF':'#fff'}">{{ item.label }}</div>-->
+            <!--<div class="status-square" :style="{ backgroundColor: item.color }"></div>-->
+            <!--&lt;!&ndash;<a-checkbox :checked="item.checked" @change="checkboxChange(item)"></a-checkbox>&ndash;&gt;-->
+            <!--<div>{{getDeviceNumberByStatus(item.value) }}</div>-->
+            <!--</a-space>-->
+            <a-space v-for="item in deviceStatusList" :key="item.value" class="single-status-info">
+              <div :style="{color:item.checked?'#1890FF':'#fff'}">{{ item.label }}</div>
+              <div class="status-square" :style="{ backgroundColor: item.color }"></div>
+              <!--<a-checkbox :checked="item.checked" @change="checkboxChange(item)"></a-checkbox>-->
+              <div>{{getDeviceNumberByStatus(item.value) }}</div>
+            </a-space>
+          </a-col>
+        </a-row>
+      </header>
+
+      <!--鎷栨嫿璁惧鍖哄煙-->
+      <div class="content-container" ref="deviceContainerRef" style="overflow: auto">
+        <img :src="imgSrc" width="1920" height="900">
+        <div class="guideline guidelineX" :style="{top:guidelineXTop+'px',display:showGuideline}"></div>
+        <div class="guideline guidelineY" :style="{left:guidelineYLeft+'px',display:showGuideline}"></div>
+        <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"
+          :parentH="parentH"
+          :parentW="parentW"
+          :minw="70"
+          :minh="70"
+          :isDraggable="isDraggable"
+          :isResizable="isResizable"
+          :stickSize="6"
+          @deactivated="showGuideline = 'none'"
+        >
+          <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>
+            </div>
+            <div class="device-id" id="deviceId"
+                 :style="{ color:workshopDetails.equipmentIdColor }">
+              {{ item.equipmentId }}
+            </div>
+          </div>
+        </VueDragResize>
       </div>
-      <!--<div style="width: 175px;height: 135px;background-color: red;position: absolute;top: 200px;left: 100px"></div>-->
-    </dv-border-box-8>
+
+      <EquipmentDetailModal ref="EquipmentDetailModal"></EquipmentDetailModal>
+    </div>
   </dv-full-screen-container>
 </template>
 
 <script>
+  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,
+      EquipmentDetailModal
+    },
     data() {
       return {
-        mouseX: 0, // 榧犳爣鍦ㄥ厓绱犲唴鐨刋鍧愭爣
-        mouseY: 0, // 榧犳爣鍦ㄥ厓绱犲唴鐨刌鍧愭爣,
-        dragging: false, //鏄惁鍦ㄦ嫋鎷戒腑
-        left: 0, // 鍏冪礌宸︿笂瑙掕窛绂荤埗瀹瑰櫒宸︿晶鐨勮窛绂�
-        top: 0, // 鍏冪礌宸︿笂瑙掕窛绂荤埗瀹瑰櫒椤堕儴鐨勮窛绂�,
-        elementId: '',// 琚嫋鎷藉厓绱犵殑id灞炴�у��
-        elementWidth: '',
-        elementHeight: '',
+        pageHeaderHeight: 80,// 椤靛ご楂樺害
+        workshopDetails: {}, //  杞﹂棿璇︾粏淇℃伅,
+        isDraggable: false, // 鏄惁寮�鍚嫋鎷�
+        isResizable: false, // 鏄惁寮�鍚缉鏀�
+        isSwitchChecked: false, // 鏄惁寮�鍚姛鑳�
+        timingAcquisition: null, // 瀹氭椂鍒锋柊鏄惁寮�鍚�
+        parentH: 5000,//鐖剁骇楂樺害
+        parentW: 1920,//鐖剁骇瀹藉害
+        showGuideline: 'none',
+        guidelineXTop: 0,
+        guidelineYLeft: 0,
         deviceList: [
+          // {
+          //   equipmentId: '123213213123232',// 璁惧ID
+          //   equipmentImage: require('@/assets/8.png'), // 璁惧鍥剧墖
+          //   coordinateTop: 200, // 鎷栨嫿鍏冪礌璺濈洅瀛愰《璺濈
+          //   coordinateLeft: 100, // 鎷栨嫿鍏冪礌璺濈洅瀛愬乏渚ц窛绂�
+          //   vw: 100,  // 缂╂斁鍏冪礌瀹藉害
+          //   vh: 100, // 缂╂斁鍏冪礌楂樺害
+          //   equipmentStatus: 1 // 璁惧鐘舵�� 0:鍏虫満 22:鎶ヨ 2:寰呮満 3:杩愯 寮�鏈�:1锛堟病鏈夊洓鑹茬伅鏍囪瘑褰掍负寰呮満锛�
+          // }
+        ], // 璁惧淇℃伅鍒楄〃
+        deviceList_copy: [],
+        deviceStatusList: [
+          // {
+          //   label: '鍏ㄩ儴',
+          //   value: 99,
+          //   color: '#fff',
+          //   checked: true
+          // },
           {
-            equipmentId: '123213213123232',
-            equipmentImageUrl: require('@/assets/8.png'),
-            top: 200,
-            left: 100,
-            status: 1
+            label: '鍏虫満',
+            value: 0,
+            color: '#A8A8A8',
+            checked: false
           },
           {
-            equipmentId: '512346789561232',
-            equipmentImageUrl: require('@/assets/8.png'),
-            top: 500,
-            left: 753,
-            status: 0
+            label: '寰呮満',
+            value: 2,
+            color: '#FFFF00',
+            checked: false
           },
           {
-            equipmentId: '64746965647653',
-            equipmentImageUrl: require('@/assets/8.png'),
-            top: 300,
-            left: 860,
-            status: 2
+            label: '杩愯',
+            value: 3,
+            color: '#00EE00',
+            checked: false
           },
           {
-            equipmentId: '33548976965462',
-            equipmentImageUrl: require('@/assets/8.png'),
-            top: 100,
-            left: 380,
-            status: 3
-          },
-          {
-            equipmentId: '85484913549253',
-            equipmentImageUrl: require('@/assets/8.png'),
-            top: 200,
-            left: 1500,
-            status: 2
+            label: '鎶ヨ',
+            value: 22,
+            color: '#FF0000',
+            checked: false
           }
-        ]
+        ],// 璁惧鐘舵�佹寚绀虹伅鍒楄〃锛�
+        windowHeight: null,// 褰撳墠娴忚鍣ㄥ彲瑙嗗尯鍩熼珮搴︼紙锛堜笉鍖呮嫭宸ュ叿鏍忋�佷功绛俱�佸簳閮ㄤ换鍔℃爮锛�
+        isFullScreen: false,// 杩涘叆鐪嬫澘椤甸潰鏃舵槸鍚︿负鍏ㄥ睆妯″紡锛屼笉鍖呮嫭姝e父妯″紡杩涘叆鍚庡垏鎹负鍏ㄥ睆妯″紡
+        parentLimitation: false,// 鎷栨嫿鍖哄煙鏄惁闄愬埗鍦ㄧ埗鍏冪礌鍖哄煙鍐�,
+        checkedStatusCount: null,// 宸插嬀閫夌瓫閫夌姸鎬佷釜鏁�
+        imgSrc: ''// 杞﹂棿鍥剧焊鍦板潃
       }
     },
-    computed: {
-      getWorkshopName() {
-        switch (this.$route.params.workshopId) {
-          case '5321':
-            return '闀挎矙杞﹂棿'
-          case '6312':
-            return '澶╂触杞﹂棿'
-          case '3463':
-            return '姝︽眽杞﹂棿'
-          case '8421':
-            return '鍖椾含杞﹂棿'
-          default:
-            return '娴嬭瘯杞﹂棿'
-        }
+    watch: {
+      isSwitchChecked: {
+        handler(newVal) {
+          if (!newVal) {
+            console.log('瀹氭椂鍣ㄥ紑鍚腑')
+            this.timingAcquisition = setInterval(() => {
+              this.getDeviceListByApi(this.$route.params.id)
+            }, 2000)
+          } else {
+            console.log('鍏抽棴瀹氭椂鍣�')
+            clearInterval(this.timingAcquisition)
+            this.timingAcquisition = null
+          }
+        },
+        immediate: true
       }
     },
     methods: {
       /**
-       * 閫氳繃杞﹂棿Id璋冪敤鎺ュ彛鑾峰彇璁惧鍒楄〃
-       * @param workshopId 杞﹂棿Id
+       * 閫氳繃杞﹂棿Id璋冪敤鎺ュ彛鑾峰彇璁惧淇℃伅鍒楄〃
+       * @param id 杞﹂棿Id
        */
-      getDeviceListByApi(workshopId) {
-        console.log('杞﹂棿Id', workshopId)
+      getDeviceListByApi(id) {
+        console.log('閲嶆柊鍒锋柊')
+        api.getDeviceListInWorkshopSignagePageApi(id).then((res) => {
+          if (res.result && res.result.length > 0) {
+            this.deviceList = res.result
+            this.deviceList_copy = res.result
+          }
+        })
       },
+
       /**
-       * 鎷栨嫿瀵硅薄榧犳爣鎸夐敭鎸変笅浜嬩欢
-       * @param event
+       * 閫氳繃杞﹂棿Id璋冪敤鎺ュ彛鑾峰彇杞﹂棿璇︾粏淇℃伅
+       * @param id 杞﹂棿Id
        */
-      handleMouseDown(event) {
-        this.dragging = true
-        this.mouseX = event.clientX
-        this.mouseY = event.clientY
-        this.elementId = event.currentTarget.id
-        this.top = event.currentTarget.offsetTop
-        this.left = event.currentTarget.offsetLeft
-        document.addEventListener('mousemove', this.handleMouseMove)
-        document.addEventListener('mouseup', this.handleMouseUp)
-        this.elementWidth = +event.currentTarget.style.width.replace('px', '')
-        this.elementHeight = +event.currentTarget.style.height.replace('px', '')
+      getWorkshopDetailsByApi(id) {
+        api.getWorkshopDetailByWorkshopIdApi(id).then((res) => {
+          this.workshopDetails = res.result
+          // this.$refs.deviceContainerRef.style.backgroundImage = `url(${this.getImgView(
+          //   this.workshopDetails.backgroundImage
+          // )})`
+          this.imgSrc = this.getImgView(this.workshopDetails.backgroundImage)
+          this.$refs.deviceContainerRef.style.height = (this.windowHeight - this.pageHeaderHeight) + 'px'
+          // this.parentH = this.windowHeight - this.pageHeaderHeight
+          this.parentH = 900
+          this.parentLimitation = true // 鍦ㄧ埗鍏冪礌楂樺害璁剧疆鍚庡啀璁剧疆闄愬埗鎷栨嫿鍖哄煙锛屼笉杩欐牱鏈夋鐜囧鑷寸埗鍏冪礌楂樺害鏈缃氨闄愬埗鎷栨嫿
+        })
       },
+
       /**
-       * 鏂囨。瀵硅薄榧犳爣绉诲姩浜嬩欢
-       * @param event
+       * 鍥剧墖棰勮
+       * @param text 鍥剧墖鍦板潃
        */
-      handleMouseMove(event) {
-        if (this.dragging) {
-          // x鏂瑰悜榧犳爣鍋忕Щ閲�
-          const deltaX = event.clientX - this.mouseX
-          // y鏂瑰悜榧犳爣鍋忕Щ閲�
-          const deltaY = event.clientY - this.mouseY
-          this.left += deltaX
-          this.top += deltaY
-          this.deviceList.forEach(item => {
-            if (item.equipmentId === this.elementId) {
-              item.top = this.top
-              item.left = this.left
-              // 闄愬埗鎷栨嫿瓒呭嚭鍖哄煙(缂╂斁娴忚鍣ㄧ獥鍙e悗璺濆洓鍛ㄨ窛绂诲嚭鐜伴棶棰�)
-              if (item.top < 0) {
-                item.top = 0
-              } else if (item.top + this.elementHeight + 80 > window.innerHeight) {
-                item.top = window.innerHeight- this.elementHeight
+      getImgView(text) {
+        if (text && text.indexOf(',') > 0) {
+          text = text.substring(0, text.indexOf(','))
+        }
+        return getFileAccessHttpUrl(text)
+      },
+
+      /**
+       * 鐐瑰嚮淇濆瓨鎸夐挳璋冪敤鎺ュ彛淇濆瓨鎷栨嫿鍚庣殑浣嶇疆涓庤澶囧浘鏍囧昂瀵�
+       */
+      saveDevicePositionAndSizeByApi() {
+        console.log('瑙﹀彂淇濆瓨')
+        if (this.isOperatingDevice) {
+          api.saveDevicePositionAndSizeApi(this.deviceList).then((res) => {
+            if (res.code === 200) {
+              this.$notification.success({
+                message: '娑堟伅',
+                description: res.message
+              })
+              this.isOperatingDevice = false
+              if (this.isSwitchChecked) {
+                this.isSwitchChecked = false
+                this.isResizable = !this.isResizable
+                this.isDraggable = !this.isDraggable
               }
-              if (item.left < 0) {
-                item.left = 0
-              } else if (item.left + this.elementWidth > window.innerWidth) {
-                item.left = window.innerWidth - this.elementWidth
-              }
+              this.getDeviceListByApi(this.$route.params.id)
             }
           })
-          this.mouseX = event.clientX
-          this.mouseY = event.clientY
+        } else {
+          this.$notification.warning({
+            message: '娑堟伅',
+            description: '璇峰紑鍚姛鑳藉悗鍐嶈繘琛屼繚瀛�'
+          })
         }
       },
-      /**
-       * 鏂囨。瀵硅薄榧犳爣鎸夐敭寮硅捣浜嬩欢
-       * @param event
-       */
-      handleMouseUp(event) {
-        this.dragging = false
-        document.removeEventListener('mousemove', this.handleMouseMove)
-        document.removeEventListener('mouseup', this.handleMouseUp)
-      },
-      /**
-       * 鐐瑰嚮淇濆瓨鎸夐挳璋冪敤鎺ュ彛淇濆瓨鎷栨嫿鍚庣殑浣嶇疆
-       */
-      saveDevicePositionByApi() {
-        console.log('淇濆瓨浣嶇疆')
 
+      /**
+       * 璁惧鎷栨嫿鎴栫缉鏀炬椂瑙﹀彂浜嬩欢
+       * @param newRect 鎷栨嫿鎴栫缉鏀惧悗鐨勫昂瀵稿強璺濈
+       * @param index 鎷栨嫿璁惧鍦ㄦ暟缁勪腑鐨勪笅鏍�
+       */
+      resize(newRect, index) {
+        // if (newRect.width > 100) {
+        //   if (newRect.width / newRect.height < 2) {
+        //     this.deviceList[index].fontSize = newRect.width / 10
+        //   } else {
+        //     this.deviceList[index].fontSize = newRect.height / 5
+        //   }
+        // } else {
+        //   this.deviceList[index].fontSize = 12
+        // }
+        this.showGuideline = 'block'
+        this.deviceList[index].vw = newRect.width
+        this.deviceList[index].vh = newRect.height
+        this.deviceList[index].coordinateTop = newRect.top
+        this.deviceList[index].coordinateLeft = newRect.left
+        this.guidelineXTop = newRect.top + newRect.height / 2
+        this.guidelineYLeft = newRect.left + newRect.width / 2
+      },
+
+      /**
+       * 鏍规嵁璁惧鐘舵�佸�艰幏鍙栧搴旇澶囨暟閲�
+       * @param value 璁惧鐘舵�佸��
+       * @returns {number} 璁惧鏁伴噺
+       */
+      getDeviceNumberByStatus(value) {
+        if (value === 99) return this.deviceList_copy.length
+        return this.deviceList_copy.filter((item) => item.equipmentStatus === value).length
+      },
+
+      /**
+       * 寮�鍚姛鑳借Е鍙戜簨浠�
+       * @param checked 褰撳墠switch鐘舵�侊紝鏄惁寮�鍚紝鍒濆涓篺alse
+       */
+      handleSwitchChange(checked) {
+        this.isOperatingDevice = true
+        this.isResizable = !this.isResizable
+        this.isDraggable = !this.isDraggable
+      },
+
+      openDetail(item) {
+        if (!this.isSwitchChecked) {
+          if (item.equipmentStatus == 0) {
+            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() {
+        // this.isFullScreen = !this.isFullScreen
+        // if (!this.isFullScreen) location.reload() // 濡傛灉涓哄叏灞忔ā寮忥紝鍒欏湪鍒囨崲妯″紡鏃堕噸鏂板姞杞介〉闈互閲嶆柊鑾峰彇娴忚鍣ㄥ彲瑙嗗尯鍩熼珮搴�
+        const windowHeight =
+          window.innerHeight ||
+          document.documentElement.clientHeight ||
+          document.body.clientHeight
+        // this.parentH = 99999
+        // const scaleRate = windowHeight / this.windowHeight
+        // this.windowHeight = windowHeight
+        this.$refs.deviceContainerRef.style.height = (windowHeight - this.pageHeaderHeight) + 'px'
+        // const timer = setTimeout(() => {
+        //   this.deviceList.forEach(item => {
+        //     item.coordinateTop = item.coordinateTop * scaleRate
+        //     item.vh = item.vh * scaleRate
+        //     console.log('vh', item.vh)
+        //   })
+        //   this.parentH = windowHeight - this.pageHeaderHeight
+        //   console.log('changeDeviceList', this.deviceList)
+        // }, 500)
+        // console.log('scaleRate', scaleRate)
+      },
+
+      checkboxChange(obj) {
+        //闇�瑕佸垽鏂槸鍚﹀紑鍚姛鑳斤紝鐩殑鏄负浜嗗叧闂畾鏃跺櫒閬垮厤绛涢�夊悗璁惧琚畾鏃跺埛鏂扮殑鏂拌澶囪鐩�
+        if (this.isOperatingDevice) {
+          obj.checked = !obj.checked
+          if (obj.value !== 99) {
+            if (obj.checked) this.checkedStatusCount++
+            else this.checkedStatusCount--
+          }
+
+          if (obj.value == 99) {
+            this.deviceStatusList.forEach(item => {
+              if (item.value !== obj.value) item.checked = obj.checked
+            })
+            if (obj.checked) {
+              this.deviceList = this.deviceList_copy
+              this.checkedStatusCount = this.deviceStatusList.length - 1
+            } else {
+              this.deviceList = []
+              this.checkedStatusCount = 0
+            }
+          } else {
+            this.deviceStatusList.forEach(item => {
+              if (item.value === 99) {
+                if (this.checkedStatusCount !== this.deviceStatusList.length - 1 || this.checkedStatusCount === 0) item.checked = false
+                if (this.checkedStatusCount === this.deviceStatusList.length - 1) item.checked = true
+              }
+            })
+            if (obj.checked) {
+              this.deviceList.push(...this.deviceList_copy.filter(item => item.equipmentStatus === obj.value))
+            } else {
+              this.deviceList = this.deviceList.filter(item => item.equipmentStatus !== obj.value)
+            }
+          }
+        } else {
+          this.$notification.warning({
+            message: '娑堟伅',
+            description: '璇峰紑鍚姛鑳藉悗鍐嶈繘琛岀瓫閫�'
+          })
+        }
+      },
+
+      handleScreenDevive(obj) {
+        //闇�瑕佸垽鏂槸鍚﹀紑鍚姛鑳斤紝鐩殑鏄负浜嗗叧闂畾鏃跺櫒閬垮厤绛涢�夊悗璁惧琚畾鏃跺埛鏂扮殑鏂拌澶囪鐩�
+        if (this.isOperatingDevice) {
+          obj.checked = true
+          this.deviceList = this.deviceList_copy
+          this.deviceStatusList.forEach(item => {
+            if (item.value !== obj.value) item.checked = false
+          })
+
+          if (obj.value == 99) this.deviceList = this.deviceList_copy
+          else this.deviceList = this.deviceList.filter(item => item.equipmentStatus === obj.value)
+
+        } else {
+          this.$notification.warning({
+            message: '娑堟伅',
+            description: '璇峰紑鍚姛鑳藉悗鍐嶈繘琛岀瓫閫�'
+          })
+        }
       }
+    },
+    created() {
+      if (this.$route.params.id) {
+        this.getDeviceListByApi(this.$route.params.id)
+        this.getWorkshopDetailsByApi(this.$route.params.id)
+      }
+      this.checkedStatusCount = this.deviceStatusList.length - 1
     },
     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)
     },
-    created() {
-      if (this.$route.params.workshopId) {
-        this.getDeviceListByApi(this.$route.params.workshopId)
-      }
+    beforeDestroy() {
+      // 纭繚閿�姣佸畾鏃跺櫒銆佷簨浠跺強鍥炴敹璧勬簮
+      clearInterval(this.timingAcquisition)
+      this.timingAcquisition = null
     }
   }
 </script>
@@ -192,19 +457,67 @@
     color: #fff;
 
     .page-header {
-      height: 80px;
-      font-size: 50px;
-      text-align: center;
-      position: relative;
-      .header-right {
-        position: absolute;
-        right: 200px;
-        top: 0;
+      /*font-size: 50px;*/
+      /*text-align: center;*/
+      /*position: relative;*/
+
+      .header-left {
+        height: 100%;
+        display: flex;
+        justify-content: center;
+        align-items: center;
+        padding-top: 20px;
+      }
+
+      .workshop-name {
+        display: flex;
+        justify-content: center;
+        align-items: center;
+        font-size: 50px;
+      }
+
+      .device-status-info {
+        height: 100%;
+        display: flex;
+        justify-content: flex-end;
+        align-items: center;
+        padding-top: 20px;
+
+        .single-status-info {
+          margin: 10px;
+          cursor: pointer;
+
+          .status-square {
+            width: 14px;
+            height: 14px;
+            border: 1px solid #fff;
+            border-radius: 3px;
+          }
+        }
       }
     }
 
     .content-container {
+      width: 100%;
+      background-repeat: no-repeat;
+      background-size: 100% 100%;
       position: relative;
+
+      .guideline{
+        position: absolute;
+        border: 1px dashed #ccc;
+      }
+
+      .guidelineX {
+        width: 1920px;
+        left: 0;
+      }
+
+      .guidelineY {
+        top: 0;
+        height: 900px;
+      }
+
       .single-device {
         position: absolute;
         border: 1px solid transparent;
@@ -214,30 +527,40 @@
         align-items: center;
         justify-content: space-between;
         cursor: default;
+
         &:active {
-          border: 1px solid #00b3ff;
+          border: 1px solid #1890ff;
         }
+
         .device-status {
-          width: 145px;
+          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: 10px;
+            height: 60%;
+            margin-right: 5px;
+          }
+
+          .device-image {
+            background-size: 100% 100%;
+            background-repeat: no-repeat;
+            width: 100%;
+            height: 100%;
+          }
         }
-        .device-id {
-          font-size: 20px;
-        }
-        /*.device-info {*/
-        /*width: 100%;*/
-        /*display: flex;*/
-        /*align-items: center;*/
-        /*justify-content: space-between;*/
-        /*.status-square {*/
-        /*width: 14px;*/
-        /*height: 14px;*/
-        /*border: 1px solid #fff;*/
-        /*border-radius: 2px;*/
-        /*}*/
-        /*}*/
       }
     }
   }
+
+  /deep/ .ant-checkbox-inner {
+    background-color: transparent;
+    border-color: #fff;
+  }
 </style>
\ No newline at end of file

--
Gitblit v1.9.3