var dataAll = { x_data: ['08:00', '09:00', '10:00', '11:00', '12:00', '13:00', '14:00', '15:00', '16:00', '17:00', '18:00', '19:00'], bar_data: [{ type: '加工线', UPH: [70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70], lines: [{ name: '加工线1', data: [11, 23, 45, 66, 78, 44, 21, 43, 55, 67, 98, 74] }, { name: '加工线2', data: [21, 43, 55, 67, 98, 74, 11, 23, 45, 66, 78, 44] }] }, { type: '组装线', UPH: [80, 80, 80, 80, 80, 80,80, 80, 80, 80, 80, 80], lines: [{ name: '组装线1', data: [11, 23, 45, 66, 78, 44,11, 23, 45, 66, 78, 44] }, { name: '组装线2', data: [21, 43, 55, 67, 98, 74,21, 43, 55, 67, 98, 74] }] }, { type: '充电桩线', UPH: [90, 90, 90, 90, 90, 90,90, 90, 90, 90, 90, 90], lines: [{ name: '充电桩线1', data: [11, 23, 45, 66, 78, 44,11, 23, 45, 66, 78, 44] }, { name: '充电桩线2', data: [21, 43, 55, 67, 98, 74,21, 43, 55, 67, 98, 74] }] } ] }; var showType = 'ba'; if (showType === 'bar') { var makexAxis = function() { var Axis = []; dataAll.bar_data.forEach(function(item, index) { Axis.push({ axisLabel: { interval: 0, color: '#555' }, gridIndex: index, data: dataAll.x_data }); }); return Axis; }; var makeyAxis = function() { var Axis = []; dataAll.bar_data.forEach(function(item, index) { Axis.push({ gridIndex: index, splitLine: { show: false, }, axisLabel: { color: '#777' }, max: function(v) { return v.max + 10; } }); }); return Axis; }; var makeseries = function() { var series = []; dataAll.bar_data.forEach(function(item, index) { series.push({ name: 'UPH', showSymbol: false, data: item.UPH, xAxisIndex: index, yAxisIndex: index, type: 'line' }); item.lines.forEach(function(line, i) { series.push({ name: line.name, label: { position: 'top', show: true, color: '#333' }, data: line.data, xAxisIndex: index, yAxisIndex: index, type: 'bar' }); }); }) return series; }; option = { title: [{ top: 0, textStyle: { fontSize: 14, }, textAlign: 'left', text: '加工线生产情况' }, { top: '31%', textStyle: { fontSize: 14, }, textAlign: 'left', text: '组装线生产情况' }, { top: '64%', textStyle: { fontSize: 14, }, textAlign: 'left', text: '组装线生产情况' }], color: ['#c23531', '#6ca1ff', '#4db64d', '#6ca1ff', '#4db64d', '#6ca1ff', '#4db64d'], legend: [{ top: '3%', data: ['UPH', '加工线1', '加工线2'] }, { top: '33%', data: ['UPH', '组装线1', '组装线2'] }, { top: '66%', data: ['UPH', '充电桩线1', '充电桩线2'] }], grid: [{ top: '5%', left: '5%', right: '3%', height: '22%' }, { top: '35%', left: '5%', right: '3%', height: '22%' }, { top: '68%', left: '5%', right: '3%', height: '22%' } ], xAxis: makexAxis(), yAxis: makeyAxis(), series: makeseries() }; } else { var dataAll = [ ["加工线1良品率", 99], ["加工线1良品率", 99], ["加工线1良品率", 99], ["加工线1良品率", 99], ["加工线1良品率", 99], ["加工线1良品率", 99] ]; var position = [ ['16.6%', '25%'], ['16.6%', '75%'], ['49.8%', '25%'], ['49.8%', '75%'], ['83%', '25%'], ['83%', '75%'] ]; var getStyle = function(value) { if (value <= 30) { return { splitNumber: 3, //刻度数量 min: 0, max: 30, startAngle: 225, endAngle: 144, color: [ [1, '#FF0000'] ] }; } else if (value >= 90) { return { splitNumber: 1, //刻度数量 min: 90, max: 100, startAngle: -18, endAngle: -45, color: [ [1, '#60b044'] ] }; } else { return { splitNumber: 6, //刻度数量 min: 30, max: 90, startAngle: 144, endAngle: -18, color: [ [1, '#ffce00'] ] }; } }; var makeSeries = function() { var series = []; dataAll.forEach(function(item, index) { let style = getStyle(item[1]); series.push({ name: item[0], left: 0, center: position[index], type: 'gauge', splitNumber: 10, //刻度数量 min: 0, max: 100, radius: '33.3%', //图表尺寸 axisLine: { show: true, lineStyle: { width: 2, shadowBlur: 0, color: [ [1, '#24273e'] ] } }, axisTick: { show: true, lineStyle: { color: '#7887ae', width: 1 }, length: 8, splitNumber: 5 }, splitLine: { show: true, length: 12, lineStyle: { color: '#7887ae', } }, axisLabel: { distance: 2, textStyle: { color: "#7887ae", fontSize: "14", }, formatter: function(e) { switch (e + "") { case "0": return "0%"; default: return e; } } }, pointer: { //仪表盘指针 show: 0 }, title:{ offsetCenter:[0, '90%'] }, detail: { show: false }, data: [{ name: item[0], value: item[1] }] }); series.push({ name: item[0], type: 'gauge', center: position[index], splitNumber: style.splitNumber, //刻度数量 min: style.min, max: style.max, startAngle: style.startAngle, endAngle: style.endAngle, radius: '33.3%', //图表尺寸 axisLine: { show: true, lineStyle: { width: 2, shadowBlur: 0, color: style.color } }, axisTick: { show: true, lineStyle: { color: 'auto', width: 1 }, length: 8, splitNumber: 5 }, splitLine: { show: true, length: 12, lineStyle: { color: 'auto', } }, axisLabel: { show: false }, pointer: { //仪表盘指针 show: 1, length: '70%', width: 2 }, detail: { borderColor: '#ccc', shadowColor: '#ccc', //默认透明 shadowBlur: 5, offsetCenter: [0, '30%'], // x, y,单位px textStyle: { // 其余属性默认使用全局文本样式,详见TEXTSTYLE fontWeight: 'bolder', color: '#333', fontSize: 35, }, formatter: '{value}%' }, data: [{ name: "", value: item[1] }] }); }); return series; } var list = makeSeries(); option = { backgroundColor: '#fff', tooltip: { formatter: "{a} <br/>{b} : {c}%" }, series: list }; }