zhuzhansheji/.history/src/views/XQXY_20231201145518.vue

1880 lines
68 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">7,5624<span class="tit_danwei">MWH</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="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,
}
},
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 {
width: 14px;
height: 44px;
font-size: 14px;
font-weight: 400;
color: #FFFFFF;
line-height: 44px;
}
}
.tit_second {
width: 132px;
display: flex;
justify-content: space-between;
div {
p:nth-child(1) {
width: 68px;
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 {
width: 14px;
height: 44px;
font-size: 14px;
font-weight: 400;
color: #FFFFFF;
line-height: 44px;
}
}
.tit_second {
width: 132px;
display: flex;
justify-content: space-between;
div {
p:nth-child(1) {
width: 28px;
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;
}
}
}
}
}
#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) {
width: 28px;
height: 36px;
font-size: 14px;
font-weight: 400;
color: #FFFFFF;
line-height: 36px;
}
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: 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;
width: 33px;
height: 44px;
font-size: 14px;
font-weight: 400;
color: #FFFFFF;
line-height: 44px;
}
}
.pc_r {
margin-right: 20px;
p:nth-child(1) {
width: 28px;
height: 24px;
font-size: 14px;
font-weight: 400;
color: #FFFFFF;
line-height: 24px;
}
p.tb_percent {
width: 57px;
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>