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"> </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"> </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