From 54d11f9a2f395e021486e6a31912616274b3feda Mon Sep 17 00:00:00 2001
From: zhaowei <zhaowei>
Date: 星期一, 08 九月 2025 11:55:10 +0800
Subject: [PATCH] 车间智慧看板页面新增定时刷新功能

---
 src/views/mdc/base/WorkshopSignage.vue |  112 ++++++++++++++++++++++---------------------------------
 1 files changed, 45 insertions(+), 67 deletions(-)

diff --git a/src/views/mdc/base/WorkshopSignage.vue b/src/views/mdc/base/WorkshopSignage.vue
index 79f3a76..1414037 100644
--- a/src/views/mdc/base/WorkshopSignage.vue
+++ b/src/views/mdc/base/WorkshopSignage.vue
@@ -36,40 +36,34 @@
               </div>
             </div>
           </div>
-          <EquipmentLayout :deviceStatusList="deviceStatusList"/>
+          <EquipmentLayout ref="equipmentLayoutRef" :deviceStatusList="deviceStatusList"/>
         </div>
         <div class="workshop-alarm-info content-card">
           <div class="card-title">鍏ㄥ巶鎶ヨ淇℃伅</div>
-          <WorkshopAlarmInfoTable/>
+          <WorkshopAlarmInfoTable ref="alarmInfoRef"/>
         </div>
       </div>
 
       <div class="content-right">
         <div class="content-card">
           <div class="card-title">鍓嶄竷澶╁埄鐢ㄧ巼鎺掑悕</div>
-          <UtilizationRateRankChart/>
+          <UtilizationRateRankChart ref="rateRankRef"/>
         </div>
         <div class=" content-card">
           <div class="card-title">鍏ㄥ巶骞冲潎杩愯鏁堢巼</div>
-          <WorkshopEfficiencyAverageChart :dataSource="efficiencyData"/>
+          <WorkshopEfficiencyAverageChart ref="averageChartRef" :dataSource="efficiencyData"/>
         </div>
         <div class="workshop-equipment-status content-card">
           <div class="card-title">鍏ㄥ巶褰撳墠璁惧鐘舵��</div>
-          <WorkshopEquipmentStatusChart :deviceStatusList="deviceStatusList"/>
+          <WorkshopEquipmentStatusChart ref="equipmentStatusChartRef" :deviceStatusList="deviceStatusList"/>
         </div>
       </div>
     </div>
-
-    <EquipmentDetailModal ref="EquipmentDetailModal"></EquipmentDetailModal>
   </div>
 </template>
 
 <script>
-  import api from '@/api/mdc'
   import signageApi from '@/api/signage'
-  import { getFileAccessHttpUrl } from '@/api/manage'
-  import EquipmentDetailModal from './modules/WorkshopSignage/EquipmentDetailModal'
-  import { message } from 'ant-design-vue'
   import OpenRateChart from './modules/WorkshopSignage/OpenRateChart'
   import UtilizationRateChart from './modules/WorkshopSignage/UtilizationRateChart'
   import ClassUtilizationRateChart from './modules/WorkshopSignage/ClassUtilizationRateChart'
@@ -78,10 +72,6 @@
   import UtilizationRateRankChart from './modules/WorkshopSignage/UtilizationRateRankChart'
   import WorkshopEquipmentStatusChart from './modules/WorkshopSignage/WorkshopEquipmentStatusChart'
   import EquipmentLayout from './modules/WorkshopSignage/EquipmentLayout'
-
-  message.config({
-    maxCount: 3
-  })
 
   export default {
     components: {
@@ -93,13 +83,13 @@
       ClassUtilizationRateChart,
       UtilizationRateChart,
       OpenRateChart,
-      EquipmentDetailModal
     },
     data() {
       return {
         currentDateTime: '',
         efficiencyData: {},
-        timingAcquisition: null, // 瀹氭椂鍒锋柊鏄惁寮�鍚�
+        shortTimingAcquisition: null, // 楂橀鍒锋柊
+        longTimingAcquisition: null, // 浣庨鍒锋柊
         dateTimer: null,//瀹氭椂鑾峰彇褰撳墠鏃堕棿
         deviceStatusList: [
           {
@@ -121,52 +111,29 @@
         ]// 璁惧鐘舵�佹寚绀虹伅鍒楄〃锛�
       }
     },
-    created() {
-      this.getEfficiencyDataByApi()
+    mounted() {
+      // 绂佹鐢ㄦ埛閫変腑鍐呭
+      document.onselectstart = () => false
+      this.shortIntervalRefreshData()
+      this.longIntervalRefreshData()
+      this.dateTimer = setInterval(() => this.$nextTick(() => this.getCurrentDateTime()), 1000)
+    },
+    beforeDestroy() {
+      // 纭繚閿�姣佸畾鏃跺櫒銆佷簨浠跺強鍥炴敹璧勬簮
+      clearInterval(this.shortTimingAcquisition)
+      clearInterval(this.dateTimer)
+      this.shortTimingAcquisition = null
+      this.dateTimer = null
     },
     methods: {
       getEfficiencyDataByApi() {
         const that = this
         signageApi.getEfficiencyDataApi()
           .then(res => {
-            console.log('res----------------', res)
             if (res.success) that.efficiencyData = res.result
           })
       },
 
-      /**
-       * 閫氳繃杞﹂棿Id璋冪敤鎺ュ彛鑾峰彇杞﹂棿璇︾粏淇℃伅
-       * @param id 杞﹂棿Id
-       */
-      getWorkshopDetailsByApi(id) {
-        api.getWorkshopDetailByWorkshopIdApi(id).then((res) => {
-          this.workshopDetails = res.result
-          this.imgSrc = this.getImgView(this.workshopDetails.backgroundImage)
-          this.$refs.deviceContainerRef.style.height = (this.windowHeight - this.pageHeaderHeight) + 'px'
-        })
-      },
-
-      /**
-       * 鍥剧墖棰勮
-       * @param text 鍥剧墖鍦板潃
-       */
-      getImgView(text) {
-        if (text && text.indexOf(',') > 0) {
-          text = text.substring(0, text.indexOf(','))
-        }
-        return getFileAccessHttpUrl(text)
-      },
-
-      openDetail(item) {
-        if (!this.isSwitchChecked) {
-          if (item.equipmentStatus == 0) {
-            this.$message.warning('璁惧澶勪簬鍏虫満鐘舵�侊紒')
-            return false
-          }
-          this.$refs.EquipmentDetailModal.initData(item.equId)
-          this.$refs.EquipmentDetailModal.timerModel(item.equId)
-        }
-      },
 
       // 鑾峰彇褰撳墠鏃堕棿
       getCurrentDateTime() {
@@ -184,21 +151,32 @@
         if (min < 10) min = '0' + min
         if (sec < 10) sec = '0' + sec
         this.currentDateTime = `${year}骞�${mon}鏈�${day}鏃� ${hour}:${min}:${sec}`
+      },
+
+      /**
+       * 楂橀鍒锋柊鏁版嵁 鐩墠璁剧疆涓�5s
+       * @param intervalSecond 棰戠巼闂撮殧鏃堕棿锛堢锛�
+       */
+      shortIntervalRefreshData(intervalSecond = 0) {
+        this.shortTimingAcquisition = window.setTimeout(() => {
+          this.$refs.equipmentLayoutRef.getEquipmentStatusByApi()
+          this.$refs.alarmInfoRef.getWorkshopAlarmInfoByApi()
+          this.$refs.equipmentStatusChartRef.getWorkshopEquipmentStatusByApi()
+          this.shortIntervalRefreshData(5)
+        }, intervalSecond * 1000)
+      },
+
+      /**
+       * 浣庨鍒锋柊鏁版嵁 鐩墠璁剧疆涓�1h
+       * @param intervalSecond 棰戠巼闂撮殧鏃堕棿锛堢锛�
+       */
+      longIntervalRefreshData(intervalSecond = 0) {
+        this.longTimingAcquisition = window.setTimeout(() => {
+          this.getEfficiencyDataByApi()
+          this.$refs.rateRankRef.getUtilizationRateRankByApi()
+          this.longIntervalRefreshData(60 * 60)
+        }, intervalSecond * 1000)
       }
-    },
-
-    mounted() {
-      // 绂佹鐢ㄦ埛閫変腑鍐呭
-      document.onselectstart = () => false
-
-      this.dateTimer = setInterval(() => this.$nextTick(() => this.getCurrentDateTime()), 1000)
-    },
-    beforeDestroy() {
-      // 纭繚閿�姣佸畾鏃跺櫒銆佷簨浠跺強鍥炴敹璧勬簮
-      clearInterval(this.timingAcquisition)
-      clearInterval(this.dateTimer)
-      this.timingAcquisition = null
-      this.dateTimer = null
     }
   }
 </script>

--
Gitblit v1.9.3