2022-10-17 10:13:22 +08:00
|
|
|
|
<template>
|
2022-12-14 18:31:34 +08:00
|
|
|
|
<Card title="总碳排放分析">
|
|
|
|
|
|
<div class="carbonEmission">
|
2022-12-16 10:55:28 +08:00
|
|
|
|
<!-- <el-date-picker
|
2022-12-14 18:31:34 +08:00
|
|
|
|
v-model="time1"
|
|
|
|
|
|
type="daterange"
|
|
|
|
|
|
range-separator="-"
|
|
|
|
|
|
start-placeholder="开始日期"
|
|
|
|
|
|
end-placeholder="结束日期"
|
|
|
|
|
|
value-format="yyyy-MM-dd"
|
|
|
|
|
|
size="mini"
|
2022-12-16 10:55:28 +08:00
|
|
|
|
></el-date-picker> -->
|
|
|
|
|
|
<el-select
|
|
|
|
|
|
style="margin-top: 20px"
|
|
|
|
|
|
v-model="date"
|
|
|
|
|
|
placeholder="请选择日期"
|
|
|
|
|
|
@change="credad"
|
|
|
|
|
|
>
|
|
|
|
|
|
<el-option
|
|
|
|
|
|
v-for="(item, index) in yearsList"
|
|
|
|
|
|
:key="index"
|
|
|
|
|
|
:label="item.label"
|
|
|
|
|
|
:value="item.value"
|
|
|
|
|
|
>
|
|
|
|
|
|
</el-option>
|
|
|
|
|
|
</el-select>
|
2022-10-17 10:13:22 +08:00
|
|
|
|
</div>
|
2022-12-14 18:31:34 +08:00
|
|
|
|
<div class="chart" ref="carbonChart"></div>
|
2022-10-17 10:13:22 +08:00
|
|
|
|
</Card>
|
|
|
|
|
|
</template>
|
|
|
|
|
|
|
|
|
|
|
|
<script>
|
2022-12-16 10:55:28 +08:00
|
|
|
|
import { getdoubleCarbonApi } from "@/assets/js/api/zhongjianFourth";
|
2022-12-14 18:31:34 +08:00
|
|
|
|
import echarts from "echarts4";
|
|
|
|
|
|
import Card from "../components/Card.vue";
|
2022-10-20 09:09:17 +08:00
|
|
|
|
|
2022-10-17 10:13:22 +08:00
|
|
|
|
export default {
|
2022-12-14 18:31:34 +08:00
|
|
|
|
components: {
|
|
|
|
|
|
Card,
|
|
|
|
|
|
},
|
2022-10-17 10:13:22 +08:00
|
|
|
|
data() {
|
2022-12-14 18:31:34 +08:00
|
|
|
|
return {
|
2022-12-16 10:55:28 +08:00
|
|
|
|
yearsList: [
|
|
|
|
|
|
{
|
|
|
|
|
|
value: "1",
|
|
|
|
|
|
label: "最近1年",
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
value: "2",
|
|
|
|
|
|
label: "最近14天",
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
value: "3",
|
|
|
|
|
|
label: "最近7天",
|
|
|
|
|
|
},
|
|
|
|
|
|
],
|
|
|
|
|
|
date: "", //日期
|
|
|
|
|
|
projectSn: this.$store.state.projectSn, //项目sn
|
|
|
|
|
|
typeId: "", //日期类型
|
|
|
|
|
|
carbonListNum: [], //总数据
|
|
|
|
|
|
carbonList1: [], //碳排放
|
|
|
|
|
|
carbonList2: [], //减少碳排放
|
|
|
|
|
|
carbonList3: [], //净碳排放
|
|
|
|
|
|
};
|
|
|
|
|
|
},
|
|
|
|
|
|
created() {
|
|
|
|
|
|
this.credad();
|
2022-10-17 10:13:22 +08:00
|
|
|
|
},
|
2022-12-14 18:31:34 +08:00
|
|
|
|
mounted() {
|
|
|
|
|
|
this.createCarbonChart();
|
|
|
|
|
|
},
|
|
|
|
|
|
methods: {
|
2022-12-16 10:55:28 +08:00
|
|
|
|
credad(val) {
|
|
|
|
|
|
this.carbonList1 = []
|
|
|
|
|
|
this.carbonList2 = []
|
|
|
|
|
|
this.carbonList3 = []
|
|
|
|
|
|
|
|
|
|
|
|
//获取总碳排放分析数据
|
|
|
|
|
|
getdoubleCarbonApi({
|
|
|
|
|
|
projectSn: this.projectSn,
|
|
|
|
|
|
typeId: val == null? 3 : val,
|
|
|
|
|
|
}).then((res) => {
|
|
|
|
|
|
console.log('res',res);
|
|
|
|
|
|
if (res.code == 200) {
|
|
|
|
|
|
this.carbonListNum = res.result;
|
|
|
|
|
|
this.carbonListNum.forEach((item) => {
|
|
|
|
|
|
this.carbonList1.push(item.carbonValue);
|
|
|
|
|
|
this.carbonList2.push(item.reduceValue);
|
|
|
|
|
|
this.carbonList3.push(item.cleanValue);
|
|
|
|
|
|
});
|
|
|
|
|
|
this.createCarbonChart();
|
|
|
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
|
|
},
|
2022-12-14 18:31:34 +08:00
|
|
|
|
createCarbonChart() {
|
|
|
|
|
|
let monitor = echarts.init(this.$refs.carbonChart);
|
|
|
|
|
|
var colors = ["#3A85D3", "#5AD8A6", "#008000", "#5470c6", "#61a0a8"];
|
|
|
|
|
|
|
|
|
|
|
|
var option = {
|
|
|
|
|
|
color: colors, //下面这种直接配置演示也行
|
|
|
|
|
|
//color: ['#3A85D3','#5AD8A6','#5470c6', '#008000', '#61a0a8'], //依次选择颜色,默认为第一个颜色,多根柱子多个颜色
|
|
|
|
|
|
|
|
|
|
|
|
title: {
|
|
|
|
|
|
left: "center", //title 组件离容器左侧的距离,也可以是像素,和百分比
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
|
|
tooltip: {
|
|
|
|
|
|
trigger: "axis", //触发类型;轴触发,axis则鼠标hover到一条柱状图显示全部数据,item则鼠标hover到折线点显示相应数据,
|
|
|
|
|
|
axisPointer: {
|
|
|
|
|
|
// 坐标轴指示器,坐标轴触发有效
|
|
|
|
|
|
type: false, // 默认为直线,可选为:'line' | 'shadow' | 'cross' , shadow表示阴影,cross为十字准星
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
|
|
formatter: function (params) {
|
|
|
|
|
|
//params[0].marker,marker参数为提示语前面的小圆点
|
2022-12-16 10:55:28 +08:00
|
|
|
|
let data = "";
|
|
|
|
|
|
if(params.length >= 1) {
|
|
|
|
|
|
data = params[0].name + "<br>"
|
|
|
|
|
|
}
|
|
|
|
|
|
params.forEach(res =>{
|
|
|
|
|
|
data = data + res.seriesName +":"+
|
|
|
|
|
|
res.value +
|
|
|
|
|
|
"<br>" ;
|
|
|
|
|
|
})
|
|
|
|
|
|
return ( data );
|
2022-12-14 18:31:34 +08:00
|
|
|
|
},
|
|
|
|
|
|
},
|
|
|
|
|
|
legend: {
|
|
|
|
|
|
textStyle: {
|
|
|
|
|
|
//图例文字的样式
|
|
|
|
|
|
color: "#fff",
|
|
|
|
|
|
},
|
|
|
|
|
|
data: ["碳排放", "减少碳排放", "净碳排放"],
|
|
|
|
|
|
left: "5%", //组件离容器左侧的距离,可以是left,center,right,也可以是像素px和百分比10%
|
|
|
|
|
|
},
|
|
|
|
|
|
//backgroundColor: '#00199',//整个绘图背景色
|
|
|
|
|
|
grid: {
|
|
|
|
|
|
left: "3%",
|
|
|
|
|
|
right: "1%",
|
|
|
|
|
|
bottom: "0%", //网格图(柱状图、折线图、气泡图等)离底部的距离,也可以用像素比如10px
|
|
|
|
|
|
containLabel: true, //grid 区域是否包含坐标轴的刻度标签。false可能溢出,默认为false
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
|
|
xAxis: [
|
|
|
|
|
|
{
|
|
|
|
|
|
type: "category",
|
|
|
|
|
|
data: [
|
|
|
|
|
|
"1月",
|
|
|
|
|
|
"2月",
|
|
|
|
|
|
"3月",
|
|
|
|
|
|
"4月",
|
|
|
|
|
|
"5月",
|
|
|
|
|
|
"6月",
|
|
|
|
|
|
"7月",
|
|
|
|
|
|
"8月",
|
|
|
|
|
|
"9月",
|
|
|
|
|
|
"10月",
|
|
|
|
|
|
"11月",
|
|
|
|
|
|
"12月",
|
|
|
|
|
|
],
|
|
|
|
|
|
axisLabel: {
|
|
|
|
|
|
textStyle: {
|
|
|
|
|
|
color: "#fff", //坐标值得具体的颜色
|
2022-12-16 10:55:28 +08:00
|
|
|
|
fontSize: 16,
|
2022-12-14 18:31:34 +08:00
|
|
|
|
},
|
|
|
|
|
|
},
|
|
|
|
|
|
axisLine: {
|
|
|
|
|
|
//不显示坐标轴线
|
|
|
|
|
|
lineStyle: {
|
|
|
|
|
|
type: "dashed",
|
|
|
|
|
|
},
|
|
|
|
|
|
},
|
|
|
|
|
|
},
|
|
|
|
|
|
],
|
|
|
|
|
|
yAxis: [
|
|
|
|
|
|
{
|
|
|
|
|
|
type: "value",
|
|
|
|
|
|
axisTick: {
|
|
|
|
|
|
show: false,
|
|
|
|
|
|
},
|
|
|
|
|
|
axisLabel: {
|
|
|
|
|
|
//让x轴左边的数显示为正数
|
|
|
|
|
|
formatter: function (v) {
|
|
|
|
|
|
return v > 0 ? v : -v;
|
|
|
|
|
|
},
|
|
|
|
|
|
},
|
|
|
|
|
|
splitLine: {
|
|
|
|
|
|
show: true,
|
|
|
|
|
|
lineStyle: {
|
|
|
|
|
|
type: "dashed",
|
|
|
|
|
|
},
|
|
|
|
|
|
},
|
|
|
|
|
|
axisLine: {
|
|
|
|
|
|
//这是y轴文字颜色
|
|
|
|
|
|
lineStyle: {
|
|
|
|
|
|
color: "#fff",
|
|
|
|
|
|
},
|
|
|
|
|
|
},
|
|
|
|
|
|
axisLabel: {
|
|
|
|
|
|
textStyle: {
|
|
|
|
|
|
color: "#fff", //坐标值得具体的颜色
|
2022-12-16 10:55:28 +08:00
|
|
|
|
fontSize: 16,
|
2022-12-14 18:31:34 +08:00
|
|
|
|
},
|
|
|
|
|
|
},
|
|
|
|
|
|
},
|
|
|
|
|
|
],
|
|
|
|
|
|
series: [
|
|
|
|
|
|
{
|
|
|
|
|
|
name: "碳排放",
|
|
|
|
|
|
type: "bar",
|
|
|
|
|
|
stack: "总量",
|
|
|
|
|
|
showSymbol: true, //是否默认展示圆点
|
|
|
|
|
|
symbol: "circle", //设定为实心点
|
|
|
|
|
|
barMaxWidth: 30,
|
|
|
|
|
|
itemStyle: {
|
|
|
|
|
|
normal: {
|
|
|
|
|
|
color: {
|
|
|
|
|
|
type: "linear",
|
|
|
|
|
|
x: 0,
|
|
|
|
|
|
y: 0,
|
|
|
|
|
|
x2: 0,
|
|
|
|
|
|
y2: 1,
|
|
|
|
|
|
colorStops: [
|
|
|
|
|
|
{
|
|
|
|
|
|
offset: 0,
|
|
|
|
|
|
color: "rgba(204, 89, 42, 1)", // 0% 处的颜色
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
offset: 1,
|
|
|
|
|
|
color: "rgba(204, 89, 42, 0)", // 100% 处的颜色
|
|
|
|
|
|
},
|
|
|
|
|
|
],
|
|
|
|
|
|
global: false, // 缺省为 false
|
|
|
|
|
|
},
|
|
|
|
|
|
},
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
|
|
label: {
|
|
|
|
|
|
show: true,
|
|
|
|
|
|
position: "top",
|
|
|
|
|
|
color: "#fff",
|
|
|
|
|
|
},
|
|
|
|
|
|
|
2022-12-16 10:55:28 +08:00
|
|
|
|
data: this.carbonList1,
|
2022-12-14 18:31:34 +08:00
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
name: "减少碳排放",
|
|
|
|
|
|
type: "bar",
|
|
|
|
|
|
stack: "总量",
|
|
|
|
|
|
barMaxWidth: 30,
|
|
|
|
|
|
itemStyle: {
|
|
|
|
|
|
normal: {
|
|
|
|
|
|
color: {
|
|
|
|
|
|
type: "linear",
|
|
|
|
|
|
x: 0,
|
|
|
|
|
|
y: 0,
|
|
|
|
|
|
x2: 0,
|
|
|
|
|
|
y2: 1,
|
|
|
|
|
|
colorStops: [
|
|
|
|
|
|
{
|
|
|
|
|
|
offset: 0,
|
|
|
|
|
|
color: "rgba(81, 166, 178, 0)", // 0% 处的颜色
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
offset: 1,
|
|
|
|
|
|
color: "rgba(81, 166, 178, 1)", // 100% 处的颜色
|
|
|
|
|
|
},
|
|
|
|
|
|
],
|
|
|
|
|
|
global: false, // 缺省为 false
|
|
|
|
|
|
},
|
|
|
|
|
|
},
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
|
|
label: {
|
|
|
|
|
|
show: true, //控制柱状图是否显示数值
|
|
|
|
|
|
position: "bottom",
|
|
|
|
|
|
color: "#fff",
|
|
|
|
|
|
// formatter: function (params) {
|
|
|
|
|
|
// //格式化柱状图里的数字
|
|
|
|
|
|
// return -params.value;
|
|
|
|
|
|
// },
|
|
|
|
|
|
},
|
2022-12-16 10:55:28 +08:00
|
|
|
|
data: this.carbonList2,
|
2022-12-14 18:31:34 +08:00
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
name: "净碳排放",
|
|
|
|
|
|
type: "line",
|
|
|
|
|
|
symbolSize: 10,
|
|
|
|
|
|
symbol: "circle",
|
|
|
|
|
|
smooth: true,
|
|
|
|
|
|
itemStyle: {
|
|
|
|
|
|
normal: {
|
|
|
|
|
|
color: "#fff",
|
|
|
|
|
|
barBorderRadius: 0,
|
|
|
|
|
|
},
|
|
|
|
|
|
},
|
|
|
|
|
|
lineStyle: {
|
|
|
|
|
|
normal: {
|
|
|
|
|
|
width: 4,
|
|
|
|
|
|
color: {
|
|
|
|
|
|
type: "linear",
|
|
|
|
|
|
x: 0,
|
|
|
|
|
|
y: 0,
|
|
|
|
|
|
x2: 0,
|
|
|
|
|
|
y2: 1,
|
|
|
|
|
|
colorStops: [
|
|
|
|
|
|
{
|
|
|
|
|
|
offset: 0,
|
|
|
|
|
|
color: "rgba(255, 195, 3, 1)", // 0% 处的颜色
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
offset: 1,
|
|
|
|
|
|
color: "rgba(255, 195, 3, 1)", // 100% 处的颜色
|
|
|
|
|
|
},
|
|
|
|
|
|
],
|
|
|
|
|
|
global: false, // 缺省为 false
|
|
|
|
|
|
},
|
|
|
|
|
|
},
|
|
|
|
|
|
},
|
2022-12-16 10:55:28 +08:00
|
|
|
|
data: this.carbonList3,
|
2022-12-14 18:31:34 +08:00
|
|
|
|
},
|
|
|
|
|
|
],
|
|
|
|
|
|
};
|
|
|
|
|
|
monitor.setOption(option);
|
|
|
|
|
|
},
|
|
|
|
|
|
},
|
|
|
|
|
|
};
|
2022-10-17 10:13:22 +08:00
|
|
|
|
</script>
|
|
|
|
|
|
|
|
|
|
|
|
<style lang="less" scoped>
|
2022-12-14 18:31:34 +08:00
|
|
|
|
.chart {
|
2022-10-17 10:13:22 +08:00
|
|
|
|
width: 100%;
|
2022-12-14 18:31:34 +08:00
|
|
|
|
height: calc(100% - 37px);
|
2022-12-16 10:55:28 +08:00
|
|
|
|
margin-top: 23px;
|
2022-12-14 18:31:34 +08:00
|
|
|
|
}
|
|
|
|
|
|
.carbonEmission {
|
2022-12-16 10:55:28 +08:00
|
|
|
|
cursor: pointer;
|
|
|
|
|
|
margin-left: 81%;
|
|
|
|
|
|
width: 210;
|
|
|
|
|
|
height: 17px;
|
|
|
|
|
|
}
|
2022-12-14 18:31:34 +08:00
|
|
|
|
</style>
|