From a751e547d67c4f8e2c6fddf958c1559f792515bd Mon Sep 17 00:00:00 2001
From: lyh <925863403@qq.com>
Date: 星期五, 27 六月 2025 16:11:50 +0800
Subject: [PATCH] 添加工作流

---
 src/views/mdc/base/DeviceBaseInfo.vue |  237 +++++++++++++++++++++++++++++++++++++++++++----------------
 1 files changed, 173 insertions(+), 64 deletions(-)

diff --git a/src/views/mdc/base/DeviceBaseInfo.vue b/src/views/mdc/base/DeviceBaseInfo.vue
index 3c7ccf1..afb1ad9 100644
--- a/src/views/mdc/base/DeviceBaseInfo.vue
+++ b/src/views/mdc/base/DeviceBaseInfo.vue
@@ -5,38 +5,29 @@
         <base-tree @sendSelectBaseTree="changeSelection" @getCurrSelected="changeSelectionNode"></base-tree>
       </a-col>
       <a-col :md="24-5" :sm="24">
-        <div class="equipMessage">
-          <table>
-            <tr>
-              <td>鍏虫満
-                <span class="equipShutdown"></span>
-              </td>
-              <td>{{offNumber}}</td>
-              <td>寰呮満
-                <span class="standbyNumber"></span>
-              </td>
-              <td>{{standbyNumber}}</td>
-              <td>杩愯
-                <span class="equipRun"></span>
-              </td>
-              <td>{{workNumber}}</td>
-              <td>鎶ヨ
-                <span class="equipAlarm"></span>
-              </td>
-              <td>{{warningNumber}}</td>
-              <td>鎬绘暟</td>
-              <td>{{allNumber}}</td>
-            </tr>
-          </table>
-
+        <!--</div>-->
+        <div class="device-status-info">
+          <a-space v-for="item in deviceStatusList" :key="item.value" class="single-status-info">
+            <template v-if="item.value!=99">
+              <div>{{ item.label }}</div>
+              <div class="status-square" :style="{ backgroundColor: item.color }"></div>
+              <div>{{getDeviceNumberByStatus(item.value) }}</div>
+            </template>
+            <template v-else>
+              <div>{{ item.label }}</div>
+              <div>{{getDeviceNumberByStatus(item.value) }}</div>
+            </template>
+          </a-space>
         </div>
+
         <div>
           <a-tabs default-active-key="1">
             <a-tab-pane key="1" tab="甯冨眬鍥�">
-              <equipment-layout :dataList="dataList" :equipmentId="selectEquementId" :node="selectEquement"></equipment-layout>
+              <equipment-layout :dataList="dataList" :equipmentId="selectEquementId"
+                                :node="selectEquement"></equipment-layout>
             </a-tab-pane>
             <a-tab-pane key="2" tab="鍒楄〃" force-render>
-              <equipment-list :dataSource="dataList"></equipment-list>
+              <equipment-list :dataSource="dataList" @editEquipmentStatus="editEquipmentStatus"></equipment-list>
             </a-tab-pane>
           </a-tabs>
         </div>
@@ -48,9 +39,7 @@
 </template>
 
 <script>
-  import { putAction, getAction } from '@/api/manage'
-  import { frozenBatch } from '@/api/api'
-  import { JeecgListMixin } from '@/mixins/JeecgListMixin'
+  import { getAction } from '@/api/manage'
   import JInput from '@/components/jeecg/JInput'
   import BaseTree from '../common/BaseTree'
   import EquipmentLayout from './modules/deviceBaseInfo/EquipmentLayout'
@@ -81,22 +70,54 @@
         workNumber: 0,
         allNumber: 0,
         url: {
-          list: '/mdc/mdcEquipment/queryEquipmentMonitorList'
+          list: '/mdc/mdcEquipment/queryEquipmentMonitorList',
+          updateEquipmentStatus: '/mdc/mdcEquipment/updateEquipmentStatus'
         },
-        timer:null,
-        timerzhun:null
+        param: {},
+        timer: null,
+        timerzhun: null,
+        deviceStatusList: [
+          {
+            label: '鍏虫満',
+            value: 0,
+            color: '#A8A8A8'
+          },
+          {
+            label: '寰呮満',
+            value: 2,
+            color: '#FFFF00'
+          },
+          {
+            label: '杩愯',
+            value: 3,
+            color: '#00EE00'
+          },
+          {
+            label: '鎶ヨ',
+            value: 22,
+            color: '#FF0000'
+          },
+          {
+            label: '鎬绘暟',
+            value: 99,
+            color: '#fff'
+          }
+        ]// 璁惧鐘舵�佹寚绀虹伅鍒楄〃锛�
       }
     },
     created() {
+      const { productionId } = this.$route.params
+      console.log('productionId', productionId)
+      if (productionId) this.param.key = productionId
       // this.equipmentStatistics()
       // setInterval(this.equipmentStatistics(), 5*1000);
     },
     methods: {
-      equipmentStatistics(param) {
+      equipmentStatistics(param, resopnse = { key: false }) {
         getAction(this.url.list, param).then((res) => {
           this.dataList = []
           if (res.success) {
-            if(res.result.length != 0){
+            if (res.result.length != 0) {
               this.standbyNumber = 0
               this.offNumber = 0
               this.warningNumber = 0
@@ -105,74 +126,146 @@
               this.dataList = res.result
               // console.log(this.dataList)
               this.allNumber = this.dataList.length
+              if (resopnse.key) {
+                this.$notification.success({
+                  key: 'equipmentStatus',
+                  message: '娑堟伅',
+                  description: resopnse.message
+                })
+              }
               for (let i = 0; i < this.dataList.length; i++) {
                 let item = this.dataList[i]
                 switch (item.oporationDict) {
-                  case "寰呮満" : this.standbyNumber = this.standbyNumber + 1;break;
+                  case '寰呮満' :
+                    this.standbyNumber = this.standbyNumber + 1
+                    break
                   // case 2 : this.standbyNumber = this.standbyNumber + 1;break;
-                  case "杩愯" : this.workNumber = this.workNumber + 1;break;
-                  case "鍏虫満" : this.offNumber = this.offNumber + 1;break;
-                  case "鎶ヨ" : this.warningNumber = this.warningNumber + 1;break;
-                  default:break;
+                  case '杩愯' :
+                    this.workNumber = this.workNumber + 1
+                    break
+                  case '鍏虫満' :
+                    this.offNumber = this.offNumber + 1
+                    break
+                  case '鎶ヨ' :
+                    this.warningNumber = this.warningNumber + 1
+                    break
+                  default:
+                    break
                 }
               }
-            }else{
+
+              // 绛涢�変粠杞︽澘璺宠浆杩囨潵鐨勯渶姹傛暟鎹�
+              const { signageData } = this.$route.params
+              console.log('signageData', signageData)
+              if (!signageData) return
+              else this.filterDataList(signageData)
+            } else {
               // this.$message.warning("姝よ溅闂翠笅闈㈡棤璁惧锛侊紒")
               this.$notification.warning({
-                message:'娑堟伅',
-                description:"姝よ溅闂翠笅闈㈡棤璁惧锛侊紒"
-              });
+                message: '娑堟伅',
+                description: '姝よ溅闂翠笅闈㈡棤璁惧锛侊紒'
+              })
             }
           } else {
             // this.$message.warn(res.message)
             this.$notification.warning({
-              message:'娑堟伅',
-              description:res.message
-            });
+              message: '娑堟伅',
+              description: res.message
+            })
           }
         })
       },
+
+      /**
+       * 绛涢�夋弧瓒充粠鐪嬫澘璺宠浆杩囨潵鏃剁殑鏉′欢鐨勬暟鎹�
+       * @param record
+       */
+      filterDataList(signageData) {
+        this.dataList = this.dataList.filter(item => item.oporationDict === signageData.name)
+        console.log('dataList', this.dataList)
+      },
+
       changeSelection(val) {
         this.selectEquementId = val
       },
       changeSelectionNode(val) {
         // console.log(val)
         this.selectEquement = val.equipmentId
-        clearInterval(this.timer);
+        clearInterval(this.timer)
         this.timer = null
-        let param = {}
         if (!val.equipmentId) {
-          param.key = val.key
-          clearInterval(this.timerzhun);
+          this.param.key = val.key
+          clearInterval(this.timerzhun)
           this.timerzhun = null
-          this.equipmentStatistics(param)
+          this.equipmentStatistics(this.param)
           this.timer = setInterval(() => {
-            setTimeout( this.equipmentStatistics(param),0)
-          },1000*10)
-        }else{
-          param.key = val.parentId
-          clearInterval(this.timerzhun);
+            setTimeout(this.equipmentStatistics(this.param), 0)
+          }, 1000 * 10)
+        } else {
+          this.param.key = val.parentId
+          clearInterval(this.timerzhun)
           this.timerzhun = null
-          this.equipmentStatistics(param)
+          this.equipmentStatistics(this.param)
           this.timer = setInterval(() => {
-            setTimeout( this.equipmentStatistics(param),0)
-          },1000*10)
+            setTimeout(this.equipmentStatistics(this.param), 0)
+          }, 1000 * 10)
         }
+      },
+
+      /**
+       * 鍗曞嚮鐘舵�佸弽棣堝悗瑙﹀彂
+       * @param record
+       */
+      editEquipmentStatus(record) {
+        console.log('瀛愮粍浠秗ecord', record.id)
+        const _this = this
+        this.$notification.info({
+          key: 'equipmentStatus',
+          message: '娑堟伅',
+          description: '鍙嶉涓�...'
+        })
+        getAction(this.url.updateEquipmentStatus, { id: record.id })
+          .then(res => {
+            if (res.success) {
+              _this.equipmentStatistics(this.param, { key: true, message: res.message })
+            } else {
+              this.$notification.warning({
+                message: '娑堟伅',
+                description: res.message
+              })
+            }
+          })
+          .catch(err => {
+            this.$notification.error({
+              message: '娑堟伅',
+              description: err.message
+            })
+          })
+      },
+
+      /**
+       * 鏍规嵁璁惧鐘舵�佸�艰幏鍙栧搴旇澶囨暟閲�
+       * @param value 璁惧鐘舵�佸��
+       * @returns {number} 璁惧鏁伴噺
+       */
+      getDeviceNumberByStatus(value) {
+        if (value === 99) return this.dataList.length
+        return this.dataList.filter((item) => item.oporation === 1 && value === 2 || item.oporation === value).length
       }
     },
-    mounted(){
-      this.equipmentStatistics()
+    mounted() {
+      this.equipmentStatistics(this.param)
       // this.timerzhun = setInterval(() => {
       //   setTimeout( this.equipmentStatistics(),0)
       // },1000*10)
     },
-    beforeDestroy(){
-      clearInterval(this.timer);
+    beforeDestroy() {
+      clearInterval(this.timer)
       this.timer = null
     }
   }
 </script>
-<style scoped>
+<style scoped lang="less">
   @import '~@assets/less/common.less';
 
   .equipMessage {
@@ -212,4 +305,20 @@
   .equipMessage table td .equipAlarm {
     background-color: #FD0008;
   }
+
+  .device-status-info {
+    display: flex;
+    justify-content: flex-end;
+    align-items: center;
+
+    .single-status-info {
+      margin: 10px;
+      .status-square {
+        width: 20px;
+        height: 20px;
+        border: 1px solid #ddd;
+        border-radius: 3px;
+      }
+    }
+  }
 </style>
\ No newline at end of file

--
Gitblit v1.9.3