From 6259ba7f06da37499ad6a9b35da95d2b980ba7a7 Mon Sep 17 00:00:00 2001
From: zhaowei <zhaowei>
Date: 星期六, 23 八月 2025 18:43:55 +0800
Subject: [PATCH] mdc首页按照新设计方案重新开发

---
 src/views/dashboard/IndexSignage.vue |  594 +++++++++++++++++++++++++++-------------------------------
 1 files changed, 275 insertions(+), 319 deletions(-)

diff --git a/src/views/dashboard/IndexSignage.vue b/src/views/dashboard/IndexSignage.vue
index 8681db6..34bda83 100644
--- a/src/views/dashboard/IndexSignage.vue
+++ b/src/views/dashboard/IndexSignage.vue
@@ -42,7 +42,7 @@
     </div>
 
     <SignageModal :modalVisible="modalVisible" :modalTitle=modalTitle :modalDataApiUrl="modalDataApiUrl"
-                  :modalTableColumns="modalTableColumns"
+                  :modalDataApiParams="modalDataApiParams"
                   @closeModal="modalVisible=false"/>
   </div>
 </template>
@@ -51,13 +51,19 @@
   import signageApi from '@/api/signage'
   import moment from 'moment'
   import SignageModal from './modules/SignageModal'
+  import * as echarts from 'echarts'
 
   export default {
     name: 'IndexSignage',
     components: { SignageModal },
     data() {
       return {
+        firstEnterClientWidth: null,
+        pieChartRadius: ['40%', '55%'],
+        normalPieChartRadius: ['40%', '55%'],
+        currentPageProductionId: null,
         runningStateChart: '',
+        runningStateChartDataRequireFinished: false,
         runningStateData: [
           { value: '0', name: '鍏虫満' },
           { value: '0', name: '鎶ヨ' },
@@ -67,61 +73,70 @@
         efficiencyChart: '',
         efficiencyData: [],
         techConditionChart: '',
+        techConditionChartRequireFinished: false,
         techConditionData: [
           { value: '0', name: '鍚堟牸' },
           { value: '0', name: '绂佺敤' },
           { value: '0', name: '闄愮敤' }
         ],
         warrantyMalfunctionChart: '',
+        warrantyMalfunctionChartRequireFinished: false,
         warrantyMalfunctionData: [
-          { value: '12', name: '鎶ヤ慨' },
-          { value: '10', name: '鍋滄満' },
-          { value: '8', name: '杩愯' }
+          { value: '0', name: '鎶ヤ慨' },
+          { value: '0', name: '鍋滄満' },
+          { value: '0', name: '杩愯' }
         ],
         supportPlanList: [
           {
             planTime: '鏈湀涓変繚璁″垝',
             planValueLabel: 'thisMonthMaintenancePlanNum',
-            backgroundColor: '#5FE0AF'
+            backgroundColor: '#719D8E',
+            apiUrl: '/eam/calibrationOrder/showThisMonthMaintenanceList'
           },
           {
             planTime: '鏈湀瀹屾垚',
             planValueLabel: 'thisMonthMaintenanceRealNum',
-            backgroundColor: '#409EFF'
+            backgroundColor: '#409EFF',
+            apiUrl: '/eam/calibrationOrder/showThisMonthMaintenanceFinishList'
           },
           {
             planTime: '涓嬫湀涓変繚璁″垝',
             planValueLabel: 'nextMonthMaintenancePlanNum',
-            backgroundColor: '#D6BC52'
+            backgroundColor: '#A8985D',
+            apiUrl: '/eam/calibrationOrder/showNextMonthMaintenanceList'
           },
           {
             planTime: '涓嬩笅鏈堜笁淇濊鍒�',
             planValueLabel: 'nextNextMonthMaintenancePlanNum',
-            backgroundColor: '#58D9F9'
+            backgroundColor: '#58D9F9',
+            apiUrl: '/eam/calibrationOrder/showNextNextMonthMaintenanceList'
           }
         ],
         thisMonthMaintenancePlanNum: 0,
         thisMonthMaintenanceRealNum: 0,
         nextMonthMaintenancePlanNum: 0,
         nextNextMonthMaintenancePlanNum: 0,
-        twoMaintenanceChartData: [['-', '-', '-']],
+        twoMaintenanceChartData: [],
         barChart: '',
         barChartData: [],
         doubleBarChart: '',
         doubleBarChartData: {},
+        workshopProblemChartData: [],
         efficiencyChartConfig: {},
         maintenanceConfig: {},
         problemConfig: {},
         modalVisible: false,
         modalTitle: '',
         modalDataApiUrl: '',
-        modalTableColumns: []
+        modalTableColumns: [],
+        modalDataApiParams: {}
       }
     },
     mounted() {
+      this.firstEnterClientWidth = document.body.clientWidth || document.documentElement.clientWidth
       window.addEventListener('resize', this.handleWindowResize)
+      this.re_drawPieChart()
       this.getChartDataByApi()
-      this.drawProblemChart()
     },
     beforeDestroy() {
       window.removeEventListener('resize', this.handleWindowResize)
@@ -131,12 +146,14 @@
       getChartDataByApi() {
         this.getRunningStateDataByApi()
         this.getEfficiencyDataByApi()
-        this.getTechConditionDataByApi()
-        this.getWarrantyMalfunctionDataByApi()
-        this.getMonthMaintenanceNumByApi()
+        // this.getTechConditionDataByApi()
+        // this.getWarrantyMalfunctionDataByApi()
+        this.getTechConditionAndWarrantyMalfunctionDataByApi()
+        this.getThirdMaintenanceConditionByApi()
         this.getTwoMaintenanceChartDataByApi()
         this.getBarChartDataByApi()
         this.getDoubleBarChartDataByApi()
+        this.getWorkshopProblemChartDataByApi()
       },
 
       /* 璋冪敤鎺ュ彛鑾峰彇璁惧杩愯鐘舵�� */
@@ -145,13 +162,17 @@
         this.runningStateChart.showLoading({
           text: '鏁版嵁鍔犺浇涓� ...',
           color: '#0696e1', // 鍔犺浇鍔ㄧ敾棰滆壊
-          textColor: '#fff',
-          maskColor: 'rgba(1, 25, 75, 0.2)' // 閬僵灞�
+          textColor: 'rgba(0, 0, 0, .45)',
+          maskColor: 'rgba(0,0,0,.05)' // 閬僵灞�
         })
         signageApi.getEquipmentStatusStatisticsApi()
           .then(res => {
-            if (res.success) this.runningStateData = res.result.list
-            this.drawRunningStateChart(res.result.productionId)
+            if (res.success) {
+              this.runningStateData = res.result.list
+              this.currentPageProductionId = res.result.productionId
+              this.runningStateChartDataRequireFinished = true
+              this.drawRunningStateChart(res.result.productionId)
+            }
           })
       },
 
@@ -161,77 +182,77 @@
         this.efficiencyChart.showLoading({
           text: '鏁版嵁鍔犺浇涓� ...',
           color: '#0696e1', // 鍔犺浇鍔ㄧ敾棰滆壊
-          textColor: '#fff',
-          maskColor: 'rgba(1, 25, 75, 0.2)' // 閬僵灞�
+          textColor: 'rgba(0, 0, 0, .45)',
+          maskColor: 'rgba(0,0,0,.05)' // 閬僵灞�
         })
         signageApi.getEquipmentUtilizationStatisticsApi()
           .then(res => {
-            if (res.success) this.efficiencyData = res.result
-            this.drawEfficiencyChart()
+            if (res.success) {
+              this.efficiencyData = res.result
+              this.drawEfficiencyChart()
+            }
           })
       },
 
-      /* 璋冪敤鎺ュ彛鑾峰彇鎶�鏈姸鎬� */
-      getTechConditionDataByApi() {
+      /* 璋冪敤鎺ュ彛鑾峰彇鎶�鏈姸鎬佷笌鏁呴殰鎶ヤ慨 */
+      getTechConditionAndWarrantyMalfunctionDataByApi() {
         this.techConditionChart = this.$echarts.init(document.getElementById('tech_condition_chart'))
+        this.warrantyMalfunctionChart = this.$echarts.init(document.getElementById('warranty_malfunction_chart'))
         this.techConditionChart.showLoading({
           text: '鏁版嵁鍔犺浇涓� ...',
           color: '#0696e1', // 鍔犺浇鍔ㄧ敾棰滆壊
-          textColor: '#fff',
-          maskColor: 'rgba(1, 25, 75, 0.2)' // 閬僵灞�
+          textColor: 'rgba(0, 0, 0, .45)',
+          maskColor: 'rgba(0,0,0,.05)' // 閬僵灞�
         })
-        signageApi.getEquipmentTechnologyStatusListApi()
-          .then(res => {
-            if (res.success && res.result) {
-              this.techConditionData = [
-                { value: res.result[0].qualifiedCount, name: '鍚堟牸' },
-                { value: res.result[0].disabledCount, name: '绂佺敤' },
-                { value: res.result[0].limitedUseCount, name: '闄愮敤' }
-              ]
-            }
-            this.drawTechConditionChart()
-          })
-      },
-
-      /* 璋冪敤鎺ュ彛鑾峰彇璁惧鎶ヤ慨鏁呴殰 */
-      getWarrantyMalfunctionDataByApi() {
-        this.warrantyMalfunctionChart = this.$echarts.init(document.getElementById('warranty_malfunction_chart'))
         this.warrantyMalfunctionChart.showLoading({
           text: '鏁版嵁鍔犺浇涓� ...',
           color: '#0696e1', // 鍔犺浇鍔ㄧ敾棰滆壊
-          textColor: '#fff',
-          maskColor: 'rgba(1, 25, 75, 0.2)' // 閬僵灞�
+          textColor: 'rgba(0, 0, 0, .45)',
+          maskColor: 'rgba(0,0,0,.05)' // 閬僵灞�
         })
-        signageApi.getReportRepairEquipmentListApi()
+        signageApi.getEquipmentTechnologyStatusAndReportRepairEquipmentListApi()
           .then(res => {
             if (res.success && res.result) {
-              this.warrantyMalfunctionData = [
-                { value: res.result[0].failurTotalCount, name: '鎶ヤ慨' },
-                { value: res.result[0].stopCount, name: '鍋滄満' },
-                { value: res.result[0].noStopCount, name: '杩愯' }
+              this.techConditionData = [
+                {
+                  value: res.result.jszt.find(item => item.code === 'QUALIFIED').value,
+                  name: '鍚堟牸',
+                  technologyStatus: 'QUALIFIED'
+                },
+                {
+                  value: res.result.jszt.find(item => item.code === 'PROHIBITED').value,
+                  name: '绂佺敤',
+                  technologyStatus: 'PROHIBITED'
+                },
+                {
+                  value: res.result.jszt.find(item => item.code === 'RESTRICTED').value,
+                  name: '闄愮敤',
+                  technologyStatus: 'RESTRICTED'
+                }
               ]
+              this.warrantyMalfunctionData = [
+                { value: res.result.bxqk.find(item => item.code === 'bx').value, name: '鎶ヤ慨', isStop: '' },
+                { value: res.result.bxqk.find(item => item.code === 'stop').value, name: '鍋滄満', isStop: '2' },
+                { value: res.result.bxqk.find(item => item.code === 'run').value, name: '杩愯', isStop: '1' }
+              ]
+              this.techConditionChartRequireFinished = true
+              this.warrantyMalfunctionChartRequireFinished = true
+              this.drawTechConditionChart()
+              this.drawWarrantyMalfunctionChart()
             }
-            this.drawWarrantyMalfunctionChart()
           })
       },
 
-      /* 璋冪敤鎺ュ彛鑾峰彇涓変繚璁″垝 */
-      getMonthMaintenanceNumByApi() {
-        signageApi.getThisMonthMaintenanceListApi()
+      /* 璋冪敤鎺ュ彛鑾峰彇涓変繚鎯呭喌 */
+      getThirdMaintenanceConditionByApi() {
+        signageApi.getThirdMaintenanceConditionApi()
           .then(res => {
-            if (res.success && res.result) this.thisMonthMaintenancePlanNum = res.result[0].totalCount
-          })
-        signageApi.getThisMonthMaintenanceFinishListApi()
-          .then(res => {
-            if (res.success && res.result) this.thisMonthMaintenanceRealNum = res.result[0].totalCount
-          })
-        signageApi.getNextMonthMaintenanceList()
-          .then(res => {
-            if (res.success && res.result) this.nextMonthMaintenancePlanNum = res.result[0].totalCount
-          })
-        signageApi.getNextNextMonthMaintenanceListApi()
-          .then(res => {
-            if (res.success && res.result) this.nextNextMonthMaintenancePlanNum = res.result[0].totalCount
+            if (res.success && res.result) {
+              this.thisMonthMaintenancePlanNum = res.result.find(item => item.code === 'bysbzs').value
+              this.thisMonthMaintenanceRealNum = res.result.find(item => item.code === 'bwc').value
+              this.nextMonthMaintenancePlanNum = res.result.find(item => item.code === 'xysb').value
+              this.nextNextMonthMaintenancePlanNum = res.result.find(item => item.code === 'xxysb').value
+            }
           })
       },
 
@@ -239,7 +260,7 @@
       getTwoMaintenanceChartDataByApi() {
         signageApi.getTwoMaintenancePlanListApi()
           .then(res => {
-            if (res.success && res.result) this.twoMaintenanceChartData = res.result.map(item => [item.centerName, item.maintenanceDate, item.content])
+            if (res.success && res.result.length > 0) this.twoMaintenanceChartData = res.result.map(item => [item.factoryName, item.monthPlan, '浜岀骇淇濆吇'])
             this.drawMaintenanceChart()
           })
       },
@@ -250,13 +271,15 @@
         this.barChart.showLoading({
           text: '鏁版嵁鍔犺浇涓� ...',
           color: '#0696e1', // 鍔犺浇鍔ㄧ敾棰滆壊
-          textColor: '#fff',
-          maskColor: 'rgba(1, 25, 75, 0.2)' // 閬僵灞�
+          textColor: 'rgba(0, 0, 0, .45)',
+          maskColor: 'rgba(0,0,0,.05)' // 閬僵灞�
         })
         signageApi.getEquipmentOEEStatistics()
           .then(res => {
-            if (res.success) this.barChartData = res.result
-            this.drawBarChart()
+            if (res.success && res.result) {
+              this.barChartData = res.result
+              this.drawBarChart()
+            }
           })
       },
 
@@ -266,13 +289,24 @@
         this.doubleBarChart.showLoading({
           text: '鏁版嵁鍔犺浇涓� ...',
           color: '#0696e1', // 鍔犺浇鍔ㄧ敾棰滆壊
-          textColor: '#fff',
-          maskColor: 'rgba(1, 25, 75, 0.2)' // 閬僵灞�
+          textColor: 'rgba(0, 0, 0, .45)',
+          maskColor: 'rgba(0,0,0,.05)' // 閬僵灞�
         })
         signageApi.getEquipmentMonthStatisticsApi()
           .then(res => {
-            if (res.success) this.doubleBarChartData = res.result
-            this.drawDoubleBarChart()
+            if (res.success) {
+              this.doubleBarChartData = res.result
+              this.drawDoubleBarChart()
+            }
+          })
+      },
+
+      /* 璋冪敤鎺ュ彛鑾峰彇杞﹂棿闂鍒楄〃*/
+      getWorkshopProblemChartDataByApi() {
+        signageApi.getWorkshopProblemListApi()
+          .then(res => {
+            if (res.success && res.result.length > 0) this.workshopProblemChartData = res.result.map(item => [item.createTime, item.content])
+            this.drawWorkshopProblemChart()
           })
       },
 
@@ -282,7 +316,7 @@
           height: 300,
           title: {
             show: true, // 鏄惁鏄剧ず鏍囬锛岄粯璁や负true
-            text: '璁惧鐘舵��', // 涓绘爣棰樻枃鏈�
+            text: '璁惧杩愯鐘舵�佺粺璁�', // 涓绘爣棰樻枃鏈�
             x: 'center', // 鏍囬姘村钩瀹夋斁浣嶇疆锛屽彲閫夊�间负'left'銆�'center'銆�'right'鎴栧叿浣撶殑姘村钩鍧愭爣鍊�
             y: 'top', // 鏍囬鍨傜洿瀹夋斁浣嶇疆锛屽彲閫夊�间负'top'銆�'bottom'銆�'center'鎴栧叿浣撶殑鍨傜洿鍧愭爣鍊�
             textStyle: {
@@ -304,7 +338,6 @@
             left: 0,
             orient: 'vertical',
             right: '10%',
-            // bottom: "0",
             itemWidth: 14,
             itemHeight: 14,
             icon: 'roundRect',
@@ -324,13 +357,13 @@
               type: 'pie',
               roseType: 'angle', // 鐜懓鍥�
               // selectedMode: "single",
-              radius: ['40%', '55%'],
+              radius: this.pieChartRadius,
               center: ['50%', '60%'],
               color: [
-                '#8B8B8B',
-                '#F56436',
-                '#FFFF40',
-                '#0FC61A'
+                '#686869',
+                '#AA6349',
+                '#EAEA7C',
+                '#5D975D'
               ],
               label: {
                 position: 'outside',
@@ -367,7 +400,6 @@
 
       /* 缁樺埗璁惧鍒╃敤鐜囪兌鍥婂浘 */
       drawEfficiencyChart() {
-        const data = this.efficiencyData
         const colorArray = [
           {
             top: '#79CEAA',
@@ -397,8 +429,9 @@
             bottom: '#F7B7A0'
           }
         ]
+        const data = this.efficiencyData
         const defaultData = []
-        const dataMax = +data.sort((x, y) => +y.value - +x.value)[0].value
+        const dataMax = data.length > 0 ? +data.sort((x, y) => +y.value - +x.value)[0].value : 0
         let yAxisMax
         if (dataMax === 0) yAxisMax = 1 // 鑻ユ暟鎹腑鏈�澶у�间负0锛屽垯灏嗚儗鏅粯璁ゅ�艰缃负1
         else yAxisMax = Math.ceil(dataMax / 5) * 5 // 璁剧疆鏌卞浘鑳屾櫙闃村奖榛樿鍊硷紝鎬濊矾涓烘暟鎹渶澶у�兼渶鎺ヨ繎鐨勮兘琚�5鏁撮櫎鐨勬暟瀛�
@@ -437,12 +470,12 @@
           xAxis: {
             name: '',
             nameTextStyle: {
-              color: '#fff'
+              color: 'rgba(0,0,0,.45)'
             },
             axisLabel: {
               margin: 20,
               textStyle: {
-                color: '#fff'
+                color: 'rgba(0,0,0,.45)'
               }
             },
             show: true,
@@ -454,17 +487,17 @@
               show: false
             },
             splitLine: {
-              show: false
+              show: true
             }
           },
-          yAxis: [{
+          yAxis: {
             type: 'category',
             inverse: true,
             triggerEvent: true,
             axisLabel: {
               show: true,
               textStyle: {
-                color: '#fff',
+                color: 'rgba(0,0,0,.45)',
                 fontSize: '14',
                 fontWeight: 'bolder'
               },
@@ -482,29 +515,12 @@
               show: false
             },
             data: data.map(item => item.productionCode)
-          }, {
-            type: 'category',
-            inverse: true,
-            axisTick: 'none',
-            axisLine: 'none',
-            show: true,
-            axisLabel: {
-              textStyle: {
-                color: '#ffffff',
-                fontSize: '14'
-              },
-              formatter: function(value) {
-                return `${value}%`
-              }
-            },
-            data: data
-          }],
-          series: [{
-            name: '鍒╃敤鐜�',
+          },
+          series: {
+            name: 'TEEP',
             type: 'bar',
             zlevel: 1,
             itemStyle: {
-              barBorderRadius: 100,
               color: function(params) {
                 let num = colorArray.length
                 return {
@@ -546,30 +562,22 @@
                 }
               }
             },
-            barWidth: 12,
+            label: {
+              show: true,
+              position: 'inside',
+              color: '#fff'
+            },
+            barWidth: 18,
             data: data
-          },
-            {
-              name: '鑳屾櫙',
-              type: 'bar',
-              barWidth: 12,
-              barGap: '-100%',
-              data: defaultData,
-              itemStyle: {
-                color: '#11294d',
-                barBorderRadius: 100
-              }
-            }
-          ]
+          }
         }
-        option.title.text = `${moment().subtract(1, 'days').format('M鏈圖鏃�')}鍒╃敤鐜嘸
+        option.title.text = `${moment().subtract(1, 'days').format('M鏈圖鏃�')}TEEP`
         this.efficiencyChart.setOption(option, true)
         this.efficiencyChart.hideLoading()
         this.efficiencyChart.on('click', params => {
           // 鐐瑰嚮瑙﹀彂鐨勪负鏌辩姸浣擄紝闄ゆ闄ゅ鏄爣棰�
           if (params.componentType === 'series') {
             // 鏌辩姸浣撹烦杞粺璁″垎鏋愰〉闈㈠睍绀哄搴斿眰绾ф暟鎹�
-            console.log('seriesParams===========', params)
             let productionId
             let tierName
             // 鐐瑰嚮鐨勬槸鏌变綋鐨勫�硷紝鍚﹀垯鐐瑰嚮鐨勪负鏌变綋鑳屾櫙闃村奖
@@ -580,13 +588,11 @@
               productionId = this.efficiencyData.find(item => item.productionCode === params.name).productionId
               tierName = this.efficiencyData.find(item => item.productionCode === params.name).name
             }
-            console.log('productionId', productionId)
             this.$router.push({
               name: 'mdc-base-StatisticsChart',
               params: { isEquipment: false, productionId, tierName }
             })
           } else {
-            console.log('yAxisParams===========', params)
             this.$emit('switchToNextSignage', { signageName: 'BranchFactory', productionCode: params.value })
           }
         })
@@ -638,12 +644,12 @@
             {
               type: 'pie',
               // selectedMode: "single",
-              radius: ['40%', '55%'],
+              radius: this.pieChartRadius,
               center: ['45%', '60%'],
               color: [
-                '#0FC61A',
-                '#F56436',
-                '#8B8B8B'
+                '#0AA012',
+                '#247F49',
+                '#757160'
               ],
               label: {
                 position: 'outside',
@@ -671,46 +677,11 @@
         this.techConditionChart.hideLoading()
 
         // this.techConditionChart.on('click', params => {
-        //   console.log('params', params)
-        //   this.modalTitle = '鎶�鏈姸鎬�'
-        //   this.modalTableColumns = [
-        //     {
-        //       title: '#',
-        //       dataIndex: '',
-        //       key: 'rowIndex',
-        //       width: 60,
-        //       align: 'center',
-        //       customRender: function(t, r, index) {
-        //         return parseInt(index) + 1
-        //       }
-        //     },
-        //     {
-        //       title: '璁惧缂栧彿',
-        //       dataIndex: 'equipmentId',
-        //       key: 'equipmentId'
-        //     },
-        //     {
-        //       title: '璁惧鍚嶇О',
-        //       dataIndex: 'equipmentName',
-        //       key: 'equipmentName'
-        //     },
-        //     {
-        //       title: '璁惧鍨嬪彿',
-        //       dataIndex: 'equipmentModel',
-        //       key: 'equipmentModel'
-        //     },
-        //     {
-        //       title: '璁惧绫诲瀷',
-        //       key: 'equipmentType',
-        //       dataIndex: 'equipmentType'
-        //     },
-        //     {
-        //       title: '椹卞姩绫诲瀷',
-        //       key: 'driveType',
-        //       dataIndex: 'driveType'
-        //     }
-        //   ]
-        //   this.modalDataApiUrl = '/mdc/mdcEquipment/list'
+        //   this.modalTitle = `鎶�鏈姸鎬侊紙${params.name}锛塦
+        //   this.modalDataApiParams = {
+        //     technologyStatus: this.techConditionData.find(item => item.name === params.name).technologyStatus
+        //   }
+        //   this.modalDataApiUrl = '/eam/calibrationOrder/showEquipmentByTechnologyStatus'
         //   this.modalVisible = true
         // })
       },
@@ -721,7 +692,7 @@
           height: 300,
           title: {
             show: true, // 鏄惁鏄剧ず鏍囬锛岄粯璁や负true
-            text: '璁惧鎶ヤ慨鏁呴殰', // 涓绘爣棰樻枃鏈�
+            text: '璁惧鎶ヤ慨鏁呴殰鎯呭喌', // 涓绘爣棰樻枃鏈�
             x: 'center', // 鏍囬姘村钩瀹夋斁浣嶇疆锛屽彲閫夊�间负'left'銆�'center'銆�'right'鎴栧叿浣撶殑姘村钩鍧愭爣鍊�
             y: 'top', // 鏍囬鍨傜洿瀹夋斁浣嶇疆锛屽彲閫夊�间负'top'銆�'bottom'銆�'center'鎴栧叿浣撶殑鍨傜洿鍧愭爣鍊�
             textStyle: {
@@ -761,12 +732,12 @@
             {
               type: 'pie',
               // selectedMode: "single",
-              radius: ['40%', '55%'],
+              radius: this.pieChartRadius,
               center: ['45%', '60%'],
               color: [
-                '#24F2F5',
-                '#F56436',
-                '#FFFF40'
+                '#00CED1',
+                '#B85B38',
+                '#EAEA7C'
               ],
               label: {
                 position: 'outside',
@@ -794,41 +765,11 @@
         this.warrantyMalfunctionChart.hideLoading()
 
         // this.warrantyMalfunctionChart.on('click', params => {
-        //   console.log('params', params)
-        //   this.modalTitle = '鎶ヤ慨鏁呴殰'
-        //   this.modalTableColumns = [
-        //     {
-        //       title: '#',
-        //       dataIndex: '',
-        //       key: 'rowIndex',
-        //       width: 60,
-        //       align: 'center',
-        //       customRender: function(t, r, index) {
-        //         return parseInt(index) + 1
-        //       }
-        //     },
-        //     {
-        //       title: '绫诲瀷',
-        //       align: 'center',
-        //       dataIndex: 'planCloseType'
-        //     },
-        //     {
-        //       title: '鏃堕棿绫诲瀷',
-        //       align: 'center',
-        //       dataIndex: 'planCloseTimeType'
-        //     },
-        //     {
-        //       title: '鏃堕暱锛堝垎閽燂級',
-        //       align: 'center',
-        //       dataIndex: 'planCloseTimeLong'
-        //     },
-        //     {
-        //       title: '澶囨敞',
-        //       align: 'center',
-        //       dataIndex: 'remark'
-        //     }
-        //   ]
-        //   this.modalDataApiUrl = '/mdc/mdcPlanClose/list'
+        //   this.modalTitle = `鎶ヤ慨鏁呴殰锛�${params.name}锛塦
+        //   this.modalDataApiParams = {
+        //     isStop: this.warrantyMalfunctionData.find(item => item.name === params.name).isStop
+        //   }
+        //   this.modalDataApiUrl = '/eam/calibrationOrder/showEquipmentByReportRepair'
         //   this.modalVisible = true
         // })
       },
@@ -838,9 +779,9 @@
         this.maintenanceConfig = {
           indexHeader: '搴忓彿',
           header: ['杞﹂棿', '鏃ユ湡', '鍐呭'],
-          headerBGC: '#2C8BB2',
-          oddRowBGC: '#244B58',
-          evenRowBGC: '#295562',
+          headerBGC: '#266C86',
+          oddRowBGC: '#003B51',
+          evenRowBGC: '#0A2732',
           data: this.twoMaintenanceChartData,
           index: true,
           columnWidth: [100, 300, 300, 300],
@@ -850,8 +791,9 @@
 
       /* 缁樺埗鍗曟煴鍥� */
       drawBarChart() {
+        const colorArray = ['#79CEAA', '#F589A2', '#6FBF9D', '#66DFE2', '#A7F0C1', '#FAE893', '#F7B7A0']
         const defaultData = []
-        const dataMax = +this.barChartData.sort((x, y) => +y.value - +x.value)[0].value
+        const dataMax = this.barChartData.length > 0 ? +this.barChartData.sort((x, y) => +y.value - +x.value)[0].value : 0
         let yAxisMax
         if (dataMax === 0) yAxisMax = 1 // 鑻ユ暟鎹腑鏈�澶у�间负0锛屽垯灏嗚儗鏅粯璁ゅ�艰缃负1
         else yAxisMax = Math.ceil(dataMax / 5) * 5 // 璁剧疆鏌卞浘鑳屾櫙闃村奖榛樿鍊硷紝鎬濊矾涓烘暟鎹渶澶у�兼渶鎺ヨ繎鐨勮兘琚�5鏁撮櫎鐨勬暟瀛�
@@ -898,7 +840,7 @@
             data: this.barChartData.map(item => item.productionId),
             axisLine: {
               lineStyle: {
-                color: '#FFFFFF'
+                color: 'rgba(0,0,0,.45)'
               }
             },
             axisLabel: {
@@ -906,10 +848,11 @@
               interval: 0, // 鍧愭爣杞村埢搴︽爣绛剧殑鏄剧ず闂撮殧锛屽湪绫荤洰杞翠腑鏈夋晥锛涢粯璁や細閲囩敤鏍囩涓嶉噸鍙犵殑绛栫暐闂撮殧鏄剧ず鏍囩锛涘彲浠ヨ缃垚0寮哄埗鏄剧ず鎵�鏈夋爣绛撅紱濡傛灉璁剧疆涓�1锛岃〃绀恒�庨殧涓�涓爣绛炬樉绀轰竴涓爣绛俱�忥紝濡傛灉鍊间负2锛岃〃绀洪殧涓や釜鏍囩鏄剧ず涓�涓爣绛撅紝浠ユ绫绘帹銆�
               rotate: this.barChartData.length >= 6 ? -30 : 0, // 鍒诲害鏍囩鏃嬭浆鐨勮搴︼紝鍦ㄧ被鐩酱鐨勭被鐩爣绛炬樉绀轰笉涓嬬殑鏃跺�欏彲浠ラ�氳繃鏃嬭浆闃叉鏍囩涔嬮棿閲嶅彔锛涙棆杞殑瑙掑害浠�-90搴﹀埌90搴�
               inside: false, // 鍒诲害鏍囩鏄惁鏈濆唴锛岄粯璁ゆ湞澶�
-              margin: 6, // 鍒诲害鏍囩涓庤酱绾夸箣闂寸殑璺濈
+              margin: 10, // 鍒诲害鏍囩涓庤酱绾夸箣闂寸殑璺濈
               formatter: value => {
                 return `${this.barChartData.find(item => item.productionId === value).name}`
-              }
+              },
+              fontSize: 14
             },
             axisTick: {
               show: true,
@@ -923,7 +866,7 @@
             interval: yAxisInterval,
             axisLabel: {
               formatter: '{value}',
-              color: '#fff'
+              fontSize: 14
             },
             axisTick: {
               show: false
@@ -931,7 +874,7 @@
             axisLine: {
               show: false,
               lineStyle: {
-                color: '#FFFFFF'
+                color: 'rgba(0,0,0,.45)'
               }
             },
             splitLine: {
@@ -941,51 +884,86 @@
               }
             }
           }],
-          series: [{
-            type: 'bar',
-            data: this.barChartData,
-            barWidth: '15%',
-            itemStyle: {
-              color: '#55D6A5'
-            },
-            zlevel: 1,
-            label: {
-              show: true,
-              lineHeight: 10,
-              formatter: params => {
-                if (+params.value === 0) return ''
-                else return params.value
+          series: [
+            {
+              type: 'bar',
+              data: this.barChartData,
+              barWidth: this.barChartData.length > 5 ? '40%' : 30,
+              itemStyle: {
+                color: function(params) {
+                  let num = colorArray.length
+                  return colorArray[params.dataIndex % num]
+                }
+                // color: new echarts.graphic.LinearGradient(
+                //   0, 0, 0, 1, [{
+                //     offset: 0,
+                //     color: '#83bff6'
+                //   },
+                //     {
+                //       offset: 0.5,
+                //       color: '#188df0'
+                //     },
+                //     {
+                //       offset: 1,
+                //       color: '#188df0'
+                //     }
+                //   ]
+                // )
               },
-              position: 'inside',
-              textStyle: {
-                color: '#fff',
-                fontSize: 18
+              zlevel: 1,
+              label: {
+                show: false,
+                lineHeight: 10,
+                formatter: params => {
+                  if (+params.value === 0) return ''
+                  else return params.value
+                },
+                position: 'top',
+                textStyle: {
+                  color: '#fff',
+                  fontSize: 16
+                }
               }
-            }
-          },
+            },
             {
               name: '鑳屾櫙',
               type: 'bar',
-              barWidth: '15%',
+              barWidth: this.barChartData.length > 5 ? '40%' : 30,
               barGap: '-100%',
               data: defaultData,
               itemStyle: {
-                color: '#11294d'
+                color: 'rgba(0,0,0,.05)'
               }
             }]
+          // aria: {
+          //   enabled: true,
+          //   decal: {
+          //     show: true,
+          //     decals: [
+          //       {
+          //         color: 'rgba(0,0,0,.2)',
+          //         dashArrayX: [20, 0],
+          //         dashArrayY: [1, 2],
+          //         symbol: 'rect',
+          //         rotation: Math.PI / 4
+          //       },
+          //       {
+          //         symbol: 'none'
+          //       }
+          //     ]
+          //   }
+          // }
         }
-        option.title.text = moment().subtract(1, 'months').format('M鏈�') + `OEE杞﹂棿`
+        option.title.text = moment().subtract(1, 'months').format('M鏈�') + `OEE`
         this.barChart.setOption(option, true)
         this.barChart.hideLoading()
 
         this.barChart.on('click', params => {
-          console.log('params', params)
           let productionId
           // 鐐瑰嚮鐨勬槸鏌变綋鐨勫�硷紝鍚﹀垯鐐瑰嚮鐨勪负鏌变綋鑳屾櫙闃村奖
           if (params.seriesIndex === 0) productionId = params.data.productionId
           else productionId = params.name
 
-          console.log('productionId', productionId)
           this.$router.push({
             name: 'mdc-base-OEEAnalysis',
             params: { isEquipment: false, productionId }
@@ -996,7 +974,7 @@
       /* 缁樺埗鍙屾煴鍥� */
       drawDoubleBarChart() {
         const option = {
-          color: ['#409EFF', '#0FC61A'],
+          color: ['#4992FF', '#4DC0B1'],
           tooltip: {
             confine: true,
             formatter: function(params) {
@@ -1020,7 +998,7 @@
             formatter: ['{a|{name}}'].join('\n'),
             textStyle: {
               fontSize: 14,
-              color: '#fff',
+              color: 'rgba(0, 0, 0, .45)',
               height: 8,
               rich: {
                 a: {
@@ -1028,19 +1006,20 @@
                 }
               }
             },
-            data: ['OEE', '鍒╃敤鐜�']
+            data: ['OEE', 'TEEP']
           },
           xAxis: {
             type: 'category',
             data: this.doubleBarChartData.dateList,
             axisLine: {
+              show: true,
               lineStyle: {
-                color: 'rgba(255,255,255,0.45)'
+                color: 'rgba(0,0,0,.45)'
               }
             },
             axisLabel: {
-              fontSize: 12,
-              color: '#fff'
+              fontSize: 14,
+              color: 'rgba(0,0,0,.45)'
             },
             axisTick: {
               show: true
@@ -1050,16 +1029,16 @@
             {
               name: '%',
               nameTextStyle: {
-                color: '#fff'
+                color: 'rgba(0,0,0,.45)'
               },
               type: 'value',
               min: 0,
               minInterval: 1,
-              splitArea: {
-                show: false
-              },
               axisLine: {
-                show: true
+                show: true,
+                lineStyle: {
+                  color: 'rgba(0,0,0,.45)'
+                }
               },
               axisTick: {
                 show: true
@@ -1072,15 +1051,18 @@
                 }
               },
               axisLabel: {
-                fontSize: 12,
-                color: '#fff',
+                fontSize: 14,
+                color: 'rgba(0,0,0,.45)',
                 fontFamily: 'Bebas'
               }
             },
             {
               type: 'value',
               axisLine: {
-                show: true
+                show: true,
+                lineStyle: {
+                  color: 'rgba(0,0,0,.45)'
+                }
               },
               axisTick: {
                 show: false
@@ -1089,10 +1071,10 @@
                 show: false
               },
               axisLabel: {
-                fontSize: 12,
+                fontSize: 14,
                 formatter: '{value}%', // 鍙充晶Y杞存枃瀛楁樉绀�
                 fontFamily: 'Bebas',
-                color: '#fff'
+                color: 'rgba(0,0,0,.45)'
               },
               splitArea: {
                 show: false
@@ -1100,12 +1082,12 @@
             }],
           series: [{
             type: 'bar',
-            barWidth: 15,
-            itemStyle: { barBorderRadius: [3, 3, 0, 0] },
+            barWidth: 20,
+            itemStyle: { barBorderRadius: 4 },
             name: 'OEE',
             data: this.doubleBarChartData.oeeList,
             label: {
-              show: true,
+              show: false,
               lineHeight: 10,
               formatter: params => {
                 if (+params.value === 0) return ''
@@ -1119,12 +1101,12 @@
             }
           }, {
             type: 'bar',
-            barWidth: 15,
-            itemStyle: { barBorderRadius: [3, 3, 0, 0] },
-            name: '鍒╃敤鐜�',
+            barWidth: 20,
+            itemStyle: { barBorderRadius: 4 },
+            name: 'TEEP',
             data: this.doubleBarChartData.utilizationList,
             label: {
-              show: true,
+              show: false,
               lineHeight: 10,
               formatter: params => {
                 if (+params.value === 0) return ''
@@ -1144,27 +1126,16 @@
       },
 
       /* 缁樺埗闂婊氬姩琛� */
-      drawProblemChart() {
+      drawWorkshopProblemChart() {
         this.problemConfig = {
           indexHeader: '搴忓彿',
           header: ['鏃堕棿', '闂鍐呭'],
-          headerBGC: '#86D186',
-          oddRowBGC: '#7CBF7C',
-          evenRowBGC: '#7CBF7C',
-          data: [
-            // ['2024骞�3鏈�23鍙�', '澶у娉ㄦ剰瀹夊叏闂'],
-            // ['2024骞�3鏈�23鍙�', '澶у娉ㄦ剰瀹夊叏闂'],
-            // ['2024骞�3鏈�23鍙�', '澶у娉ㄦ剰瀹夊叏闂'],
-            // ['2024骞�3鏈�23鍙�', '澶у娉ㄦ剰瀹夊叏闂'],
-            // ['2024骞�3鏈�23鍙�', '澶у娉ㄦ剰瀹夊叏闂'],
-            // ['2024骞�3鏈�23鍙�', '澶у娉ㄦ剰瀹夊叏闂'],
-            // ['2024骞�3鏈�23鍙�', '澶у娉ㄦ剰瀹夊叏闂'],
-            // ['2024骞�3鏈�23鍙�', '澶у娉ㄦ剰瀹夊叏闂'],
-            // ['2024骞�3鏈�23鍙�', '澶у娉ㄦ剰瀹夊叏闂'],
-            // ['2024骞�3鏈�23鍙�', '澶у娉ㄦ剰瀹夊叏闂']
-          ],
+          headerBGC: '#83B883',
+          oddRowBGC: '#556955',
+          evenRowBGC: '#556955',
+          data: this.workshopProblemChartData,
           index: true,
-          columnWidth: [100, 300, 300],
+          columnWidth: [100, 200, 300],
           align: ['center']
         }
       },
@@ -1174,41 +1145,24 @@
        * @param record 鐐瑰嚮褰撳墠涓変繚淇℃伅
        */
       openMaintenanceModal(record) {
-        this.modalTitle = record.planTime
-        this.modalTableColumns = [
-          {
-            title: '#',
-            dataIndex: '',
-            key: 'rowIndex',
-            width: 60,
-            align: 'center',
-            customRender: function(t, r, index) {
-              return parseInt(index) + 1
-            }
-          },
-          {
-            title: '绫诲瀷',
-            align: 'center',
-            dataIndex: 'planCloseType'
-          },
-          {
-            title: '鏃堕棿绫诲瀷',
-            align: 'center',
-            dataIndex: 'planCloseTimeType'
-          },
-          {
-            title: '鏃堕暱锛堝垎閽燂級',
-            align: 'center',
-            dataIndex: 'planCloseTimeLong'
-          },
-          {
-            title: '澶囨敞',
-            align: 'center',
-            dataIndex: 'remark'
-          }
-        ]
-        this.modalDataApiUrl = '/mdc/mdcPlanClose/list'
+        // this.modalTitle = record.planTime
+        // this.modalDataApiUrl = record.apiUrl
         // this.modalVisible = true
+      },
+
+      re_drawPieChart() {
+        const clientWidth = document.body.clientWidth || document.documentElement.clientWidth
+        if (this.firstEnterClientWidth != 1920) {
+          this.pieChartRadius = this.normalPieChartRadius.map(item => item = (+item.slice(0, -1) * (clientWidth / 1920)) + '%')
+        } else {
+          this.pieChartRadius = this.normalPieChartRadius.map(item => item = (+item.slice(0, -1) * (clientWidth / this.firstEnterClientWidth)) + '%')
+        }
+        console.log('pieChartRadius', this.pieChartRadius)
+        this.$nextTick(() => {
+          if (this.runningStateChartDataRequireFinished) this.drawRunningStateChart(this.currentPageProductionId)
+          if (this.techConditionChartRequireFinished) this.drawTechConditionChart()
+          if (this.warrantyMalfunctionChartRequireFinished) this.drawWarrantyMalfunctionChart()
+        })
       },
 
       /**
@@ -1216,6 +1170,8 @@
        * 璋冩暣鍥捐〃灏哄浠ラ�傚簲鍒嗚鲸鐜�
        */
       handleWindowResize() {
+        this.re_drawPieChart()
+
         if (this.runningStateChart) this.runningStateChart.resize()
         if (this.efficiencyChart) this.efficiencyChart.resize()
         if (this.techConditionChart) this.techConditionChart.resize()

--
Gitblit v1.9.3