From 28189102d735bfc2c41720d1ef292bd9024b49f2 Mon Sep 17 00:00:00 2001
From: zhuzhuanzhuan
Date: 星期四, 18 四月 2024 11:21:01 +0800
Subject: [PATCH] 1、首页 (1)设备级看板单击设备效率统计仪表盘图标跳转至统计分析页面并根据唯一编号筛选页面对应数据 (2)设备级看板点击设备班次按钮跳转至工作日历页面并根据设备编号筛选页面对应数据 (3)增加所有层级看板图表数据加载动画 (4)公司级以及分厂级看板利用率胶囊以及上月OEE车间单柱图表轴线刻度最大值采用动态设置方式而非固定100% (5)工段级看板上月OEE单柱图表轴线刻度最大值采用动态设置方式而非固定100% (6)工段级看板单击前7天利用率图表跳转至统计分析页面并根据唯一编号筛选页面对应数据 (7)工段级看板单击上月OEE图表跳转至设备综合效率分析页面并根据唯一编号筛选页面对应数据 2、调整全局导航栏页签间距,以便能在不超出导航栏的情况下同时放置更多页面页签

---
 src/views/dashboard/EquipmentSignage.vue |  255 +++++++++++++++++++++++++++++++++-----------------
 1 files changed, 169 insertions(+), 86 deletions(-)

diff --git a/src/views/dashboard/EquipmentSignage.vue b/src/views/dashboard/EquipmentSignage.vue
index 6c954df..9c24579 100644
--- a/src/views/dashboard/EquipmentSignage.vue
+++ b/src/views/dashboard/EquipmentSignage.vue
@@ -21,9 +21,10 @@
               <th>璁惧缂栧彿</th>
               <th>鍨嬪彿</th>
             </tr>
-            <tr v-for="(item,index) in equipmentList" :key="index" @click="selectEquipment(item)">
+            <tr v-for="(item,index) in equipmentList" :key="index" @click="selectEquipment(item)"
+                :style="{backgroundColor:equipmentId===item.equipmentId?'#1D94D4':''}">
               <td>{{item.equipmentId}}</td>
-              <td>{{item.equipmentType}}</td>
+              <td>{{item.equipmentModel}}</td>
             </tr>
           </table>
         </div>
@@ -122,7 +123,7 @@
             </div>
 
             <div style="display: flex;justify-content: space-evenly;font-size: 20px;padding: 0 50px">
-              <div v-for="(item,index) in buttonList" :key="index" @click="click(item)"
+              <div v-for="(item,index) in buttonList" :key="index" @click="navigateToPage(item)"
                    style="width: 200px;height: 70px;margin: 0 10px;cursor: pointer">
                 <dv-decoration-11>{{item.label}}</dv-decoration-11>
               </div>
@@ -186,63 +187,18 @@
         type: String,
         default: ''
       },
+      workshopSectionProductionCode: {
+        type: String,
+        default: ''
+      },
       userType: {
         type: Number
       }
     },
     data() {
       return {
-        equipmentId: '2140223',
-        equipmentList: [
-          {
-            equipmentId: '2140223',
-            equipmentType: 'CV4160'
-          },
-          {
-            equipmentId: '2140224',
-            equipmentType: 'CV4161'
-          },
-          {
-            equipmentId: '2140225',
-            equipmentType: 'CV4162'
-          },
-          {
-            equipmentId: '2140226',
-            equipmentType: 'CV4163'
-          },
-          {
-            equipmentId: '2140227',
-            equipmentType: 'CV4164'
-          },
-          {
-            equipmentId: '2140227',
-            equipmentType: 'CV4165'
-          },
-          {
-            equipmentId: '2140228',
-            equipmentType: 'CV4166'
-          },
-          {
-            equipmentId: '2140229',
-            equipmentType: 'CV4167'
-          },
-          {
-            equipmentId: '2140230',
-            equipmentType: 'CV4168'
-          },
-          {
-            equipmentId: '2140231',
-            equipmentType: 'CV4169'
-          },
-          {
-            equipmentId: '2140232',
-            equipmentType: 'CV4170'
-          },
-          {
-            equipmentId: '2140233',
-            equipmentType: 'CV4171'
-          }
-        ],
+        equipmentId: '',
+        equipmentList: [],
         equipmentInfo: {
           equipmentId: '2511563154',
           ABCSymbol: '3312321421',
@@ -268,7 +224,8 @@
             label: '鎶ヤ慨'
           },
           {
-            label: '璁惧鐝'
+            label: '璁惧鐝',
+            pageName: 'mdc-base-DeviceCalendar'
           }
         ],
         lineChart: '',
@@ -277,41 +234,114 @@
         gaugeChart2: '',
         gaugeChart3: '',
         gaugeChart4: '',
-        gaugeChartData1: [],
-        gaugeChartData2: [],
-        gaugeChartData3: [],
-        gaugeChartData4: []
+        gaugeChartData: {
+          utilizationRate: 0,
+          startRate: 0,
+          openRate: 0,
+          overallEquipmentEfficiency: 0
+        },
+        hideLoadingDelayTime: 500
       }
     },
     created() {
-      console.log('瑙﹀彂閲嶆柊鍒涘缓')
       this.equipmentId = this.productionCode
     },
     mounted() {
       window.addEventListener('resize', this.handleWindowResize)
-      this.drawCharts()
-      this.getChartDataByApi()
+      this.getEquipmentListByApi()
     },
     beforeDestroy() {
       window.removeEventListener('resize', this.handleWindowResize)
     },
     methods: {
-      selectEquipment(record) {
-        this.equipmentId = record.equipmentId
-      },
-
-      click(record) {
-        window.alert(record.label)
+      getEquipmentListByApi() {
+        // 棣栭〉涓�杩涘叆鍗宠澶囩骇鎴栧伐娈电骇鏃讹紝workshopSectionProductionCode涓虹┖锛岄粯璁ゆ煡璇㈢涓�涓溅闂翠腑绗竴涓伐娈典笅鐨勮澶囧垪琛�
+        signageApi.getEquipmentListApi(this.workshopSectionProductionCode)
+          .then(res => {
+            if (res.success) {
+              this.equipmentList = res.result
+              if (!this.productionCode && this.equipmentList.length > 0) this.equipmentId = this.equipmentList[0].equipmentId
+            }
+          })
+          .finally(() => {
+            // 姝ゅ涓轰繚璇乪quipmentId姝e父璧嬪�煎悗鍐嶈皟鐢ㄦ帴鍙h幏鍙栧浘琛ㄦ暟鎹紙寮傛锛�
+            this.getChartDataByApi()
+          })
       },
 
       getChartDataByApi() {
-
+        this.getGaugeChartDataByApi()
+        this.getLineChartDataByApi()
       },
 
-      /* 缁樺埗鍥捐〃姹囨�绘柟娉� */
-      drawCharts() {
-        this.drawGaugeChart()
-        this.drawLineChart()
+      selectEquipment(record) {
+        if (record.equipmentId === this.equipmentId) return
+        this.equipmentId = record.equipmentId
+        this.getChartDataByApi()
+      },
+
+      navigateToPage(record) {
+        if (record.pageName) {
+          this.$router.push({
+            name: record.pageName,
+            params: { equipmentId: this.equipmentId }
+          })
+        }
+      },
+
+      /* 璋冪敤鎺ュ彛鑾峰彇璁惧鏁堢巼缁熻 */
+      getGaugeChartDataByApi() {
+        this.gaugeChart1 = this.$echarts.init(document.getElementById('gauge_chart1'))
+        this.gaugeChart2 = this.$echarts.init(document.getElementById('gauge_chart2'))
+        this.gaugeChart3 = this.$echarts.init(document.getElementById('gauge_chart3'))
+        this.gaugeChart4 = this.$echarts.init(document.getElementById('gauge_chart4'))
+        this.gaugeChart1.showLoading({
+          text: '鏁版嵁鍔犺浇涓� ...',
+          color: '#0696e1', // 鍔犺浇鍔ㄧ敾棰滆壊
+          textColor: '#fff',
+          maskColor: 'rgba(1, 25, 75, 0.2)' // 閬僵灞�
+        })
+        this.gaugeChart2.showLoading({
+          text: '鏁版嵁鍔犺浇涓� ...',
+          color: '#0696e1', // 鍔犺浇鍔ㄧ敾棰滆壊
+          textColor: '#fff',
+          maskColor: 'rgba(1, 25, 75, 0.2)' // 閬僵灞�
+        })
+        this.gaugeChart3.showLoading({
+          text: '鏁版嵁鍔犺浇涓� ...',
+          color: '#0696e1', // 鍔犺浇鍔ㄧ敾棰滆壊
+          textColor: '#fff',
+          maskColor: 'rgba(1, 25, 75, 0.2)' // 閬僵灞�
+        })
+        this.gaugeChart4.showLoading({
+          text: '鏁版嵁鍔犺浇涓� ...',
+          color: '#0696e1', // 鍔犺浇鍔ㄧ敾棰滆壊
+          textColor: '#fff',
+          maskColor: 'rgba(1, 25, 75, 0.2)' // 閬僵灞�
+        })
+
+        signageApi.getEquipmentLevelEfficiencyStatisticsApi(this.equipmentId)
+          .then(res => {
+            if (res.success) this.gaugeChartData = res.result
+            this.drawGaugeChart()
+          })
+      },
+
+      /* 璋冪敤鎺ュ彛鑾峰彇鏁村勾搴﹀埄鐢ㄧ巼 */
+      getLineChartDataByApi() {
+        this.lineChart = this.$echarts.init(document.getElementById('line_chart'))
+        this.lineChart.showLoading({
+          text: '鏁版嵁鍔犺浇涓� ...',
+          color: '#0696e1', // 鍔犺浇鍔ㄧ敾棰滆壊
+          textColor: '#fff',
+          maskColor: 'rgba(1, 25, 75, 0.2)' // 閬僵灞�
+        })
+
+        signageApi.getEquipmentAnnualEfficiencyStatisticsApi(this.equipmentId)
+          .then(res => {
+            if (res.success) this.lineChartData = res.result
+            this.drawLineChart()
+          })
       },
 
       /* 缁樺埗浠〃鐩樺浘琛� */
@@ -408,61 +438,112 @@
 
       /* 缁樺埗鍒╃敤鐜囦华琛ㄧ洏鍥捐〃 */
       drawGaugeChart1(opt) {
-        this.gaugeChart1 = this.$echarts.init(document.getElementById('gauge_chart1'))
         const option = Object.assign({}, opt)
         option.title.text = moment().subtract(1, 'days').format('M鏈圖鏃�') + '鍒╃敤鐜�'
         option.series[0].name = '鍒╃敤鐜�'
-        option.series[0].data = [56]
+        option.series[0].data = [this.gaugeChartData.utilizationRate]
         this.gaugeChart1.setOption(option, true)
+        setTimeout(() => this.gaugeChart1.hideLoading(), this.hideLoadingDelayTime)
+
+        this.gaugeChart1.getZr().on('click', params => {
+          // 浠呮湁鐐瑰嚮琛ㄧ洏鍖哄煙鎵嶄細鏈変互涓嬪睘鎬э紝topTarget琛ㄧず瑙﹀彂浜嬩欢瀵硅薄锛宻hape琛ㄧず瑙﹀彂浜嬩欢瀵硅薄鐨勫浘鍍忓睘鎬э紝clockwise琛ㄧず琛ㄧ洏鏄惁浠ラ『鏃堕拡鎺掑垪锛岄粯璁や负true
+          if (params.topTarget && params.topTarget.shape && params.topTarget.shape.clockwise !== undefined) {
+            this.$router.push({
+              name: 'mdc-base-StatisticsChart',
+              params: {
+                isEquipment: true,
+                productionId: this.equipmentId,
+                tierName: this.equipmentList.find(item => item.equipmentId === this.equipmentId).equipmentName
+              }
+            })
+          }
+        })
       },
 
       /* 缁樺埗寮�鍔ㄧ巼浠〃鐩樺浘琛� */
       drawGaugeChart2(opt) {
-        this.gaugeChart2 = this.$echarts.init(document.getElementById('gauge_chart2'))
         const option = Object.assign({}, opt)
         option.title.text = moment().subtract(1, 'days').format('M鏈圖鏃�') + '寮�鍔ㄧ巼'
         option.series[0].name = '寮�鍔ㄧ巼'
-        option.series[0].data = [23]
+        option.series[0].data = [this.gaugeChartData.startRate]
         this.gaugeChart2.setOption(option, true)
+        setTimeout(() => this.gaugeChart2.hideLoading(), this.hideLoadingDelayTime)
+
+        this.gaugeChart2.getZr().on('click', params => {
+          // 浠呮湁鐐瑰嚮琛ㄧ洏鍖哄煙鎵嶄細鏈変互涓嬪睘鎬э紝topTarget琛ㄧず瑙﹀彂浜嬩欢瀵硅薄锛宻hape琛ㄧず瑙﹀彂浜嬩欢瀵硅薄鐨勫浘鍍忓睘鎬э紝clockwise琛ㄧず琛ㄧ洏鏄惁浠ラ『鏃堕拡鎺掑垪锛岄粯璁や负true
+          if (params.topTarget && params.topTarget.shape && params.topTarget.shape.clockwise !== undefined) {
+            this.$router.push({
+              name: 'mdc-base-StatisticsChart',
+              params: {
+                isEquipment: true,
+                productionId: this.equipmentId,
+                tierName: this.equipmentList.find(item => item.equipmentId === this.equipmentId).equipmentName
+              }
+            })
+          }
+        })
       },
 
       /* 缁樺埗寮�鏈虹巼浠〃鐩樺浘琛� */
       drawGaugeChart3(opt) {
-        this.gaugeChart3 = this.$echarts.init(document.getElementById('gauge_chart3'))
         const option = Object.assign({}, opt)
         option.title.text = moment().subtract(1, 'days').format('M鏈圖鏃�') + '寮�鏈虹巼'
         option.series[0].name = '寮�鏈虹巼'
-        option.series[0].data = [44]
+        option.series[0].data = [this.gaugeChartData.openRate]
         this.gaugeChart3.setOption(option, true)
+        setTimeout(() => this.gaugeChart3.hideLoading(), this.hideLoadingDelayTime)
+
+        this.gaugeChart3.getZr().on('click', params => {
+          // 浠呮湁鐐瑰嚮琛ㄧ洏鍖哄煙鎵嶄細鏈変互涓嬪睘鎬э紝topTarget琛ㄧず瑙﹀彂浜嬩欢瀵硅薄锛宻hape琛ㄧず瑙﹀彂浜嬩欢瀵硅薄鐨勫浘鍍忓睘鎬э紝clockwise琛ㄧず琛ㄧ洏鏄惁浠ラ『鏃堕拡鎺掑垪锛岄粯璁や负true
+          if (params.topTarget && params.topTarget.shape && params.topTarget.shape.clockwise !== undefined) {
+            this.$router.push({
+              name: 'mdc-base-StatisticsChart',
+              params: {
+                isEquipment: true,
+                productionId: this.equipmentId,
+                tierName: this.equipmentList.find(item => item.equipmentId === this.equipmentId).equipmentName
+              }
+            })
+          }
+        })
       },
 
       /* 缁樺埗OEE浠〃鐩樺浘琛� */
       drawGaugeChart4(opt) {
-        this.gaugeChart4 = this.$echarts.init(document.getElementById('gauge_chart4'))
         const option = Object.assign({}, opt)
         option.title.text = moment().subtract(1, 'months').format('M鏈�') + `OEE`
         option.series[0].name = 'OEE'
-        option.series[0].data = [78]
+        option.series[0].data = [this.gaugeChartData.overallEquipmentEfficiency]
         this.gaugeChart4.setOption(option, true)
+        setTimeout(() => this.gaugeChart4.hideLoading(), this.hideLoadingDelayTime)
+
+        this.gaugeChart4.getZr().on('click', params => {
+          // 浠呮湁鐐瑰嚮琛ㄧ洏鍖哄煙鎵嶄細鏈変互涓嬪睘鎬э紝topTarget琛ㄧず瑙﹀彂浜嬩欢瀵硅薄锛宻hape琛ㄧず瑙﹀彂浜嬩欢瀵硅薄鐨勫浘鍍忓睘鎬э紝clockwise琛ㄧず琛ㄧ洏鏄惁浠ラ『鏃堕拡鎺掑垪锛岄粯璁や负true
+          if (params.topTarget && params.topTarget.shape && params.topTarget.shape.clockwise !== undefined) {
+            this.$router.push({
+              name: 'mdc-base-OEEAnalysis',
+              params: { isEquipment: true, productionId: this.equipmentId }
+            })
+          }
+        })
       },
 
       /* 缁樺埗鎶樼嚎鍥� */
       drawLineChart() {
-        this.lineChart = this.$echarts.init(document.getElementById('line_chart'))
         const newData = {
-          xAxis: ['1鏈�', '2鏈�', '3鏈�', '4鏈�', '5鏈�', '6鏈�', '7鏈�', '8鏈�', '9鏈�', '10鏈�', '11鏈�', '12鏈�'],
+          xAxis: this.lineChartData.dateList,
           yAxis: [
             {
               name: '鍒╃敤鐜�',
-              value: [20, 60, 50, 60, 20, 50, 60, 70, 23, 40, 60, 70]
+              value: this.lineChartData.dataList.map(item => item.utilizationRate)
             },
             {
               name: '寮�鍔ㄧ巼',
-              value: [23, 60, 44, 40, 74, 80, 60, 90, 70, 40, 70, 40]
+              value: this.lineChartData.dataList.map(item => item.startRate)
             },
             {
               name: 'OEE',
-              value: [90, 70, 40, 70, 80, 60, 73, 60, 70, 90, 40, 65]
+              value: this.lineChartData.dataList.map(item => item.overallEquipmentEfficiency)
             }
           ],
           yAxisName: '鏁村勾搴﹀埄鐢ㄧ巼(%)'
@@ -574,6 +655,7 @@
               type: 'value',
               position: 'right',
               splitNumber: 5,
+              max: 100,
               axisLabel: {
                 show: true,
                 color: '#fff'
@@ -598,6 +680,7 @@
           series: seriesData
         }
         this.lineChart.setOption(option, true)
+        setTimeout(() => this.lineChart.hideLoading(), this.hideLoadingDelayTime)
       },
 
       /**

--
Gitblit v1.9.3