| | |
| | | import signageApi from '@/api/signage' |
| | | import moment from 'moment' |
| | | import SignageModal from './modules/SignageModal' |
| | | import * as echarts from 'echarts' |
| | | |
| | | export default { |
| | | name: 'IndexSignage', |
| | |
| | | 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.setOption(option, true) |
| | | this.techConditionChart.hideLoading() |
| | | |
| | | 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.modalVisible = true |
| | | }) |
| | | // 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.modalVisible = true |
| | | // }) |
| | | }, |
| | | |
| | | /* 绘制设备报修故障饼图 */ |
| | |
| | | this.warrantyMalfunctionChart.setOption(option, true) |
| | | this.warrantyMalfunctionChart.hideLoading() |
| | | |
| | | 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.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.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'] |
| | | } |
| | | }, |
| | |
| | | * @param record 点击当前三保信息 |
| | | */ |
| | | openMaintenanceModal(record) { |
| | | this.modalTitle = record.planTime |
| | | this.modalDataApiUrl = record.apiUrl |
| | | this.modalVisible = true |
| | | // this.modalTitle = record.planTime |
| | | // this.modalDataApiUrl = record.apiUrl |
| | | // this.modalVisible = true |
| | | }, |
| | | |
| | | re_drawPieChart() { |