| | |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div style="padding: 0 55px;margin-top: 10px"> |
| | | <div style="padding: 0 55px;margin-top : 10px"> |
| | | <dv-scroll-board :config="maintenanceConfig" style="width:100%;height:220px"/> |
| | | </div> |
| | | </dv-border-box-9> |
| | |
| | | import signageApi from '@/api/signage' |
| | | import moment from 'moment' |
| | | import SignageModal from './modules/SignageModal' |
| | | import * as echarts from 'echarts' |
| | | |
| | | export default { |
| | | name: 'IndexSignage', |
| | |
| | | planTime: '本月三保计划', |
| | | planValueLabel: 'thisMonthMaintenancePlanNum', |
| | | backgroundColor: '#719D8E', |
| | | apiUrl: '/eam/calibrationOrder/showThisMonthMaintenanceList' |
| | | code: 'bysbzs' |
| | | }, |
| | | { |
| | | planTime: '本月完成', |
| | | planValueLabel: 'thisMonthMaintenanceRealNum', |
| | | backgroundColor: '#409EFF', |
| | | apiUrl: '/eam/calibrationOrder/showThisMonthMaintenanceFinishList' |
| | | code: 'bwc' |
| | | }, |
| | | { |
| | | planTime: '下月三保计划', |
| | | planValueLabel: 'nextMonthMaintenancePlanNum', |
| | | backgroundColor: '#A8985D', |
| | | apiUrl: '/eam/calibrationOrder/showNextMonthMaintenanceList' |
| | | code: 'xysb' |
| | | }, |
| | | { |
| | | planTime: '下下月三保计划', |
| | | planValueLabel: 'nextNextMonthMaintenancePlanNum', |
| | | backgroundColor: '#58D9F9', |
| | | apiUrl: '/eam/calibrationOrder/showNextNextMonthMaintenanceList' |
| | | code: 'xxysb' |
| | | } |
| | | ], |
| | | thisMonthMaintenancePlanNum: 0, |
| | |
| | | getChartDataByApi() { |
| | | this.getRunningStateDataByApi() |
| | | this.getEfficiencyDataByApi() |
| | | // this.getTechConditionDataByApi() |
| | | // this.getWarrantyMalfunctionDataByApi() |
| | | this.getTechConditionAndWarrantyMalfunctionDataByApi() |
| | | this.getThirdMaintenanceConditionByApi() |
| | | this.getTwoMaintenanceChartDataByApi() |
| | |
| | | text: '数据加载中 ...', |
| | | color: '#0696e1', // 加载动画颜色 |
| | | textColor: 'rgba(0, 0, 0, .45)', |
| | | maskColor: 'rgba(0,0,0,.05)' // 遮罩层 |
| | | maskColor: 'transparent' // 遮罩层 |
| | | }) |
| | | signageApi.getEquipmentStatusStatisticsApi() |
| | | .then(res => { |
| | |
| | | text: '数据加载中 ...', |
| | | color: '#0696e1', // 加载动画颜色 |
| | | textColor: 'rgba(0, 0, 0, .45)', |
| | | maskColor: 'rgba(0,0,0,.05)' // 遮罩层 |
| | | maskColor: 'transparent' // 遮罩层 |
| | | }) |
| | | signageApi.getEquipmentUtilizationStatisticsApi() |
| | | .then(res => { |
| | |
| | | text: '数据加载中 ...', |
| | | color: '#0696e1', // 加载动画颜色 |
| | | textColor: 'rgba(0, 0, 0, .45)', |
| | | maskColor: 'rgba(0,0,0,.05)' // 遮罩层 |
| | | maskColor: 'transparent' // 遮罩层 |
| | | }) |
| | | this.warrantyMalfunctionChart.showLoading({ |
| | | text: '数据加载中 ...', |
| | | color: '#0696e1', // 加载动画颜色 |
| | | textColor: 'rgba(0, 0, 0, .45)', |
| | | maskColor: 'rgba(0,0,0,.05)' // 遮罩层 |
| | | maskColor: 'transparent' // 遮罩层 |
| | | }) |
| | | signageApi.getEquipmentTechnologyStatusAndReportRepairEquipmentListApi() |
| | | .then(res => { |
| | |
| | | } |
| | | ] |
| | | 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' } |
| | | { value: res.result.bxqk.find(item => item.code === 'bx').value, name: '报修', code: 'bx' }, |
| | | { value: res.result.bxqk.find(item => item.code === 'stop').value, name: '停机', code: 'stop' }, |
| | | { value: res.result.bxqk.find(item => item.code === 'run').value, name: '运行', code: 'run' } |
| | | ] |
| | | this.techConditionChartRequireFinished = true |
| | | this.warrantyMalfunctionChartRequireFinished = true |
| | |
| | | text: '数据加载中 ...', |
| | | color: '#0696e1', // 加载动画颜色 |
| | | textColor: 'rgba(0, 0, 0, .45)', |
| | | maskColor: 'rgba(0,0,0,.05)' // 遮罩层 |
| | | maskColor: 'transparent' // 遮罩层 |
| | | }) |
| | | signageApi.getEquipmentOEEStatistics() |
| | | .then(res => { |
| | |
| | | text: '数据加载中 ...', |
| | | color: '#0696e1', // 加载动画颜色 |
| | | textColor: 'rgba(0, 0, 0, .45)', |
| | | maskColor: 'rgba(0,0,0,.05)' // 遮罩层 |
| | | maskColor: 'transparent' // 遮罩层 |
| | | }) |
| | | signageApi.getEquipmentMonthStatisticsApi() |
| | | .then(res => { |
| | |
| | | getWorkshopProblemChartDataByApi() { |
| | | signageApi.getWorkshopProblemListApi() |
| | | .then(res => { |
| | | if (res.success && res.result.length > 0) this.workshopProblemChartData = res.result.map(item => [item.content, item.createTime]) |
| | | if (res.success && res.result.length > 0) this.workshopProblemChartData = res.result.map(item => [item.createTime, item.content]) |
| | | this.drawWorkshopProblemChart() |
| | | }) |
| | | }, |
| | |
| | | |
| | | /* 绘制设备利用率胶囊图 */ |
| | | drawEfficiencyChart() { |
| | | 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 data = this.efficiencyData |
| | | const defaultData = [] |
| | | const dataMax = data.length > 0 ? +data.sort((x, y) => +y.value - +x.value)[0].value : 0 |
| | |
| | | show: false |
| | | }, |
| | | splitLine: { |
| | | show: false |
| | | show: true |
| | | } |
| | | }, |
| | | yAxis: [{ |
| | | yAxis: { |
| | | type: 'category', |
| | | inverse: true, |
| | | triggerEvent: true, |
| | |
| | | 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: 'TEEP', |
| | | type: 'bar', |
| | | zlevel: 1, |
| | | itemStyle: { |
| | | barBorderRadius: 100, |
| | | color: '#5070DD' |
| | | 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 |
| | | }] |
| | | } |
| | | } |
| | | }, |
| | | barWidth: 12, |
| | | label: { |
| | | show: true, |
| | | position: 'inside', |
| | | color: '#fff' |
| | | }, |
| | | barWidth: 18, |
| | | data: data |
| | | } |
| | | } |
| | |
| | | |
| | | this.techConditionChart.on('click', params => { |
| | | this.modalTitle = `技术状态(${params.name})` |
| | | this.modalDataApiParams = { |
| | | technologyStatus: this.techConditionData.find(item => item.name === params.name).technologyStatus |
| | | } |
| | | this.modalDataApiUrl = '/eam/calibrationOrder/showEquipmentByTechnologyStatus' |
| | | this.modalDataApiParams = { technologyStatus: this.techConditionData.find(item => item.name === params.name).technologyStatus } |
| | | this.modalDataApiUrl = '/eam/equipment/list' |
| | | this.modalVisible = true |
| | | }) |
| | | }, |
| | |
| | | |
| | | this.warrantyMalfunctionChart.on('click', params => { |
| | | this.modalTitle = `报修故障(${params.name})` |
| | | this.modalDataApiParams = { |
| | | isStop: this.warrantyMalfunctionData.find(item => item.name === params.name).isStop |
| | | } |
| | | this.modalDataApiUrl = '/eam/calibrationOrder/showEquipmentByReportRepair' |
| | | this.modalDataApiParams = { code: this.warrantyMalfunctionData.find(item => item.name === params.name).code } |
| | | this.modalDataApiUrl = '/eam/home/repairList' |
| | | this.modalVisible = true |
| | | }) |
| | | }, |
| | |
| | | indexHeader: '序号', |
| | | header: ['车间', '日期', '内容'], |
| | | headerBGC: '#266C86', |
| | | oddRowBGC: '#0A2732', |
| | | evenRowBGC: '#003B51', |
| | | oddRowBGC: '#003B51', |
| | | evenRowBGC: '#0A2732', |
| | | data: this.twoMaintenanceChartData, |
| | | index: true, |
| | | columnWidth: [100, 300, 300, 300], |
| | |
| | | |
| | | /* 绘制单柱图 */ |
| | | drawBarChart() { |
| | | const colorArray = ['#79CEAA', '#F589A2', '#6FBF9D', '#66DFE2', '#A7F0C1', '#FAE893', '#F7B7A0'] |
| | | const defaultData = [] |
| | | const dataMax = this.barChartData.length > 0 ? +this.barChartData.sort((x, y) => +y.value - +x.value)[0].value : 0 |
| | | let yAxisMax |
| | |
| | | data: this.barChartData.map(item => item.productionId), |
| | | axisLine: { |
| | | lineStyle: { |
| | | color: '#FFFFFF' |
| | | color: 'rgba(0,0,0,.45)' |
| | | } |
| | | }, |
| | | axisLabel: { |
| | |
| | | interval: yAxisInterval, |
| | | axisLabel: { |
| | | formatter: '{value}', |
| | | color: '#fff', |
| | | fontSize: 14 |
| | | }, |
| | | axisTick: { |
| | |
| | | axisLine: { |
| | | show: false, |
| | | lineStyle: { |
| | | color: '#FFFFFF' |
| | | color: 'rgba(0,0,0,.45)' |
| | | } |
| | | }, |
| | | splitLine: { |
| | |
| | | } |
| | | } |
| | | }], |
| | | series: [{ |
| | | type: 'bar', |
| | | data: this.barChartData, |
| | | barWidth: this.barChartData.length > 5 ? '40%' : 30, |
| | | itemStyle: { |
| | | color: '#2E8BDA' |
| | | }, |
| | | zlevel: 1, |
| | | label: { |
| | | show: false, |
| | | 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: 'top', |
| | | textStyle: { |
| | | color: '#fff', |
| | | fontSize: 16 |
| | | 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', |
| | |
| | | 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` |
| | | this.barChart.setOption(option, true) |
| | |
| | | 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: 14, |
| | | color: '#fff' |
| | | color: 'rgba(0,0,0,.45)' |
| | | }, |
| | | axisTick: { |
| | | show: true |
| | |
| | | { |
| | | name: '%', |
| | | nameTextStyle: { |
| | | color: '#fff' |
| | | color: 'rgba(0,0,0,.45)' |
| | | }, |
| | | type: 'value', |
| | | min: 0, |
| | | minInterval: 1, |
| | | axisLine: { |
| | | show: true |
| | | show: true, |
| | | lineStyle: { |
| | | color: 'rgba(0,0,0,.45)' |
| | | } |
| | | }, |
| | | axisTick: { |
| | | show: true |
| | |
| | | }, |
| | | axisLabel: { |
| | | fontSize: 14, |
| | | color: '#fff', |
| | | 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 |
| | |
| | | fontSize: 14, |
| | | formatter: '{value}%', // 右侧Y轴文字显示 |
| | | fontFamily: 'Bebas', |
| | | color: '#6A93B9' |
| | | color: 'rgba(0,0,0,.45)' |
| | | }, |
| | | splitArea: { |
| | | show: false |
| | |
| | | }], |
| | | series: [{ |
| | | type: 'bar', |
| | | barWidth: 15, |
| | | itemStyle: { barBorderRadius: 100 }, |
| | | barWidth: 20, |
| | | itemStyle: { barBorderRadius: 4 }, |
| | | name: 'OEE', |
| | | data: this.doubleBarChartData.oeeList, |
| | | label: { |
| | |
| | | } |
| | | }, { |
| | | type: 'bar', |
| | | barWidth: 15, |
| | | itemStyle: { barBorderRadius: 100 }, |
| | | barWidth: 20, |
| | | itemStyle: { barBorderRadius: 4 }, |
| | | name: 'TEEP', |
| | | data: this.doubleBarChartData.utilizationList, |
| | | label: { |
| | |
| | | drawWorkshopProblemChart() { |
| | | this.problemConfig = { |
| | | indexHeader: '序号', |
| | | header: ['问题内容', '时间'], |
| | | header: ['时间', '问题内容'], |
| | | headerBGC: '#83B883', |
| | | oddRowBGC: '#556955', |
| | | evenRowBGC: '#556955', |
| | | data: this.workshopProblemChartData, |
| | | index: true, |
| | | columnWidth: [100, 300, 150], |
| | | columnWidth: [100, 200, 300], |
| | | align: ['center'] |
| | | } |
| | | }, |
| | |
| | | */ |
| | | openMaintenanceModal(record) { |
| | | this.modalTitle = record.planTime |
| | | this.modalDataApiUrl = record.apiUrl |
| | | this.modalDataApiParams = { code: record.code } |
| | | this.modalDataApiUrl = '/eam/home/maintenanceList' |
| | | this.modalVisible = true |
| | | }, |
| | | |