¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <div class="page-container"> |
| | | <!--<div class="page-title">--> |
| | | <!--<slot name="index_signage_nav"></slot>--> |
| | | <!--<!–<dv-decoration-11 class="workshop-nav" v-for="item in workshopList">–>--> |
| | | <!--<!–{{item.workshopName}}–>--> |
| | | <!--<!–</dv-decoration-11>–>--> |
| | | <!--</div>--> |
| | | <div class="content-container"> |
| | | <div style="width: 25%" class="left-col"> |
| | | <dv-border-box-9 style="padding: 30px 20px"> |
| | | <!--<div class="first-title">M D C å
¥ ç½ æ» æ° : 6 0 3 å°</div>--> |
| | | <div id="running_state_chart" style="width:100%;height: 300px;margin-top: 10px"></div> |
| | | <!--<div class="second-title">设å¤å©ç¨ç</div>--> |
| | | <!--<dv-capsule-chart :config="efficiencyChartConfig" style="width:100%;height:460px"/>--> |
| | | <div id="efficiency_chart" style="width: 100%;height: 465px"></div> |
| | | </dv-border-box-9> |
| | | </div> |
| | | <div style="width: 42%" class="middle-col"> |
| | | <dv-border-box-9 style="padding: 30px 20px"> |
| | | <!--<div class="first-title">设 å¤ å° è´¦ æ» æ° : 1 0 2 2 å°</div>--> |
| | | <div style="display: flex"> |
| | | <div id="tech_condition_chart" style="width:50%;height: 330px;margin-top: 10px"></div> |
| | | <div id="warranty_malfunction_chart" style="width:50%;height: 330px;margin-top: 10px"></div> |
| | | </div> |
| | | <div class="support-plan-container"> |
| | | <!--<div v-for="item in supportPlanList" class="support-plan-item"--> |
| | | <!--:style="{background:item.background}">--> |
| | | <!--<div>{{item.label}}</div>--> |
| | | <!--<div class="plan-value-container">--> |
| | | <!--<div class="plan-value">{{item.value}}</div>--> |
| | | <!--<div>å°</div>--> |
| | | <!--</div>--> |
| | | <!--</div>--> |
| | | <div class="support-plan-item" style="background:#719D8E"> |
| | | <div>æ¬æä¸ä¿è®¡å</div> |
| | | <div class="plan-value-container"> |
| | | <div class="plan-value">{{thisMonthMaintenancePlanNum}}</div> |
| | | <div>å°</div> |
| | | </div> |
| | | </div> |
| | | <div class="support-plan-item" style="background:#409EFF"> |
| | | <div>æ¬æå®æ</div> |
| | | <div class="plan-value-container"> |
| | | <div class="plan-value">{{thisMonthMaintenanceRealNum}}</div> |
| | | <div>å°</div> |
| | | </div> |
| | | </div> |
| | | <div class="support-plan-item" style="background:#A8985D"> |
| | | <div>䏿ä¸ä¿è®¡å</div> |
| | | <div class="plan-value-container"> |
| | | <div class="plan-value">{{nextMonthMaintenancePlanNum}}</div> |
| | | <div>å°</div> |
| | | </div> |
| | | </div> |
| | | <div class="support-plan-item" style="background:#58D9F9"> |
| | | <div>ä¸ä¸æä¸ä¿è®¡å</div> |
| | | <div class="plan-value-container"> |
| | | <div class="plan-value">{{nextNextMonthMaintenancePlanNum}}</div> |
| | | <div>å°</div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div style="padding: 0 55px;margin-top: 10px"> |
| | | <dv-scroll-board :config="maintenanceConfig" style="width:100%;height:220px"/> |
| | | </div> |
| | | </dv-border-box-9> |
| | | </div> |
| | | <div style="width: 32%"> |
| | | <dv-border-box-9> |
| | | <div id="bar_chart" style="width:100%;height: 290px;"></div> |
| | | <div id="double_bar_chart" style="width:100%;height: 285px;"></div> |
| | | <div style="padding: 0 20px;margin-top: 10px"> |
| | | <dv-scroll-board :config="problemConfig" style="width:100%;height:220px"/> |
| | | </div> |
| | | </dv-border-box-9> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import signageApi from '@/api/signage' |
| | | |
| | | export default { |
| | | name: 'IndexSignage', |
| | | data() { |
| | | return { |
| | | runningStateChart: '', |
| | | runningStateData: [ |
| | | { value: '0', name: 'å
³æº' }, |
| | | { value: '0', name: 'æ¥è¦' }, |
| | | { value: '0', name: 'å¾
æº' }, |
| | | { value: '0', name: 'è¿è¡' } |
| | | ], |
| | | efficiencyChart: '', |
| | | efficiencyData: [], |
| | | techConditionChart: '', |
| | | techConditionData: [ |
| | | { value: '0', name: 'åæ ¼' }, |
| | | { value: '0', name: 'ç¦ç¨' }, |
| | | { value: '0', name: 'éç¨' } |
| | | ], |
| | | warrantyMalfunctionChart: '', |
| | | warrantyMalfunctionData: [ |
| | | { value: '12', name: 'æ¥ä¿®' }, |
| | | { value: '10', name: 'åæº' }, |
| | | { value: '8', name: 'è¿è¡' } |
| | | ], |
| | | thisMonthMaintenancePlanNum: 0, |
| | | thisMonthMaintenanceRealNum: 0, |
| | | nextMonthMaintenancePlanNum: 0, |
| | | nextNextMonthMaintenancePlanNum: 0, |
| | | twoMaintenanceChartData: [['-', '-', '-']], |
| | | barChart: '', |
| | | barChartData: [], |
| | | doubleBarChart: '', |
| | | doubleBarChartData: {}, |
| | | efficiencyChartConfig: {}, |
| | | maintenanceConfig: {}, |
| | | problemConfig: {} |
| | | } |
| | | }, |
| | | mounted() { |
| | | window.addEventListener('resize', this.handleWindowResize) |
| | | this.drawCharts() |
| | | this.getChartDataByApi() |
| | | }, |
| | | activated() { |
| | | console.log('触åactivated') |
| | | this.handleWindowResize() |
| | | }, |
| | | beforeDestroy() { |
| | | window.removeEventListener('resize', this.handleWindowResize) |
| | | }, |
| | | methods: { |
| | | getChartDataByApi() { |
| | | this.getRunningStateDataByApi() |
| | | this.getEfficiencyDataByApi() |
| | | this.getTechConditionDataByApi() |
| | | this.getWarrantyMalfunctionDataByApi() |
| | | this.getMonthMaintenanceNumByApi() |
| | | this.getTwoMaintenanceChartDataByApi() |
| | | this.getBarChartDataByApi() |
| | | this.getDoubleBarChartDataByApi() |
| | | }, |
| | | |
| | | /* è°ç¨æ¥å£è·å设å¤è¿è¡ç¶æ */ |
| | | getRunningStateDataByApi() { |
| | | signageApi.getEquipmentStatusStatisticsApi() |
| | | .then(res => { |
| | | if (res.success) this.runningStateData = res.result |
| | | this.drawRunningStateChart() |
| | | }) |
| | | }, |
| | | |
| | | /* è°ç¨æ¥å£è·å设å¤å©ç¨ç */ |
| | | getEfficiencyDataByApi() { |
| | | signageApi.getEquipmentUtilizationStatisticsApi() |
| | | .then(res => { |
| | | if (res.success) this.efficiencyData = res.result |
| | | this.drawEfficiencyChart() |
| | | }) |
| | | }, |
| | | |
| | | /* è°ç¨æ¥å£è·åææ¯ç¶æ */ |
| | | getTechConditionDataByApi() { |
| | | signageApi.getEquipmentTechnologyStatusListApi() |
| | | .then(res => { |
| | | if (res.success) { |
| | | this.techConditionData = [ |
| | | { value: res.result[0].qualifiedCount, name: 'åæ ¼' }, |
| | | { value: res.result[0].disabledCount, name: 'ç¦ç¨' }, |
| | | { value: res.result[0].limitedUseCount, name: 'éç¨' } |
| | | ] |
| | | } |
| | | this.drawTechConditionChart() |
| | | }) |
| | | }, |
| | | |
| | | /* è°ç¨æ¥å£è·åè®¾å¤æ¥ä¿®æ
é */ |
| | | getWarrantyMalfunctionDataByApi() { |
| | | signageApi.getReportRepairEquipmentListApi() |
| | | .then(res => { |
| | | if (res.success) { |
| | | this.warrantyMalfunctionData = [ |
| | | { value: res.result[0].failurTotalCount, name: 'æ¥ä¿®' }, |
| | | { value: res.result[0].stopCount, name: 'åæº' }, |
| | | { value: res.result[0].noStopCount, name: 'è¿è¡' } |
| | | ] |
| | | } |
| | | this.drawWarrantyMalfunctionChart() |
| | | }) |
| | | }, |
| | | |
| | | /* è°ç¨æ¥å£è·åä¸ä¿è®¡å */ |
| | | getMonthMaintenanceNumByApi() { |
| | | signageApi.getThisMonthMaintenanceListApi() |
| | | .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 |
| | | }) |
| | | }, |
| | | |
| | | /* è°ç¨æ¥å£è·åäºä¿è®¡å */ |
| | | getTwoMaintenanceChartDataByApi() { |
| | | signageApi.getTwoMaintenancePlanListApi() |
| | | .then(res => { |
| | | if (res.success && res.result) this.twoMaintenanceChartData = res.result.map(item => [item.centerName, item.maintenanceDate, item.content]) |
| | | this.drawMaintenanceChart() |
| | | }) |
| | | }, |
| | | |
| | | /* è°ç¨æ¥å£è·å设å¤OEEç»è®¡ */ |
| | | getBarChartDataByApi() { |
| | | signageApi.getEquipmentOEEStatistics() |
| | | .then(res => { |
| | | if (res.success) this.barChartData = res.result |
| | | this.drawBarChart() |
| | | }) |
| | | }, |
| | | |
| | | /* è°ç¨æ¥å£è·å设å¤OEEåå©ç¨çå¯¹æ¯ */ |
| | | getDoubleBarChartDataByApi() { |
| | | signageApi.getEquipmentMonthStatisticsApi() |
| | | .then(res => { |
| | | if (res.success) this.doubleBarChartData = res.result |
| | | this.drawDoubleBarChart() |
| | | }) |
| | | }, |
| | | |
| | | /* ç»å¶å¾è¡¨æ±æ»æ¹æ³ */ |
| | | drawCharts() { |
| | | this.drawRunningStateChart() |
| | | this.drawEfficiencyChart() |
| | | this.drawTechConditionChart() |
| | | this.drawWarrantyMalfunctionChart() |
| | | this.drawMaintenanceChart() |
| | | this.drawBarChart() |
| | | this.drawDoubleBarChart() |
| | | this.drawProblemChart() |
| | | }, |
| | | |
| | | /* ç»å¶è®¾å¤è¿è¡ç¶æç«ç°é¥¼å¾ */ |
| | | drawRunningStateChart() { |
| | | this.runningStateChart = this.$echarts.init(document.getElementById('running_state_chart')) |
| | | const option = { |
| | | height: 300, |
| | | title: { |
| | | show: true, // æ¯å¦æ¾ç¤ºæ é¢ï¼é»è®¤ä¸ºtrue |
| | | text: '设å¤è¿è¡ç¶æç»è®¡', // 主æ é¢ææ¬ |
| | | x: 'center', // æ 颿°´å¹³å®æ¾ä½ç½®ï¼å¯éå¼ä¸º'left'ã'center'ã'right'æå
·ä½çæ°´å¹³åæ å¼ |
| | | y: 'top', // æ é¢åç´å®æ¾ä½ç½®ï¼å¯éå¼ä¸º'top'ã'bottom'ã'center'æå
·ä½çåç´åæ å¼ |
| | | textStyle: { |
| | | // 主æ é¢ææ¬æ ·å¼ |
| | | fontSize: 18, |
| | | fontWeight: 'normal', |
| | | color: '#00A8AC' |
| | | } |
| | | }, |
| | | tooltip: { |
| | | trigger: 'item', |
| | | formatter: function(params) { |
| | | if (params.name !== '') { |
| | | return `${params.name}:${params.value}(${params.percent}%)` |
| | | } |
| | | } |
| | | }, |
| | | legend: { |
| | | top: 25, |
| | | left: 0, |
| | | orient: 'vertical', |
| | | right: '10%', |
| | | // bottom: "0", |
| | | itemWidth: 14, |
| | | itemHeight: 14, |
| | | icon: 'roundRect', |
| | | itemGap: 15, |
| | | textStyle: { |
| | | color: 'inherit', |
| | | fontSize: 14, |
| | | padding: [0, 0, 0, 0] |
| | | }, |
| | | data: ['å
³æº', 'æ¥è¦', 'å¾
æº', 'è¿è¡'] |
| | | }, |
| | | grid: { |
| | | containLabel: true |
| | | }, |
| | | series: [ |
| | | { |
| | | type: 'pie', |
| | | roseType: 'angle', // ç«ç°å¾ |
| | | // selectedMode: "single", |
| | | radius: ['40%', '55%'], |
| | | center: ['50%', '60%'], |
| | | color: [ |
| | | '#686869', |
| | | '#AA6349', |
| | | '#968A5E', |
| | | '#5D975D' |
| | | ], |
| | | label: { |
| | | position: 'outside', |
| | | show: true, |
| | | color: 'inherit', |
| | | // textBorderColor: 'inherit', |
| | | // textBorderWidth: 1, |
| | | fontSize: 16, |
| | | formatter: function(params) { |
| | | if (params.name !== '') { |
| | | return `${params.name}:${params.value}` |
| | | } |
| | | } |
| | | }, |
| | | labelLine: { |
| | | show: true, |
| | | length2: 10, |
| | | length: 10 |
| | | }, |
| | | data: this.runningStateData |
| | | } |
| | | ] |
| | | } |
| | | this.runningStateChart.setOption(option, true) |
| | | }, |
| | | |
| | | /* ç»å¶è®¾å¤å©ç¨çè¶åå¾ */ |
| | | drawEfficiencyChart() { |
| | | this.efficiencyChart = this.$echarts.init(document.getElementById('efficiency_chart')) |
| | | const data = this.efficiencyData |
| | | const colorArray = [ |
| | | { |
| | | top: '#61927F', |
| | | bottom: '#61927F' |
| | | }, { |
| | | top: '#629480', |
| | | bottom: '#629480' |
| | | }, |
| | | { |
| | | top: '#66DFE2', |
| | | bottom: '#66DFE2' |
| | | }, { |
| | | top: '#9FE6B8', |
| | | bottom: '#9FE6B8' |
| | | }, |
| | | { |
| | | top: '#FEDA5B', |
| | | bottom: '#FEDA5B' |
| | | }, |
| | | { |
| | | top: '#FF9F7F', |
| | | bottom: '#FF9F7F' |
| | | }, |
| | | { |
| | | top: '#F87091', |
| | | bottom: '#F87091' |
| | | } |
| | | ] |
| | | const defaultData = [100, 100, 100, 100, 100, 100, 100, 100, 100, 100] |
| | | const option = { |
| | | title: { |
| | | show: true, // æ¯å¦æ¾ç¤ºæ é¢ï¼é»è®¤ä¸ºtrue |
| | | text: '设å¤å©ç¨ç', // 主æ é¢ææ¬ |
| | | x: 'left', // æ 颿°´å¹³å®æ¾ä½ç½®ï¼å¯éå¼ä¸º'left'ã'center'ã'right'æå
·ä½çæ°´å¹³åæ å¼ |
| | | y: 'top', // æ é¢åç´å®æ¾ä½ç½®ï¼å¯éå¼ä¸º'top'ã'bottom'ã'center'æå
·ä½çåç´åæ å¼ |
| | | textStyle: { |
| | | // 主æ é¢ææ¬æ ·å¼ |
| | | fontSize: 18, |
| | | fontWeight: 'normal', |
| | | color: '#fff' |
| | | } |
| | | }, |
| | | grid: { |
| | | left: '3%', |
| | | right: '5%', |
| | | bottom: '0%', |
| | | top: '6%', |
| | | containLabel: true |
| | | }, |
| | | tooltip: { |
| | | trigger: 'axis', |
| | | axisPointer: { |
| | | type: 'none' |
| | | }, |
| | | formatter: function(params) { |
| | | return '<span style="font-weight:bolder;">' + params[0].name + '</span><br/>' + |
| | | '<span style="display:inline-block; width:10px; height:10px; border-radius:100px; margin-right:5px; background:' + params[0].color.colorStops[params[0].dataIndex].color + '"></span>' + params[0].seriesName + ' : ' + params[0].value + '%' |
| | | } |
| | | }, |
| | | xAxis: { |
| | | name: 'åä½', |
| | | nameTextStyle: { |
| | | color: '#fff' |
| | | }, |
| | | axisLabel: { |
| | | margin: 20, |
| | | textStyle: { |
| | | color: '#fff' |
| | | } |
| | | }, |
| | | show: true, |
| | | type: 'value', |
| | | axisTick: { |
| | | show: false |
| | | }, |
| | | splitLine: { |
| | | show: false |
| | | } |
| | | }, |
| | | yAxis: [{ |
| | | type: 'category', |
| | | inverse: true, |
| | | triggerEvent: true, |
| | | axisLabel: { |
| | | show: true, |
| | | textStyle: { |
| | | color: '#d9e7fa', |
| | | fontSize: '14', |
| | | fontWeight: 'bolder' |
| | | }, |
| | | formatter: function(value) { |
| | | return `${data.find(item => item.productionCode === value).name}` |
| | | } |
| | | }, |
| | | splitLine: { |
| | | show: false |
| | | }, |
| | | axisTick: { |
| | | show: false |
| | | }, |
| | | axisLine: { |
| | | 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: 'å©ç¨ç', |
| | | 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 |
| | | }] |
| | | } |
| | | } |
| | | }, |
| | | barWidth: 12, |
| | | data: data |
| | | }, |
| | | { |
| | | name: 'èæ¯', |
| | | type: 'bar', |
| | | barWidth: 12, |
| | | barGap: '-100%', |
| | | data: defaultData, |
| | | itemStyle: { |
| | | color: '#11294d', |
| | | barBorderRadius: 100 |
| | | } |
| | | } |
| | | ] |
| | | } |
| | | this.efficiencyChart.setOption(option, true) |
| | | |
| | | this.efficiencyChart.on('click', params => { |
| | | |
| | | // ç¹å»è§¦åç为æ±ç¶ä½ï¼é¤æ¤é¤å¤æ¯æ é¢ |
| | | if (params.componentType === 'series') { |
| | | console.log('seriesParams===========', params) |
| | | } else { |
| | | console.log('yAxisParams===========', params) |
| | | this.$emit('switchToBranchFactory', params.value) |
| | | } |
| | | }) |
| | | }, |
| | | |
| | | /* ç»å¶ææ¯ç¶æé¥¼å¾ */ |
| | | drawTechConditionChart() { |
| | | this.techConditionChart = this.$echarts.init(document.getElementById('tech_condition_chart')) |
| | | const option = { |
| | | height: 300, |
| | | title: { |
| | | show: true, // æ¯å¦æ¾ç¤ºæ é¢ï¼é»è®¤ä¸ºtrue |
| | | text: 'ææ¯ç¶æ', // 主æ é¢ææ¬ |
| | | x: 'center', // æ 颿°´å¹³å®æ¾ä½ç½®ï¼å¯éå¼ä¸º'left'ã'center'ã'right'æå
·ä½çæ°´å¹³åæ å¼ |
| | | y: 'top', // æ é¢åç´å®æ¾ä½ç½®ï¼å¯éå¼ä¸º'top'ã'bottom'ã'center'æå
·ä½çåç´åæ å¼ |
| | | textStyle: { |
| | | // 主æ é¢ææ¬æ ·å¼ |
| | | fontSize: 18, |
| | | fontWeight: 'normal', |
| | | color: '#00A8AC' |
| | | } |
| | | }, |
| | | tooltip: { |
| | | trigger: 'item', |
| | | formatter: function(params) { |
| | | if (params.name !== '') { |
| | | return `${params.name}:${params.value}(${params.percent}%)` |
| | | } |
| | | } |
| | | }, |
| | | legend: { |
| | | top: 25, |
| | | orient: 'vertical', |
| | | right: 0, |
| | | // bottom: "0", |
| | | itemWidth: 14, |
| | | itemHeight: 14, |
| | | icon: 'roundRect', |
| | | itemGap: 15, |
| | | textStyle: { |
| | | color: 'inherit', |
| | | fontSize: 14, |
| | | padding: [0, 0, 0, 0] |
| | | }, |
| | | data: ['åæ ¼', 'ç¦ç¨', 'éç¨'] |
| | | }, |
| | | grid: { |
| | | containLabel: true |
| | | }, |
| | | series: [ |
| | | { |
| | | type: 'pie', |
| | | // selectedMode: "single", |
| | | radius: ['33%', '45%'], |
| | | center: ['45%', '60%'], |
| | | color: [ |
| | | '#0AA012', |
| | | '#237E48', |
| | | '#757160' |
| | | ], |
| | | label: { |
| | | position: 'outside', |
| | | show: true, |
| | | color: 'inherit', |
| | | // textBorderColor: 'inherit', |
| | | // textBorderWidth: 1, |
| | | fontSize: 16, |
| | | formatter: function(params) { |
| | | if (params.name !== '') { |
| | | return `${params.name}:${params.value}` |
| | | } |
| | | } |
| | | }, |
| | | labelLine: { |
| | | show: true, |
| | | length2: 10, |
| | | length: 10 |
| | | }, |
| | | data: this.techConditionData |
| | | } |
| | | ] |
| | | } |
| | | this.techConditionChart.setOption(option, true) |
| | | }, |
| | | |
| | | /* ç»å¶è®¾å¤æ¥ä¿®æ
éé¥¼å¾ */ |
| | | drawWarrantyMalfunctionChart() { |
| | | this.warrantyMalfunctionChart = this.$echarts.init(document.getElementById('warranty_malfunction_chart')) |
| | | const option = { |
| | | height: 300, |
| | | title: { |
| | | show: true, // æ¯å¦æ¾ç¤ºæ é¢ï¼é»è®¤ä¸ºtrue |
| | | text: 'è®¾å¤æ¥ä¿®æ
é', // 主æ é¢ææ¬ |
| | | x: 'center', // æ 颿°´å¹³å®æ¾ä½ç½®ï¼å¯éå¼ä¸º'left'ã'center'ã'right'æå
·ä½çæ°´å¹³åæ å¼ |
| | | y: 'top', // æ é¢åç´å®æ¾ä½ç½®ï¼å¯éå¼ä¸º'top'ã'bottom'ã'center'æå
·ä½çåç´åæ å¼ |
| | | textStyle: { |
| | | // 主æ é¢ææ¬æ ·å¼ |
| | | fontSize: 18, |
| | | fontWeight: 'normal', |
| | | color: '#00A8AC' |
| | | } |
| | | }, |
| | | tooltip: { |
| | | trigger: 'item', |
| | | formatter: function(params) { |
| | | if (params.name !== '') { |
| | | return `${params.name}:${params.value}(${params.percent}%)` |
| | | } |
| | | } |
| | | }, |
| | | legend: { |
| | | top: 25, |
| | | orient: 'vertical', |
| | | right: 0, |
| | | // bottom: "0", |
| | | itemWidth: 14, |
| | | itemHeight: 14, |
| | | icon: 'roundRect', |
| | | itemGap: 15, |
| | | textStyle: { |
| | | color: 'inherit', |
| | | fontSize: 14, |
| | | padding: [0, 0, 0, 0] |
| | | }, |
| | | data: ['æ¥ä¿®', 'åæº', 'è¿è¡'] |
| | | }, |
| | | grid: { |
| | | containLabel: true |
| | | }, |
| | | series: [ |
| | | { |
| | | type: 'pie', |
| | | // selectedMode: "single", |
| | | radius: ['33%', '45%'], |
| | | center: ['45%', '60%'], |
| | | color: [ |
| | | '#00CED1', |
| | | '#B85B38', |
| | | '#A8985D' |
| | | ], |
| | | label: { |
| | | position: 'outside', |
| | | show: true, |
| | | color: 'inherit', |
| | | // textBorderColor: 'inherit', |
| | | // textBorderWidth: 1, |
| | | fontSize: 16, |
| | | formatter: function(params) { |
| | | if (params.name !== '') { |
| | | return `${params.name}:${params.value}` |
| | | } |
| | | } |
| | | }, |
| | | labelLine: { |
| | | show: true, |
| | | length2: 10, |
| | | length: 10 |
| | | }, |
| | | data: this.warrantyMalfunctionData |
| | | } |
| | | ] |
| | | } |
| | | this.warrantyMalfunctionChart.setOption(option, true) |
| | | }, |
| | | |
| | | /* ç»å¶è½¦é´ä¿å
»æ»å¨è¡¨ */ |
| | | drawMaintenanceChart() { |
| | | this.maintenanceConfig = { |
| | | indexHeader: 'åºå·', |
| | | header: ['车é´', 'æ¥æ', 'å
容'], |
| | | headerBGC: '#266C86', |
| | | data: this.twoMaintenanceChartData, |
| | | index: true, |
| | | columnWidth: [100], |
| | | align: ['center', 'center', 'center', 'center'] |
| | | } |
| | | }, |
| | | |
| | | /* ç»å¶åæ±å¾ */ |
| | | drawBarChart() { |
| | | this.barChart = this.$echarts.init(document.getElementById('bar_chart')) |
| | | const option = { |
| | | height: 190, |
| | | tooltip: { |
| | | trigger: 'axis', |
| | | axisPointer: { |
| | | type: 'shadow' |
| | | }, |
| | | // backgroundColor: 'rgba(9, 24, 48, 0.5)', |
| | | borderColor: 'rgba(75, 253, 238, 0.4)', |
| | | textStyle: { |
| | | // color: '#CFE3FC' |
| | | }, |
| | | borderWidth: 1 |
| | | }, |
| | | grid: { |
| | | top: '15%', |
| | | left: '10%' |
| | | }, |
| | | xAxis: [{ |
| | | name: 'OEE车é´', |
| | | nameLocation: 'middle', |
| | | nameGap: 30, // xè½´name䏿¨ªåæ 轴线çé´è· |
| | | type: 'category', |
| | | data: this.barChartData.map(item => item.name), |
| | | axisLine: { |
| | | lineStyle: { |
| | | color: '#FFFFFF' |
| | | } |
| | | }, |
| | | axisLabel: { |
| | | margin: 10, |
| | | color: '#e2e9ff', |
| | | textStyle: { |
| | | fontSize: 12 |
| | | } |
| | | }, |
| | | axisTick: { |
| | | show: false |
| | | } |
| | | }], |
| | | yAxis: [{ |
| | | name: 'æ°é', |
| | | nameLocation: 'middle', |
| | | nameGap: 30, // xè½´name䏿¨ªåæ 轴线çé´è· |
| | | axisLabel: { |
| | | formatter: '{value}', |
| | | color: '#e2e9ff' |
| | | }, |
| | | axisTick: { |
| | | show: false |
| | | }, |
| | | axisLine: { |
| | | show: false, |
| | | lineStyle: { |
| | | color: '#FFFFFF' |
| | | } |
| | | }, |
| | | splitLine: { |
| | | lineStyle: { |
| | | color: 'rgba(255,255,255,0.12)' |
| | | } |
| | | } |
| | | }], |
| | | series: [{ |
| | | type: 'bar', |
| | | data: this.barChartData, |
| | | barWidth: '50%', |
| | | itemStyle: { |
| | | color: '#7DB17F' |
| | | }, |
| | | label: { |
| | | show: true, |
| | | lineHeight: 10, |
| | | formatter: params => { |
| | | if (+params.value === 0) return '' |
| | | else return params.value |
| | | }, |
| | | position: 'inside', |
| | | textStyle: { |
| | | color: '#fff', |
| | | fontSize: 18 |
| | | } |
| | | } |
| | | }] |
| | | } |
| | | this.barChart.setOption(option, true) |
| | | }, |
| | | |
| | | /* ç»å¶åæ±å¾ */ |
| | | drawDoubleBarChart() { |
| | | this.doubleBarChart = this.$echarts.init(document.getElementById('double_bar_chart')) |
| | | const option = { |
| | | height: 220, |
| | | color: ['#4992FF', '#4DC0B1'], |
| | | tooltip: { |
| | | confine: true, |
| | | formatter: function(params) { |
| | | return '<span style="font-weight:bolder;">' + params.name + '</span><br/>' + |
| | | '<span style="display:inline-block; width:10px; height:10px; border-radius:100px; margin-right:5px; background:' + params.color + '"></span>' + params.seriesName + ' : ' + params.value + '%' |
| | | } |
| | | }, |
| | | grid: { |
| | | left: '5%', |
| | | right: '4%', |
| | | bottom: '10%', |
| | | top: '20%', |
| | | containLabel: true |
| | | }, |
| | | legend: { |
| | | icon: 'roundRect', |
| | | orient: 'horizontal', |
| | | left: 'center', |
| | | itemWidth: 14, |
| | | itemHeight: 14, |
| | | formatter: ['{a|{name}}'].join('\n'), |
| | | textStyle: { |
| | | fontSize: 14, |
| | | color: '#6A93B9', |
| | | height: 8, |
| | | rich: { |
| | | a: { |
| | | verticalAlign: 'bottom' |
| | | } |
| | | } |
| | | }, |
| | | data: ['OEE', 'å©ç¨ç'] |
| | | }, |
| | | xAxis: { |
| | | type: 'category', |
| | | data: this.doubleBarChartData.dateList, |
| | | axisLine: { |
| | | lineStyle: { |
| | | color: 'rgba(255,255,255,0.45)' |
| | | } |
| | | }, |
| | | axisLabel: { |
| | | fontSize: 12, |
| | | color: '#6A93B9' |
| | | }, |
| | | axisTick: { |
| | | show: false |
| | | } |
| | | }, |
| | | yAxis: [{ |
| | | name: '%', |
| | | type: 'value', |
| | | min: 0, |
| | | minInterval: 1, |
| | | splitArea: { |
| | | show: false |
| | | }, |
| | | axisLine: { |
| | | show: false |
| | | }, |
| | | axisTick: { |
| | | show: false |
| | | }, |
| | | splitLine: { |
| | | lineStyle: { |
| | | color: 'rgba(255, 255, 255, 0.15)' |
| | | // type: 'dashed', // dotted è线 |
| | | } |
| | | }, |
| | | axisLabel: { |
| | | fontSize: 12, |
| | | color: '#6A93B9', |
| | | fontFamily: 'Bebas' |
| | | } |
| | | }, { |
| | | type: 'value', |
| | | axisLine: { |
| | | show: false |
| | | }, |
| | | axisTick: { |
| | | show: false |
| | | }, |
| | | splitLine: { |
| | | show: false |
| | | }, |
| | | axisLabel: { |
| | | fontSize: 12, |
| | | formatter: '{value}%', // å³ä¾§Yè½´æåæ¾ç¤º |
| | | fontFamily: 'Bebas', |
| | | color: '#6A93B9' |
| | | }, |
| | | splitArea: { |
| | | show: false |
| | | } |
| | | }], |
| | | series: [{ |
| | | type: 'bar', |
| | | barWidth: 15, |
| | | itemStyle: { barBorderRadius: [3, 3, 0, 0] }, |
| | | name: 'OEE', |
| | | data: this.doubleBarChartData.oeeList, |
| | | label: { |
| | | show: true, |
| | | lineHeight: 10, |
| | | formatter: params => { |
| | | if (+params.value === 0) return '' |
| | | else return params.value |
| | | }, |
| | | position: 'inside', |
| | | textStyle: { |
| | | color: '#fff', |
| | | fontSize: 12 |
| | | } |
| | | } |
| | | }, { |
| | | type: 'bar', |
| | | barWidth: 15, |
| | | itemStyle: { barBorderRadius: [3, 3, 0, 0] }, |
| | | name: 'å©ç¨ç', |
| | | data: this.doubleBarChartData.utilizationList, |
| | | label: { |
| | | show: true, |
| | | lineHeight: 10, |
| | | formatter: params => { |
| | | if (+params.value === 0) return '' |
| | | else return params.value |
| | | }, |
| | | position: 'inside', |
| | | textStyle: { |
| | | color: '#fff', |
| | | fontSize: 12 |
| | | } |
| | | } |
| | | } |
| | | ] |
| | | } |
| | | this.doubleBarChart.setOption(option, true) |
| | | }, |
| | | |
| | | /* ç»å¶é®é¢æ»å¨è¡¨ */ |
| | | drawProblemChart() { |
| | | this.problemConfig = { |
| | | indexHeader: 'åºå·', |
| | | header: ['æ¶é´', 'é®é¢å
容'], |
| | | headerBGC: '#83B883', |
| | | oddRowBGC: '#556955', |
| | | evenRowBGC: '#556955', |
| | | data: [ |
| | | ['2024å¹´3æ23å·', '大家注æå®å
¨é®é¢'], |
| | | ['2024å¹´3æ23å·', '大家注æå®å
¨é®é¢'], |
| | | ['2024å¹´3æ23å·', '大家注æå®å
¨é®é¢'], |
| | | ['2024å¹´3æ23å·', '大家注æå®å
¨é®é¢'], |
| | | ['2024å¹´3æ23å·', '大家注æå®å
¨é®é¢'], |
| | | ['2024å¹´3æ23å·', '大家注æå®å
¨é®é¢'], |
| | | ['2024å¹´3æ23å·', '大家注æå®å
¨é®é¢'], |
| | | ['2024å¹´3æ23å·', '大家注æå®å
¨é®é¢'], |
| | | ['2024å¹´3æ23å·', '大家注æå®å
¨é®é¢'], |
| | | ['2024å¹´3æ23å·', '大家注æå®å
¨é®é¢'] |
| | | ], |
| | | index: true, |
| | | columnWidth: [100], |
| | | align: ['center'] |
| | | } |
| | | }, |
| | | |
| | | /** |
| | | * çªå£å°ºå¯¸ååæ¶è§¦å |
| | | * è°æ´å¾è¡¨å°ºå¯¸ä»¥éåºå辨ç |
| | | */ |
| | | handleWindowResize() { |
| | | if (this.runningStateChart) this.runningStateChart.resize() |
| | | if (this.efficiencyChart) this.efficiencyChart.resize() |
| | | if (this.techConditionChart) this.techConditionChart.resize() |
| | | if (this.warrantyMalfunctionChart) this.warrantyMalfunctionChart.resize() |
| | | if (this.barChart) this.barChart.resize() |
| | | if (this.doubleBarChart) this.doubleBarChart.resize() |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="less" scoped> |
| | | .page-container { |
| | | .page-title { |
| | | display: flex; |
| | | justify-content: space-evenly; |
| | | flex-wrap: wrap; |
| | | color: #fff; |
| | | margin-bottom: 10px; |
| | | |
| | | .workshop-nav { |
| | | width: 120px; |
| | | height: 40px; |
| | | font-size: 12px; |
| | | cursor: pointer; |
| | | } |
| | | } |
| | | |
| | | .content-container { |
| | | padding-top: 5px; |
| | | display: flex; |
| | | justify-content: space-between; |
| | | |
| | | .left-col { |
| | | .first-title { |
| | | color: #00A8AC; |
| | | font-size: 20px; |
| | | text-align: center; |
| | | font-weight: bold; |
| | | } |
| | | } |
| | | |
| | | .middle-col { |
| | | .first-title { |
| | | color: #00A8AC; |
| | | font-size: 20px; |
| | | text-align: center; |
| | | font-weight: bold; |
| | | } |
| | | |
| | | .support-plan-container { |
| | | display: flex; |
| | | justify-content: space-around; |
| | | flex-wrap: wrap; |
| | | color: #fff; |
| | | padding: 0 40px; |
| | | |
| | | .support-plan-item { |
| | | border-radius: 3px; |
| | | width: 45%; |
| | | padding: 5px 20px; |
| | | font-size: 20px; |
| | | margin-bottom: 10px; |
| | | |
| | | .plan-value-container { |
| | | display: flex; |
| | | justify-content: center; |
| | | align-items: center; |
| | | |
| | | .plan-value { |
| | | font-size: 35px; |
| | | margin-right: 20px; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | /deep/ .dv-scroll-board .header { |
| | | height: 35px; |
| | | } |
| | | </style> |