import * as echarts from 'echarts' /** * 统一样式,加载 * @param {*} id * @param {*} option */ export function loadEcharts(id, option) { var myChart = echarts.init(document.getElementById(id)) if (option.textStyle == null) { option.textStyle = { fontFamily: 'Microsoft YaHei', color: '#ffffff' } } // 使用刚指定的配置项和数据显示图表。 myChart.clear() myChart.setOption(option, true) window.addEventListener('resize', function() { myChart.resize() }) return myChart } const colorX = '#c7e7ff' const colorY = '#7696c5' // 系统首页图 export function barTop(data, colorArr) { var salvProName = ['x'] var salvProValue = [data] var Value = []// 背景按最大值 for (let i = 0; i < salvProValue.length; i++) { Value.push(salvProValue[0] + 20) } const color = colorArr const option = { backgroundColor: 'transparent', grid: { left: '0%', right: '0%', bottom: '2%', top: '2%', containLabel: true }, // tooltip: { // trigger: 'axis', // axisPointer: { // type: 'none' // }, // formatter: function(params) { // return params[0].name + ' : ' + params[0].value // } // }, xAxis: { show: false, type: 'value' }, yAxis: [{ type: 'category', inverse: true, axisLabel: { show: false, textStyle: { color: '#000' } }, splitLine: { show: false }, axisTick: { show: false }, axisLine: { show: false }, data: salvProName }], series: [{ name: '值', type: 'bar', zlevel: 1, itemStyle: { normal: { // barBorderRadius: 30, color: new echarts.graphic.LinearGradient(0, 0, 1, 0, [{ offset: 0, color: `rgba(${color[0]},1)` }, { offset: 1, color: `rgba(${color[1]},1)` }]) } }, barWidth: 15, data: salvProValue }, { name: '背景', type: 'bar', barWidth: 15, barGap: '-100%', data: Value, itemStyle: { normal: { color: `rgba(${color[1]},0.8)`, barBorderRadius: 30 } } } ] } return option } export function bar01(data) { var dataX = data.map(r => r.key) var dataY = data.map(r => r.value) // var salvProMax = []// 背景按最大值 // for (let i = 0; i < salvProValue.length; i++) { // salvProMax.push(salvProValue[0]) // } var option = { backgroundColor: 'transparent', grid: { left: '2%', right: '5%', bottom: '0%', top: '2%', containLabel: true }, tooltip: { trigger: 'axis', axisPointer: { type: 'none' }, formatter: function(params) { return params[0].name + ' : ' + params[0].value } }, xAxis: { show: true, type: 'value', splitLine: { show: false }, axisTick: { show: false }, axisLine: { show: true }, axisLabel: { show: true, textStyle: { color: '#000' } } }, yAxis: [{ type: 'category', inverse: true, axisLabel: { show: true, textStyle: { color: '#000' } }, splitLine: { show: false }, axisTick: { show: false }, axisLine: { show: false }, data: dataX }], series: [{ name: '值', type: 'bar', zlevel: 1, // lineStyle:{ // normal:{ // // } // }, itemStyle: { normal: { barBorderRadius: 30, // color: new echarts.graphic.LinearGradient(0, 0, 1, 0, [{ // offset: 0, // color: 'rgb(42,197,137,1)' // }, { // offset: 1, // color: 'rgb(187,236,218,1)' // }]) color: { type: 'linear', x: 0, y: 0, x2: 1, y2: 0, colorStops: [ { offset: 0, color: `rgba(42, 197, 137, 1)`// 0% 处的颜色 }, { offset: 1, color: `rgba(187, 236, 218, 1)` // 100% 处的颜色 } ], globalCoord: false // 缺省为 false } // 渐变颜色 } }, label: { type: 'category', inverse: true, axisTick: 'none', axisLine: 'none', show: true, // axisLabel: { // textStyle: { // color: '#000', // fontSize: '12' // }, // }, position: 'right', data: dataY }, barWidth: 10, data: dataY } // { // name: '背景', // type: 'bar', // barWidth: 20, // barGap: '-100%', // data: salvProMax, // itemStyle: { // normal: { // color: 'rgba(24,31,68,1)', // barBorderRadius: 30, // } // }, // }, ] } return option } export function line01(data) { const dataX = data.map(r => r.key) const dataY = data.map(r => r.value) const option = { backgroundColor: 'transparent', tooltip: { trigger: 'axis', axisPointer: { // type: 'shadow', label: { show: true, backgroundColor: '#000' } } }, grid: { left: '2%', right: '5%', bottom: '0%', top: '3%', containLabel: true }, // legend: { // data: ['line', 'bar'], // textStyle: { // color: '#ccc' // } // }, xAxis: { data: dataX, splitLine: { show: false }, axisTick: { show: false }, axisLine: { show: true }, axisLabel: { show: true, textStyle: { color: '#000' } } }, yAxis: { max: 1, min: 0, interval: 0.2, splitLine: { show: false }, axisTick: { show: false }, axisLine: { show: false }, axisLabel: { show: true, textStyle: { color: '#000' } } }, series: [{ name: '时间', type: 'line', smooth: false, showAllSymbol: true, symbol: 'emptyCircle', symbolSize: 8, itemStyle: { normal: { color: `rgba(42, 197, 137, 1)` } }, lineStyle: { normal: { width: 2, color: `rgba(42, 197, 137, 1)` } }, data: dataY }] } return option } // 综合看板图 export function bar02(dataArr, titlenameArr) { // const data = [70, 60, 50, 40, 30] // const titlename = ['外观划伤', '表面油污', '尺寸', '颜色', '大小'] // const data = val.map(i => i.cont) // const titlename = val.map(i => i.name) const data = dataArr.filter((item, index) => index < 5) const titlename = titlenameArr.filter((item, index) => index < 5) const length = titlename.length if (titlename.length < 5) { for (let i = 0; i < 5 - length; i++) { titlename.push('0') } } const valdata = [683, 500, 400, 300, 200] // const myColor = ['#FF0000', '#FF5511', '#FF8800', '#FFBB00', '#FFFF00'] // const myColor = ['#0000FF'] // const myColor = ['#7af5f5', '#00FFFF', '#00FFFF', '#00FFFF', '#00FFFF'] const myColor = ['rgba(122,245,245,1)', 'rgba(122,245,245,0.95)', 'rgba(122,245,245,0.9)', 'rgba(122,245,245,0.85)', 'rgba(122,245,245,0.8)'] const option = { animation: false, backgroundColor: 'transparent', title: { show: false, text: '一周内Top5不良:', x: '2%', y: '4%', textStyle: { color: '#d8d7d9', fontSize: '18' // fontWeight: 'lighter' }, subtextStyle: { color: '#90979c', fontSize: '16' } }, grid: { left: '10%', right: '5%', bottom: '0%', top: '10%', containLabel: true }, // animation: false, // 取消动画 xAxis: { show: false }, yAxis: [ { show: true, data: titlename, inverse: true, axisLine: { show: false }, splitLine: { show: false }, axisTick: { show: false }, axisLabel: { // color: '#fff', color: function(value, index) { return value === '0' ? 'transparent' : '#fff' }, fontSize: 20, // formatter: function(value, index) { // return [ // '{lg|' + (index + 1) + '、 }' + '{title|' + value + '} ' // ].join('\n') // }, formatter: function(params) { var val = '' if (params.length > 8) { val = params.substr(0, 8) + '...' return val } else { return params } }, rich: { lg: { // backgroundColor: '#339911', // color: '#d8d7d9', color: '#fff', borderRadius: 15, // padding: 5, align: 'center', width: 15, height: 15 } } } }, { show: false, inverse: true, data: valdata, axisLabel: { textStyle: { fontSize: 12, color: '#fff' } }, axisLine: { show: false }, splitLine: { show: false }, axisTick: { show: false } } ], series: [ { name: '条', type: 'bar', yAxisIndex: 0, data: data, barWidth: 22, itemStyle: { normal: { barBorderRadius: 30, color: function(params) { // const num = myColor.length // return myColor[params.dataIndex % num] return myColor[params.dataIndex] } } }, label: { normal: { show: true, position: 'right', formatter: '{c}', fontSize: 20, color: '#fff' // formatter: '{c}%', } } } ] } return option } // 仓库管理看板图 (弃用) export function bar03(titleText) { const path = 'path://M214,1079l8-6h16l8,6-8,6H222Z' const zzx1 = ['800', '900', '700', '300', '500', '800', '700'] const wgx1 = ['700', '600', '500', '400', '300', '333', '222'] const option = { backgroundColor: 'transparent', tooltip: { show: false, trigger: 'axis', axisPointer: { // 坐标轴指示器,坐标轴触发有效 type: 'shadow' // 默认为直线,可选为:'line' | 'shadow' }, formatter: function(e) { if (e.length > 1) { var S = e[1].data - e[0].data return e[0].axisValue + ':
差额=当前-年初
=' + S } else if (e.length = 1) { return e[0].axisValue + ':
' + e[0].seriesName + '=' + e[0].data } } }, title: { text: titleText, x: '66%', y: '2%', textStyle: { // color: '#fff', color: '#00ffff', fontSize: '18', fontWeight: 'lighter' }, subtextStyle: { color: '#90979c', fontSize: '16' } }, grid: { left: '4%', right: '4%', bottom: '4%', top: '15%', containLabel: true }, legend: { data: ['title1', 'title2'], left: 220, top: 10, textStyle: { color: '#00ffff', fontSize: 14 }, itemWidth: 12, itemHeight: 10, itemGap: 35, color: '#242424' }, xAxis: { type: 'category', data: ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'], axisLine: { lineStyle: { show: true, lineStyle: { color: '#6A989E' } } }, axisLabel: { // interval: 0, // rotate: 40, textStyle: { fontFamily: 'Microsoft YaHei', color: '#fff', // x轴颜色 fontWeight: 'normal', fontSize: '14', lineHeight: 22 } } // splitLine:{ // show:true, // lineStyle: { // type: 'dashed', // color: 'rgba(135,140,147,0.8)' // } // }, }, yAxis: { type: 'value', name: '数量(单位:个)', nameTextStyle: { color: '#ffffff' }, axisLine: { show: false, lineStyle: { type: 'dashed', color: 'rgba(135,140,147,0.8)' } }, splitLine: { show: true, lineStyle: { color: 'rgba(135,140,147,1)' // 左侧显示线 } }, axisLabel: { formatter: '{value}', color: '#fff', fontSize: 14 } }, series: [ { type: 'pictorialBar', symbol: path, symbolSize: [30, 8], symbolOffset: [-18, -4], symbolPosition: 'end', z: 12, color: '#3440FF', data: zzx1 }, { type: 'pictorialBar', symbol: path, symbolSize: [30, 8], symbolOffset: [18, -4], // symbolOffset: [20, -5], symbolPosition: 'end', z: 12, color: '#FF1155', data: wgx1 }, { type: 'pictorialBar', symbol: path, symbolSize: [30, 8], symbolOffset: [-18, 4], z: 12, color: 'rgba(126,192,238,0.6)', data: zzx1 }, { name: '', type: 'pictorialBar', symbol: path, symbolSize: [30, 8], // symbolOffset: [20, 4], symbolOffset: [18, 4], color: '#FFC0CB', z: 12, data: wgx1 }, { name: 'title1', type: 'bar', barWidth: '30', itemStyle: { normal: { opacity: 0.7, color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{ offset: 0, color: 'blue' }, { offset: 1, color: '#7EC0EE' }]), barBorderRadius: 0 } }, label: { show: true, // position: ['-18','-18'], position: 'top', color: '#00f8ff', fontSize: 12 }, data: zzx1 }, { name: 'title2', type: 'bar', barWidth: '30', itemStyle: { normal: { opacity: 0.7, color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{ offset: 0, color: '#FF2246' }, { offset: 1, color: '#FFC0CB' }]), barBorderRadius: 0 } }, label: { show: true, // position: ['18','-18'], position: 'top', color: '#00f8ff', fontSize: 12 }, data: wgx1 } ] } return option } // 采购订单图 export function pie01() { const option = { backgroundColor: 'transparent', title: { text: '60.21%', x: 'center', y: 'center', textStyle: { fontWeight: 'normal', color: '#fff', fontSize: 18 } }, color: ['rgba(176, 212, 251, 1)'], legend: { show: false, itemGap: 12, data: ['01', '02'] }, series: [ { name: 'Line 1', type: 'pie', clockWise: true, radius: ['50%', '66%'], itemStyle: { normal: { label: { show: false }, labelLine: { show: false } } }, hoverAnimation: false, data: [ { value: 80, name: '01', itemStyle: { normal: { color: { // 完成的圆环的颜色 colorStops: [{ offset: 0, color: '#24d3ff' // 0% 处的颜色 }, { offset: 1, color: '#5580fe' // 100% 处的颜色 }] }, label: { show: false }, labelLine: { show: false } } } }, { name: '02', value: 20 } ] }] } return option } // 看板头部背景条 export function kbTop() { var getXY = ['学前教育系'] // 数据点名称 var getRS = [255] // 学生满意度 var max = Math.ceil(255 / 10) * 10 const option = { animation: false, backgroundColor: 'transparent', grid: { left: '0%', right: '0%', bottom: '0%', top: '0%' // containLabel: true }, xAxis: [ { type: 'value', show: false, axisLabel: { margin: 5, color: '#666666', textStyle: { fontSize: '13' } }, min: 0, max: max, // 计算最大值 interval: max / 5, // 平均分为5份 splitNumber: 5, splitLine: { show: true, lineStyle: { color: '#D1D1D1' } }, axisLine: { lineStyle: { color: '#333333' } }, axisTick: { show: false } } ], yAxis: [ { type: 'category', inverse: true, show: false, axisLabel: { textStyle: { color: '#6F84BD', fontSize: '13' } }, splitLine: { show: false }, axisTick: { show: false }, axisLine: { show: false, lineStyle: { color: '#333333' } }, data: getXY } ], series: [ { name: '值', type: 'bar', zlevel: 1, xAxisIndex: 0, label: { show: false, position: 'right', color: '#6F84BD', fontSize: 14, offset: [10, 0] }, itemStyle: { normal: { barBorderRadius: [10, 10, 10, 10], color: new echarts.graphic.LinearGradient(0, 0, 1, 0, [{ offset: 0, color: '#91ddec' // 0% 处的颜色 }, { offset: 1, color: '#09d8f2' // 100% 处的颜色 }], false) } }, barWidth: 15, data: getRS } ] } return option } // 车间质量左下周不良 export function line02(dataX, dataY) { return { animation: false, backgroundColor: 'transparent', tooltip: {}, // title: { // show: false, // text: '订单完成总数', // left: '50%', // top: '5%', // textAlign: 'center', // textStyle: { // // color: '#fff', // color: '#00ffff', // fontSize: '20', // fontWeight: 'bolder' // } // }, grid: { left: '0%', right: '2%', bottom: '5%', top: '8%', containLabel: true }, legend: { show: false, itemGap: 50, data: ['注册总量', '最新注册量'], textStyle: { color: '#f9f9f9', borderColor: '#fff' } }, xAxis: [ { type: 'category', boundaryGap: true, axisLabel: { interval: 0, formatter: '{value}', fontSize: 18, margin: 20, textStyle: { color: colorX } }, axisLine: { lineStyle: { color: '#032c58' } }, splitLine: { show: false, lineStyle: { color: '#032c58' } }, axisTick: { show: false }, data: dataX }], yAxis: [ { // max: 800, boundaryGap: false, splitNumber: 4, type: 'value', axisLabel: { textStyle: { fontSize: 18, color: colorY } }, // name: '单', // nameTextStyle: { // color: colorY, // fontSize: 14, // lineHeight: 20 // }, splitLine: { show: true, lineStyle: { color: '#032c58' } }, axisLine: { show: true, lineStyle: { color: '#032c58' } }, axisTick: { show: true } } ], series: [ { name: '注册总量', type: 'line', // smooth: true, //是否平滑曲线显示 // symbol:'circle', // 默认是空心圆(中间是白色的),改成实心圆 showAllSymbol: true, symbol: 'emptyCircle', symbolSize: 6, lineStyle: { normal: { color: '#28ffb3' // 线条颜色 }, borderColor: '#f0f' }, label: { show: true, position: 'top', textStyle: { color: '#fff', fontSize: 16 } }, itemStyle: { normal: { color: '#28ffb3' } }, tooltip: { show: false }, areaStyle: { // 区域填充样式 normal: { // 线性渐变,前4个参数分别是x0,y0,x2,y2(范围0~1);相当于图形包围盒中的百分比。如果最后一个参数是‘true’,则该四个值是绝对像素位置。 color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{ offset: 0, color: 'rgba(0,154,120,1)' }, { offset: 1, color: 'rgba(0,0,0, 0)' } ], false), shadowColor: 'rgba(53,142,215, 0.9)', // 阴影颜色 shadowBlur: 20 // shadowBlur设图形阴影的模糊大小。配合shadowColor,shadowOffsetX/Y, 设置图形的阴影效果。 } }, data: dataY // data: [600 + Math.floor(Math.random() * 100), 600 + Math.floor(Math.random() * 100), 600 + Math.floor(Math.random() * 100), 600 + Math.floor(Math.random() * 100), 600 + Math.floor(Math.random() * 100), 600 + Math.floor(Math.random() * 100), 600 + Math.floor(Math.random() * 100)] } // { // name: '最新注册量', // type: 'bar', // barWidth: 20, // tooltip: { // show: false // }, // label: { // show: true, // position: 'top', // textStyle: { // color: '#fff', // } // }, // itemStyle: { // normal: { // // barBorderRadius: 5, // // color: new echarts.graphic.LinearGradient( // // 0, 0, 0, 1, // // [{ // // offset: 0, // // color: '#14c8d4' // // }, // // { // // offset: 1, // // color: '#43eec6' // // } // // ] // // ) // color: function (params) { // var colorList = ['#0ec1ff', '#10cdff', '#12daff', '#15ebff', '#17f8ff', '#1cfffb', '#1dfff1']; // return colorList[params.dataIndex]; // } // } // }, // data: [200, 382, 102, 267, 186, 315, 316] // } ] } } // 车间质量右上 日不良 export function bar04(resValueArr) { // let data = resValueArr.map(({ eqp_name, cont }) => ({ name: eqp_name, value: cont }))//替换数组对象中的键名 const data = [ { name: '装配一线', value: resValueArr.find(i => i.eqp_name === '装配一线') ? resValueArr.find(i => i.eqp_name === '装配一线').cont : 0 }, { name: '装配二线', value: resValueArr.find(i => i.eqp_name === '装配二线') ? resValueArr.find(i => i.eqp_name === '装配二线').cont : 0 }, { name: '装配三线', value: resValueArr.find(i => i.eqp_name === '装配三线') ? resValueArr.find(i => i.eqp_name === '装配三线').cont : 0 }, { name: '装配四线', value: resValueArr.find(i => i.eqp_name === '装配四线') ? resValueArr.find(i => i.eqp_name === '装配四线').cont : 0 } ] const getSymbolData = (data) => { const arr = [] for (var i = 0; i < data.length; i++) { arr.push({ value: data[i].value, symbolPosition: 'end' }) } return arr } const option = { animation: false, backgroundColor: 'transparent', grid: { top: '0%', bottom: 0, right: '4%', left: -20, containLabel: true }, xAxis: { show: false }, yAxis: [{ triggerEvent: true, show: true, inverse: true, data: data.map(r => r.name), axisLine: { show: false }, splitLine: { show: false }, axisTick: { show: false }, axisLabel: { show: true, interval: 0, color: '#fff', align: 'left', margin: 60, formatter: function(value, index) { return '{title|' + value + '}' }, rich: { title: { width: 50, align: 'right', fontSize: 20 } } } }, { triggerEvent: true, show: true, inverse: true, data: data.map(r => r.name), axisLine: { show: false }, splitLine: { show: false }, axisTick: { show: false }, axisLabel: { interval: 0, shadowOffsetX: '-20px', color: ['#fff'], align: 'left', verticalAlign: 'center', lineHeight: 40, fontSize: 20, formatter: function(value, index) { return data[index].value + '' } } }], series: [ { name: 'XXX', type: 'pictorialBar', symbol: 'image://data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADoAAAA6CAMAAADWZboaAAAAZlBMVEUAAABe3uVe3+Vf3uVf3+Zf3uVg3+Zg3+Zf3+Vi4OZh4OZg3+Z86/Bh3+Zi4Odj4Odi4OZ86/B76/B86/Bj4ed56+9x5+xn4umB7/N87PB36e+A7/N+7fF/7vJ/7vJ+7fGA7/OB7/PReX+lAAAAIXRSTlMABQkVDREmIhk3MR10LEFFPHh7cUprXE35h2XnqMLAp+mHAG9cAAAB5ElEQVRIx83WjU7CMBQFYIoiKMqU/XUboHv/l/Tce7t2XamDNSacETEmX86tlK2rx4py150o+MstMBLwWRfHKo6JCVxLnvmFGBjFQ58oF1//sUZhGy/ClSTWObgnL4O+bkeN4nY2okfNMbkRt9/vtxz8InoTsWplJSCzFxPmO8+GpSIByX3YQAuGDWtRKhKjCnxDXhF6Z4yxnZ20Wgko7BMRDmxtSGVaI4kdTIgb+zTYoJQlIMlDlmUFgrcDWWC201qSayqlTkiCddWWeV62VU0YlnpRi9VOKaSUsiyq/N0krwq2Ugt7lVpZl5BfHNiytjagMi+XYp0kCR45hMlivVQrE/uU5pXSrCB5bM6d1t2lOZItMqmliT3q5uVxqxzyW/ccfYLNKx7ZTeykMvNyac2yt2Fbc61MHLSC0rwoxbiNdlQ3GBm1NLHQsHUrtEXppR/ljNpW6DbSCoqlFiVoN6YdaFlgsSFVPs1BdT8OaB5QyQzVcaqWDows/zepxR8ObLglTrdtCRVuRNj4Rrxh+//0ke2f8KVL+Kon3GCSbmsJN9OUW3j6g0Ns+LgCij2u0h+Sghc8mlMPBMgdx5DFh59VmOVHrvmDnoNxCz3J7MFWsMuaLyR089xz/xhlfijvwutR8gv3zk6BLUUeCgAAAABJRU5ErkJggg==', // symbolSize: [50, 50], symbolSize: function(params) { return params === 0 ? [0, 0] : [50, 50] }, symbolOffset: [20, 0], z: 12, itemStyle: { normal: { color: '#fff' } }, data: getSymbolData(data) }, { name: '条', type: 'bar', showBackground: true, // barBorderRadius: 30, yAxisIndex: 0, data: data, barWidth: 10, // align: left, itemStyle: { normal: { color: 'rgba(41, 162, 245, 1)', barBorderRadius: 10 } // color: '#A71A2B', // barBorderRadius: 4, } // label: { // normal: { // color: '#fff', // show: true, // position: ["-80px", 0], // textStyle: { // fontSize: 16 // }, // formatter: function(a, b) { // return a.name // } // } // } }] } return option } // 车间质量右下 周不良 export function pie02(resValueArr) { const bgColor = 'transparent' const title = '总不良数' const color = ['#0E7CE2', '#FF8352', '#E271DE', '#F8456B', '#00FFFF', '#4AEAB0'] const echartData = resValueArr.map(({ eqp_name, cont }) => ({ name: eqp_name, value: cont }))// 替换数组对象中的键名 const formatNumber = function(num) { const reg = /(?=(\B)(\d{3})+$)/g return num.toString().replace(reg, ',') } const total = echartData.reduce((a, b) => { return a + b.value * 1 }, 0) const option = { animation: false, backgroundColor: bgColor, color: color, // tooltip: { // trigger: 'item' // }, title: [{ text: '{name|' + title + '}\n{val|' + formatNumber(total) + '}', top: 'center', left: 'center', textStyle: { rich: { name: { fontSize: 22, fontWeight: 'normal', color: '#fff', padding: [10, 0] }, val: { fontSize: 22, fontWeight: 'bold', color: '#fff' } } } } // { // text: '单位:个', // top: 20, // left: 20, // textStyle: { // fontSize: 14, // color: '#666666', // fontWeight: 400 // } // } ], // legend: { // orient: 'vertical', // icon: 'rect', // x: '80%', // y: 'center', // itemWidth: 12, // itemHeight: 12, // align: 'left', // textStyle: { // rich: { // name: { // fontSize: 12 // }, // value: { // fontSize: 16, // padding: [0, 5, 0, 15] // }, // unit: { // fontSize: 12 // } // } // }, // formatter: function(name) { // let res = echartData.filter(v => v.name === name); // res = res[0] || {}; // let unit = res.unit || ''; // return '{name|' + name + '} {value|' + res.value + '}{unit|' + unit + '}' // } // // data: legendName // }, series: [ { type: 'pie', radius: ['35%', '50%'], center: ['50%', '50%'], data: echartData, hoverAnimation: false, itemStyle: { normal: { borderColor: bgColor, borderWidth: 2 } }, labelLine: { normal: { // showAbove: false, length: 20, length2: 35, lineStyle: { color: '#fff' } } }, label: { normal: { formatter: params => { return ( '{icon|●}{name|' + params.name + '}{value|' + formatNumber(params.value) + '}' ) }, padding: [0, -50, 25, -50], rich: { icon: { fontSize: 18, color: 'red' }, name: { fontSize: 18, padding: [0, 10, 0, 4], color: '#fff' }, value: { fontSize: 18, fontWeight: 'bold', color: '#fff' } } } } }] } return option } // 车间生产 生产信息 生产进度 进度条 export function progress(param1, param2) { // param1 报工数量 // param2 任务数量 // 拿到数据之后需要计算出相对长度 param2的相对长度为100 let relativeValue = ''// 相对值 绿色背景 relativeValue = (param1 / param2) * 100 // 百分比数值的位置 var position = 'right' // if (param1 >= 50) { // position = 'inside'; // } else if (param1 < 50) { // position = 'right'; // } var option = { animation: false, // animation: false, // 取消动画 // animationDuration: 5000, grid: { top: 'center', left: '0%', right: '0%', // height: '%', // containLabel: false containLabel: true }, xAxis: { type: 'value', axisLabel: { show: false }, max: 100, axisTick: { show: false }, axisLine: { show: false }, splitLine: { show: false } }, yAxis: [{ type: 'category', data: [], axisLabel: { show: false }, axisTick: { show: false }, axisLine: { show: false }, splitLine: { show: false }, z: 10 }, { type: 'category', axisLabel: { show: false }, axisTick: { show: false }, axisLine: { show: false }, splitLine: { show: false }, data: [] }], series: [{ name: '', type: 'bar', barWidth: '100%', // barMaxWidth: '100%', label: { normal: { show: true, // position: ['24', '38%'], position: (param1.toString() + param2.toString()).length <= 6 ? ['24', '38%'] : 'insideLeft', // formatter: '{c} %', formatter: param1 + '/' + param2, textStyle: { color: '#FFFFFF', fontWeight: 'bold', fontFamily: 'Microsoft YaHei', fontSize: 18 } } }, itemStyle: { normal: { barBorderRadius: 5, shadowBlur: 10, shadowColor: '#111', color: '#2FD04F' } }, // data: [param1], data: [relativeValue], z: 10 }, { type: 'bar', barWidth: '100%', yAxisIndex: 1, silent: true, // barMaxWidth: '100%', itemStyle: { normal: { barBorderRadius: 5, color: '#42475B' } }, // data: [param2] data: [100] }] } return option }