diff --git a/src/views/water/lake/trend/index.vue b/src/views/water/lake/trend/index.vue
index eb5de25..7b50a07 100644
--- a/src/views/water/lake/trend/index.vue
+++ b/src/views/water/lake/trend/index.vue
@@ -99,7 +99,7 @@
-
+
@@ -119,9 +119,11 @@ export default {
return {
queryParams: {
yearList: [],
+ monthList: [],
+ lakeType:'',
placeList: [],
xco: "Xco_1", // 横坐标
- ycoList: [],
+ yco:"",
monitorIndexList: [], // 监测指标
},
trendData: [],
@@ -137,64 +139,64 @@ export default {
innerSection: [], // 内湖断面
specialSection: [], // 专湖断面
innerIndex: [
- { label: "pH值", value: "ph" },
- { label: "透明度(cm)", value: "transparency" },
- { label: "溶解氧饱和度(﹪)", value: "dissolvedOxygenSaturation" },
- { label: "溶解氧", value: "dissolvedOxygen" },
- { label: "高锰酸盐指数", value: "permanganateIndex" },
- { label: "五日生化需氧量", value: "fiveDayBod" },
- { label: "总氮 ", value: "totalNitrogen" },
- { label: "氨氮", value: "ammonia" },
- { label: "挥发酚", value: "volatilePhenol" },
- { label: "砷(mg/L)", value: "as" },
- { label: "汞 (mg/L)", value: "hg" },
- { label: "六价铬 (mg/L)", value: "cr6" },
- { label: "铅 (mg/L)", value: "pb" },
- { label: "镉 (mg/L)", value: "cd" },
- { label: "总磷", value: "totalPhosphorus" },
- { label: "石油类", value: "petro" },
- { label: "粪大肠菌群(MPN/L)", value: "fecalColiforms" },
- { label: "化学需氧量", value: "cod" },
- { label: "叶绿素a (mg/m3)", value: "chlA" },
- { label: "阴离子表面活性剂(mg/L)", value: "anSaa" },
- { label: "硫化物(mg/L) ", value: "s" },
- { label: "氧化还原电位(mV)", value: "oxidationReductionPotential" },
+ { label: "pH值", value: "ph", limit:"6",color:"#209f53" },
+ // { label: "透明度(cm)", value: "transparency", limit:"1",color:"#209f53" },
+ // { label: "溶解氧饱和度(﹪)", value: "dissolvedOxygenSaturation", limit:"6",color:"#20749f" },
+ { label: "溶解氧", value: "dissolvedOxygen", limit:"6",color:"#20749f" },
+ { label: "高锰酸盐指数", value: "permanganateIndex", limit:"4",color:"#7bbe3a" },
+ { label: "五日生化需氧量", value: "fiveDayBod", limit:"3",color:"#ad3abe" },
+ { label: "总氮 ", value: "totalNitrogen", limit:"0.5",color:"#a4a3f1" },
+ { label: "氨氮", value: "ammonia", limit:"0.5",color:"#3d3abe" },
+ { label: "挥发酚", value: "volatilePhenol", limit:"0.002",color:"#f1eca3" },
+ { label: "砷(mg/L)", value: "as", limit:"0.05",color:"#bbb443" },
+ { label: "汞 (mg/L)", value: "hg", limit:"0.00005",color:"#62bb43" },
+ { label: "六价铬 (mg/L)", value: "cr6", limit:"0.05",color:"#3cd560" },
+ { label: "铅 (mg/L)", value: "pb", limit:"0.01",color:"#91b516" },
+ { label: "镉 (mg/L)", value: "cd", limit:"0.005",color:"#4ab516" },
+ { label: "总磷", value: "totalPhosphorus", limit:"0.1",color:"#62255a" },
+ { label: "石油类", value: "petro", limit:"0.05",color:"#8a4c82" },
+ { label: "粪大肠菌群(MPN/L)", value: "fecalColiforms", limit:"2000",color:"#63258b" },
+ { label: "化学需氧量", value: "cod", limit:"15",color:"#25388b" },
+ // { label: "叶绿素a (mg/m3)", value: "chlA", limit:"1",color:"#209f53" },
+ { label: "阴离子表面活性剂(mg/L)", value: "anSaa", limit:"0.2",color:"#258b80" },
+ { label: "硫化物(mg/L) ", value: "s", limit:"0.1",color:"#27aa49" },
+ // { label: "氧化还原电位(mV)", value: "oxidationReductionPotential", limit:"1",color:"#209f53" },
], // 内湖监测指标
specialIndex: [
- { label: "浊度(NTU)", value: "turbidity" },
- { label: "水温(℃)", value: "wTemp" },
- { label: "水位(m)", value: "wd" },
- { label: "pH值", value: "ph" },
- { label: "电导率(ms/m)", value: "wCond" },
- { label: "透明度(cm)", value: "transp" },
- { label: "溶解氧 (mg/L)", value: "dissolvedOxygen" },
- { label: "高锰酸盐指数 (mg/L)", value: "codmn" },
- { label: "五日生化需氧量", value: "bod5" },
- { label: "氨氮 (mg/L)", value: "nh4N" },
- { label: "石油类 (mg/L)", value: "oils" },
- { label: "总氮 (mg/L)", value: "nTotal" },
- { label: "总磷 (mg/L)", value: "pTotal" },
- { label: "叶绿素 (mg/L)", value: "chlA" },
- { label: "挥发酚 (mg/L)", value: "vPhen" },
- { label: "汞 (mg/L)", value: "wHg" },
- { label: "铅 (mg/L)", value: "wPb" },
- { label: "化学需氧量 (mg/L)", value: "codcr" },
- { label: "铜 (mg/L)", value: "wCu" },
- { label: "锌 (mg/L)", value: "wZn" },
- { label: "氟化物 (mg/L)", value: "f" },
- { label: "硒 (mg/L)", value: "se" },
- { label: "砷 (mg/L)", value: "as" },
- { label: "镉 (mg/L)", value: "cd" },
- { label: "六价铬 (mg/L)", value: "cr6" },
- { label: "氰化物 (mg/L)", value: "cnTotal" },
- { label: "阴离子表面活性剂 (mg/L)", value: "anSaa" },
- { label: "硫化物 (mg/L)", value: "s" },
- { label: "粪大肠菌群 (mg/L)", value: "coloOrg" },
- { label: "硫酸盐 (mg/L)", value: "so4" },
- { label: "氯化物 (mg/L)", value: "cl" },
- { label: "硝酸盐 (mg/L)", value: "no3N" },
- { label: "铁 (mg/L)", value: "wFe" },
- { label: "锰 (mg/L)", value: "wMn" },
+ // { label: "浊度(NTU)", value: "turbidity", limit:"1",color:"#209f53" },
+ { label: "水温(℃)", value: "wTemp", limit:"2",color:"#209f53" },
+ { label: "水位(m)", value: "wd", limit:"1",color:"#209f53" },
+ { label: "pH值", value: "ph", limit:"1",color:"#209f53" },
+ { label: "电导率(ms/m)", value: "wCond", limit:"1",color:"#209f53" },
+ { label: "透明度(cm)", value: "transp", limit:"1",color:"#209f53" },
+ { label: "溶解氧 (mg/L)", value: "dissolvedOxygen", limit:"1",color:"#209f53" },
+ { label: "高锰酸盐指数 (mg/L)", value: "codmn", limit:"1",color:"#209f53" },
+ { label: "五日生化需氧量", value: "bod5", limit:"1",color:"#209f53" },
+ { label: "氨氮 (mg/L)", value: "nh4N", limit:"1",color:"#209f53" },
+ { label: "石油类 (mg/L)", value: "oils", limit:"1",color:"#209f53" },
+ { label: "总氮 (mg/L)", value: "nTotal", limit:"1",color:"#209f53" },
+ { label: "总磷 (mg/L)", value: "pTotal", limit:"1",color:"#209f53" },
+ { label: "叶绿素 (mg/L)", value: "chlA", limit:"1",color:"#209f53" },
+ { label: "挥发酚 (mg/L)", value: "vPhen", limit:"1",color:"#209f53" },
+ { label: "汞 (mg/L)", value: "wHg", limit:"1",color:"#209f53" },
+ { label: "铅 (mg/L)", value: "wPb", limit:"1",color:"#209f53" },
+ { label: "化学需氧量 (mg/L)", value: "codcr", limit:"1",color:"#209f53" },
+ { label: "铜 (mg/L)", value: "wCu", limit:"1",color:"#209f53" },
+ { label: "锌 (mg/L)", value: "wZn", limit:"1",color:"#209f53" },
+ { label: "氟化物 (mg/L)", value: "f", limit:"1",color:"#209f53" },
+ { label: "硒 (mg/L)", value: "se", limit:"1",color:"#209f53" },
+ { label: "砷 (mg/L)", value: "as", limit:"1",color:"#209f53" },
+ { label: "镉 (mg/L)", value: "cd", limit:"1",color:"#209f53" },
+ { label: "六价铬 (mg/L)", value: "cr6", limit:"1",color:"#209f53" },
+ { label: "氰化物 (mg/L)", value: "cnTotal", limit:"1",color:"#209f53" },
+ { label: "阴离子表面活性剂 (mg/L)", value: "anSaa", limit:"1",color:"#209f53" },
+ { label: "硫化物 (mg/L)", value: "s", limit:"1",color:"#209f53" },
+ { label: "粪大肠菌群 (mg/L)", value: "coloOrg", limit:"1",color:"#209f53" },
+ { label: "硫酸盐 (mg/L)", value: "so4", limit:"1",color:"#209f53" },
+ { label: "氯化物 (mg/L)", value: "cl", limit:"1",color:"#209f53" },
+ { label: "硝酸盐 (mg/L)", value: "no3N", limit:"1",color:"#209f53" },
+ { label: "铁 (mg/L)", value: "wFe", limit:"1",color:"#209f53" },
+ { label: "锰 (mg/L)", value: "wMn", limit:"1",color:"#209f53" },
], //专湖监测指标
monthOptions: [
@@ -235,6 +237,7 @@ export default {
// 图表生成数据
xAxis: {},
series: {},
+ yAxisMax:1, //Y轴最大值
};
},
mounted() {
@@ -323,16 +326,40 @@ export default {
},
initChart() {
+ this.yAxisMax = 1;
// 生成x轴
this.buildxAxis();
// 生成series
this.buildSeries();
+
if (trendChart != null && trendChart != "" && trendChart != undefined) {
trendChart.dispose(); // 销毁
}
trendChart = echarts.init(document.getElementById("chartColumn"));
+ let text = '';
+
+ // if(this.queryParams.placeList.length==1){
+ // let code = ''
+ // if(this.queryParams.yco == 'Yco_1'){
+ // code = '监测指标浓度'
+ // }
+ // if(this.queryParams.yco == 'Yco_2'){
+ // code = '综合营养指数'
+ // }
+ // if(this.queryParams.yco == 'Yco_3'){
+ // code = '水质类别'
+ // }
+
+ // text = this.queryParams.placeList[0] + this.queryParams.yearList.join('、') + '年度' + code
+ // }
+
+
let option = {
+ title:{
+ text:text,
+ textAlign:'center'
+ },
tooltip: {
trigger: "axis",
axisPointer: {
@@ -358,8 +385,10 @@ export default {
xAxis: this.xAxis,
yAxis: {
type: "value",
- max: 80,
+ max: this.yAxisMax,
+ name: this.queryParams.yco == 'Yco_1' ? '单位:mg/L' : ''
},
+
series: this.series,
};
trendChart.setOption(option);
@@ -376,21 +405,29 @@ export default {
*
*/
+ // 生成Y轴最大值
+ buildYMax(value){
+ if(this.yAxisMax {
- xAxis.push(item.place);
+ if(xAxis.indexOf(item.place)<0){
+ xAxis.push(item.place);
+ }
});
}
// x左边为年度、年月,只选一个断面
// && ( Array.isArray(this.queryParams.placeList) && this.queryParams.placeList.length==1)
if (this.queryParams.xco == "Xco_1" || this.queryParams.xco == "Xco_2") {
this.trendData.forEach((item) => {
- let x = item.year + (item.month || "");
+ let x = this.buildYearMonth(item);
if (xAxis.indexOf(x) < 0) xAxis.push(x);
});
}
@@ -398,7 +435,7 @@ export default {
if (xAxis.join("").length > 50) {
rotate = 10;
}
-
+ console.log('xAxis',xAxis)
this.xAxis = {
type: "category",
axisLabel: {
@@ -415,6 +452,7 @@ export default {
let yAxisData = [];
this.trendData.forEach((item) => {
yAxisData.push(item.value);
+ this.buildYMax(item.value);
});
return yAxisData;
},
@@ -423,9 +461,10 @@ export default {
let lines = [];
let xMax = this.xAxis.data.length;
-
- // 三根营养线
- const three = [
+// 三根营养线,在纵坐标选择综合营养指数时显示
+ if (this.queryParams.yco == "Yco_2"){
+ this.buildYMax(72);
+ lines = [
[
{
name: "中度富营养↓",
@@ -479,100 +518,207 @@ export default {
yAxis: 50,
xAxis: xMax - 1 < 1 ? 1 : xMax - 1,
},
- ],
- ];
-
- // 如果选择监测指标,那显示指标均线
-
- if(Array.isArray(this.queryParams.monitorIndexList) && this.queryParams.monitorIndexList.length){
+ ]];
+ }
+
+
+ // 在纵坐标选择浓度,那显示指标均线
+ if(this.queryParams.yco == "Yco_1"){
let singleLine = []
this.queryParams.monitorIndexList.forEach(item=>{
- singleLine.push(
- {
- name: item,
- yAxis: 100,
- lineStyle: {
- type: "dashed", // dotted,solid,dashed
- color: "blue",
- width: 3,
- opacity: 0.9,
- },
- label: {
- color: "blue",
- formatter: "溶解氧Ⅱ类标准",
- },
- }
- )
+ this.indicatorOptions.forEach(single=>{
+ if(single.value == item){
+ this.buildYMax(single.limit);
+ singleLine.push(
+ {
+ name: item,
+ yAxis: single.limit,
+ lineStyle: {
+ type: "dashed", // dotted,solid,dashed
+ color: single.color,
+ width: 2,
+ opacity: 0.9,
+ },
+ label: {
+ color: single.color,
+ formatter: single.label+"Ⅱ类标准",
+ },
+ }
+ )
+ }
+ })
})
lines = [...singleLine]
-
- }else if (this.queryParams.yco == "Yco_2"){
- lines = [...three];
}
-
return lines;
},
+ // 生成年月标识
+ buildYearMonth(obj){
+ return obj.year + (obj.month || "");
+ },
+
+
// 生成图表数据
buildSeries() {
let series = [];
let charType = 'bar'
- // 如果选择了监测指标,那就是折线图
- if(Array.isArray(this.queryParams.monitorIndexList) && this.queryParams.monitorIndexList.length){
- charType = 'line'
- }
+ // 如果Y坐标选择了浓度,那就是折线图,选择综合指标是柱状图,选择水质类别那就是堆叠
+ if(this.queryParams.yco == 'Yco_1'){
+ charType = 'line'
+ }
+ // // 如果选择了监测指标,那就是折线图
+ // if(Array.isArray(this.queryParams.monitorIndexList) && this.queryParams.monitorIndexList.length){
+ // charType = 'line'
+ // }
+
// x坐标是断面
if (this.queryParams.xco == "Xco_3") {
- series = [
- {
- markLine: {
- lineStyle: {
- normal: {
- type: "line",
- width: 3,
- opacity: 0.9,
- },
- },
- label: {
- padding: [1, 10],
- lineHeight: 30,
- show: true,
- position: "end",
- borderType: "dashed",
- borderWidth: 1,
- },
- data: [...this.buildLine()],
- symbol: ["none", "none"],
- },
+
+ // 如果是断面,则用年月来分组数据
+ let seriesItemName = this.xAxis.data;
+ let group = [];
+
+ this.trendData.forEach((item) => {
+ if (group.indexOf(this.buildYearMonth(item)) < 0) {
+ group.push(this.buildYearMonth(item));
+ }
+ });
+
+ group.forEach(item=>{
+ let itemData = [];
+ seriesItemName.forEach((data,index)=>{
+ itemData[index] = 0
+ this.trendData.forEach((single) => {
+ if (data == single.place && item == this.buildYearMonth(single)) {
+ itemData[index] = single.value;
+ this.buildYMax(single.value);
+ }
+ });
+ })
+
+ let single = {
+ name: item,
+ type: charType,
label: {
// 图形上的文本标签
show: true,
position: "top", // 相对位置
},
- data: this.buildyAxisData(),
- type: charType, // line
- },
- ];
+ data: [...itemData],
+ };
+ // 纵坐标 水质类别,那就堆叠
+ if(this.queryParams.yco=='Yco_3'){
+ single.stack = item
+ }
+
+ series.push(single);
+ })
}
- // x左边为年度、年月,只选一个断面
+
+ // 一个断面多个指标
+ const singleType = this.queryParams.placeList.length==1 && this.queryParams.monitorIndexList.length>1;
+
+ if (this.queryParams.xco == "Xco_1" || this.queryParams.xco == "Xco_2") {
+ let seriesItemName = this.xAxis.data;
+ let group = [];
+ if(singleType){
+ this.trendData.forEach((item) => {
+ if (group.indexOf(item.indexName) < 0) {
+ group.push(item.indexName);
+ }
+ });
+ }else{
+ this.trendData.forEach((item) => {
+ if (group.indexOf(item.place) < 0) {
+ group.push(item.place);
+ }
+ });
+ }
+
+ group.forEach(item=>{
+ let itemData = [];
+ seriesItemName.forEach((data,index)=>{
+ itemData[index] = 0
+ this.trendData.forEach((single) => {
+
+ let name = ''
+ if(singleType){
+ name = single.indexName
+ }else{
+ name = single.place
+ }
+
+ if (data == this.buildYearMonth(single) && item == name) {
+ itemData[index] = single.value;
+ this.buildYMax(single.value);
+ }
+ });
+ })
+
+ let single = {
+ name: item,
+ type: charType,
+ label: {
+ // 图形上的文本标签
+ show: true,
+ position: "top", // 相对位置
+ },
+ data: [...itemData],
+ };
+ // 纵坐标 水质类别,那就堆叠
+ if(this.queryParams.yco=='Yco_3'){
+ single.stack = item
+ }
+
+ series.push(single);
+ })
+
+ }
+
+
+
+
+
+/*
+ // x左边为年度、年月
if (this.queryParams.xco == "Xco_1" || this.queryParams.xco == "Xco_2") {
let seriesItemName = []; //一组柱状图中单个的名字
- this.trendData.forEach((item) => {
- if (seriesItemName.indexOf(item.place) < 0) {
- seriesItemName.push(item.place);
- }
- });
+ let gropu = [];
+
+ if(singleType){
+ this.trendData.forEach((item) => {
+ if (seriesItemName.indexOf(item.indexName) < 0) {
+ seriesItemName.push(item.indexName);
+ }
+ });
+ }else{
+ this.trendData.forEach((item) => {
+ if (seriesItemName.indexOf(item.place) < 0) {
+ seriesItemName.push(item.place);
+ }
+ });
+ }
seriesItemName.forEach((item) => {
let itemData = [];
this.trendData.forEach((single) => {
- if (item == single.place) {
- itemData.push(single.value);
- }
+ let name = '';
+ if(singleType){
+ name = single.indexName
+ }else{
+ name = single.place
+ }
+
+ if (item == name) {
+ itemData.push(single.value);
+ this.buildYMax(single.value);
+ }
+
});
// 补零
let len = this.xAxis.data.length - itemData.length;
@@ -591,10 +737,17 @@ export default {
data: [...itemData],
};
+ // 纵坐标 水质类别,那就堆叠
+ if(this.queryParams.yco=='Yco_3'){
+ single.stack = item
+ }
+
series.push(single);
});
+ }
+ */
- series[0].markLine = {
+ series[0].markLine = {
lineStyle: {
normal: {
type: "line",
@@ -613,72 +766,21 @@ export default {
data: [...this.buildLine()],
symbol: ["none", "none"],
};
-
- // this.trendData.forEach(item=>{
- // let singleData = [];
-
- // this.xAxis.data.forEach(data=>{
- // // 循环总表数据,根据年月拼接的X轴合并数组
- // if(data==(item.year + (item.month || ''))){
- // singleData.push(item.value)
- // }
- // })
-
- // let single = {
- // name: item.place,
- // type: 'bar', // 换成bar则是堆叠
- // // stack:'使用情况', // 堆叠标识,无标识或者不相同则是柱状图对比
- // data: [...singleData],
- // }
-
- // series.push(single)
- // })
- }
-
- // let series = [
- // {
- // markLine: {
- // lineStyle: {
- // normal: {
- // type: "line",
- // width: 3,
- // opacity: 0.9,
- // },
- // },
- // label: {
- // padding: [1, 10],
- // lineHeight: 30,
- // show: true,
- // position: "end",
- // borderType: "dashed",
- // borderWidth: 1,
- // },
- // data: [...this.buildLine()],
- // symbol: ["none", "none"],
- // },
-
- // data: this.buildyAxisData(),
- // type: "bar", // line
- // },
- // ]
-
- // series = [{
- // name: '可用',
- // type: 'bar', // 换成bar则是堆叠
- // // stack:'使用情况', // 堆叠标识,无标识或者不相同则是柱状图对比
- // data: [5],
- // itemStyle:{
- // normal:{color:"#FF8849"},
- // }
- // },{
- // name: '不可用',
- // type: 'bar', // 换成bar则是堆叠
- // // stack:'使用情况', // 堆叠标识,无标识或者不相同则是柱状图对比
- // data: [40],
- // itemStyle:{
- // normal:{color:"#3FBB49"},
- // }
- // }]
+ // 对指标的名字转成中文
+ if(singleType){
+ series = series.map(item=>{
+ let name = '';
+ this.indicatorOptions.forEach(single=>{
+ if(single.value == item.name){
+ name = single.label
+ }
+ })
+ return {
+ ...item,
+ name:name
+ }
+ })
+ }
console.log("series", series);
this.series = series;