zhuzhansheji/.history/src/views/XQXY_20231201151653.vue

1873 lines
67 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<div class="box">
<div class="title">
<img src="../assets/客户侧总体用能情况分析/图层 2.png" alt="" />
<p>山东需求响应工作开展情况</p>
<img src="../assets/客户侧总体用能情况分析/反白稿.png" alt="" />
</div>
<div class="containter">
<div class="left">
<div class="ndqyyh">
<p class="title">省综代理用户情况</p>
<div class="bg_title">
<p class="tit_first">2356<span class="tit_danwei"></span></p>
<div class="tit_second">
<div>
<p>工业户数</p>
<p class="tb_percent">324<span style="color: #fff;"></span></p>
</div>
<div>
<p>楼宇户数</p>
<p class="tb_percent">452<span style="color: #fff;"></span></p>
</div>
</div>
</div>
<div id="qyyh"></div>
</div>
<div class="ndsdl">
<p class="title">年度售电量</p>
<div class="bg_title">
<p class="tit_first">520<span class="tit_danwei">万KW</span></p>
<div class="tit_second">
<div>
<p>削锋量</p>
<p class="tb_percent">78.2<span style="color: #fff;">万KW</span></p>
</div>
<div>
<p>填谷量</p>
<p class="tb_percent">30.2<span style="color: #fff;">万KW</span></p>
</div>
</div>
</div>
<div id="ndsdl"></div>
</div>
</div>
<div class="right">
<div class="ndsdje">
<p class="title">年度售电金额</p>
<div id="ndsdje">
<div class="infos" v-for="(item, index) in lists" :key="index">
<div class="first">
<p>
<img src="../assets/zhsdy/组 3189.png" alt="">
<span class="titles">{{ item.title }}</span>
</p>
<p class="money">{{ item.money }}<span class="danwei">万元</span></p>
</div>
<div class="second">
<div class="s_tit">
<div>
<p>同比</p>
<p class="tb_percent">{{ item.tb }}% <img src="../assets/zhsdy/325数值上升 (4).png"
alt=""></p>
</div>
<div>
<p>环比</p>
<p class="tb_percent">{{ item.hb }}% <img src="../assets/zhsdy/325数值上升(1).png"
alt="">
</p>
</div>
</div>
<div class="bigBox">
<div class="smallBox" :style="{ width: `${item.percent}px` }"></div>
</div>
</div>
</div>
</div>
</div>
<div class="pcfx">
<p class="title">偏差分析</p>
<div id="pcfx">
<div class="pc_tit" v-for="(item, index) in pclist" :key="index">
<div class="pc_l">
<img src="../assets/zhsdy/组 3192.png" alt="">
<span class="pc_name">{{ item.name }}</span>
<span class="pc_count">{{ item.count }}</span>
<span class="pc_danwei">{{ item.danwei }}</span>
</div>
<div class="pc_r">
<p>环比</p>
<p class="tb_percent">{{ item.hb }}% <img src="../assets/zhsdy/325数值上升(1).png" alt=""> </p>
</div>
</div>
<div id="pcfxb"></div>
</div>
</div>
<div class="yhhyzb">
<p class="title">用户行业占比</p>
<div id="yhhyzb"></div>
</div>
</div>
<div id="map"></div>
<div class="footer">
<div class="ndqylfb">
<p class="title">用户资源分布情况</p>
<div id="ndqylfb"></div>
</div>
<div class="ggzcxx">
<p class="title">山东需求侧响应动态热点</p>
<div id="ggzcxx">
<ul>
<li v-for="(item, index) in infos">
<img src="../assets/zhsdy/组 3147.png" alt="" class="img">
<span class="times">{{ item.time }}</span>
<span class="info">{{ item.info }}</span>
</li>
</ul>
</div>
</div>
</div>
</div>
</div>
</template>
<script>
const fontSizeRem = (size) => {
const clientWidth =
window.innerWidth ||
document.documentElement.clientWidth ||
document.body.clientWidth;
if (!clientWidth) return;
let fontSize = clientWidth / 1920; //尺寸大小
return size * fontSize;
}
import * as echarts from "echarts";
// import { fontSizeRem } from "../assets/function";
export default {
data() {
return {
res: "日",
type: "电",
option: {
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'shadow'
},
backgroundColor: 'rgba(9, 24, 48, 0.5)',
borderColor: 'rgba(75, 253, 238, 0.4)',
textStyle: {
color: '#CFE3FC',
},
borderWidth: 1,
},
grid: {
top: '15%',
right: '5%',
left: "8%",
bottom: '12%'
},
xAxis: [{
name: "",
type: 'category',
data: ["济南", "烟台", "威海", "德州", "滨州", "泰安", "临沂", "烟台", "青岛", "青岛", "青岛", "青岛", "青岛",],
axisLine: {
lineStyle: {
color: '#FFFFFF'
}
},
axisLabel: {
margin: 10,
color: '#e2e9ff',
textStyle: {
fontSize: 12
},
},
axisTick: {
show: false
}
}],
yAxis: [{
name: "单位MWh",
axisLabel: {
formatter: '{value}',
color: '#e2e9ff',
},
axisTick: {
show: false
},
axisLine: {
show: true,
lineStyle: {
color: '#FFFFFF'
}
},
splitLine: {
lineStyle: {
color: 'rgba(255,255,255,0.12)'
}
}
}],
series: [{
type: 'bar',
data: [760, 520, 850, 400, 756, 200, 400, 700, 550, 440, 220, 160, 300, 400],
barWidth: '30%',
itemStyle: {
normal: {
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
offset: 0,
color: 'rgba(0,244,255,1)' // 0% 处的颜色
}, {
offset: 1,
color: 'rgba(0,77,167,1)' // 100% 处的颜色
}], false),
shadowColor: 'rgba(0,160,221,1)',
shadowBlur: 4,
barBorderRadius: [40, 40, 40, 40]
}
},
label: {
normal: {
show: true,
lineHeight: 10,
formatter: '{c}',
position: 'top',
textStyle: {
color: '#00D6F9',
fontSize: 12
}
}
}
}]
},
infos: [
{
time: "2021-10-02 11:13:52",
info: "(山东山东电网2021年第一季度店里市场交易信息报道情况啊啊大萨达实打实"
},
{
time: "2021-10-02 11:13:52",
info: "(山东山东电网2021年第一季度店里市场交易信息报道情况啊啊大萨达实打实"
}, {
time: "2021-10-02 11:13:52",
info: "(山东山东电网2021年第一季度店里市场交易信息报道情况啊啊大萨达实打实"
}, {
time: "2021-10-02 11:13:52",
info: "(山东山东电网2021年第一季度店里市场交易信息报道情况啊啊大萨达实打实"
}, {
time: "2021-10-02 11:13:52",
info: "(山东山东电网2021年第一季度店里市场交易信息报道情况啊啊大萨达实打实"
}, {
time: "2021-10-02 11:13:52",
info: "(山东山东电网2021年第一季度店里市场交易信息报道情况啊啊大萨达实打实"
},
],
lists: [
{
title: "年度销售指标完成率",
money: "7,965",
tb: "12.23",
hb: "27.16",
percent: "80",
},
{
title: "年度收益金额",
money: "5,665",
tb: "12.23",
hb: "27.16",
percent: "40",
}
],
pclist: [
{
name: "月度偏差电量",
count: "5514",
danwei: "MWh",
hb: "27.16"
},
{
name: "月度偏差率",
count: "25",
danwei: "%",
hb: "27.16"
},
]
};
},
methods: {
defineEcharts(dom, option) {
var chartDom = document.getElementById(dom);
var myChart = this.$echarts.init(chartDom, null, {
devicePixelRatio: 10, // 设置为2或更高的值
});
myChart.setOption(option);
window.addEventListener("resize", function () {
myChart.resize();
});
},
qyyh() {
let option = {
// backgroundColor: '#081736',
tooltip: {
trigger: 'axis',
axisPointer: {
lineStyle: {
color: {
type: 'linear',
x: 0,
y: 0,
x2: 0,
y2: 1,
colorStops: [
{
offset: 0,
color: 'rgba(0, 255, 233,0)'
},
{
offset: 0.5,
color: 'rgba(255, 255, 255,1)'
},
{
offset: 1,
color: 'rgba(0, 255, 233,0)'
}
],
global: false
}
}
}
},
grid: {
top: '12%',
left: '10%',
right: '10%',
bottom: '25%'
// containLabel: true
},
xAxis: [
{
type: 'category',
axisLine: {
show: true,
lineStyle: {
color: '#009dff'
}
},
axisLabel: {
color: '#fff',
width: 100
},
splitLine: {
show: true,
lineStyle: {
color: '#00BFF3',
opacity: 0.23
}
},
axisTick: {
show: false
},
boundaryGap: false,
data: [
"01",
"02",
"03",
"04",
"05",
"06",
"07",
"08",
"09",
"10",
"11",
"12",
] //this.$moment(data.times).format("HH-mm") ,
}
],
yAxis: [
{
type: 'value',
min: 0,
// max: 140,
splitNumber: 4,
splitLine: {
show: true,
lineStyle: {
color: '#00BFF3',
opacity: 0.23
}
},
axisLine: {
show: true,
lineStyle: {
color: '#009dff'
}
},
axisLabel: {
show: true,
margin: 20,
textStyle: {
color: '#fff'
}
},
axisTick: {
show: false
}
}
],
series: [
{
name: '',
type: 'line',
smooth: true,
showAllSymbol: true,
// symbol: 'circle',
symbolSize: 2,
lineStyle: {
normal: {
color: '#2CABE3'
}
},
itemStyle: {
color: '#2CABE3',
borderColor: '#2CABE3',
borderWidth: 2
},
data: [
4, 7, 5, 4, 3, 5, 8, 7, 5, 4, 3, 5, 8, 4, 7, 5, 4, 3, 5, 8, 7, 5, 4, 3,
5, 8
] //data.values
},
{
name: '',
type: 'line',
smooth: true,
showAllSymbol: true,
// symbol: 'circle',
symbolSize: 2,
lineStyle: {
normal: {
color: '#7def86'
}
},
itemStyle: {
normal: {
color: '#7def86',
borderColor: 'rgba(0, 255, 240, 1)',
lineStyle: {
color: 'rgba(0, 255, 240, 1)'
}
}
},
data: [
3, 5, 4, 2, 1, 7, 6, 5, 4, 2, 1, 7, 6, 3, 5, 4, 2, 1, 7, 6, 5, 4, 2, 1,
7, 6
] //data.values
}
]
};
this.defineEcharts("qyyh", option)
},
// 年度售电量
ndsdl() {
// 假数据
let left1 = {
code: 200,
msg: "人数趋势图获取成功",
data: {
count: [
153456,
143456,
163456,
183456,
163456,
153456,
163456,
133456,
163456,
143456,
103456,
113456,
153456,
133456,
143456
],
time: [
"01",
"02",
"03",
"04",
"05",
"06",
"07",
"08",
"09",
"10",
"11",
"12"
]
}
};
//计算最大值
function maxNumCount(num) {
let maxNum = "";
//将数字转化为数组
let max = num.toString().split("");
for (var i = 0; i < max.length; i++) {
if (i > 1) {
maxNum += "0";
}
}
//组装补0
if (maxNum.length > 1) {
if (max[1] == "9") {
maxNum = parseInt(max[0]) + 1 + "0" + maxNum;
} else {
maxNum = max[0] + (parseInt(max[1]) + 1) + maxNum;
}
} else {
maxNum = "100";
}
return maxNum;
}
//计算最小值
function minNumCount(num) {
if (num < 10000) {
return "0";
}
let minNum = "";
//将数字转化为数组
let min = num.toString().split("");
for (var i = 0; i < min.length; i++) {
//组装补0
if (i > 1) {
minNum += "0";
}
}
if (min[1] == "0") {
minNum = parseInt(min[0]) - 1 + "9" + minNum;
} else {
minNum = min[0] + parseInt(min[1]) + minNum;
}
return minNum;
}
let maxNum = Math.max(...left1.data.count);
let minNum = Math.min(...left1.data.count);
maxNum = maxNumCount(maxNum);
minNum = minNumCount(minNum);
let yName = "人数(万)";
if (maxNum > 9999999) {
yName = "人数(千万)";
}
var option;
option = {
grid: {
width: "84%",
height: "75%",
top: "20%", //生成的图片和顶部的间距
left: "5%",
bottom: "0%",
right: "16%",
containLabel: true //为ture才会生效
},
tooltip: {
trigger: "axis"
// axisPointer: {
// type: "shadow",
// },
},
xAxis: {
// name: "日期",
nameTextStyle: {
color: "#03CECF",
fontSize: 14
},
type: "category",
boundaryGap: false,
data: left1.data.time,
axisLabel: {
color: "#03CECF",
fontSize: 14,
margin: 10
// interval: 0, //使x轴上的文字显示完全,
},
axisLine: {
show: true,
lineStyle: {
color: "rgb(37,52,82)"
}
},
axisTick: {
show: false
}
},
yAxis: {
type: "value",
name: yName,
nameTextStyle: {
color: "#03CECF",
fontSize: 14
},
min: minNum,
max: maxNum,
axisLine: {
lineStyle: {
color: "rgb(37,52,82)"
},
show: true
},
splitLine: {
show: true,
lineStyle: {
color: "rgba(37,52,82)"
}
},
axisLabel: {
color: "#03CECF",
fontSize: 14,
interval: 20,
formatter: function (value, index) {
if (yName.indexOf("千万") && maxNum > 10000000) {
value = (value / 10000000).toFixed(2);
} else if (maxNum > 10000 && maxNum < 10000000) {
value = value / 10000;
}
return value;
}
}
},
splitLine: {
show: false
},
series: [
{
data: left1.data.count,
type: "line",
showSymbol: true,
itemStyle: {
emphasis: {
color: "rgb(7,162,148)",
borderColor: "rgba(7,162,148,0.6)",
borderWidth: 20
},
normal: {
color: "rgb(62,195,221)",
borderColor: "rgb(6,65,95)",
lineStyle: {
color: "rgb(101,184,196)"
}
}
},
areaStyle: {
normal: {
color: new echarts.graphic.LinearGradient(
0,
0,
0,
1,
[
{
offset: 0,
color: "#68e3e5"
},
{
offset: 1,
color: "rgba(24, 68, 121,0)"
}
],
false
)
}
}
}
]
};
},
//偏差分析
pcfx() {
// mock 数据
const dataArr = {
xdata: ['01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12'],
rateData: [-10, -12, -13, -15, -12, 0, 5, 8, 9, 14, 17, 21],
rateData2: [-6, -8, -9, -11, -8, 4, 9, 12, 15, 17, 21, 24],
disinfeced: [320, 340, 480, 140, 380, 400, 300, 257, 420, 356, 268, 300, 321],
disinfeced2: [320, 340, 480, 140, 380, 400, 300, 257, 420, 356, 268, 300, 321],
}
const grid = { top: '20%', left: '10%', right: '10%', bottom: '15%' }
// xAxis
const xAxis = {
axisTick: { show: true },
axisLine: { lineStyle: { color: 'rgba(255,255,255, .2)' } },
axisLabel: { textStyle: { fontSize: 12, color: '#fff' }, },
data: dataArr.xdata
}
// yAxis
const yAxis = [{
type: "value",
name: "单位MWh",
splitLine: { lineStyle: { color: 'rgba(255,255,255, .05)' } },
axisLine: { show: false, lineStyle: { color: "#fff" } },
axisLabel: { textStyle: { fontSize: 12, color: '#fff' } }
}, {
// 双y轴主要用于折线图所以不需要显示坐标
type: "value",
show: true,
min: -20,
max: 30,
axisLabel: {
formatter: "{value}" + "%",
textStyle: { fontSize: 12, color: '#fff' }
}
}]
// series
const series = [
{
z: 1,
// stack: '总量',
type: 'bar',
name: '电费',
barWidth: 9,
// barGap: '-100%',
data: dataArr.disinfeced,
itemStyle: {
color: {
type: 'linear',
x: 0, x2: 1, y: 0, y2: 0,
colorStops: [{ offset: 0, color: 'rgba(1, 197, 185, 1)' }, { offset: 0.5, color: 'rgba(1, 197, 185, .8)' }, { offset: 0.5, color: 'rgba(1, 197, 185, .8)' }, { offset: 1, color: 'rgba(1, 197, 185, 1)' }]
}
},
},
{
z: 2,
// stack: '总量',
type: 'bar',
name: '',
barWidth: 9,
// barGap: '-100%',
data: dataArr.disinfeced2,
itemStyle: {
color: {
type: 'linear',
x: 0, x2: 1, y: 0, y2: 0,
colorStops: [{ offset: 0, color: 'rgba(17, 195, 255, .7)' }, { offset: 0.5, color: 'rgba(17, 195, 255, .5)' }, { offset: 0.5, color: 'rgba(17, 195, 255, .5)' }, { offset: 1, color: 'rgba(17, 195, 255, .7)' }]
}
},
},
{
z: 9,
// 双y轴
yAxisIndex: 1,
name: '销售电价', type: 'line',
symbol: 'circle',
symbolSize: [6, 6],
color: {
type: 'linear', x: 1, y: 0, x2: 0, y2: 0,
// 0% 处的颜色 // 100% 处的颜色
colorStops: [{ offset: 0, color: '#9DBA19 ' }, { offset: 1, color: '#9DBA19' }],
global: false // 缺省为 false
},
lineStyle: {
color: {
type: 'linear', x: 1, y: 0, x2: 0, y2: 0,
// 0% 处的颜色 // 100% 处的颜色
colorStops: [{ offset: 0, color: '#9DBA19 ' }, { offset: 1, color: '#9DBA19' }],
global: false // 缺省为 false
}
},
data: dataArr.rateData
},
{
z: 9,
// 双y轴
yAxisIndex: 1,
name: '', type: 'line',
symbol: 'circle',
symbolSize: [6, 6],
color: {
type: 'linear', x: 1, y: 0, x2: 0, y2: 0,
// 0% 处的颜色 // 100% 处的颜色
colorStops: [{ offset: 0, color: '#01BC5A ' }, { offset: 1, color: '#01BC5A' }],
global: false // 缺省为 false
},
lineStyle: {
color: {
type: 'linear', x: 1, y: 0, x2: 0, y2: 0,
// 0% 处的颜色 // 100% 处的颜色
colorStops: [{ offset: 0, color: '#01BC5A ' }, { offset: 1, color: '#01BC5A' }],
global: false // 缺省为 false
}
},
data: dataArr.rateData2
}]
let option = { xAxis, yAxis, series, grid }
this.defineEcharts("pcfxb", option);
},
yhhyzb() {
var trafficWay = [{
name: '钢铁',
value: 280
}, {
name: '水泥',
value: 280
}, {
name: '化工',
value: 280
}, {
name: '制造',
value: 280
}, {
name: '其他',
value: 280
}];
var data = [];
var color = ['#00C6B7', '#058DDB', '#91D449', '#232A3C', '#7A7A7A', '#ff5b00', '#ff3000']
for (var i = 0; i < trafficWay.length; i++) {
data.push({
value: trafficWay[i].value,
name: trafficWay[i].name,
itemStyle: {
normal: {
borderWidth: 5,
shadowBlur: 20,
borderColor: color[i],
shadowColor: color[i]
}
}
}, {
value: 60,
name: "",
itemStyle: {
normal: {
label: {
show: false
},
labelLine: {
show: false
},
color: 'rgba(0, 0, 0, 0)',
borderColor: 'rgba(0, 0, 0, 0)',
borderWidth: 0
}
}
});
}
var seriesOption = [{
name: '',
type: 'pie',
clockWise: false,
center: ["36%", '50%'],
radius: [105, 109],
hoverAnimation: false,
itemStyle: {
normal: {
label: {
show: false,
},
labelLine: {
show: false,
color: '#00ffff'
}
}
},
data: data
}];
let option = {
color: color,
title: {
text: '28%',
subtext: "钢铁",
top: '48%',
textAlign: "center",
left: "35%",
textStyle: {
color: '#fff',
fontSize: 32,
fontWeight: '400'
},
subtextStyle: {
fontFamily: "微软雅黑",
fontSize: 16,
color: '#fff',
}
},
graphic: {
elements: [{
type: "image",
z: 3,
style: {
image: "transparent",
width: 178,
height: 178
},
left: 'center',
top: 'center',
position: [100, 100]
}]
},
tooltip: {
show: false
},
legend: {
icon: "rect",
orient: '',
x: 'right',
data: [{
name: '钢铁',
value: 280
}, {
name: '水泥',
value: 280
}, {
name: '化工',
value: 280
}, {
name: '制造',
value: 280
}, {
name: '其他',
value: 280
}],
formatter: function (name) {
var percent = 0;
var total = 0;
for (var i = 0; i < trafficWay.length; i++) {
total += trafficWay[i].value;
}
const item = trafficWay.filter((item) => item.name === name)[0];
console.log(item);
percent = ((item.value / total) * 100).toFixed(2);
if (name !== '') {
return `{name|${name}}` + "\t" + "\t" + `{num|${percent}}{num|%}`;
// return `{name|${name}` + `{num|${percent}}{name|kWh}`;
} else {
return '';
}
},
left: 320,
bottom: 145,
align: 'left',
textStyle: {
color: "#fff",
rich: {
name: {
fontSize: 16,
color: "#fff",
},
num: {
fontSize: 12,
color: color[1],
}
},
},
itemGap: 20
},
toolbox: {
show: false
},
series: seriesOption
}
this.defineEcharts("yhhyzb", option)
},
},
mounted() {
this.defineEcharts("ndqylfb", this.option);
// this.defineEcharts("ynl", this.option1);
this.qyyh();
this.pcfx();
this.yhhyzb();
var data = [
{
name: "南京市",
value: 1,
},
{
name: "济南市",
value: 2,
},
{
name: "徐州市",
value: 3,
},
{
name: "常州市",
value: 4,
},
{
name: "苏州市",
value: 5,
},
{
name: "南通市",
value: 6,
},
{
name: "连云港市",
value: 7,
},
{
name: "淮安市",
value: 8,
},
{
name: "盐城市",
value: 9,
},
{
name: "扬州市",
value: 10,
},
{
name: "镇江市",
value: 11,
},
{
name: "泰州市",
value: 12,
},
{
name: "宿迁市",
value: 13,
},
];
var splitList = [
{
start: 1,
end: 1,
label: "济南市",
color: "#236da8",
},
{
start: 2,
end: 2,
label: "无锡市",
color: "#2884db",
},
{
start: 3,
end: 3,
label: "徐州市",
color: "#244779",
},
{
start: 4,
end: 4,
label: "常州市",
color: "#246198",
},
{
start: 5,
end: 5,
label: "苏州市",
color: "#2884db",
},
{
start: 6,
end: 6,
label: "南通市",
color: "#2884db",
},
{
start: 7,
end: 7,
label: "连云港市",
color: "#244779",
},
{
start: 8,
end: 8,
label: "淮安市",
color: "#244779",
},
{
start: 9,
end: 9,
label: "盐城市",
color: "#244779",
},
{
start: 10,
end: 10,
label: "扬州市",
color: "#246198",
},
{
start: 11,
end: 11,
label: "镇江市",
color: "#2884db",
},
{
start: 12,
end: 12,
label: "泰州市",
color: "#2884db",
},
{
start: 13,
end: 13,
label: "宿迁市",
color: "#244779",
},
];
var chartDom = document.getElementById("map");
var myChart = this.$echarts.init(chartDom, null, {
devicePixelRatio: 10, // 设置为2或更高的值
});
//获取山东地图数据。
$.get(
"https://geo.datav.aliyun.com/areas_v3/bound/370000_full.json",
function (geojson) {
echarts.registerMap("山东", geojson);
let option = {
series: [
{
tooltip: {
trigger: "item",
},
name: "山东",
type: "map3D",
map: "山东",
boxDepth: 60, //地图倾斜度
regionHeight: 6, //地图厚度
label: {
show: true, //是否显示市
textStyle: {
color: "#fff", //文字颜色
fontSize: 12, //文字大小
fontFamily: "微软雅黑",
backgroundColor: "rgba(0,0,0,0)", //透明度0清空文字背景
},
},
itemStyle: {
opacity: 1, // 透明度
borderWidth: 1.5, //分界线宽度
borderColor: "#0699E4", //分界线颜色
},
groundplane: {
show: true,
},
data: data,
//shading: 'realistic',
// 真实感材质相关配置 shading: 'realistic'时有效
realisticMaterial: {
detailTexture: "#093099", // 纹理贴图
textureTiling: 0, // 纹理平铺1是拉伸数字表示纹理平铺次数
roughness: 0, // 材质粗糙度0完全光滑1完全粗糙
metalness: 1, // 0材质是非金属 1金属
roughnessAdjust: 0,
},
viewControl: {
distance: 80, // 地图视角 控制初始大小
rotateSensitivity: 1, // 旋转
zoomSensitivity: 1, // 缩放
},
},
],
dataRange: {
show: false,
splitList: splitList,
},
animation: true,
};
myChart.setOption(option);
myChart.on("click", this.chartClick);
let chartClick = function (param) {
console.log(param);
myChart.setOption(option, false);
window.addEventListener("resize", function () {
myChart.resize();
});
var selectedPro = param.name;
if (!cityProper[selectedPro]) {
option.series.splice(1);
option.legend = null;
option.visualMap = null;
myChart.setOption(option, true);
return;
}
//获取点击区域数据
$.get(cityProper[selectedPro], function (geojson) {
echarts.registerMap(selectedPro, geojson);
//根据需求如果要替换青岛地图series参数为[0],不替换为[1],其中left、top自己设置。
option.series[0] = {
name: "",
type: "map",
map: selectedPro,
boxDepth: 80, //地图倾斜度
regionHeight: 5, //地图厚度
itemStyle: {
normal: {
label: {
show: true,
},
},
emphasis: {
label: {
show: true,
},
},
},
groundplane: {
show: false,
},
data: data,
shading: "realistic",
// 真实感材质相关配置 shading: 'realistic'时有效
realisticMaterial: {
detailTexture: "#fff", // 纹理贴图
textureTiling: 1, // 纹理平铺1是拉伸数字表示纹理平铺次数
roughness: 0, // 材质粗糙度0完全光滑1完全粗糙
metalness: 0, // 0材质是非金属 1金属
roughnessAdjust: 0,
},
viewControl: {
distance: 100, // 地图视角 控制初始大小
rotateSensitivity: 1, // 旋转
zoomSensitivity: 1, // 缩放
},
};
myChart.setOption(option);
});
};
}
);
},
beforeDestroy() {
//离开页面后,删除屏幕监听,防止监听事件一直存在
window.removeEventListener("resize", this.getResize);
},
};
</script>
<style scoped lang="less">
.box {
width: 100%;
height: 100%;
display: flex;
flex-direction: column;
color: #fff;
.title {
width: 100%;
height: 76px;
background: url(../assets/客户侧总体用能情况分析/标题背景.png);
background-position: center center;
background-repeat: no-repeat;
background-size: cover;
display: flex;
align-items: center;
justify-content: space-between;
margin-bottom: 10px;
p {
width: 567px;
height: 47px;
font-size: 44px;
font-family: " Alibaba PuHuiTi" 2, " Alibaba PuHuiTi" 20;
font-weight: 600;
line-height: 47px;
letter-spacing: 3px;
color: #fff;
margin-left: -60px;
}
img:nth-of-type(1) {
width: 231px;
height: 59px;
}
img:nth-of-type(2) {
width: 158px;
height: 28px;
}
}
.containter {
width: 100%;
height: 967px;
display: flex;
position: relative;
justify-content: space-between;
.left {
width: 436px;
height: 100%;
.ndqyyh {
// height: 27.22vh;
height: 294px;
// width: 100%;
background: url("../assets/客户侧总体用能情况分析/ 3117.png");
background-size: cover;
position: relative;
display: flex;
flex-direction: column;
align-items: center;
.title {
position: absolute;
left: 160px;
width: 144px;
height: 36px;
font-size: 18px;
font-family: "Source Han Sans";
font-weight: 700;
color: rgba(255, 255, 255, 0.87);
line-height: 36px;
}
.bg_title {
width: 394px;
height: 62px;
background: url(../assets/zhsdy/\ 3187.png);
background-size: cover;
position: absolute;
top: 40px;
display: flex;
justify-content: space-around;
.tit_first {
width: 116px;
height: 44px;
font-size: 32px;
font-weight: 700;
color: #14ADFD;
line-height: 44px;
display: flex;
.tit_danwei {
height: 44px;
font-size: 14px;
font-weight: 400;
margin-left: 5px;
color: #FFFFFF;
line-height: 44px;
}
}
.tit_second {
width: 132px;
display: flex;
justify-content: space-between;
div {
p:nth-child(1) {
height: 24px;
font-size: 14px;
font-weight: 400;
color: #FFFFFF;
line-height: 24px;
}
p.tb_percent {
width: 57px;
height: 30px;
font-size: 16px;
font-weight: 700;
color: #F2B810;
line-height: 30px;
display: flex;
img {
width: 12px;
height: 12px;
margin-top: 4x;
}
}
}
}
}
#qyyh {
width: 100%;
height: 180px;
margin-top: 100px;
}
}
.ndsdl {
height: 315px;
background: url("../assets/客户侧总体用能情况分析/实时负荷走势-框.png");
background-size: cover;
margin-top: 6px;
position: relative;
display: flex;
flex-direction: column;
align-items: center;
.title {
position: absolute;
left: 160px;
width: 144px;
height: 36px;
font-size: 18px;
font-family: "Source Han Sans";
font-weight: 700;
color: rgba(255, 255, 255, 0.87);
line-height: 36px;
}
.bg_title {
width: 394px;
height: 62px;
background: url(../assets/zhsdy/\ 3187.png);
background-size: cover;
position: absolute;
top: 40px;
display: flex;
justify-content: space-around;
.tit_first {
width: 116px;
height: 44px;
font-size: 32px;
font-weight: 700;
color: #14ADFD;
line-height: 44px;
display: flex;
.tit_danwei {
height: 44px;
font-size: 14px;
font-weight: 400;
margin-left: 5px;
color: #FFFFFF;
line-height: 44px;
}
}
.tit_second {
width: 182px;
display: flex;
justify-content: space-between;
div {
p:nth-child(1) {
height: 24px;
font-size: 14px;
font-weight: 400;
color: #FFFFFF;
line-height: 24px;
}
p.tb_percent {
height: 30px;
font-size: 16px;
font-weight: 700;
color: #F2B810;
line-height: 30px;
display: flex;
img {
width: 12px;
height: 12px;
margin-top: 4x;
}
}
}
}
}
#ndsdl {
position: absolute;
width: 100%;
height: 200px;
bottom: 10px;
}
}
}
.right {
width: 436px;
height: 100%;
.ndsdje {
height: 294px;
width: 100%;
background: url("../assets/客户侧总体用能情况分析/ 3117.png");
background-size: cover;
position: relative;
.title {
position: absolute;
left: 160px;
width: 144px;
height: 36px;
font-size: 18px;
font-family: "Source Han Sans";
font-weight: 700;
color: rgba(255, 255, 255, 0.87);
line-height: 36px;
}
#ndsdje {
width: 100%;
height: 100%;
padding-top: 50px;
.infos {
width: 396px;
height: 104px;
display: flex;
justify-content: space-between;
background: url(../assets/zhsdy/\ 3168.png);
background-size: cover;
margin: 0 auto;
margin-bottom: 15px;
.first {
width: 180px;
p:nth-child(1) {
width: 180px;
height: 44px;
display: flex;
justify-content: space-between;
img {
width: 15px;
height: 15px;
border: none;
display: block;
margin-top: 10px;
margin-left: 10px;
}
span.titles {
width: 140px;
height: 44px;
font-size: 14px;
font-weight: 400;
color: #FFFFFF;
line-height: 44px;
display: block;
}
}
p.money {
width: 145px;
height: 44px;
font-size: 40px;
font-weight: 700;
color: #52C2FF;
line-height: 44px;
.danwei {
color: #fff;
font-size: 14px;
}
}
}
.second {
width: 172px;
height: 100%;
div.s_tit {
width: 172px;
display: flex;
justify-content: space-around;
p:nth-child(1) {
height: 36px;
font-size: 14px;
font-weight: 400;
color: #FFFFFF;
line-height: 36px;
}
p.tb_percent {
height: 30px;
font-size: 16px;
font-weight: 700;
color: #F2B810;
line-height: 30px;
display: flex;
img {
width: 12px;
height: 12px;
margin-top: 8px;
}
}
}
.bigBox {
width: 172px;
height: 10px;
background-color: #273546;
border-radius: 67px 67px 67px 67px;
margin-top: 5px;
.smallBox {
width: 100px;
height: 10px;
border-radius: 67px 67px 67px 67px;
background: linear-gradient(to right,
rgba(38, 206, 253, 1) 20%,
rgba(42, 254, 255, 1) 100%,
rgba(38, 206, 253, 1) 20%);
}
}
}
}
}
}
.pcfx {
height: 294px;
width: 100%;
background: url("../assets/客户侧总体用能情况分析/ 3117.png");
background-size: cover;
position: relative;
margin-top: 6px;
.title {
position: absolute;
left: 160px;
width: 144px;
height: 36px;
font-size: 18px;
font-family: "Source Han Sans";
font-weight: 700;
color: rgba(255, 255, 255, 0.87);
line-height: 36px;
}
#pcfx {
width: 100%;
height: 100%;
padding-top: 40px;
.pc_tit {
width: 398px;
height: 48px;
margin: 0 auto;
background: url(../assets/zhsdy/\ 3169.png);
background-size: cover;
display: flex;
justify-content: space-between;
margin-top: 5px;
.pc_l {
width: 272px;
height: 48px;
display: flex;
justify-content: flex-start;
.pc_name {
margin-left: 18px;
height: 44px;
font-size: 14px;
font-weight: 400;
color: #FFFFFF;
line-height: 44px;
display: block;
}
img {
width: 15px;
height: 15px;
margin-top: 18px;
margin-left: 10px;
}
.pc_count {
margin-left: 14px;
height: 44px;
font-size: 24px;
font-weight: 700;
color: #0AA7FF;
line-height: 44px;
display: block;
}
.pc_danwei {
margin-left: 6px;
height: 44px;
font-size: 14px;
font-weight: 400;
color: #FFFFFF;
line-height: 44px;
}
}
.pc_r {
margin-right: 20px;
p:nth-child(1) {
height: 24px;
font-size: 14px;
font-weight: 400;
color: #FFFFFF;
line-height: 24px;
}
p.tb_percent {
height: 24px;
font-size: 16px;
font-weight: 700;
color: #F2B810;
line-height: 24px;
display: flex;
img {
width: 12px;
height: 12px;
margin-top: 8px;
}
}
}
}
#pcfxb {
width: 100%;
height: 150px;
}
}
}
.yhhyzb {
height: 353px;
width: 100%;
background: url("../assets/客户侧总体用能情况分析/ 3119.png");
background-size: cover;
position: relative;
margin-top: 6px;
.title {
position: absolute;
left: 160px;
width: 144px;
height: 36px;
font-size: 18px;
font-family: "Source Han Sans";
font-weight: 700;
color: rgba(255, 255, 255, 0.87);
line-height: 36px;
}
#yhhyzb {
width: 100%;
height: 100%;
}
}
}
.footer {
position: absolute;
width: 1445px;
height: 325px;
bottom: 10px;
display: flex;
justify-content: space-between;
.ndqylfb {
width: 776px;
height: 100%;
background: url(../assets/zhsdy/用能量-框.png);
background-size: cover;
position: relative;
.title {
position: absolute;
left: 50%;
width: 144px;
height: 36px;
font-size: 18px;
font-family: "Source Han Sans";
font-weight: 700;
color: rgba(255, 255, 255, 0.87);
transform: translateX(-50%);
line-height: 36px;
}
#ndqylfb {
width: 100%;
height: 100%;
}
}
.ggzcxx {
width: 653px;
height: 325px;
background: url(../assets/zhsdy/\ 3120.png);
background-size: cover;
position: relative;
.title {
position: absolute;
left: 50%;
width: 144px;
height: 36px;
font-size: 18px;
font-family: "Source Han Sans";
font-weight: 700;
color: rgba(255, 255, 255, 0.87);
line-height: 36px;
transform: translateX(-50%);
}
#ggzcxx {
width: 100%;
margin-top: 60px;
ul {
width: 100%;
li {
width: 100%;
height: 40px;
padding: 0px 36px 0px 18px;
box-sizing: border-box;
display: flex;
justify-content: space-between;
align-items: center;
.img {
width: 12px;
height: 12px;
display: block;
}
.times {
width: 145px;
height: 36px;
color: #52C2FF;
font-size: 14px;
line-height: 36px;
display: block;
}
.info {
width: 381px;
height: 36px;
white-space: nowrap;
text-overflow: ellipsis;
overflow: hidden;
font-size: 14px;
line-height: 36px;
display: block;
}
}
li:nth-child(2n+2) {
background: #0E2C7E;
}
}
}
}
}
#map {
width: 994px;
position: absolute;
height: 627px;
left: 50%;
transform: translateX(-50%);
overflow: hidden;
}
}
}
</style>