import { red } from 'stylus/lib/functions'; //从左往右颜色渐变 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']; export const defaultName = ['name1', 'name2', 'name3']; 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 = `
// // ${item.seriesName}:${item.value} //
`; // }); // el += `${item.seriesName}:${item.value.toFixed(2)}
`; }); el += `${item.name}:${item.value}${name}
`; }); el += ``; return el; } }, grid: { top: 50, left: 10, bottom: 0, right: 0, containLabel: true }, xAxis: { type: 'category', axisLine: { show: false // 不显示坐标轴 }, axisTick: { show: false // 不显示坐标轴刻度 }, axisLabel: { // interval: 0, // rotate: 45, formatter: function (params, index) { if (params.length > 5) { return `${params.slice(0, 3)}...`; } else { return params; } // return params; }, color: '#9B9DA5', margin: 15 }, data: !!xAxis.length ? xAxis : defaultName }, 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; }; //柱状name 单柱状 x轴倾斜 export const columnOptionsChartNameTilt = (name = '', xAxis = [], series = [], color = [], barWidth = 6) => { let defaultData = [ { name: '', type: 'bar', data: [] } ]; let defaultColor = [ ['#0EAEFF', '#85E9FF'], ['#F0646C', '#F4994E'] ]; let seriesConfiguration = () => { let seriesData = [ { type: 'bar', data: [], barWidth: barWidth, itemStyle: { normal: { barBorderRadius: [15, 15, 0, 0], color: getColor(color[0] || defaultColor[0]) } }, barGap: '100%' } ]; series.map((item, index) => { seriesData[0].data.push(item.data); }); 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 = ``; param.forEach((item) => { el += `${item.name}:${item.value}${name}
`; }); el += ``; return el; } }, grid: { top: 50, left: 10, bottom: 0, right: 0, containLabel: true }, xAxis: { type: 'category', axisLine: { show: false // 不显示坐标轴 }, axisTick: { show: false // 不显示坐标轴刻度 }, axisLabel: { // interval: 0, rotate: 45, formatter: function (params, index) { if (params.length > 5) { return `${params.slice(0, 3)}...`; } else { return params; } // return params; }, color: '#9B9DA5', margin: 15 }, data: !!xAxis.length ? xAxis : defaultName }, 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; }; //柱状name 单柱状 x轴倾斜 多条提示信息 export const columnOptionsChartNameTiltes = (name = '', xAxis = [], series = [], color = [], barWidth = 6, name1 = [], name2 = []) => { let defaultData = [ { name: '', type: 'bar', data: [] } ]; let defaultColor = [ ['#0EAEFF', '#85E9FF'], ['#F0646C', '#F4994E'] ]; let seriesConfiguration = () => { let seriesData = [ { type: 'bar', data: [], barWidth: barWidth, itemStyle: { normal: { barBorderRadius: [15, 15, 0, 0], color: getColor(color[0] || defaultColor[0]) } }, barGap: '100%' } ]; series.map((item, index) => { seriesData[0].data.push(item.data); }); 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 = ``; param.forEach((item) => { // console.log(item.dataIndex); el += `${item.name}:${item.value}${name}
所属社区:${name1[item.dataIndex]}
时间:${name2[item.dataIndex]}
`; }); el += ``; return el; } }, grid: { top: 50, left: 10, bottom: 0, right: 0, containLabel: true }, xAxis: { type: 'category', axisLine: { show: false // 不显示坐标轴 }, axisTick: { show: false // 不显示坐标轴刻度 }, axisLabel: { // interval: 0, rotate: 45, formatter: function (params, index) { if (params.length > 5) { return `${params.slice(0, 3)}...`; } else { return params; } // return params; }, color: '#9B9DA5', margin: 15 }, data: !!xAxis.length ? xAxis : defaultName }, yAxis: { type: 'value', splitNumber: 4, name: name, minInterval: 1, 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; }; // 柱状图堆叠 export const columnOptionsChartStacking = (name = '', xAxis = [], series = [], color = [], barWidth = 6) => { let defaultData = [ { name: '', type: 'bar', data: [] } ]; let defaultColor = [ // ['#0EAEFF', '#85E9FF'], ['#0EAEFF', '#0EAEFF'], ['#85E9FF', '#85E9FF'] // ['#F0646C', '#F4994E'] ]; let seriesConfiguration = () => { let seriesData = [ { type: 'bar', data: [], name: '', barWidth: barWidth, itemStyle: { normal: { barBorderRadius: [15, 15, 0, 0], color: getColor(color[0] || defaultColor[0]) } }, barGap: '100%' }, { type: 'bar', data: [], name: '', barWidth: barWidth, itemStyle: { normal: { barBorderRadius: [15, 15, 0, 0], color: getColor(color[1] || defaultColor[1]) } }, barGap: '-100%', z: '1' } ]; series.map((item, index) => { seriesData[index].data = item.data; seriesData[index].name = item.name; }); 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 = ``; let elitme = ``; param.forEach((item) => { elitme = `${item.name}
`; el += `${item.seriesName}:${item.value}${name}
`; }); el += ``; return elitme + 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) { return params; }, color: '#9B9DA5', margin: 15 }, data: !!xAxis.length ? xAxis : defaultName }, 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; }; // 折线日期 间隔4个 export const discountedChart = (name = '', xAxis = [], series = [], legendShow = false, color = []) => { let option = { tooltip: { trigger: 'axis', textStyle: { fontSize: 12, color: '#FFFFFF' } // formatter(param) { // let el = `// // ${item.seriesName}:${item.value} //
`; // }); // el += `${item.seriesName}:${item.value}${name}
`; }); el += ``; return el; } }, grid: { top: 50, left: 10, bottom: 0, right: 0, containLabel: true }, xAxis: { type: 'category', axisLine: { show: false // 不显示坐标轴 }, axisTick: { show: false // 不显示坐标轴刻度 }, axisLabel: { formatter: function (params, index) { return params; }, color: '#9B9DA5', margin: 15 }, data: !!xAxis.length ? xAxis : defaultName }, 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: true, x: 'right', icon: 'circle', itemWidth: 8, // 图例图形宽度 itemHeight: 8, itemGap: 20, textStyle: { color: '#FFF' } }, series: seriesConfiguration() || defaultData }; return option; }; // 散点图 export const quantitativeAnalysisProblems = (name = [], namexAxis = '', nameyAxis = '', xAxis = [], series = [], color = []) => { let defaultColor = [ ['#22D8FF'], ['#F0646C'], ['#5EEDCC', '#24C3F1'], ['#7178FF', '#D2A4FF'], ['#884DD2', '#DF63CC'], ['#00B2FF'], ['#F4994E'] ]; let seriesConfiguration = () => { let seriesData = []; series.map((item, index) => { seriesData.push({ name: item.name, type: 'scatter', data: item.data, color: defaultColor[index][0], symbolSize: function (data) { return data * 5 || 0; } }); }); return seriesData; }; let option = { tooltip: { trigger: 'axis', axisPointer: { type: 'cross', crossStyle: { color: '#999' } } }, legend: { data: name, itemWidth: 20, itemHeight: 10, top: 5, textStyle: { color: '#9B9DA5' } }, grid: { top: 75, left: 8, bottom: 0, right: 0, containLabel: true }, xAxis: { name: namexAxis, type: 'category', data: xAxis, axisLabel: { color: '#9B9DA5', lineStyle: { color: '#9B9DA5' } } }, yAxis: { name: nameyAxis, nameTextStyle: { color: '#9B9DA5' }, axisLabel: { formatter: '{value}' }, axisLabel: { color: '#9B9DA5', lineStyle: { color: '#9B9DA5' } } }, series: seriesConfiguration() || defaultData }; return option; };