diff --git a/ruoyi-admin/src/main/resources/static/js/echartsCommon.js b/ruoyi-admin/src/main/resources/static/js/echartsCommon.js index 0779c8e..7efbdf9 100644 --- a/ruoyi-admin/src/main/resources/static/js/echartsCommon.js +++ b/ruoyi-admin/src/main/resources/static/js/echartsCommon.js @@ -1672,6 +1672,267 @@ const verticalBarChart = function (data, id, unit = '次') { } // 多个垂直柱状图 +const multipleVerticalBarChart1 = function (data, id) { + let charts = echarts.init(id); + if (!data) { + data = { + xName: [ + "7:00", + "8:00", + "9:00", + "10:00", + "11:00", + "12:00", + ], + yDataOne: [4.9, 7.3, 9.2, 5.6, 7.7, 5.6], + yDataOneName: "制氢", + yDataTwo: [2.9, 5, 4.4, 2.7, 5.7, 4.6], + yDataTwoName: "发电", + yDataThree: [3.9, 6, 5.4, 3.7, 6.7, 5.6], + yDataThreeName: "充装", + } + } + let option = { + tooltip: { + //提示框组件 + tooltip: { + trigger: "axis", + axisPointer: { + lineStyle: { + color: "#57617B", + }, + }, + }, + // trigger: "axis", + // formatter: `{b}
{a0}: {c0}
{a1}: {c1}`, + // axisPointer: { + // type: "shadow", + // label: { + // backgroundColor: "#6a7985", + // }, + // }, + // textStyle: { + // color: "#fff", + // fontStyle: "normal", + // fontFamily: "微软雅黑", + // fontSize: 12, + // }, + }, + grid: { + left: "1%", + right: "4%", + bottom: "0", + top: 30, + padding: "0 0 10 0", + containLabel: true, + }, + legend: { + //图例组件,颜色和名字 + right: 10, + top: 0, + itemGap: 16, + itemWidth: vw, + itemHeight: 0.6 * vw, + textStyle: { + color: "#a8aab0", + fontStyle: "normal", + fontFamily: "微软雅黑", + fontSize: 0.75 * vw, + }, + }, + dataZoom: [], + xAxis: [ + { + type: "category", + boundaryGap: true, //坐标轴两边留白 + data: data.xName, + axisLabel: { + show: true, + color: '#fff' + }, + axisTick: { + //坐标轴刻度相关设置。 + show: false, + }, + axisLine: { + //坐标轴轴线相关设置 + lineStyle: { + color: "#fff", + opacity: 0.2, + }, + }, + splitLine: { + show: true, + lineStyle: { + type: 'dashed', + color: '#777777', + opacity: 0.3, + }, + }, + }, + ], + yAxis: { + type: "value", + splitNumber: 5, + min: 10, + max: 14, + axisLabel: { + show: true, + color: '#fff' + }, + axisLine: { + show: false, + }, + axisTick: { + show: false, + }, + splitLine: { + show: true, + lineStyle: { + type: 'dashed', + color: '#777777', + opacity: 0.3, + }, + }, + }, + series: [ + { + name: data.yDataOneName, + type: "bar", + data: data.yDataOne, + barWidth: 1 * vw, + barGap: 0, //柱间距离 + label: { + //图形上的文本标签 + normal: { + show: true, + position: "top", + textStyle: { + color: "#a8aab0", + fontStyle: "normal", + fontFamily: "微软雅黑", + fontSize: 0.75 * vw, + }, + }, + }, + itemStyle: { + //图形样式 + normal: { + barBorderRadius: [5, 5, 0, 0], + color: { + x: 0, + y: 0, + x2: 0, + y2: 1, + type: 'linear', + global: false, + colorStops: [ + { + offset: 0, + color: 'rgb(21, 148, 244)', + }, + { + offset: 1, + color: 'rgb(13, 48, 243)', + }, + ], + }, + }, + }, + }, + { + name: data.yDataTwoName, + type: "bar", + data: data.yDataTwo, + barWidth: 1 * vw, + barGap: 0.5, //柱间距离 + label: { + //图形上的文本标签 + normal: { + show: true, + position: "top", + textStyle: { + color: "#a8aab0", + fontStyle: "normal", + fontFamily: "微软雅黑", + fontSize: 0.75 * vw, + }, + }, + }, + itemStyle: { + //图形样式 + normal: { + barBorderRadius: [5, 5, 0, 0], + color: { + x: 0, + y: 0, + x2: 0, + y2: 1, + type: 'linear', + global: false, + colorStops: [ + { + offset: 0, + color: '#0DCEB1', + }, + { + offset: 1, + color: '#14A15A', + }, + ], + }, + }, + }, + }, + { + name: data.yDataThreeName, + type: "bar", + data: data.yDataThree, + barWidth: 1 * vw, + barGap: 0.5, //柱间距离 + label: { + //图形上的文本标签 + normal: { + show: true, + position: "top", + textStyle: { + color: "#a8aab0", + fontStyle: "normal", + fontFamily: "微软雅黑", + fontSize: 0.75 * vw, + }, + }, + }, + itemStyle: { + //图形样式 + normal: { + barBorderRadius: [5, 5, 0, 0], + color: "rgba(26, 99, 74, 0.7)", + }, + }, + }, + ], + }; + + if (data?.xName?.length >= 4) { + option.dataZoom.push({ + show: true, + type: 'slider', + bottom: '0%', + xAxisIndex: 0, + height: 12, + start: 0, + end: 1 / (data.xName.length / 4) * 100, + textStyle: { + fontSize: 0, + color: 'rgba(0,0,0,0)' + } + }) + option.grid.bottom = '7%' + } + charts.setOption(option); + $(window).resize(charts.resize); +} const multipleVerticalBarChart = function (data, id) { let charts = echarts.init(id); if (!data) { @@ -2616,6 +2877,272 @@ const singleVerticalBarChartTwo = function (data, id) { } // 多个折线面积图(直线) +const multipleBrokenLineAreaDiagram1 = (data, ids) => { + let charts = echarts.init(ids); + + function Fun() { + this.randomNum = function () { + let arr = [] + for (let i = 0; i < 12; i++) { + arr.push(parseInt(Math.random() * 100)) + } + return arr + } + } + + if (!data) { + data = { + xData: ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'], + yDataOne: new Fun().randomNum(), + yDataTwo: new Fun().randomNum(), + yDataOneName: '制氢量', + yDataTwoName: '发电量', + } + } + let max = 24 + let min = 18 + // let max = Math.round(Math.max(...data.yDataOne, ...data.yDataTwo)) + // let min = Math.round(Math.min(...data.yDataOne, ...data.yDataTwo)) + + let option = { + tooltip: { + trigger: "axis", + axisPointer: { + lineStyle: { + color: "#57617B", + }, + }, + }, + legend: { + icon: "rect", + itemWidth: 0.75 * vw, + itemHeight: 0.25 * vw, + itemGap: 0.75 * vw, + data: [data.yDataOneName, data.yDataTwoName, data.yDataThreeName], + right: "4%", + textStyle: { + fontSize: 0.75 * vw, + color: "#F1F1F3", + }, + }, + grid: { + top: "20%", + left: "3%", + right: "4%", + bottom: "3%", + containLabel: true, + }, + dataZoom: [], + xAxis: [ + { + type: "category", + boundaryGap: false, + axisLine: { + lineStyle: { + color: "#57617B", + }, + }, + axisLabel: { + show: true, + color: '#fff', + interval: 0, + }, + data: data.xData, + }, + ], + yAxis: [ + { + type: "value", + axisTick: { + show: false, + }, + max: max + 0.5, + min: min - 1, + axisLine: { + lineStyle: { + color: "#57617B", + }, + }, + axisLabel: { + show: true, + color: '#fff', + interval: 0.5, + }, + splitLine: { + show: false, + lineStyle: { + color: "#57617B", + }, + }, + }, + ], + series: [ + { + name: data.yDataOneName, + type: "line", + smooth: false, + lineStyle: { + normal: { + width: 1, + }, + }, + areaStyle: { + normal: { + color: new echarts.graphic.LinearGradient( + 0, + 0, + 0, + 1, + [ + { + offset: 0, + color: "rgba(137, 189, 27, 0.6)", + }, + { + offset: 0.8, + color: "rgba(137, 189, 27, 0.2)", + }, + ], + false + ), + shadowColor: "rgba(0, 0, 0, 0.1)", + shadowBlur: 10, + }, + }, + itemStyle: { + normal: { + color: "rgb(137,189,27)", + }, + }, + label: { + //图形上的文本标签 + normal: { + show: true, + position: "top", + textStyle: { + color: "#a8aab0", + fontStyle: "normal", + fontFamily: "微软雅黑", + fontSize: 0.75 * vw, + }, + }, + }, + data: data.yDataOne, + }, + { + name: data.yDataTwoName, + type: "line", + smooth: false, + lineStyle: { + normal: { + width: 1, + }, + }, + areaStyle: { + normal: { + color: new echarts.graphic.LinearGradient( + 0, + 0, + 0, + 1, + [ + { + offset: 0, + color: "rgba(0, 136, 212, 0.6)", + }, + { + offset: 0.8, + color: "rgba(0, 136, 212, 0.2)", + }, + ], + false + ), + shadowColor: "rgba(0, 0, 0, 0.1)", + shadowBlur: 10, + }, + }, + itemStyle: { + normal: { + color: "rgb(0,136,212)", + }, + }, + label: { + //图形上的文本标签 + normal: { + show: true, + position: "bottom", + textStyle: { + color: "#a8aab0", + fontStyle: "normal", + fontFamily: "微软雅黑", + fontSize: 0.75 * vw, + }, + }, + }, + data: data.yDataTwo, + }, + { + name: data.yDataThreeName, + type: "line", + smooth: false, + lineStyle: { + normal: { + width: 1, + }, + }, + areaStyle: { + normal: { + color: new echarts.graphic.LinearGradient( + 0, + 0, + 0, + 1, + [ + { + offset: 0, + color: "rgba(219, 50, 51, 0.6)", + }, + { + offset: 0.8, + color: "rgba(219, 50, 51, 0.2)", + }, + ], + false + ), + shadowColor: "rgba(0, 0, 0, 0.1)", + shadowBlur: 10, + }, + }, + itemStyle: { + normal: { + color: "rgb(219,50,51)", + }, + }, + data: data.yDataThree, + }, + ], + }; + + if (data?.xData?.length >= 4) { + option.dataZoom.push({ + show: true, + type: 'slider', + bottom: '0%', + xAxisIndex: 0, + height: 12, + start: 0, + end: 1 / (data.xData.length / 4) * 100, + textStyle: { + fontSize: 0, + color: 'rgba(0,0,0,0)' + } + }) + option.grid.bottom = '7%' + } + + charts.setOption(option); + $(window).resize(charts.resize); +} const multipleBrokenLineAreaDiagram = (data, ids) => { let charts = echarts.init(ids); @@ -3472,4 +3999,4 @@ const percentageRingDiagramTwo = function (data, id) { charts.setOption(option); $(window).resize(charts.resize); -} \ No newline at end of file +} diff --git a/ruoyi-admin/src/main/resources/templates/broad/fp.html b/ruoyi-admin/src/main/resources/templates/broad/fp.html index 379c725..4c86907 100644 --- a/ruoyi-admin/src/main/resources/templates/broad/fp.html +++ b/ruoyi-admin/src/main/resources/templates/broad/fp.html @@ -583,7 +583,7 @@ // 右侧压力 + 右侧温度 autoUpdate('/broad/fp/selectDeviceStation', INTERVAL, data => { // 右侧压力 - multipleVerticalBarChart( + multipleVerticalBarChart1( { xName: data.map(value => value.station_no), yDataOne: data.map(value => value.pol_yl * 1.3), @@ -592,7 +592,7 @@ yDataTwoName: "ISO压力", }, document.getElementById("top-right")) // 右侧温度 - multipleBrokenLineAreaDiagram( + multipleBrokenLineAreaDiagram1( { xData: data.map(value => value.station_no), yDataOne: data.map(value => value.pol_wd ), @@ -983,4 +983,4 @@ } - \ No newline at end of file +