| | |
| | | { |
| | | planTime: '本月三保计划', |
| | | planValueLabel: 'thisMonthMaintenancePlanNum', |
| | | backgroundColor: '#5FE0AF', |
| | | backgroundColor: '#719D8E', |
| | | apiUrl: '/eam/calibrationOrder/showThisMonthMaintenanceList' |
| | | }, |
| | | { |
| | |
| | | { |
| | | planTime: '下月三保计划', |
| | | planValueLabel: 'nextMonthMaintenancePlanNum', |
| | | backgroundColor: '#D6BC52', |
| | | backgroundColor: '#A8985D', |
| | | apiUrl: '/eam/calibrationOrder/showNextMonthMaintenanceList' |
| | | }, |
| | | { |
| | |
| | | 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.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 => { |
| | |
| | | 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 => { |
| | |
| | | }) |
| | | }, |
| | | |
| | | /* 调用接口获取技术状态 */ |
| | | 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 |
| | | } |
| | | }) |
| | | }, |
| | | |
| | |
| | | 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() |
| | | }) |
| | | }, |
| | |
| | | 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() |
| | | } |
| | |
| | | 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 => { |
| | |
| | | height: 300, |
| | | title: { |
| | | show: true, // 是否显示标题,默认为true |
| | | text: '设备状态', // 主标题文本 |
| | | text: '设备运行状态统计', // 主标题文本 |
| | | x: 'center', // 标题水平安放位置,可选值为'left'、'center'、'right'或具体的水平坐标值 |
| | | y: 'top', // 标题垂直安放位置,可选值为'top'、'bottom'、'center'或具体的垂直坐标值 |
| | | textStyle: { |
| | |
| | | left: 0, |
| | | orient: 'vertical', |
| | | right: '10%', |
| | | // bottom: "0", |
| | | itemWidth: 14, |
| | | itemHeight: 14, |
| | | icon: 'roundRect', |
| | |
| | | radius: this.pieChartRadius, |
| | | center: ['50%', '60%'], |
| | | color: [ |
| | | '#8B8B8B', |
| | | '#F56436', |
| | | '#FFFF40', |
| | | '#0FC61A' |
| | | '#686869', |
| | | '#AA6349', |
| | | '#EAEA7C', |
| | | '#5D975D' |
| | | ], |
| | | label: { |
| | | position: 'outside', |
| | |
| | | /* 绘制设备利用率胶囊图 */ |
| | | 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整除的数字 |
| | |
| | | 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, |
| | |
| | | axisLabel: { |
| | | show: true, |
| | | textStyle: { |
| | | color: '#fff', |
| | | color: 'rgba(0,0,0,.45)', |
| | | fontSize: '14', |
| | | fontWeight: 'bolder' |
| | | }, |
| | |
| | | }, |
| | | data: data |
| | | }], |
| | | series: [{ |
| | | name: '利用率', |
| | | 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月D日')}利用率` |
| | | option.title.text = `${moment().subtract(1, 'days').format('M月D日')}TEEP` |
| | | this.efficiencyChart.setOption(option, true) |
| | | this.efficiencyChart.hideLoading() |
| | | this.efficiencyChart.on('click', params => { |
| | |
| | | radius: this.pieChartRadius, |
| | | center: ['45%', '60%'], |
| | | color: [ |
| | | '#0FC61A', |
| | | '#F56436', |
| | | '#8B8B8B' |
| | | '#0AA012', |
| | | '#247F49', |
| | | '#757160' |
| | | ], |
| | | label: { |
| | | position: 'outside', |
| | |
| | | height: 300, |
| | | title: { |
| | | show: true, // 是否显示标题,默认为true |
| | | text: '设备报修故障', // 主标题文本 |
| | | text: '设备报修故障情况', // 主标题文本 |
| | | x: 'center', // 标题水平安放位置,可选值为'left'、'center'、'right'或具体的水平坐标值 |
| | | y: 'top', // 标题垂直安放位置,可选值为'top'、'bottom'、'center'或具体的垂直坐标值 |
| | | textStyle: { |
| | |
| | | radius: this.pieChartRadius, |
| | | center: ['45%', '60%'], |
| | | color: [ |
| | | '#24F2F5', |
| | | '#F56436', |
| | | '#FFFF40' |
| | | '#00CED1', |
| | | '#B85B38', |
| | | '#EAEA7C' |
| | | ], |
| | | label: { |
| | | position: 'outside', |
| | |
| | | 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], |
| | |
| | | /* 绘制单柱图 */ |
| | | 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整除的数字 |
| | |
| | | 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: { |
| | |
| | | barGap: '-100%', |
| | | data: defaultData, |
| | | itemStyle: { |
| | | color: '#11294d', |
| | | barBorderRadius: 100 |
| | | color: '#11294d' |
| | | } |
| | | }] |
| | | } |
| | |
| | | /* 绘制双柱图 */ |
| | | drawDoubleBarChart() { |
| | | const option = { |
| | | color: ['#66DFE2', '#79CEAA'], |
| | | color: ['#4992FF', '#4DC0B1'], |
| | | tooltip: { |
| | | confine: true, |
| | | formatter: function(params) { |
| | |
| | | formatter: ['{a|{name}}'].join('\n'), |
| | | textStyle: { |
| | | fontSize: 14, |
| | | color: '#fff', |
| | | color: 'rgba(0, 0, 0, .45)', |
| | | height: 8, |
| | | rich: { |
| | | a: { |
| | |
| | | } |
| | | } |
| | | }, |
| | | data: ['OEE', '利用率'] |
| | | data: ['OEE', 'TEEP'] |
| | | }, |
| | | xAxis: { |
| | | type: 'category', |
| | |
| | | type: 'bar', |
| | | barWidth: 15, |
| | | itemStyle: { barBorderRadius: 100 }, |
| | | name: '利用率', |
| | | name: 'TEEP', |
| | | data: this.doubleBarChartData.utilizationList, |
| | | label: { |
| | | show: false, |
| | |
| | | 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], |