//从左往右颜色渐变 export const GradualChange = (color1, color2) => { return new echarts.graphic.LinearGradient(1, 0, 0, 0, [ { offset: 1, color: color1 + '' }, { offset: 0, color: color2 + '' || color1 + '' } ]); }; export const getColor = ([color1, color2]) => { // 右 下 左 上 return new echarts.graphic.LinearGradient(0, 0, 0, 1, [ { offset: 0, color: color1 + '' }, { offset: 1, color: color2 + '' || color1 + '' }, ]) } export const dateType = (date) => { let val = ''; if (date) { val = `${date.slice(0, 4)}年${date.slice(4)}月` } else { val = date } return val } //折现波浪线颜色渐变 export const getItemStyle = (c1, c2) => { return { color: { type: "linear", x: 0, y: 0, x2: 0, y2: 1, colorStops: [ { offset: 0, color: c1 // 0% 处的颜色 }, { offset: 1, color: c2 // 100% 处的颜色 } ], global: false // 缺省为 false } }; } export const defaultMonth = ['01', "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12"]; const defaultColor = [GradualChange('#22D8FF', '#00B2FF'), GradualChange('#F0646C', '#F4994E'), GradualChange('#5EEDCC ', '#24C3F1'), GradualChange('#7178FF', '#D2A4FF'), GradualChange('#884DD2', '#DF63CC')] export const ringType = ( color = [], data = [], title = {}, legendFcuntion = {} ) => { let legendFcuntionValue = (v) => { let val = '' data.map(item => { if (item.name == v) { if (legendFcuntion.type == '%') { val = `{a|${v}} · · · · · · {b|${parseInt((item.value / legendFcuntion.total).toFixed(2) * 100) || 0}%}` } else { val = `{a|${v}} · · · · · · {b|${item.value}}` } } }) return val } return { tooltip: { trigger: 'item' }, legend: { orient: 'vertical', right: 10, top: 80, itemGap: 10, itemWidth: 12, // 图例图形宽度 itemHeight: 8, type: 'scroll', formatter: (v) => { return legendFcuntionValue(v) }, textStyle: { rich: { a: { fontSize: 12, color: '#858892', padding: [0, 5, 0, 0] }, b: { fontSize: 14, color: '#fff', padding: [0, 0, 0, 5] } } } }, title, color: !!color.length ? color : defaultColor, series: [ { type: 'pie', radius: ['55%', '70%'], avoidLabelOverlap: false, center: ['25%', '50%'], label: { show: false, position: 'center' }, labelLine: { show: false }, data: data } ] } } // 折现波浪 export const discountedWave = ( name = "", xAxis = [], series = [], legendShow = false, color = [], ) => { let option = { tooltip: { trigger: "axis", textStyle: { fontSize: 12, color: "#FFFFFF" }, // formatter(param) { // let el = `

${dateType(param[0].axisValue)}

`; // param.forEach(item => { // el += `

// // ${item.seriesName}:${item.value} //

`; // }); // el += `
`; // return el; // } }, grid: { top: 50, left: 5, bottom: 0, right: 5, containLabel: true }, legend: { show: legendShow, icon: "circle", x: "right", // 可设定图例在左、右、居中 itemWidth: 8, // 图例图形宽度 itemHeight: 8, itemGap: 20, }, xAxis: { type: "category", axisLine: { show: false // 不显示坐标轴 }, axisTick: { show: false // 不显示坐标轴刻度 }, axisLabel: { formatter: function (params, index) { return params.slice(5) }, color: "#9B9DA5", margin: 16 }, data: xAxis, axisPointer: { type: "shadow", shadowStyle: { color: { type: "linear", x: 0, y: 0, x2: 0, y2: 1, colorStops: [ { offset: 0, color: "rgba(31,207,245,0)" // 0% 处的颜色 }, { offset: 0.8, color: "rgba(31,207,245,0.15)" // 100% 处的颜色 }, { offset: 0.2, color: "rgba(31,207,245,0.15)" // 100% 处的颜色 }, { offset: 1, color: "rgba(31,207,245,0.05)" } ], global: false // 缺省为 false } } } }, yAxis: { type: "value", splitNumber: 4, axisLine: { show: false }, name: name, axisTick: { show: false }, axisLabel: { color: "#9B9DA5", margin: 15, textStyle: { align: "right", baseline: "middle" } }, nameLocation: "end", nameTextStyle: { color: "#9B9DA5", padding: [0, 0, 0, -40] }, splitLine: { lineStyle: { type: "dotted", width: 0.2 } } }, series: [ { // name: "设备告警", type: "line", smooth: true, symbol: "circle", // 实心 symbolSize: 1, // 设定实心点的大小 itemStyle: getItemStyle("#5EEDCC", "#24C3F1"), data: series, areaStyle: { normal: { color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [ { offset: 0, color: "rgba(36,121,253,0.1)" }, { offset: 1, color: "rgba(19,194,247,0.3)" } ]) } }, lineStyle: { width: 1 } }, ] }; return option; }; //柱状 export const columnOptionsChart = ( name = "", xAxis = [], series = [], color = [], barWidth = 6 ) => { let defaultData = [{ name: '', type: 'bar', data: [] }] let defaultColor = [['#0EAEFF', '#85E9FF'], ['#F0646C', '#F4994E']] let seriesConfiguration = () => { let seriesData = []; series.map((item, index) => { seriesData.push({ name: item.name, type: 'bar', data: item.data, barWidth: barWidth, itemStyle: { normal: { barBorderRadius: [15, 15, 0, 0], color: getColor(color[index] || defaultColor[index]), } }, barGap: '100%' }) }) return seriesData } let option = { tooltip: { trigger: "axis", axisPointer: { type: "shadow", shadowStyle: { color: { type: "linear", x: 0, y: 0, x2: 0, y2: 1, colorStops: [ { offset: 0, color: "rgba(31,207,245,0)" // 0% 处的颜色 }, { offset: 0.8, color: "rgba(31,207,245,0.15)" // 100% 处的颜色 }, { offset: 0.2, color: "rgba(31,207,245,0.15)" // 100% 处的颜色 }, { offset: 1, color: "rgba(31,207,245,0.05)" } ], global: false // 缺省为 false } }, crossStyle: { shadowBlur: 30, shadowColor: "rgba(0, 0, 0, 0.5)" } }, extraCssText: "background:rgba(33,40,56,0.6);border-radius:4px;padding:6px 10px", textStyle: { fontSize: 12, color: "#FFFFFF" }, formatter(param) { let el = `

${dateType(param[0].axisValue)}

`; param.forEach(item => { el += `

${item.seriesName}:${item.value.toFixed(2)}

`; }); el += `
`; return el; } }, grid: { top: 50, left: 0, bottom: 0, right: 0, containLabel: true }, xAxis: { type: "category", axisLine: { show: false // 不显示坐标轴 }, axisTick: { show: false // 不显示坐标轴刻度 }, axisLabel: { formatter: function (params, index) { if (params.length == 2) { return params + '月'; } else { return params.slice(5) + '月'; } }, color: "#9B9DA5", margin: 15 }, data: !!xAxis.length ? xAxis : defaultMonth }, yAxis: { type: "value", splitNumber: 4, name: name, axisLine: { show: false }, axisTick: { show: false }, axisLabel: { color: "#9B9DA5", margin: 15, textStyle: { align: "right", baseline: "middle" } }, nameLocation: "end", nameTextStyle: { color: "#9B9DA5", padding: [0, 0, 0, -40] }, splitLine: { lineStyle: { type: "dotted", width: 0.5 } } }, legend: { show: false, x: 'right', icon: "circle", itemWidth: 8, // 图例图形宽度 itemHeight: 8, itemGap: 20 }, series: seriesConfiguration() || defaultData }; return option; }