123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434 |
- //从左往右颜色渐变
- 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 = `<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: 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 = `<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.value.toFixed(2)}</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;
- }
|