123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417 |
- const getColor = ([color1, color2]) => {
- // 右 下 左 上
- let colorVa =
- new echarts.graphic.LinearGradient(0, 0, 0, 1, [
- { offset: 0, color: color1 + '' },
- { offset: 1, color: color2 + '' || color1 + '' },
- ])
- return colorVa
- }
- const defaultColor = [['#0EAEFF', '#85E9FF'], ['#F0646C', '#F4994E']]
- const dateType = (date) => {
- let val = '';
- if (date) {
- val = `${date.slice(0, 4)}年${date.slice(4)}月`
- } else {
- val = date
- }
- return val
- }
- export const columnOptionsChart = (
- name = "",
- xAxis = [],
- series = [],
- color = [],
- barWidth = 6
- ) => {
- let defaultData = [{
- name: '', type: 'bar', data: []
- }]
- 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: 30,
- left: 0,
- bottom: 0,
- right: 0,
- containLabel: true
- },
- xAxis: {
- type: "category",
- axisLine: {
- show: false // 不显示坐标轴
- },
- axisTick: {
- show: false // 不显示坐标轴刻度
- },
- axisLabel: {
- formatter: function (params, index) {
- return params.slice(4) + '月';
- },
- color: "#9B9DA5",
- margin: 15
- },
- data: xAxis
- },
- 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: {
- x: 'right',
- icon: "circle",
- itemWidth: 8, // 图例图形宽度
- itemHeight: 8,
- itemGap: 20
- },
- series: seriesConfiguration() || defaultData
- };
- return option;
- }
- function 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 clientOptionsChart = (
- title = "",
- xAxis = [],
- series = [],
- color = [],
- data = ""
- ) => {
- let option = {
- tooltip: {
- trigger: "axis",
- 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"><h4>${dateType(param[0].axisValue)}</h4>`;
- param.forEach(item => {
- el += `<p>
- <span class="marker" style="display:inline-block;margin-right:5px;border-radius:10px;width:10px;height:10px;background-image: linear-gradient(to left,
- ${item.color.colorStops[0].color}, ${item.color.colorStops[1].color});"></span>
- <span>${item.seriesName}:${item.value}</span>
- </p>`;
- });
- el += `</div>`;
- return el;
- }
- },
- grid: {
- top: 40,
- left: 0,
- bottom: 6,
- right: 0,
- containLabel: true
- },
- legend: {
- icon: "circle",
- data: ["正常", "异常", "未启用", "报废"],
- 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(4) + '月';
- },
- 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: 6,
- 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, -50] },
- splitLine: {
- lineStyle: {
- type: "dotted",
- width: 0.2
- }
- }
- },
- series: [
- {
- name: "正常",
- type: "line",
- smooth: true,
- symbol: "circle", // 实心
- symbolSize: 1, // 设定实心点的大小
- itemStyle: getItemStyle("#5EEDCC", "#24C3F1"),
- data: data.normal,
- areaStyle: {
- normal: {
- color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
- {
- offset: 0,
- color: "rgba(36,121,253,0.08)"
- },
- {
- offset: 1,
- color: "rgba(19,194,247,0.05)"
- }
- ])
- }
- },
- lineStyle: {
- width: 1
- }
- },
- {
- name: "异常",
- type: "line",
- smooth: true,
- symbol: "circle", // 实心
- symbolSize: 1, // 设定实心点的大小
- itemStyle: getItemStyle("#FE9156", "#FE5760"),
- data: data.abnormal,
- areaStyle: {
- normal: {
- color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
- {
- offset: 0,
- color: "rgba(254,87,96,0.08)"
- },
- {
- offset: 1,
- color: "rgba(254,145,86,0.05)"
- }
- ])
- }
- },
- lineStyle: {
- width: 1
- }
- },
- {
- name: "未启用",
- type: "line",
- smooth: true,
- symbol: "circle", // 实心
- symbolSize: 1, // 设定实心点的大小
- itemStyle: getItemStyle("#7178FF", "#D2A4FF"),
- data: data.unused,
- areaStyle: {
- normal: {
- color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
- {
- offset: 0,
- color: "rgba(133,65,249,0.08)"
- },
- {
- offset: 1,
- color: "rgba(227,79,153,0.05)"
- }
- ])
- }
- },
- lineStyle: {
- width: 1
- }
- },
- {
- name: "报废",
- type: "line",
- smooth: true,
- symbol: "circle", // 实心
- symbolSize: 1, // 设定实心点的大小
- itemStyle: getItemStyle("#E34F99", "#8541F9"),
- data: data.scrap,
- areaStyle: {
- normal: {
- color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
- {
- offset: 0,
- color: "rgba(133,65,249,0.08)"
- },
- {
- offset: 1,
- color: "rgba(227,79,153,0.05)"
- }
- ])
- }
- },
- }
- ]
- };
- return option;
- };
|