提交
@ -29,6 +29,7 @@
|
|||||||
"axios": "1.8.4",
|
"axios": "1.8.4",
|
||||||
"crypto-js": "4.2.0",
|
"crypto-js": "4.2.0",
|
||||||
"echarts": "5.6.0",
|
"echarts": "5.6.0",
|
||||||
|
"echarts-gl": "^2.0.9",
|
||||||
"echarts-liquidfill": "^3.1.0",
|
"echarts-liquidfill": "^3.1.0",
|
||||||
"element-plus": "2.9.8",
|
"element-plus": "2.9.8",
|
||||||
"file-saver": "2.0.5",
|
"file-saver": "2.0.5",
|
||||||
@ -94,4 +95,4 @@
|
|||||||
"Safari >= 14",
|
"Safari >= 14",
|
||||||
"Firefox >= 78"
|
"Firefox >= 78"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
@ -3,14 +3,14 @@ import request from '@/utils/request';
|
|||||||
// 查询图表总数据
|
// 查询图表总数据
|
||||||
export function getPowerStationOverview() {
|
export function getPowerStationOverview() {
|
||||||
return request({
|
return request({
|
||||||
url: '/ginlong/api/getPowerStationOverview',
|
url: '/ops/ginlong/api/getPowerStationOverview',
|
||||||
method: 'get'
|
method: 'get'
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
//能源收益
|
//能源收益
|
||||||
export function getStationMonthOverview(params: any) {
|
export function getStationMonthOverview(params: any) {
|
||||||
return request({
|
return request({
|
||||||
url: '/ginlong/api/getStationMonthOverview',
|
url: '/ops/ginlong/api/getStationMonthOverview',
|
||||||
method: 'get',
|
method: 'get',
|
||||||
params
|
params
|
||||||
});
|
});
|
||||||
@ -18,7 +18,7 @@ export function getStationMonthOverview(params: any) {
|
|||||||
//能源收益
|
//能源收益
|
||||||
export function getInverterListOverview(params: any) {
|
export function getInverterListOverview(params: any) {
|
||||||
return request({
|
return request({
|
||||||
url: '/ginlong/api/getInverterListOverview',
|
url: '/ops/ginlong/api/getInverterListOverview',
|
||||||
method: 'get',
|
method: 'get',
|
||||||
params
|
params
|
||||||
});
|
});
|
||||||
@ -26,7 +26,7 @@ export function getInverterListOverview(params: any) {
|
|||||||
//警告
|
//警告
|
||||||
export function getAlarmListOverview(params?: any) {
|
export function getAlarmListOverview(params?: any) {
|
||||||
return request({
|
return request({
|
||||||
url: '/ginlong/api/getAlarmListOverview',
|
url: '/ops/ginlong/api/getAlarmListOverview',
|
||||||
method: 'get',
|
method: 'get',
|
||||||
params
|
params
|
||||||
});
|
});
|
||||||
|
|||||||
BIN
src/assets/large/Inversion.png
Normal file
|
After Width: | Height: | Size: 361 B |
BIN
src/assets/large/bg.png
Normal file
|
After Width: | Height: | Size: 67 KiB |
BIN
src/assets/large/center1.png
Normal file
|
After Width: | Height: | Size: 399 B |
BIN
src/assets/large/center2.png
Normal file
|
After Width: | Height: | Size: 597 B |
BIN
src/assets/large/center3.png
Normal file
|
After Width: | Height: | Size: 541 B |
BIN
src/assets/large/center4.png
Normal file
|
After Width: | Height: | Size: 457 B |
BIN
src/assets/large/center5.png
Normal file
|
After Width: | Height: | Size: 18 KiB |
BIN
src/assets/large/income.png
Normal file
|
After Width: | Height: | Size: 568 B |
BIN
src/assets/large/monitor.png
Normal file
|
After Width: | Height: | Size: 793 B |
BIN
src/assets/large/power.png
Normal file
|
After Width: | Height: | Size: 671 B |
BIN
src/assets/large/right1.png
Normal file
|
After Width: | Height: | Size: 464 B |
BIN
src/assets/large/right2.png
Normal file
|
After Width: | Height: | Size: 425 B |
BIN
src/assets/large/right3.png
Normal file
|
After Width: | Height: | Size: 492 B |
BIN
src/assets/large/right4.png
Normal file
|
After Width: | Height: | Size: 368 B |
BIN
src/assets/large/right5.png
Normal file
|
After Width: | Height: | Size: 487 B |
BIN
src/assets/large/right6.png
Normal file
|
After Width: | Height: | Size: 758 B |
BIN
src/assets/large/right7.png
Normal file
|
After Width: | Height: | Size: 478 B |
BIN
src/assets/large/right8.png
Normal file
|
After Width: | Height: | Size: 491 B |
BIN
src/assets/large/right9.png
Normal file
|
After Width: | Height: | Size: 534 B |
BIN
src/assets/large/secure.png
Normal file
|
After Width: | Height: | Size: 9.5 KiB |
BIN
src/assets/large/setting.png
Normal file
|
After Width: | Height: | Size: 760 B |
BIN
src/assets/large/weather.png
Normal file
|
After Width: | Height: | Size: 9.1 KiB |
@ -3,7 +3,7 @@
|
|||||||
.el-select__wrapper {
|
.el-select__wrapper {
|
||||||
background: transparent !important;
|
background: transparent !important;
|
||||||
box-shadow: none !important;
|
box-shadow: none !important;
|
||||||
border: 0.1px solid #fff !important;
|
border: 0.1px solid rgba(24, 177, 219, 0.3) !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.el-select__placeholder {
|
.el-select__placeholder {
|
||||||
@ -47,7 +47,7 @@
|
|||||||
// transition: var(--el-transition-box-shadow);
|
// transition: var(--el-transition-box-shadow);
|
||||||
// transform: translate3d(0, 0, 0);
|
// transform: translate3d(0, 0, 0);
|
||||||
box-shadow: none !important;
|
box-shadow: none !important;
|
||||||
border: 0.1px solid #fff !important;
|
border: 0.1px solid rgba(24, 177, 219, 0.3) !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.el-input__inner {
|
.el-input__inner {
|
||||||
|
|||||||
@ -9,12 +9,6 @@
|
|||||||
@use 'element-plus/dist/index.css';
|
@use 'element-plus/dist/index.css';
|
||||||
@use './dialog.scss';
|
@use './dialog.scss';
|
||||||
|
|
||||||
@font-face {
|
|
||||||
font-family: 'AlimamaShuHeiTi';
|
|
||||||
src: url('@/assets/font/庞门正道标题体2.0增强版.ttf') format('truetype');
|
|
||||||
// font-weight: normal;
|
|
||||||
// font-style: normal;
|
|
||||||
}
|
|
||||||
|
|
||||||
body {
|
body {
|
||||||
height: 100%;
|
height: 100%;
|
||||||
|
|||||||
@ -102,7 +102,7 @@ onUnmounted(() => {
|
|||||||
}
|
}
|
||||||
.title {
|
.title {
|
||||||
color: #fff;
|
color: #fff;
|
||||||
font-family: 'AlimamaShuHeiTi', sans-serif;
|
font-family: 'Rang_men_zheng_title', sans-serif;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
.title > div:first-child {
|
.title > div:first-child {
|
||||||
@ -169,7 +169,7 @@ onUnmounted(() => {
|
|||||||
.right-section {
|
.right-section {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
font-family: 'AlimamaShuHeiTi', sans-serif;
|
font-family: 'Rang_men_zheng_title', sans-serif;
|
||||||
font-size: 20px;
|
font-size: 20px;
|
||||||
}
|
}
|
||||||
.right-section img {
|
.right-section img {
|
||||||
|
|||||||
@ -57,7 +57,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div style="box-sizing: border-box; padding: 10px; border: 1px solid rgba(255, 255, 255, 0.1); border-radius: 10px; margin-top: 5px">
|
<div style="box-sizing: border-box; padding: 0 10px; border: 1px solid rgba(255, 255, 255, 0.1); border-radius: 10px; margin-top: 5px">
|
||||||
<div class="inverter">
|
<div class="inverter">
|
||||||
<div class="left_title">
|
<div class="left_title">
|
||||||
<div style="display: flex; align-items: center">
|
<div style="display: flex; align-items: center">
|
||||||
@ -125,9 +125,8 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="brokenLine">
|
<div class="brokenLine">
|
||||||
<EchartBoxTwo :option="lineOption"></EchartBoxTwo>
|
<EchartBoxTwo :option="lineOption" ref="lineChart"></EchartBoxTwo>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="left_title">
|
<div class="left_title">
|
||||||
<div style="display: flex; align-items: center">
|
<div style="display: flex; align-items: center">
|
||||||
<div class="left_title_img">
|
<div class="left_title_img">
|
||||||
@ -138,7 +137,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="income">
|
<div class="income">
|
||||||
<EchartBoxTwo :option="barOption"></EchartBoxTwo>
|
<EchartBoxTwo :option="barOption" ref="barChart"></EchartBoxTwo>
|
||||||
</div>
|
</div>
|
||||||
<div class="income_list">
|
<div class="income_list">
|
||||||
<div style="display: flex; justify-content: space-between">
|
<div style="display: flex; justify-content: space-between">
|
||||||
@ -168,9 +167,8 @@
|
|||||||
import * as echarts from 'echarts';
|
import * as echarts from 'echarts';
|
||||||
import EchartBoxTwo from '@/components/EchartBox/index.vue';
|
import EchartBoxTwo from '@/components/EchartBox/index.vue';
|
||||||
import { formatDate } from '@/utils/index';
|
import { formatDate } from '@/utils/index';
|
||||||
|
|
||||||
import { getLineOption, getBarOptions } from './optionList';
|
import { getLineOption, getBarOptions } from './optionList';
|
||||||
import { getPowerStationOverview, getStationMonthOverview, getInverterListOverview } from '@/api/large';
|
import { getPowerStationOverview, getStationMonthOverview, getInverterListOverview } from '@/api/large/index';
|
||||||
|
|
||||||
// 直接在组件内部定义数据
|
// 直接在组件内部定义数据
|
||||||
const chartData = ref({
|
const chartData = ref({
|
||||||
@ -258,9 +256,9 @@ const getInverterData = () => {
|
|||||||
getInverterListOverview(params).then((res) => {
|
getInverterListOverview(params).then((res) => {
|
||||||
if (res.code == 200) {
|
if (res.code == 200) {
|
||||||
pedestrianFlow(res.data.data);
|
pedestrianFlow(res.data.data);
|
||||||
chartData.value.fault = res.data.fault;
|
chartData.value.fault = res.data.fault ?? 0;
|
||||||
chartData.value.normal = res.data.normal;
|
chartData.value.normal = res.data.normal ?? 0;
|
||||||
chartData.value.abnormal = res.data.offline;
|
chartData.value.abnormal = res.data.offline ?? 0;
|
||||||
renderChart();
|
renderChart();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -295,9 +293,9 @@ const calculatePercentages = () => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
return {
|
return {
|
||||||
normal: Number(normal),
|
normal: Number(normal) ?? 0,
|
||||||
abnormal: Number(abnormal),
|
abnormal: Number(abnormal) ?? 0,
|
||||||
fault: Number(fault)
|
fault: Number(fault) ?? 0
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
const lineOption = ref({});
|
const lineOption = ref({});
|
||||||
@ -335,6 +333,8 @@ const initChart = () => {
|
|||||||
|
|
||||||
getEnergyData();
|
getEnergyData();
|
||||||
getInverterData();
|
getInverterData();
|
||||||
|
// pedestrianFlow();
|
||||||
|
// getTurnoverList();
|
||||||
};
|
};
|
||||||
|
|
||||||
// 渲染图表逆变器柱状图
|
// 渲染图表逆变器柱状图
|
||||||
@ -445,6 +445,8 @@ const renderChart = () => {
|
|||||||
|
|
||||||
chartInstance.setOption(option);
|
chartInstance.setOption(option);
|
||||||
};
|
};
|
||||||
|
const lineChart = ref();
|
||||||
|
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
initChart();
|
initChart();
|
||||||
window.addEventListener('resize', () => chartInstance?.resize());
|
window.addEventListener('resize', () => chartInstance?.resize());
|
||||||
@ -515,7 +517,7 @@ onMounted(() => {
|
|||||||
}
|
}
|
||||||
.left_title_text {
|
.left_title_text {
|
||||||
font-size: 20px;
|
font-size: 20px;
|
||||||
font-family: 'AlimamaShuHeiTi', sans-serif;
|
font-family: 'Rang_men_zheng_title', sans-serif;
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: flex-end;
|
align-items: flex-end;
|
||||||
margin-left: 15px;
|
margin-left: 15px;
|
||||||
@ -595,19 +597,19 @@ img {
|
|||||||
}
|
}
|
||||||
.income {
|
.income {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 20vh;
|
height: 24vh;
|
||||||
// margin-top: 20px;
|
// margin-top: 20px;
|
||||||
}
|
}
|
||||||
.income_list {
|
.income_list {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 9vh;
|
height: 7vh;
|
||||||
display: grid;
|
display: grid;
|
||||||
grid-template-columns: repeat(2, 1fr);
|
grid-template-columns: repeat(2, 1fr);
|
||||||
align-items: center; /* 垂直居中 */
|
align-items: center; /* 垂直居中 */
|
||||||
// grid-gap: 10px;
|
// grid-gap: 10px;
|
||||||
// background-color: rgba(29, 214, 255, 0.1);
|
// background-color: rgba(29, 214, 255, 0.1);
|
||||||
// border-radius: 10px;
|
// border-radius: 10px;
|
||||||
padding: 10px;
|
padding: 0 10px;
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -601,15 +601,15 @@ export const getBarOptions = (data: any) => {
|
|||||||
backgroundColor: '',
|
backgroundColor: '',
|
||||||
grid: {
|
grid: {
|
||||||
left: '7%',
|
left: '7%',
|
||||||
top: '4%',
|
top: '10%',
|
||||||
bottom: '25%',
|
bottom: '23%',
|
||||||
right: '2%'
|
right: '2%'
|
||||||
},
|
},
|
||||||
tooltip: {
|
tooltip: {
|
||||||
show: true,
|
show: true,
|
||||||
backgroundColor: '',
|
backgroundColor: '',
|
||||||
trigger: 'axis',
|
trigger: 'axis',
|
||||||
formatter: '{b0}:{c0}元',
|
formatter: '{b0}:{c0}万元',
|
||||||
textStyle: {
|
textStyle: {
|
||||||
color: '#fff'
|
color: '#fff'
|
||||||
}
|
}
|
||||||
|
|||||||
@ -267,7 +267,7 @@ getAlarm();
|
|||||||
}
|
}
|
||||||
.left_title_text {
|
.left_title_text {
|
||||||
font-size: 20px;
|
font-size: 20px;
|
||||||
font-family: 'AlimamaShuHeiTi', sans-serif;
|
font-family: 'Rang_men_zheng_title', sans-serif;
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: flex-end;
|
align-items: flex-end;
|
||||||
margin-left: 15px;
|
margin-left: 15px;
|
||||||
|
|||||||