|
@@ -5,8 +5,15 @@ export const GradualChange = (color1, color2) => {
|
|
|
{ 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 + '' },
|
|
|
+ ])
|
|
|
+}
|
|
|
|
|
|
-const dateType = (date) => {
|
|
|
+export const dateType = (date) => {
|
|
|
let val = '';
|
|
|
if (date) {
|
|
|
val = `${date.slice(0, 4)}年${date.slice(4)}月`
|
|
@@ -38,6 +45,8 @@ export const getItemStyle = (c1, c2) => {
|
|
|
}
|
|
|
};
|
|
|
}
|
|
|
+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'),
|
|
@@ -92,7 +101,7 @@ export const ringType = (
|
|
|
}
|
|
|
},
|
|
|
title,
|
|
|
- color: color || defaultColor,
|
|
|
+ color: !!color.length ? color : defaultColor,
|
|
|
series: [
|
|
|
{
|
|
|
type: 'pie',
|
|
@@ -263,4 +272,163 @@ export const discountedWave = (
|
|
|
|
|
|
};
|
|
|
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 = `<div class="dmp-echart-tooltip" style="text-align: center;"><h4>${dateType(param[0].axisValue)}</h4>`;
|
|
|
+ param.forEach(item => {
|
|
|
+ el += `<p style="text-align: left;">
|
|
|
+ <span style="display:inline-block;margin-right:5px;border-radius:4px;width:12px;height:8px;background-image: linear-gradient(to left,
|
|
|
+ ${item.color.colorStops[0].color}, ${item.color.colorStops[1].color})"></span>
|
|
|
+ <span>${item.seriesName}:${item.seriesName == '环比增长' ? (item.value * 100 || 0) + '%' : item.value || 0}</span>
|
|
|
+ </p>`;
|
|
|
+ });
|
|
|
+ el += `</div>`;
|
|
|
+ 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;
|
|
|
+}
|