From accebdce93486d3b4f26e55ffdea047549cce20c Mon Sep 17 00:00:00 2001
From: cuijian <cuijian@xalxzn.com>
Date: 星期一, 28 七月 2025 21:12:38 +0800
Subject: [PATCH] Merge branch 'master' of http://125.76.225.53:18448/r/xhj/vue_mdc_xhj

---
 src/views/mdc/base/DeviceBaseInfo.vue |  300 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 300 insertions(+), 0 deletions(-)

diff --git a/src/views/mdc/base/DeviceBaseInfo.vue b/src/views/mdc/base/DeviceBaseInfo.vue
new file mode 100644
index 0000000..298685d
--- /dev/null
+++ b/src/views/mdc/base/DeviceBaseInfo.vue
@@ -0,0 +1,300 @@
+<template>
+  <a-card :bordered="false">
+    <a-row type="flex" :gutter="16">
+      <a-col :md="5" :sm="24">
+        <base-tree @sendSelectBaseTree="changeSelection" @getCurrSelected="changeSelectionNode"></base-tree>
+      </a-col>
+      <a-col :md="24-5" :sm="24">
+        <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="selectEquipmentId"
+                                :node="selectEquipment"></equipment-layout>
+            </a-tab-pane>
+            <a-tab-pane key="2" tab="鍒楄〃" force-render>
+              <equipment-list :dataSource="dataList" @editEquipmentStatus="editEquipmentStatus" :equipmentId="this.param.key"></equipment-list>
+            </a-tab-pane>
+          </a-tabs>
+        </div>
+      </a-col>
+    </a-row>
+
+
+  </a-card>
+</template>
+
+<script>
+  import { putAction, getAction } from '@/api/manage'
+  import { JeecgListMixin } from '@/mixins/JeecgListMixin'
+  import BaseTree from '../common/BaseTree'
+  import EquipmentLayout from './modules/DeviceBaseInfo/EquipmentLayout'
+  import EquipmentList from './modules/DeviceBaseInfo/EquipmentList'
+
+  export default {
+    name: 'DeviceBaseInfo',
+    components: {
+      BaseTree,
+      EquipmentLayout,
+      EquipmentList
+    },
+    data() {
+      return {
+        description: '璁惧淇℃伅',
+        selectEquipmentId: '',
+        selectEquipment: {},
+        equipmentStatisticsInfo: {},
+        dataList: [],
+        standbyNumber: 0,
+        offNumber: 0,
+        warningNumber: 0,
+        workNumber: 0,
+        allNumber: 0,
+        url: {
+          list: '/mdc/mdcEquipment/queryEquipmentMonitorList',
+          updateEquipmentStatus: '/mdc/mdcEquipment/updateEquipmentStatus'
+        },
+        param: {},
+        timer: 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
+      if (productionId) this.param.key = productionId
+    },
+    methods: {
+      equipmentStatistics(param, resopnse = { key: false }) {
+        getAction(this.url.list, param).then((res) => {
+          this.dataList = []
+          if (res.success) {
+            if (res.result.length != 0) {
+              this.standbyNumber = 0
+              this.offNumber = 0
+              this.warningNumber = 0
+              this.workNumber = 0
+              this.allNumber = 0
+              this.dataList = res.result
+              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.workNumber = this.workNumber + 1
+                    break
+                  case '鍏虫満' :
+                    this.offNumber = this.offNumber + 1
+                    break
+                  case '鎶ヨ' :
+                    this.warningNumber = this.warningNumber + 1
+                    break
+                  default:
+                    break
+                }
+              }
+
+              // 绛涢�変粠杞︽澘璺宠浆杩囨潵鐨勯渶姹傛暟鎹�
+              const { signageData } = this.$route.params
+              console.log('signageData', signageData)
+              if (!signageData) return
+              else this.filterDataList(signageData)
+            } else {
+              this.$notification.warning({
+                message: '娑堟伅',
+                description: '姝よ溅闂翠笅闈㈡棤璁惧锛侊紒'
+              })
+            }
+          } else {
+            this.$notification.warning({
+              message: '娑堟伅',
+              description: res.message
+            })
+          }
+        })
+      },
+
+      /**
+       * 绛涢�夋弧瓒充粠鐪嬫澘璺宠浆杩囨潵鏃剁殑鏉′欢鐨勬暟鎹�
+       * @param record
+       */
+      filterDataList(signageData) {
+        this.dataList = this.dataList.filter(item => item.oporationDict === signageData.name)
+      },
+
+      changeSelection(val) {
+        this.selectEquipmentId = val
+      },
+      changeSelectionNode(val) {
+        this.selectEquipment = val.equipmentId
+        clearInterval(this.timer)
+        this.timer = null
+        if (!val.equipmentId) {
+          this.param.key = val.key
+          this.equipmentStatistics(this.param)
+          this.timer = setInterval(() => {
+            setTimeout(this.equipmentStatistics(this.param), 0)
+          }, 1000 * 10)
+        } else {
+          this.param.key = val.parentId
+          this.equipmentStatistics(this.param)
+          this.timer = setInterval(() => {
+            setTimeout(this.equipmentStatistics(this.param), 0)
+          }, 1000 * 10)
+        }
+      },
+
+      /**
+       * 鍗曞嚮鐘舵�佸弽棣堝悗瑙﹀彂
+       * @param record
+       */
+      editEquipmentStatus(record) {
+        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(this.param)
+    },
+    beforeDestroy() {
+      clearInterval(this.timer)
+      this.timer = null
+    }
+  }
+</script>
+<style scoped lang="less">
+  @import '~@assets/less/common.less';
+
+  .equipMessage {
+    width: 100%;
+    height: 20px;
+  }
+
+  .equipMessage table {
+    width: 60%;
+    height: 100%;
+    line-height: 50%;
+    float: right;
+  }
+
+  .equipMessage table td {
+    text-align: center;
+  }
+
+  .equipMessage table td span {
+    display: inline-block;
+    width: 15px;
+    height: 15px;
+  }
+
+  .equipMessage table td .equipShutdown {
+    background-color: #808080;
+  }
+
+  .equipMessage table td .standbyNumber {
+    background-color: #ffbf37;
+  }
+
+  .equipMessage table td .equipRun {
+    background-color: #19FE01;
+  }
+
+  .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