From 8f1df61c8902a35e41205d7cbd9d0763619e6d46 Mon Sep 17 00:00:00 2001
From: zhaowei <zhaowei>
Date: 星期五, 22 八月 2025 16:36:47 +0800
Subject: [PATCH] mdc首页设备管理部分功能调整

---
 src/views/dashboard/IndexSignage.vue                                          |  262 +++++++++-------------------
 src/components/page/GlobalFooter.vue                                          |    2 
 src/views/eam/maintenance/modules/EamThirdMaintenanceOrderBatchPrintModal.vue |  223 +++++++++++++-----------
 src/views/dashboard/Analysis.vue                                              |    9 
 src/components/page/GlobalLayout.vue                                          |    2 
 src/components/table2excel/table2excel.js                                     |    1 
 src/api/signage.js                                                            |   20 -
 src/defaultSettings.js                                                        |    2 
 8 files changed, 220 insertions(+), 301 deletions(-)

diff --git a/src/api/signage.js b/src/api/signage.js
index 6106cc6..1813958 100644
--- a/src/api/signage.js
+++ b/src/api/signage.js
@@ -7,20 +7,12 @@
   getEquipmentStatusStatisticsApi: productionCode => getAction('/mdc/home/equipmentStatusStatistics', { productionCode }),
   // 璁惧鍒╃敤鐜�
   getEquipmentUtilizationStatisticsApi: productionCode => getAction('/mdc/home/equipmentUtilizationStatistics', { productionCode }),
-  // 鎶�鏈姸鎬�
-  getEquipmentTechnologyStatusListApi: productionCode => getAction('/eam/calibrationOrder/getEquipmentTechnologyStatusList', { productionCode }),
-  // 璁惧鎶ヤ慨鏁呴殰
-  getReportRepairEquipmentListApi: productionCode => getAction('/eam/calibrationOrder/getReportRepairEquipmentList', { productionCode }),
-  // 鏈湀涓変繚璁″垝
-  getThisMonthMaintenanceListApi: productionCode => getAction('/eam/calibrationOrder/getThisMonthMaintenanceList', { productionCode }),
-  // 鏈湀瀹屾垚涓変繚璁″垝
-  getThisMonthMaintenanceFinishListApi: productionCode => getAction('/eam/calibrationOrder/getThisMonthMaintenanceFinishList', { productionCode }),
-  // 涓嬫湀涓変繚璁″垝
-  getNextMonthMaintenanceList: productionCode => getAction('/eam/calibrationOrder/getNextMonthMaintenanceList', { productionCode }),
-  // 涓嬩笅鏈堜笁淇濊鍒�
-  getNextNextMonthMaintenanceListApi: productionCode => getAction('/eam/calibrationOrder/getNextNextMonthMaintenanceList', { productionCode }),
+  // 鎶�鏈姸鎬佷笌鎶ヤ慨鏁呴殰
+  getEquipmentTechnologyStatusAndReportRepairEquipmentListApi: productionCode => getAction('/eam/home/techornology', { productionCode }),
+  // 涓夌骇淇濆吇
+  getThirdMaintenanceConditionApi: productionCode => getAction('/eam/home/maintenance', { productionCode }),
   // 浜屼繚璁″垝
-  getTwoMaintenancePlanListApi: productionCode => getAction('/eam/calibrationOrder/getTwoMaintenancePlanList', { productionCode }),
+  getTwoMaintenancePlanListApi: productionCode => getAction('/eam/home/secondmaintenance', { productionCode }),
   // 璁惧OEE缁熻
   getEquipmentOEEStatistics: productionCode => getAction('/mdc/home/equipmentOEEStatistics', { productionCode }),
   // 璁惧OEE鍜屽埄鐢ㄧ巼瀵规瘮
@@ -64,5 +56,5 @@
   // 鐐瑰嚮寤舵湡鑾峰彇寮圭獥鏄庣粏
   getMaintenanceExtensionDetailsListApi: params => getAction('/eam/calibrationOrder/show3MaintenancePostponeList', { params }),
   // 鐐瑰嚮鏈湀瀹屾垚涓変繚鑾峰彇寮圭獥鏄庣粏
-  getMaintenanceOverdueDetailsListApi: params => getAction('/eam/calibrationOrder/show3MaintenanceOverdueList', { params }),
+  getMaintenanceOverdueDetailsListApi: params => getAction('/eam/calibrationOrder/show3MaintenanceOverdueList', { params })
 }
\ No newline at end of file
diff --git a/src/components/page/GlobalFooter.vue b/src/components/page/GlobalFooter.vue
index dcdba6c..9bb6f97 100644
--- a/src/components/page/GlobalFooter.vue
+++ b/src/components/page/GlobalFooter.vue
@@ -9,7 +9,7 @@
     <!--<a href="https://vuecomponent.github.io/ant-design-vue/docs/vue/introduce-cn/">Vue Antd</a>-->
     <!--</div>-->
     <div class="copyright"
-         :style="{background:$route.meta.title==='棣栭〉'?'#151548':'',color:$route.meta.title==='棣栭〉'?'#fff':''}">
+         :style="{background:$route.meta.title==='棣栭〉'?'#fff':''}">
       Copyright
       <a-icon type="copyright"/>
       2024 <span>2015-2025 鐏电鏅鸿兘</span>
diff --git a/src/components/page/GlobalLayout.vue b/src/components/page/GlobalLayout.vue
index f4cc4cc..f389d43 100644
--- a/src/components/page/GlobalLayout.vue
+++ b/src/components/page/GlobalLayout.vue
@@ -70,7 +70,7 @@
 
       <!-- layout content -->
       <a-layout-content
-        :style="{ height: '100%', paddingTop: fixedHeader ? '59px' : '0' ,background: $route.meta.title=='棣栭〉'?'#151548':''}">
+        :style="{ height: '100%', paddingTop: fixedHeader ? '59px' : '0' ,background: $route.meta.title=='棣栭〉'?'#fff':''}">
         <slot></slot>
       </a-layout-content>
 
diff --git a/src/components/table2excel/table2excel.js b/src/components/table2excel/table2excel.js
index c63095b..c377223 100644
--- a/src/components/table2excel/table2excel.js
+++ b/src/components/table2excel/table2excel.js
@@ -82,6 +82,7 @@
               compStyle = getComputedStyle(q);
               additionalStyles += (compStyle && compStyle.backgroundColor ? "background-color: " + compStyle.backgroundColor + ";" : "");
               additionalStyles += (compStyle && compStyle.color ? "color: " + compStyle.color + ";" : "");
+              additionalStyles += (compStyle && compStyle.height ? "height: " + compStyle.height + ";" : "");
               additionalStyles += (compStyle && compStyle.wordWrap ? "word-wrap: " + compStyle.wordWrap + ";" : "");
             }
 
diff --git a/src/defaultSettings.js b/src/defaultSettings.js
index 2d337e1..150475c 100644
--- a/src/defaultSettings.js
+++ b/src/defaultSettings.js
@@ -15,7 +15,7 @@
 
 export default {
   primaryColor: '#000000', // primary color of ant design
-  navTheme: 'dark', // theme for nav menu
+  navTheme: 'light', // theme for nav menu
   layout: 'topmenu', // nav menu position: sidemenu or topmenu
   contentWidth: 'Fixed', // layout of content: Fluid or Fixed, only works when layout is topmenu
   fixedHeader: true, // sticky header
diff --git a/src/views/dashboard/Analysis.vue b/src/views/dashboard/Analysis.vue
index 1432776..8acaf25 100644
--- a/src/views/dashboard/Analysis.vue
+++ b/src/views/dashboard/Analysis.vue
@@ -1,8 +1,8 @@
 <template>
-  <!--<Component :is="currentSignage" :userType="userType" :productionCode="productionCode"-->
-             <!--:workshopSectionProductionCode="workshopSectionProductionCode"-->
-             <!--@switchToNextSignage="switchToNextSignage" @backToLastSignage="backToLastSignage">-->
-  <!--</Component>-->
+  <Component :is="currentSignage" :userType="userType" :productionCode="productionCode"
+             :workshopSectionProductionCode="workshopSectionProductionCode"
+             @switchToNextSignage="switchToNextSignage" @backToLastSignage="backToLastSignage">
+  </Component>
 </template>
 
 <script>
@@ -69,7 +69,6 @@
       },
 
       switchToNextSignage(params) {
-        console.log('瀛愮粍浠秔arams', params)
         if (params.signageName === 'WorkshopSection') this.branchFactoryProductionCode = this.productionCode
         if (params.signageName === 'Equipment') this.workshopSectionProductionCode = this.productionCode
         this.$nextTick(() => {
diff --git a/src/views/dashboard/IndexSignage.vue b/src/views/dashboard/IndexSignage.vue
index 358183e..0761ee4 100644
--- a/src/views/dashboard/IndexSignage.vue
+++ b/src/views/dashboard/IndexSignage.vue
@@ -89,7 +89,7 @@
           {
             planTime: '鏈湀涓変繚璁″垝',
             planValueLabel: 'thisMonthMaintenancePlanNum',
-            backgroundColor: '#5FE0AF',
+            backgroundColor: '#719D8E',
             apiUrl: '/eam/calibrationOrder/showThisMonthMaintenanceList'
           },
           {
@@ -101,7 +101,7 @@
           {
             planTime: '涓嬫湀涓変繚璁″垝',
             planValueLabel: 'nextMonthMaintenancePlanNum',
-            backgroundColor: '#D6BC52',
+            backgroundColor: '#A8985D',
             apiUrl: '/eam/calibrationOrder/showNextMonthMaintenanceList'
           },
           {
@@ -145,9 +145,10 @@
       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()
@@ -160,8 +161,8 @@
         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 => {
@@ -180,8 +181,8 @@
         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 => {
@@ -192,69 +193,65 @@
           })
       },
 
-      /* 璋冪敤鎺ュ彛鑾峰彇鎶�鏈姸鎬� */
-      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: '鍚堟牸', technologyStatus: 'qualified' },
-                { value: res.result[0].disabledCount, name: '绂佺敤', technologyStatus: 'disabled' },
-                { value: res.result[0].limitedUseCount, name: '闄愮敤', technologyStatus: 'limitedUse' }
-              ]
-              this.techConditionChartRequireFinished = true
-              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: '鎶ヤ慨', isStop: '' },
-                { value: res.result[0].stopCount, name: '鍋滄満', isStop: '2' },
-                { value: res.result[0].noStopCount, name: '杩愯', isStop: '1' }
+              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()
             }
           })
       },
 
-      /* 璋冪敤鎺ュ彛鑾峰彇涓変繚璁″垝 */
-      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
+            }
           })
       },
 
@@ -262,7 +259,7 @@
       getTwoMaintenanceChartDataByApi() {
         signageApi.getTwoMaintenancePlanListApi()
           .then(res => {
-            if (res.success && res.result.length > 0) 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()
           })
       },
@@ -273,12 +270,12 @@
         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 && res.result && res.result.length > 0) {
+            if (res.success && res.result) {
               this.barChartData = res.result
               this.drawBarChart()
             }
@@ -291,8 +288,8 @@
         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 => {
@@ -318,7 +315,7 @@
           height: 300,
           title: {
             show: true, // 鏄惁鏄剧ず鏍囬锛岄粯璁や负true
-            text: '璁惧鐘舵��', // 涓绘爣棰樻枃鏈�
+            text: '璁惧杩愯鐘舵�佺粺璁�', // 涓绘爣棰樻枃鏈�
             x: 'center', // 鏍囬姘村钩瀹夋斁浣嶇疆锛屽彲閫夊�间负'left'銆�'center'銆�'right'鎴栧叿浣撶殑姘村钩鍧愭爣鍊�
             y: 'top', // 鏍囬鍨傜洿瀹夋斁浣嶇疆锛屽彲閫夊�间负'top'銆�'bottom'銆�'center'鎴栧叿浣撶殑鍨傜洿鍧愭爣鍊�
             textStyle: {
@@ -340,7 +337,6 @@
             left: 0,
             orient: 'vertical',
             right: '10%',
-            // bottom: "0",
             itemWidth: 14,
             itemHeight: 14,
             icon: 'roundRect',
@@ -363,10 +359,10 @@
               radius: this.pieChartRadius,
               center: ['50%', '60%'],
               color: [
-                '#8B8B8B',
-                '#F56436',
-                '#FFFF40',
-                '#0FC61A'
+                '#686869',
+                '#AA6349',
+                '#EAEA7C',
+                '#5D975D'
               ],
               label: {
                 position: 'outside',
@@ -404,37 +400,8 @@
       /* 缁樺埗璁惧鍒╃敤鐜囪兌鍥婂浘 */
       drawEfficiencyChart() {
         const data = this.efficiencyData
-        const colorArray = [
-          {
-            top: '#79CEAA',
-            bottom: '#79CEAA'
-          },
-          {
-            top: '#F589A2',
-            bottom: '#F589A2'
-          },
-          {
-            top: '#6FBF9D',
-            bottom: '#6FBF9D'
-          },
-          {
-            top: '#66DFE2',
-            bottom: '#66DFE2'
-          }, {
-            top: '#A7F0C1',
-            bottom: '#A7F0C1'
-          },
-          {
-            top: '#FAE893',
-            bottom: '#FAE893'
-          },
-          {
-            top: '#F7B7A0',
-            bottom: '#F7B7A0'
-          }
-        ]
         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鏁撮櫎鐨勬暟瀛�
@@ -473,12 +440,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,
@@ -500,7 +467,7 @@
             axisLabel: {
               show: true,
               textStyle: {
-                color: '#fff',
+                color: 'rgba(0,0,0,.45)',
                 fontSize: '14',
                 fontWeight: 'bolder'
               },
@@ -535,68 +502,17 @@
             },
             data: data
           }],
-          series: [{
+          series: {
             name: 'TEEP',
             type: 'bar',
             zlevel: 1,
             itemStyle: {
               barBorderRadius: 100,
-              color: function(params) {
-                let num = colorArray.length
-                return {
-                  type: 'linear',
-                  colorStops: [{
-                    offset: 0,
-                    color: colorArray[params.dataIndex % num].bottom
-                  }, {
-                    offset: 1,
-                    color: colorArray[params.dataIndex % num].top
-                  }, {
-                    offset: 0,
-                    color: colorArray[params.dataIndex % num].bottom
-                  }, {
-                    offset: 1,
-                    color: colorArray[params.dataIndex % num].top
-                  }, {
-                    offset: 0,
-                    color: colorArray[params.dataIndex % num].bottom
-                  }, {
-                    offset: 1,
-                    color: colorArray[params.dataIndex % num].top
-                  }, {
-                    offset: 0,
-                    color: colorArray[params.dataIndex % num].bottom
-                  }, {
-                    offset: 1,
-                    color: colorArray[params.dataIndex % num].top
-                  }, {
-                    offset: 0,
-                    color: colorArray[params.dataIndex % num].bottom
-                  }, {
-                    offset: 1,
-                    color: colorArray[params.dataIndex % num].top
-                  }, {
-                    offset: 0,
-                    color: colorArray[params.dataIndex % num].bottom
-                  }]
-                }
-              }
+              color: '#5070DD'
             },
             barWidth: 12,
             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鏈圖鏃�')}TEEP`
         this.efficiencyChart.setOption(option, true)
@@ -674,9 +590,9 @@
               radius: this.pieChartRadius,
               center: ['45%', '60%'],
               color: [
-                '#0FC61A',
-                '#F56436',
-                '#8B8B8B'
+                '#0AA012',
+                '#247F49',
+                '#757160'
               ],
               label: {
                 position: 'outside',
@@ -719,7 +635,7 @@
           height: 300,
           title: {
             show: true, // 鏄惁鏄剧ず鏍囬锛岄粯璁や负true
-            text: '璁惧鎶ヤ慨鏁呴殰', // 涓绘爣棰樻枃鏈�
+            text: '璁惧鎶ヤ慨鏁呴殰鎯呭喌', // 涓绘爣棰樻枃鏈�
             x: 'center', // 鏍囬姘村钩瀹夋斁浣嶇疆锛屽彲閫夊�间负'left'銆�'center'銆�'right'鎴栧叿浣撶殑姘村钩鍧愭爣鍊�
             y: 'top', // 鏍囬鍨傜洿瀹夋斁浣嶇疆锛屽彲閫夊�间负'top'銆�'bottom'銆�'center'鎴栧叿浣撶殑鍨傜洿鍧愭爣鍊�
             textStyle: {
@@ -762,9 +678,9 @@
               radius: this.pieChartRadius,
               center: ['45%', '60%'],
               color: [
-                '#24F2F5',
-                '#F56436',
-                '#FFFF40'
+                '#00CED1',
+                '#B85B38',
+                '#EAEA7C'
               ],
               label: {
                 position: 'outside',
@@ -806,9 +722,9 @@
         this.maintenanceConfig = {
           indexHeader: '搴忓彿',
           header: ['杞﹂棿', '鏃ユ湡', '鍐呭'],
-          headerBGC: '#2C8BB2',
-          oddRowBGC: '#244B58',
-          evenRowBGC: '#295562',
+          headerBGC: '#266C86',
+          oddRowBGC: '#0A2732',
+          evenRowBGC: '#003B51',
           data: this.twoMaintenanceChartData,
           index: true,
           columnWidth: [100, 300, 300, 300],
@@ -819,8 +735,7 @@
       /* 缁樺埗鍗曟煴鍥� */
       drawBarChart() {
         const defaultData = []
-        const colorArray = ['#79CEAA', '#F589A2', '#6FBF9D', '#66DFE2', '#A7F0C1', '#FAE893', '#F7B7A0']
-        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鏁撮櫎鐨勬暟瀛�
@@ -917,11 +832,7 @@
             data: this.barChartData,
             barWidth: this.barChartData.length > 5 ? '40%' : 30,
             itemStyle: {
-              color: function(params) {
-                let num = colorArray.length
-                return colorArray[params.dataIndex % num]
-              },
-              barBorderRadius: 100
+              color: '#2E8BDA'
             },
             zlevel: 1,
             label: {
@@ -945,8 +856,7 @@
               barGap: '-100%',
               data: defaultData,
               itemStyle: {
-                color: '#11294d',
-                barBorderRadius: 100
+                color: '#11294d'
               }
             }]
         }
@@ -970,7 +880,7 @@
       /* 缁樺埗鍙屾煴鍥� */
       drawDoubleBarChart() {
         const option = {
-          color: ['#66DFE2', '#79CEAA'],
+          color: ['#4992FF', '#4DC0B1'],
           tooltip: {
             confine: true,
             formatter: function(params) {
@@ -994,7 +904,7 @@
             formatter: ['{a|{name}}'].join('\n'),
             textStyle: {
               fontSize: 14,
-              color: '#fff',
+              color: 'rgba(0, 0, 0, .45)',
               height: 8,
               rich: {
                 a: {
@@ -1119,9 +1029,9 @@
         this.problemConfig = {
           indexHeader: '搴忓彿',
           header: ['闂鍐呭', '鏃堕棿'],
-          headerBGC: '#86D186',
-          oddRowBGC: '#7CBF7C',
-          evenRowBGC: '#7CBF7C',
+          headerBGC: '#83B883',
+          oddRowBGC: '#556955',
+          evenRowBGC: '#556955',
           data: this.workshopProblemChartData,
           index: true,
           columnWidth: [100, 300, 150],
diff --git a/src/views/eam/maintenance/modules/EamThirdMaintenanceOrderBatchPrintModal.vue b/src/views/eam/maintenance/modules/EamThirdMaintenanceOrderBatchPrintModal.vue
index 0b3c0c8..cc45411 100644
--- a/src/views/eam/maintenance/modules/EamThirdMaintenanceOrderBatchPrintModal.vue
+++ b/src/views/eam/maintenance/modules/EamThirdMaintenanceOrderBatchPrintModal.vue
@@ -11,58 +11,64 @@
             <table class="import-table" :id="'鍔犲伐璁惧涓夌骇淇濆吇楠屾敹鍗�-'+dataItem.equipmentCode">
               <thead>
               <tr>
-                <td colspan="18" style="border: none;text-align: right">{{dataItem.hfCodeB}}</td>
+                <td colspan="5" style="border: none">
+                  <div style="text-align: right">{{dataItem.hfCodeB}}</div>
+                </td>
               </tr>
               </thead>
 
               <tbody>
               <tr style="height: 48px;">
-                <th colspan="18" style="border: none;font-size: 20px">鍔犲伐璁惧涓夌骇淇濆吇楠屾敹鍗�</th>
+                <th colspan="5" style="border: none;font-size: 20px">鍔犲伐璁惧涓夌骇淇濆吇楠屾敹鍗�</th>
               </tr>
 
               <tr>
-                <td colspan="3">璁惧绫诲埆</td>
-                <td colspan="6">{{dataItem.equipmentCategory_dictText}}</td>
-
-                <td colspan="3">璁惧缂栧彿</td>
-                <td colspan="6">{{dataItem.equipmentCode}}</td>
+                <td>璁惧绫诲埆</td>
+                <td>{{dataItem.equipmentCategory_dictText}}</td>
+                <td>璁惧缂栧彿</td>
+                <td colspan="2">{{dataItem.equipmentCode}}</td>
               </tr>
 
               <tr>
-                <td colspan="3">璁惧鍚嶇О</td>
-                <td colspan="6">{{dataItem.equipmentName}}</td>
-
-                <td colspan="3">璁惧鍨嬪彿</td>
-                <td colspan="6">{{dataItem.equipmentModel}}</td>
+                <td>璁惧鍚嶇О</td>
+                <td>{{dataItem.equipmentName}}</td>
+                <td>璁惧鍨嬪彿</td>
+                <td colspan="2">{{dataItem.equipmentModel}}</td>
               </tr>
 
               <tr>
-                <td colspan="3" rowspan="2">淇濆吇閮ㄤ綅</td>
-                <td colspan="6" rowspan="2">淇濆吇鍐呭</td>
-                <td colspan="3" rowspan="2">楠屾敹鏍囧噯</td>
-                <td colspan="6">楠屾敹娆℃暟</td>
+                <td rowspan="2">淇濆吇閮ㄤ綅</td>
+                <td rowspan="2">淇濆吇鍐呭</td>
+                <td rowspan="2">楠屾敹鏍囧噯</td>
+                <td colspan="2">楠屾敹娆℃暟</td>
               </tr>
 
               <tr>
-                <td colspan="3">绗竴娆℃</td>
-                <td colspan="3">绗簩娆℃</td>
+                <td>绗竴娆℃</td>
+                <td>绗簩娆℃</td>
               </tr>
 
               <tr v-for="item in dataItem.eamThirdMaintenanceOrderDetailList">
-                <td colspan="3" :rowSpan="item.rowSpan" v-show="!item.rowSpanDis">{{item.itemPart}}</td>
-                <td colspan="6">{{item.itemName}}</td>
-                <td colspan="3">{{item.itemDemand}}</td>
-                <td colspan="3">{{+item.firstInspectResult?'鈭�':'脳'}}</td>
-                <td colspan="3">{{item.secondInspectResult}}</td>
+                <td :rowSpan="item.rowSpan" v-if="!item.rowSpanDis">{{item.itemPart}}</td>
+                <td>{{item.itemName}}</td>
+                <td>{{item.itemDemand}}</td>
+                <td>{{+item.firstInspectResult?'鈭�':'脳'}}</td>
+                <td>{{item.secondInspectResult}}</td>
+              </tr>
+
+              <tr>
+                <td colspan="3" style="border: none">
+                  <div style="text-align: left">妫�鏌ヤ汉鍛橈細{{dataItem.inspectorSignature_dictText}}</div>
+                </td>
+                <td colspan="2" style="border: none">
+                  <div style="text-align:right">妫�鏌ユ棩鏈燂細{{dataItem.inspectTime}}</div>
+                </td>
               </tr>
               </tbody>
             </table>
-
-            <div style="display:flex;justify-content: space-between; margin-top: 5px;padding: 0 20px">
-              <div>妫�鏌ヤ汉鍛橈細{{dataItem.inspectorSignature_dictText}}</div>
-              <div>妫�鏌ユ棩鏈燂細{{dataItem.inspectTime}}</div>
-            </div>
           </template>
+
+          <br v-if="tableType===3"/>
 
           <template v-if="tableType!==1">
             <div style="page-break-before:always"></div>
@@ -70,86 +76,106 @@
             <table class="import-table" :id="'鍔犲伐璁惧涓夌骇淇濆吇瀹屽伐绉讳氦鍗�-'+dataItem.equipmentCode">
               <thead>
               <tr>
-                <td colspan="18" style="border: none;text-align: right">{{dataItem.hfCodeA}}</td>
+                <td colspan="12" style="border-color: transparent">
+                  <div style="text-align: right">{{dataItem.hfCodeA}}</div>
+                </td>
               </tr>
               </thead>
 
               <tbody>
               <tr style="height: 48px;">
-                <th colspan="18" style="border: none;font-size: 20px">鍔犲伐璁惧涓夌骇淇濆吇瀹屽伐绉讳氦鍗�</th>
+                <th colspan="12" style="border-color: transparent transparent #000 transparent;font-size: 20px;">
+                  鍔犲伐璁惧涓夌骇淇濆吇瀹屽伐绉讳氦鍗�
+                </th>
               </tr>
 
               <tr>
-                <td colspan="3">璁惧鍚嶇О</td>
-                <td colspan="3">{{dataItem.equipmentName}}</td>
-                <td colspan="3">璁惧鍨嬪彿</td>
-                <td colspan="3">{{dataItem.equipmentModel}}</td>
-                <td colspan="3">缁熶竴缂栧彿</td>
-                <td colspan="3">{{dataItem.equipmentCode}}</td>
+                <td colspan="2">璁惧鍚嶇О</td>
+                <td colspan="2">{{dataItem.equipmentName}}</td>
+                <td colspan="2">璁惧鍨嬪彿</td>
+                <td colspan="2">{{dataItem.equipmentModel}}</td>
+                <td colspan="2">缁熶竴缂栧彿</td>
+                <td colspan="2">{{dataItem.equipmentCode}}</td>
               </tr>
 
               <tr>
-                <td colspan="3">浣跨敤鍗曚綅</td>
-                <td colspan="3">{{dataItem.factoryName}}</td>
-                <td colspan="3">淇濆吇鏃ユ湡</td>
-                <td colspan="9">{{dataItem.maintenanceDateFormatted}}</td>
+                <td colspan="2">浣跨敤鍗曚綅</td>
+                <td colspan="2">{{dataItem.factoryName}}</td>
+                <td colspan="2">淇濆吇鏃ユ湡</td>
+                <td colspan="6">{{dataItem.maintenanceDateFormatted}}</td>
               </tr>
 
               <tr>
-                <td colspan="18" style="text-align: left;padding: 5px">
-                  淇濆吇鍓嶆妧鏈姸鎬�<br/>
-                  1銆佽澶囧姛鑳芥槸鍚﹂綈鍏細{{+dataItem.fullyFunctional===1?'鏄紙鈭氾級鍚︼紙锛�':'鏄紙锛夊惁锛堚垰锛�'}}<br/>
-                  2銆佽澶囪兘鍚︽甯歌繍杞紝婊¤冻鍔犲伐瑕佹眰锛歿{+dataItem.runningNormally===1?'鏄紙鈭氾級鍚︼紙锛�':'鏄紙锛夊惁锛堚垰锛�'}}<br/>
-                  3銆侀棶棰樻弿杩帮細{{dataItem.problemDescription}}
+                <td colspan="12" style="padding: 5px">
+                  <div style="text-align: left;">淇濆吇鍓嶆妧鏈姸鎬�</div>
+                  <div style="text-align: left;">1銆佽澶囧姛鑳芥槸鍚﹂綈鍏細{{+dataItem.fullyFunctional===1?'鏄紙鈭氾級鍚︼紙锛�':'鏄紙锛夊惁锛堚垰锛�'}}</div>
+                  <div style="text-align: left;">
+                    2銆佽澶囪兘鍚︽甯歌繍杞紝婊¤冻鍔犲伐瑕佹眰锛歿{+dataItem.runningNormally===1?'鏄紙鈭氾級鍚︼紙锛�':'鏄紙锛夊惁锛堚垰锛�'}}
+                  </div>
+                  <div style="text-align: left;">3銆侀棶棰樻弿杩帮細{{dataItem.problemDescription}}</div>
                 </td>
               </tr>
 
               <tr>
-                <td colspan="18" style="text-align: left;padding: 5px">
-                  淇濆吇鍐呭<br/>
-                  1銆佹寜鐓т笁绾т繚鍏昏鑼冭繘琛屼繚鍏汇��<br/>
-                  2銆佸鏁存敼鎯呭喌杩涜鎻忚堪銆�
+                <td colspan="12" style="padding: 5px">
+                  <div style="text-align: left;">淇濆吇鍐呭</div>
+                  <div style="text-align: left;">1銆佹寜鐓т笁绾т繚鍏昏鑼冭繘琛屼繚鍏汇��</div>
+                  <div style="text-align: left;">2銆佸鏁存敼鎯呭喌杩涜鎻忚堪銆�</div>
                 </td>
               </tr>
 
               <tr>
-                <td colspan="18" style="text-align: left;padding: 5px">
-                  淇悊鏇存崲澶囦欢鏄庣粏锛�
+                <td colspan="12" style="padding: 5px">
+                  <div style="text-align: left;">淇悊鏇存崲澶囦欢鏄庣粏锛�</div>
                 </td>
               </tr>
 
               <tr>
-                <td colspan="3">搴忓彿</td>
-                <td colspan="3">鍚嶇О</td>
-                <td colspan="3">鍨嬪彿</td>
-                <td colspan="3">鏁伴噺</td>
-                <td colspan="6">澶囨敞</td>
+                <td colspan="2">搴忓彿</td>
+                <td colspan="2">鍚嶇О</td>
+                <td colspan="2">鍨嬪彿</td>
+                <td colspan="2">鏁伴噺</td>
+                <td colspan="4">澶囨敞</td>
               </tr>
 
               <tr v-for="item in dataItem.eamThirdMaintenanceSpareList">
-                <td colspan="3">{{item.spareCode}}</td>
-                <td colspan="3">{{item.spareName}}</td>
-                <td colspan="3">{{item.spareModel}}</td>
-                <td colspan="3">{{item.spareQuantity}}</td>
-                <td colspan="6">{{item.remark}}</td>
+                <td colspan="2">{{item.spareCode}}</td>
+                <td colspan="2">{{item.spareName}}</td>
+                <td colspan="2">{{item.spareModel}}</td>
+                <td colspan="2">{{item.spareQuantity}}</td>
+                <td colspan="4">{{item.remark}}</td>
               </tr>
 
               <tr>
-                <td colspan="18" style="text-align: left;padding: 5px">
-                  璇ヨ澶囩粡涓夌骇淇濆吇妫�鏌ュ悗锛岃揪鍒颁繚鍏昏鑼冭姹傘��
-                  <br/><br/><br/>
-                  <div style="display: flex;justify-content: space-between">
-                    <div>鎿嶄綔浜哄憳锛歿{dataItem.operatorSignature_dictText}}</div>
-                    <div>缁翠慨瀹や富浠伙細{{dataItem.repairManagerSignature_dictText}}</div>
-                    <br/><br/><br/>
-                  </div>
+                <td colspan="12" style="padding: 5px">
+                  <div style="text-align: left;">璇ヨ澶囩粡涓夌骇淇濆吇妫�鏌ュ悗锛岃揪鍒颁繚鍏昏鑼冭姹傘��</div>
+                  <br/><br/>
+                  <template v-if="handleMethod===1">
+                    <div style="text-align: left">
+                      <span>鎿嶄綔浜哄憳锛歿{dataItem.operatorSignature_dictText}}</span>
+                      <span v-for="item in 30">&nbsp;</span>
+                      <span>缁翠慨瀹や富浠伙細{{dataItem.repairManagerSignature_dictText}}</span>
+                    </div>
+                    <br/><br/>
+                    <div style="text-align: left">
+                      <span>缁翠慨浜哄憳锛歿{dataItem.repairmanSignature_dictText}}</span>
+                      <span v-for="item in 30">&nbsp;</span>
+                      <span>璁惧妫�楠屽憳锛歿{dataItem.inspectorSignature_dictText}}</span>
+                    </div>
+                  </template>
 
-
-                  <div style="display: flex;justify-content: space-between">
-                    <div>缁翠慨浜哄憳锛歿{dataItem.repairmanSignature_dictText}}</div>
-                    <div>璁惧妫�楠屽憳锛歿{dataItem.inspectorSignature_dictText}}</div>
-                    <br/>
-                  </div>
+                  <template v-if="handleMethod===2">
+                    <div style="text-align: left">
+                      <span style="margin-right: 50%">鎿嶄綔浜哄憳锛歿{dataItem.operatorSignature_dictText}}</span>
+                      <span>缁翠慨瀹や富浠伙細{{dataItem.repairManagerSignature_dictText}}</span>
+                    </div>
+                    <br/><br/>
+                    <div style="text-align: left">
+                      <span style="margin-right: 50%">缁翠慨浜哄憳锛歿{dataItem.repairmanSignature_dictText}}</span>
+                      <span>璁惧妫�楠屽憳锛歿{dataItem.inspectorSignature_dictText}}</span>
+                    </div>
+                  </template>
+                  <br/>
                 </td>
               </tr>
               </tbody>
@@ -161,8 +187,8 @@
 
     <template slot="footer">
       <a-button @click="handleCancel">鍏抽棴</a-button>
-      <a-button type="primary" @click="handleImport">瀵煎嚭</a-button>
-      <a-button type="primary" v-print="'#dataTable'">鎵撳嵃</a-button>
+      <a-button type="primary" @click="handleExportToExcel">瀵煎嚭</a-button>
+      <a-button type="primary" @click="handleMethod = 2" v-print="'#dataTable'">鎵撳嵃</a-button>
     </template>
   </j-modal>
 </template>
@@ -179,17 +205,8 @@
         visible: false,
         spinning: false,
         tableType: null,
-        dataSource: [
-          {
-            hfCode: 'HF-16548ASDSADA',
-            equipmentName: '鎵嬫墦鍗佺偣澶�',
-            equipmentModel: '6500P',
-            equipmentCode: '2125400',
-            factoryName: '鐕冩満鍘�',
-            maintenanceDateFormatted: '2025骞�5鏈�20鏃�'
-
-          }
-        ],
+        handleMethod: 2,
+        dataSource: [],
         url: {
           list1: '/eam/thirdMaintenanceOrder/batchExportCheck',
           list2: '/eam/thirdMaintenanceOrder/batchExport'
@@ -235,10 +252,8 @@
                     res1.result.forEach(item1 => {
                       for (let i = 0; i < res2.result.length; i++) {
                         if (item1.id === res2.result[i].id) {
-                          console.log('res2', res2.result)
                           const dataItem = { ...item1, ...res2.result[i] }
                           that.dataSource.push(dataItem)
-                          console.log('item1', item1)
                           break
                         }
                       }
@@ -275,23 +290,25 @@
             k = i
           }
         })
-        console.log('dataSource', this.dataSource)
       },
 
-      handleImport() {
-        document.querySelectorAll('table.import-table').forEach(item => {
-          console.log('item', item)
-          $(item).table2excel({
-            exclude: '.noExl',
-            name: 'Excel Document Name',
-            filename: item.id,
-            exclude_img: true,
-            fileext: '.xls',
-            exclude_links: true,
-            exclude_inputs: false
+      // 瀵煎嚭鍒癊xcel
+      handleExportToExcel() {
+        this.handleMethod = 1
+        this.$nextTick(() => {
+          document.querySelectorAll('table.import-table').forEach(item => {
+            console.log('item', item)
+            $(item).table2excel({
+              exclude: '.noExl',
+              name: 'Excel Document Name',
+              filename: item.id,
+              exclude_img: true,
+              fileext: '.xls',
+              exclude_links: true,
+              exclude_inputs: false
+            })
           })
         })
-
       },
 
       handleCancel() {

--
Gitblit v1.9.3