|
@@ -1,156 +1,307 @@
|
|
|
<template>
|
|
|
<div class="app-container">
|
|
|
- <el-card>
|
|
|
- <div class="tips">
|
|
|
- <el-statistic title="国网接入">
|
|
|
+ <!-- 顶部统计卡片 -->
|
|
|
+ <div class="stats-card">
|
|
|
+ <div class="stats-container">
|
|
|
+ <el-statistic title="国网接入" class="stat-item">
|
|
|
<template slot="formatter">
|
|
|
- 10kV
|
|
|
+ <span class="stat-value primary">10kV</span>
|
|
|
</template>
|
|
|
</el-statistic>
|
|
|
- <el-statistic title="光伏总装机">
|
|
|
+ <el-statistic title="光伏总装机" class="stat-item">
|
|
|
<template slot="formatter">
|
|
|
- {{ pvCfg.total }}kWp
|
|
|
+ <span class="stat-value success">{{ pvCfg.total }}kWp</span>
|
|
|
</template>
|
|
|
</el-statistic>
|
|
|
- <el-statistic :title="`光伏${item.name}装机`" v-for="(item,index) in pvCfg.areas" :key="`pv_${index}`">
|
|
|
+ <el-statistic
|
|
|
+ :title="`光伏${item.name}装机`"
|
|
|
+ v-for="(item,index) in pvCfg.areas"
|
|
|
+ :key="`pv_${index}`"
|
|
|
+ class="stat-item"
|
|
|
+ >
|
|
|
<template slot="formatter">
|
|
|
- {{ numToStr(item.pv) }}kWp
|
|
|
+ <span class="stat-value info">{{ numToStr(item.pv) }}kWp</span>
|
|
|
</template>
|
|
|
</el-statistic>
|
|
|
</div>
|
|
|
- </el-card>
|
|
|
- <el-tabs v-model="activeName" @tab-click="tabClick">
|
|
|
- <el-tab-pane label="总览" name="summery">
|
|
|
- <el-row type="flex" :gutter="20" style="margin-top: 20px">
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <!-- 主内容区域 -->
|
|
|
+ <el-tabs v-model="activeName" @tab-click="tabClick" class="main-tabs">
|
|
|
+ <!-- 总览标签页 -->
|
|
|
+ <el-tab-pane name="summery">
|
|
|
+ <span slot="label">
|
|
|
+ <i class="el-icon-data-analysis"></i> 总览
|
|
|
+ </span>
|
|
|
+ <el-row :gutter="20" style="margin-top: 20px">
|
|
|
<el-col :span="12">
|
|
|
- <PieChartBlock title="当日供电量【单位:kW·h】" :opt-cfg="elecQuantity">
|
|
|
- </PieChartBlock>
|
|
|
+ <div class="chart-card">
|
|
|
+ <PieChartBlock title="当日供电量【单位:kW·h】" :opt-cfg="elecQuantity" />
|
|
|
+ </div>
|
|
|
</el-col>
|
|
|
<el-col :span="12">
|
|
|
- <PieChartBlock title="当日电费【单位:元】" :opt-cfg="elecCost">
|
|
|
- </PieChartBlock>
|
|
|
+ <div class="chart-card">
|
|
|
+ <PieChartBlock title="当日电费【单位:元】" :opt-cfg="elecCost" />
|
|
|
+ </div>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
- <el-row type="flex" :gutter="20" style="margin-top: 20px">
|
|
|
+ <el-row :gutter="20" style="margin-top: 20px">
|
|
|
<el-col :span="24">
|
|
|
- <BarChartBlock title="当日供电量柱状图" :opt-cfg="pvSupplyIndex"/>
|
|
|
+ <div class="chart-card">
|
|
|
+ <BarChartBlock title="当日供电量柱状图" :opt-cfg="pvSupplyIndex" />
|
|
|
+ </div>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
</el-tab-pane>
|
|
|
- <el-tab-pane label="市电" name="first">
|
|
|
- <el-col :span="4" :xs="24">
|
|
|
- <div class="head-container">
|
|
|
- <el-input v-model="areaName" placeholder="请输入区域名称" clearable size="small"
|
|
|
- prefix-icon="el-icon-search"
|
|
|
- style="margin-bottom: 20px"/>
|
|
|
- </div>
|
|
|
- <div class="head-container" style="height: 100vh; overflow: hidden; position: relative;">
|
|
|
- <el-tree :data="areaOptions" :props="defaultProps" :expand-on-click-node="false"
|
|
|
- :filter-node-method="filterNode" ref="tree" node-key="id" default-expand-all highlight-current
|
|
|
- @node-click="handleNodeClick" style="height: calc(100vh - 50px); overflow-y: auto;"/>
|
|
|
- </div>
|
|
|
- </el-col>
|
|
|
- <el-col :span="20" :xs="24">
|
|
|
- <div class="container-block">
|
|
|
- <SubTitle :title="`时段供电数据【${selectedLabel}】`"/>
|
|
|
- <BaseChart width="100%" height="300px" :option="elecOptions"/>
|
|
|
- </div>
|
|
|
- <div class="container-block">
|
|
|
- <div class="ctl-container">
|
|
|
- <el-date-picker v-model="dateRange" type="datetimerange" @change="getList"
|
|
|
- value-format="yyyy-MM-dd hh:mm:ss" :picker-options="pickerOptions" range-separator="至"
|
|
|
- start-placeholder="开始日期" end-placeholder="结束日期" align="right">
|
|
|
- </el-date-picker>
|
|
|
+
|
|
|
+ <!-- 市电标签页 -->
|
|
|
+ <el-tab-pane name="first">
|
|
|
+ <span slot="label">
|
|
|
+ <i class="el-icon-lightning"></i> 市电
|
|
|
+ </span>
|
|
|
+ <el-row :gutter="20">
|
|
|
+ <!-- 左侧树形区域 -->
|
|
|
+ <el-col :span="5" :xs="24">
|
|
|
+ <div class="head-container">
|
|
|
+ <el-input
|
|
|
+ v-model="areaName"
|
|
|
+ placeholder="请输入区域名称"
|
|
|
+ clearable
|
|
|
+ size="small"
|
|
|
+ prefix-icon="el-icon-search"
|
|
|
+ style="margin-bottom: 20px"
|
|
|
+ @input="filterTree"
|
|
|
+ />
|
|
|
+ </div>
|
|
|
+ <div class="head-container tree-container">
|
|
|
+ <el-tree
|
|
|
+ ref="tree"
|
|
|
+ :data="areaOptions"
|
|
|
+ :props="defaultProps"
|
|
|
+ :expand-on-click-node="false"
|
|
|
+ :filter-node-method="filterNode"
|
|
|
+ node-key="id"
|
|
|
+ :default-expanded-keys="defaultExpandedKeys"
|
|
|
+ highlight-current
|
|
|
+ @node-click="handleNodeClick"
|
|
|
+ >
|
|
|
+ <span class="custom-tree-node" slot-scope="{ node, data }">
|
|
|
+ <span class="tree-label">
|
|
|
+ <i :class="getTreeIcon(data)" class="tree-icon"></i>
|
|
|
+ {{ node.label }}
|
|
|
+ </span>
|
|
|
+ <el-tag
|
|
|
+ v-if="data.facsCategory === 'W'"
|
|
|
+ size="mini"
|
|
|
+ effect="plain"
|
|
|
+ class="tree-tag"
|
|
|
+ >
|
|
|
+ 市电
|
|
|
+ </el-tag>
|
|
|
+ </span>
|
|
|
+ </el-tree>
|
|
|
</div>
|
|
|
- <el-table v-loading="loading" :data="pgSupplyHList">
|
|
|
- <el-table-column label="日期" align="center" prop="date" width="180">
|
|
|
- <template slot-scope="scope">
|
|
|
- <span>{{ parseTime(scope.row.date, '{y}-{m}-{d}') }}</span>
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- <el-table-column label="时间" align="center" prop="time">
|
|
|
- <template slot-scope="scope">
|
|
|
- <span>{{ scope.row.time }}</span>
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- <el-table-column label="计量类型" align="center" prop="meterType">
|
|
|
- <template slot-scope="scope">
|
|
|
- <span>{{ getMeterTypeName(scope.row.meterType) }}</span>
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- <el-table-column label="单位电价(¥)" align="center" prop="meterUnitPrice"/>
|
|
|
- <el-table-column label="供电量(kW·h)" align="center" prop="useElecQuantity"/>
|
|
|
- <el-table-column label="供电电费(¥)" align="center" prop="useElecCost"/>
|
|
|
- </el-table>
|
|
|
- <pagination :total="total" :page-size.sync="queryParams.pageSize" :page-sizes="[10, 20, 50]"
|
|
|
- :page.sync="queryParams.pageNum" @pagination="getList"/>
|
|
|
- </div>
|
|
|
- </el-col>
|
|
|
+ </el-col>
|
|
|
+
|
|
|
+ <!-- 右侧内容区域 -->
|
|
|
+ <el-col :span="19" :xs="24">
|
|
|
+ <div class="content-wrapper">
|
|
|
+ <!-- 图表区域 -->
|
|
|
+ <div class="chart-section">
|
|
|
+ <SubTitle :title="`时段供电数据【${selectedLabel}】`" />
|
|
|
+ <BaseChart width="100%" height="300px" :option="elecOptions" />
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <!-- 数据表格区域 -->
|
|
|
+ <div class="table-section">
|
|
|
+ <div class="control-container">
|
|
|
+ <el-date-picker
|
|
|
+ v-model="dateRange"
|
|
|
+ type="datetimerange"
|
|
|
+ @change="getList"
|
|
|
+ value-format="yyyy-MM-dd HH:mm:ss"
|
|
|
+ :picker-options="pickerOptions"
|
|
|
+ range-separator="至"
|
|
|
+ start-placeholder="开始日期"
|
|
|
+ end-placeholder="结束日期"
|
|
|
+ align="right"
|
|
|
+ size="small"
|
|
|
+ />
|
|
|
+ </div>
|
|
|
+ <el-table v-loading="loading" :data="pgSupplyHList" class="data-table">
|
|
|
+ <el-table-column label="日期" align="center" prop="date" width="180">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <span>{{ parseTime(scope.row.date, '{y}-{m}-{d}') }}</span>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column label="时间" align="center" prop="time" />
|
|
|
+ <el-table-column label="计量类型" align="center" prop="meterType">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <el-tag :type="getMeterTypeTag(scope.row.meterType)" size="small">
|
|
|
+ {{ getMeterTypeName(scope.row.meterType) }}
|
|
|
+ </el-tag>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column label="单位电价(¥)" align="center" prop="meterUnitPrice">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <span class="data-value">{{ scope.row.meterUnitPrice }}</span>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column label="供电量(kW·h)" align="center" prop="useElecQuantity">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <span class="data-value primary">{{ scope.row.useElecQuantity }}</span>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column label="供电电费(¥)" align="center" prop="useElecCost">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <span class="data-value warning">{{ scope.row.useElecCost }}</span>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ </el-table>
|
|
|
+ <pagination
|
|
|
+ :total="total"
|
|
|
+ :page-size.sync="queryParams.pageSize"
|
|
|
+ :page-sizes="[10, 20, 50]"
|
|
|
+ :page.sync="queryParams.pageNum"
|
|
|
+ @pagination="getList"
|
|
|
+ />
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
</el-tab-pane>
|
|
|
- <el-tab-pane label="光伏" name="second">
|
|
|
- <el-col :span="4" :xs="24">
|
|
|
- <div class="head-container">
|
|
|
- <el-input v-model="areaName" placeholder="请输入区域名称" clearable size="small"
|
|
|
- prefix-icon="el-icon-search"
|
|
|
- style="margin-bottom: 20px"/>
|
|
|
- </div>
|
|
|
- <div class="head-container" style="height: 100vh; overflow: hidden; position: relative;">
|
|
|
- <el-tree :data="areaOptions" :props="defaultProps" :expand-on-click-node="false"
|
|
|
- :filter-node-method="filterNode" ref="tree" node-key="id" default-expand-all highlight-current
|
|
|
- @node-click="handleNodeClick" style="height: calc(100vh - 50px); overflow-y: auto;"/>
|
|
|
- </div>
|
|
|
- </el-col>
|
|
|
- <el-col :span="20" :xs="24">
|
|
|
- <div class="container-block">
|
|
|
- <SubTitle :title="`时段发电数据【${selectedLabel}】`"/>
|
|
|
- <BaseChart width="100%" height="300px" :option="pvOptions"/>
|
|
|
- </div>
|
|
|
- <div class="container-block">
|
|
|
- <div class="ctl-container">
|
|
|
- <el-date-picker v-model="dateRange" type="datetimerange" @change="getList" :picker-options="pickerOptions"
|
|
|
- value-format="yyyy-MM-dd hh:mm:ss" range-separator="至" start-placeholder="开始日期"
|
|
|
- end-placeholder="结束日期"
|
|
|
- align="right">
|
|
|
- </el-date-picker>
|
|
|
+
|
|
|
+ <!-- 光伏标签页 -->
|
|
|
+ <el-tab-pane name="second">
|
|
|
+ <span slot="label">
|
|
|
+ <i class="el-icon-sunny"></i> 光伏
|
|
|
+ </span>
|
|
|
+ <el-row :gutter="20">
|
|
|
+ <!-- 左侧树形区域 -->
|
|
|
+ <el-col :span="5" :xs="24">
|
|
|
+ <div class="head-container">
|
|
|
+ <el-input
|
|
|
+ v-model="areaName"
|
|
|
+ placeholder="请输入区域名称"
|
|
|
+ clearable
|
|
|
+ size="small"
|
|
|
+ prefix-icon="el-icon-search"
|
|
|
+ style="margin-bottom: 20px"
|
|
|
+ @input="filterTree"
|
|
|
+ />
|
|
|
+ </div>
|
|
|
+ <div class="head-container tree-container">
|
|
|
+ <el-tree
|
|
|
+ ref="tree"
|
|
|
+ :data="areaOptions"
|
|
|
+ :props="defaultProps"
|
|
|
+ :expand-on-click-node="false"
|
|
|
+ :filter-node-method="filterNode"
|
|
|
+ node-key="id"
|
|
|
+ :default-expanded-keys="defaultExpandedKeys"
|
|
|
+ highlight-current
|
|
|
+ @node-click="handleNodeClick"
|
|
|
+ >
|
|
|
+ <span class="custom-tree-node" slot-scope="{ node, data }">
|
|
|
+ <span class="tree-label">
|
|
|
+ <i :class="getTreeIcon(data)" class="tree-icon"></i>
|
|
|
+ {{ node.label }}
|
|
|
+ </span>
|
|
|
+ <el-tag
|
|
|
+ v-if="data.facsCategory === 'E'"
|
|
|
+ size="mini"
|
|
|
+ effect="plain"
|
|
|
+ class="tree-tag warning"
|
|
|
+ >
|
|
|
+ 光伏
|
|
|
+ </el-tag>
|
|
|
+ </span>
|
|
|
+ </el-tree>
|
|
|
+ </div>
|
|
|
+ </el-col>
|
|
|
+
|
|
|
+ <!-- 右侧内容区域 -->
|
|
|
+ <el-col :span="19" :xs="24">
|
|
|
+ <div class="content-wrapper">
|
|
|
+ <!-- 图表区域 -->
|
|
|
+ <div class="chart-section">
|
|
|
+ <SubTitle :title="`时段发电数据【${selectedLabel}】`" />
|
|
|
+ <BaseChart width="100%" height="300px" :option="pvOptions" />
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <!-- 数据表格区域 -->
|
|
|
+ <div class="table-section">
|
|
|
+ <div class="control-container">
|
|
|
+ <el-date-picker
|
|
|
+ v-model="dateRange"
|
|
|
+ type="datetimerange"
|
|
|
+ @change="getList"
|
|
|
+ :picker-options="pickerOptions"
|
|
|
+ value-format="yyyy-MM-dd HH:mm:ss"
|
|
|
+ range-separator="至"
|
|
|
+ start-placeholder="开始日期"
|
|
|
+ end-placeholder="结束日期"
|
|
|
+ align="right"
|
|
|
+ size="small"
|
|
|
+ />
|
|
|
+ </div>
|
|
|
+ <el-table v-loading="loading" :data="pvSupplyHList" class="data-table">
|
|
|
+ <el-table-column label="日期" align="center" prop="date" width="180">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <span>{{ parseTime(scope.row.date, '{y}-{m}-{d}') }}</span>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column label="时间" align="center" prop="time" />
|
|
|
+ <el-table-column label="总发电量(kW·h)" align="center" prop="genElecQuantity">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <span class="data-value success">{{ scope.row.genElecQuantity }}</span>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column label="自用电量(kW·h)" align="center" prop="useElecQuantity">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <span class="data-value info">{{ scope.row.useElecQuantity }}</span>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column label="上网电量(kW·h)" align="center" prop="upElecQuantity">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <span class="data-value primary">{{ scope.row.upElecQuantity }}</span>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column label="上网收益(¥)" align="center" prop="upElecEarn">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <span class="data-value warning">{{ scope.row.upElecEarn }}</span>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ </el-table>
|
|
|
+ <pagination
|
|
|
+ :total="total"
|
|
|
+ :page-size.sync="queryParams.pageSize"
|
|
|
+ :page-sizes="[10, 20, 50]"
|
|
|
+ :page.sync="queryParams.pageNum"
|
|
|
+ @pagination="getList"
|
|
|
+ />
|
|
|
+ </div>
|
|
|
</div>
|
|
|
- <el-table v-loading="loading" :data="pvSupplyHList">
|
|
|
- <el-table-column label="日期" align="center" prop="date" width="180">
|
|
|
- <template slot-scope="scope">
|
|
|
- <span>{{ parseTime(scope.row.date, '{y}-{m}-{d}') }}</span>
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- <el-table-column label="时间" align="center" prop="time">
|
|
|
- <template slot-scope="scope">
|
|
|
- <span>{{ scope.row.time }}</span>
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- <el-table-column label="总发电量(kW·h)" align="center" prop="genElecQuantity"/>
|
|
|
- <el-table-column label="自用电量(kW·h)" align="center" prop="useElecQuantity"/>
|
|
|
- <el-table-column label="上网电量(kW·h)" align="center" prop="upElecQuantity"/>
|
|
|
- <el-table-column label="上网收益(¥)" align="center" prop="upElecEarn"/>
|
|
|
- </el-table>
|
|
|
- <pagination :total="total" :page-size.sync="queryParams.pageSize" :page-sizes="[10, 20, 50]"
|
|
|
- :page.sync="queryParams.pageNum" @pagination="getList"/>
|
|
|
- </div>
|
|
|
- </el-col>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
</el-tab-pane>
|
|
|
</el-tabs>
|
|
|
</div>
|
|
|
</template>
|
|
|
|
|
|
<script>
|
|
|
-import {ApiCode} from '@/api/apiEmums'
|
|
|
-import {areaTreeByFacsCategory} from '@/api/basecfg/area'
|
|
|
-import {get} from '@/api/commonApi'
|
|
|
-import {listPgSupplyH, listPvSupplyH} from '@/api/mgr/pgSupplyH'
|
|
|
+import { ApiCode } from '@/api/apiEmums'
|
|
|
+import { areaTreeByFacsCategory } from '@/api/basecfg/area'
|
|
|
+import { get } from '@/api/commonApi'
|
|
|
+import { listPgSupplyH, listPvSupplyH } from '@/api/mgr/pgSupplyH'
|
|
|
import BaseChart from '@/components/BaseChart'
|
|
|
import BarChartBlock from '@/components/Block/charts/BarChartBlock.vue'
|
|
|
import PieChartBlock from '@/components/Block/charts/PieChartBlock.vue'
|
|
|
import SubTitle from '@/components/SubTitle'
|
|
|
-import {DateTool} from '@/utils/DateTool'
|
|
|
+import { DateTool } from '@/utils/DateTool'
|
|
|
import dayjs from 'dayjs'
|
|
|
-import {listConfig} from "@/api/system/config";
|
|
|
-import {numToStr} from "@/utils";
|
|
|
+import { listConfig } from "@/api/system/config"
|
|
|
+import { numToStr } from "@/utils"
|
|
|
|
|
|
export default {
|
|
|
name: 'PgSupplyH',
|
|
@@ -164,13 +315,11 @@ export default {
|
|
|
data() {
|
|
|
return {
|
|
|
activeName: 'summery',
|
|
|
- // 遮罩层
|
|
|
loading: true,
|
|
|
- // 总条数
|
|
|
total: 0,
|
|
|
facsCategory: '',
|
|
|
facsSubCategory: '',
|
|
|
- areaName: undefined,
|
|
|
+ areaName: '',
|
|
|
selectedLabel: '全部',
|
|
|
pgSupplyHList: [],
|
|
|
pgSupplyTodayList: [],
|
|
@@ -180,19 +329,24 @@ export default {
|
|
|
children: 'children',
|
|
|
label: 'label'
|
|
|
},
|
|
|
+ defaultExpandedKeys: [],
|
|
|
pvCfg: {
|
|
|
total: 0,
|
|
|
areas: []
|
|
|
},
|
|
|
- // 查询参数
|
|
|
queryParams: {
|
|
|
areaCode: '-1',
|
|
|
startRecTime: dayjs().subtract(1, 'month').format(DateTool.DateFormat.YYYY_MM_DD_HH_mm),
|
|
|
- endRecTime: dayjs().format(DateTool.DateFormat.YYYY_MM_DD_HH_mm)
|
|
|
+ endRecTime: dayjs().format(DateTool.DateFormat.YYYY_MM_DD_HH_mm),
|
|
|
+ pageNum: 1,
|
|
|
+ pageSize: 10
|
|
|
},
|
|
|
areaOptions: [],
|
|
|
elecData: [],
|
|
|
- dateRange: [dayjs().format(DateTool.DateFormat.YYYY_MM_DD_00_00_00), dayjs().format(DateTool.DateFormat.YYYY_MM_DD_23_59_59)],
|
|
|
+ dateRange: [
|
|
|
+ dayjs().format(DateTool.DateFormat.YYYY_MM_DD_00_00_00),
|
|
|
+ dayjs().format(DateTool.DateFormat.YYYY_MM_DD_23_59_59)
|
|
|
+ ],
|
|
|
pickerOptions: {
|
|
|
shortcuts: [
|
|
|
{
|
|
@@ -203,7 +357,8 @@ export default {
|
|
|
start.setTime(start.getTime() - 3600 * 1000 * 24 * 7)
|
|
|
picker.$emit('pick', [start, end])
|
|
|
}
|
|
|
- }, {
|
|
|
+ },
|
|
|
+ {
|
|
|
text: '最近一个月',
|
|
|
onClick(picker) {
|
|
|
const end = new Date()
|
|
@@ -211,7 +366,8 @@ export default {
|
|
|
start.setTime(start.getTime() - 3600 * 1000 * 24 * 30)
|
|
|
picker.$emit('pick', [start, end])
|
|
|
}
|
|
|
- }, {
|
|
|
+ },
|
|
|
+ {
|
|
|
text: '最近三个月',
|
|
|
onClick(picker) {
|
|
|
const end = new Date()
|
|
@@ -244,7 +400,7 @@ export default {
|
|
|
align: 'center'
|
|
|
}
|
|
|
},
|
|
|
- formatter: this.getLabelContentForElecQuantity // 使用方法生成标签内容
|
|
|
+ formatter: this.getLabelContentForElecQuantity
|
|
|
}
|
|
|
}
|
|
|
]
|
|
@@ -271,7 +427,7 @@ export default {
|
|
|
align: 'center'
|
|
|
}
|
|
|
},
|
|
|
- formatter: this.getLabelContentForElecCost // 使用方法生成标签内容
|
|
|
+ formatter: this.getLabelContentForElecCost
|
|
|
}
|
|
|
}
|
|
|
]
|
|
@@ -301,7 +457,6 @@ export default {
|
|
|
return relVal
|
|
|
}
|
|
|
},
|
|
|
-
|
|
|
series: []
|
|
|
},
|
|
|
totalSupply: 0,
|
|
@@ -313,7 +468,8 @@ export default {
|
|
|
const xData = this.pgSupplyTodayList.map(item => item.time)
|
|
|
const quantity = this.pgSupplyTodayList.map(item => item.useElecQuantity)
|
|
|
const cost = this.pgSupplyTodayList.map(item => item.useElecCost)
|
|
|
- const option = {
|
|
|
+
|
|
|
+ return {
|
|
|
tooltip: {
|
|
|
trigger: 'axis',
|
|
|
axisPointer: {
|
|
@@ -334,6 +490,12 @@ export default {
|
|
|
legend: {
|
|
|
data: ['供电量', '供电电费']
|
|
|
},
|
|
|
+ grid: {
|
|
|
+ left: '3%',
|
|
|
+ right: '4%',
|
|
|
+ bottom: '3%',
|
|
|
+ containLabel: true
|
|
|
+ },
|
|
|
xAxis: {
|
|
|
type: 'category',
|
|
|
data: xData.reverse(),
|
|
@@ -364,8 +526,7 @@ export default {
|
|
|
data: quantity.reverse(),
|
|
|
itemStyle: {
|
|
|
normal: {
|
|
|
- color: '#6395FA',
|
|
|
-
|
|
|
+ color: '#6395FA'
|
|
|
}
|
|
|
}
|
|
|
},
|
|
@@ -377,17 +538,15 @@ export default {
|
|
|
smooth: false,
|
|
|
itemStyle: {
|
|
|
normal: {
|
|
|
- color: '#5BD9A5',
|
|
|
-
|
|
|
+ color: '#5BD9A5'
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
]
|
|
|
}
|
|
|
- return option
|
|
|
},
|
|
|
pvOptions() {
|
|
|
- const option = {
|
|
|
+ return {
|
|
|
tooltip: {
|
|
|
trigger: 'axis',
|
|
|
axisPointer: {
|
|
@@ -408,6 +567,12 @@ export default {
|
|
|
legend: {
|
|
|
data: ['自用电量', '上网电量', '上网收益']
|
|
|
},
|
|
|
+ grid: {
|
|
|
+ left: '3%',
|
|
|
+ right: '4%',
|
|
|
+ bottom: '3%',
|
|
|
+ containLabel: true
|
|
|
+ },
|
|
|
xAxis: {
|
|
|
type: 'category',
|
|
|
data: this.pvSupplyTodayList.map(item => item.time).reverse(),
|
|
@@ -440,10 +605,9 @@ export default {
|
|
|
normal: {
|
|
|
color: '#6395FA',
|
|
|
label: {
|
|
|
- show: true, // 开启显示
|
|
|
- position: 'top', // 在上方显示
|
|
|
+ show: true,
|
|
|
+ position: 'top',
|
|
|
textStyle: {
|
|
|
- // 数值样式
|
|
|
color: '#000',
|
|
|
fontSize: 14,
|
|
|
fontWeight: 600
|
|
@@ -466,10 +630,9 @@ export default {
|
|
|
normal: {
|
|
|
color: '#8CDF6C',
|
|
|
label: {
|
|
|
- show: true, // 开启显示
|
|
|
- position: 'top', // 在上方显示
|
|
|
+ show: true,
|
|
|
+ position: 'top',
|
|
|
textStyle: {
|
|
|
- // 数值样式
|
|
|
color: '#000',
|
|
|
fontSize: 14,
|
|
|
fontWeight: 600
|
|
@@ -483,17 +646,13 @@ export default {
|
|
|
type: 'line',
|
|
|
yAxisIndex: 1,
|
|
|
data: this.pvSupplyTodayList.map(item => item.upElecEarn).reverse(),
|
|
|
- smooth: false
|
|
|
+ smooth: false,
|
|
|
+ itemStyle: {
|
|
|
+ color: '#FF9F7F'
|
|
|
+ }
|
|
|
}
|
|
|
]
|
|
|
}
|
|
|
- return option
|
|
|
- }
|
|
|
- },
|
|
|
- watch: {
|
|
|
- // 根据名称筛选区域树
|
|
|
- areaName(val) {
|
|
|
- this.$refs.tree.filter(val)
|
|
|
}
|
|
|
},
|
|
|
async created() {
|
|
@@ -502,18 +661,51 @@ export default {
|
|
|
},
|
|
|
methods: {
|
|
|
numToStr,
|
|
|
+
|
|
|
+ // 获取树节点图标
|
|
|
+ getTreeIcon(data) {
|
|
|
+ if (data.facsCategory === 'E') {
|
|
|
+ return 'el-icon-sunny'
|
|
|
+ }
|
|
|
+ if (data.facsCategory === 'W') {
|
|
|
+ return 'el-icon-lightning'
|
|
|
+ }
|
|
|
+ if (data.id === '-1') {
|
|
|
+ return 'el-icon-s-home'
|
|
|
+ }
|
|
|
+ return 'el-icon-office-building'
|
|
|
+ },
|
|
|
+
|
|
|
+ // 获取计量类型标签样式
|
|
|
+ getMeterTypeTag(meterType) {
|
|
|
+ const typeMap = {
|
|
|
+ '-1': 'success',
|
|
|
+ '0': '',
|
|
|
+ '1': 'warning',
|
|
|
+ '2': 'danger'
|
|
|
+ }
|
|
|
+ return typeMap[meterType] || ''
|
|
|
+ },
|
|
|
+
|
|
|
+ // 过滤树
|
|
|
+ filterTree() {
|
|
|
+ this.$refs.tree.filter(this.areaName)
|
|
|
+ },
|
|
|
+
|
|
|
getLabelContentForElecQuantity() {
|
|
|
- return `总供电{totalSupply|${this.totalSupply} kW·h}`;
|
|
|
+ return `总供电{totalSupply|${this.totalSupply} kW·h}`
|
|
|
},
|
|
|
+
|
|
|
getLabelContentForElecCost() {
|
|
|
- return `供电成本{totalCost|${this.totalCost} 元}`;
|
|
|
+ return `供电成本{totalCost|${this.totalCost} 元}`
|
|
|
},
|
|
|
+
|
|
|
async getPvConfig() {
|
|
|
- const {rows} = await listConfig({
|
|
|
+ const { rows } = await listConfig({
|
|
|
configKey: "storage-equipped-capacity",
|
|
|
})
|
|
|
if (!rows || !rows.length) {
|
|
|
- return;
|
|
|
+ return
|
|
|
}
|
|
|
const cfg = JSON.parse(rows[0].remark)
|
|
|
const areas = []
|
|
@@ -529,9 +721,13 @@ export default {
|
|
|
areas: areas
|
|
|
}
|
|
|
},
|
|
|
+
|
|
|
tabClick() {
|
|
|
if (this.activeName !== 'summery') {
|
|
|
- this.dateRange = [dayjs().format(DateTool.DateFormat.YYYY_MM_DD_00_00_00), dayjs().format(DateTool.DateFormat.YYYY_MM_DD_23_59_59)]
|
|
|
+ this.dateRange = [
|
|
|
+ dayjs().format(DateTool.DateFormat.YYYY_MM_DD_00_00_00),
|
|
|
+ dayjs().format(DateTool.DateFormat.YYYY_MM_DD_23_59_59)
|
|
|
+ ]
|
|
|
this.queryParams.areaCode = '-1'
|
|
|
this.queryParams.pageNum = 1
|
|
|
this.selectedLabel = '全部'
|
|
@@ -541,29 +737,23 @@ export default {
|
|
|
this.getSummery()
|
|
|
}
|
|
|
},
|
|
|
+
|
|
|
async getSummery() {
|
|
|
await this.getHSummery()
|
|
|
await this.getThisDaySummery()
|
|
|
},
|
|
|
+
|
|
|
async getThisDaySummery() {
|
|
|
- const {
|
|
|
- data,
|
|
|
- code
|
|
|
- } = await get('pg/supply/hour/summery/this/day')
|
|
|
+ const { data, code } = await get('pg/supply/hour/summery/this/day')
|
|
|
if (ApiCode.SUCCESS !== code || !data) {
|
|
|
this.elecQuantity.series[0].data = []
|
|
|
this.elecCost.series[0].data = []
|
|
|
return
|
|
|
}
|
|
|
- const {
|
|
|
- pv,
|
|
|
- supply
|
|
|
- } = data
|
|
|
+ const { pv, supply } = data
|
|
|
|
|
|
- // 计算总供电量
|
|
|
- const totalSupply = (supply?.quantity || 0) + (pv?.useQuantity || 0);
|
|
|
- // 计算总电费
|
|
|
- const totalCost = (supply?.cost || 0) + (pv?.upEarn || 0);
|
|
|
+ const totalSupply = (supply?.quantity || 0) + (pv?.useQuantity || 0)
|
|
|
+ const totalCost = (supply?.cost || 0) + (pv?.upEarn || 0)
|
|
|
|
|
|
this.elecQuantity.series[0].data = [
|
|
|
{
|
|
@@ -572,7 +762,6 @@ export default {
|
|
|
itemStyle: {
|
|
|
color: '#6395FA'
|
|
|
}
|
|
|
-
|
|
|
},
|
|
|
{
|
|
|
value: pv?.useQuantity,
|
|
@@ -598,29 +787,22 @@ export default {
|
|
|
}
|
|
|
}
|
|
|
]
|
|
|
- // 更新饼图中间显示的总和
|
|
|
- this.totalSupply = totalSupply;
|
|
|
- this.totalCost = totalCost;
|
|
|
+ this.totalSupply = totalSupply
|
|
|
+ this.totalCost = totalCost
|
|
|
},
|
|
|
|
|
|
async getHSummery() {
|
|
|
- const {
|
|
|
- data,
|
|
|
- code
|
|
|
- } = await get('pg/supply/hour/summery/h')
|
|
|
+ const { data, code } = await get('pg/supply/hour/summery/h')
|
|
|
if (ApiCode.SUCCESS !== code || !data || data.length < 1) {
|
|
|
return
|
|
|
}
|
|
|
const xaxis = DateTool.getTime(60)
|
|
|
- const {
|
|
|
- supply,
|
|
|
- pv
|
|
|
- } = data
|
|
|
+ const { supply, pv } = data
|
|
|
const series = [
|
|
|
{
|
|
|
name: '市电',
|
|
|
type: 'bar',
|
|
|
- barWidth: '30%', // 调整柱状图宽度
|
|
|
+ barWidth: '30%',
|
|
|
data: [],
|
|
|
itemStyle: {
|
|
|
color: '#6395FA'
|
|
@@ -629,13 +811,12 @@ export default {
|
|
|
{
|
|
|
name: '光伏',
|
|
|
type: 'bar',
|
|
|
- barWidth: '30%', // 调整柱状图宽度
|
|
|
+ barWidth: '30%',
|
|
|
data: [],
|
|
|
itemStyle: {
|
|
|
color: '#8CDF6C'
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
]
|
|
|
xaxis.forEach((item, index) => {
|
|
|
let timeIndex = index + 1
|
|
@@ -653,14 +834,21 @@ export default {
|
|
|
this.pvSupplyIndex.series = series
|
|
|
this.pvSupplyIndex.xAxis.data = xaxis
|
|
|
},
|
|
|
+
|
|
|
getTodayList() {
|
|
|
if (this.activeName === 'first') {
|
|
|
areaTreeByFacsCategory('W', this.facsSubCategory, false).then(response => {
|
|
|
this.areaOptions = [{
|
|
|
id: '-1',
|
|
|
label: '全部',
|
|
|
- children: []
|
|
|
- }].concat(response.data)
|
|
|
+ children: response.data || []
|
|
|
+ }]
|
|
|
+ this.defaultExpandedKeys = ['-1']
|
|
|
+ this.$nextTick(() => {
|
|
|
+ if (this.$refs.tree) {
|
|
|
+ this.$refs.tree.setCurrentKey('-1') // 设置默认选中全部
|
|
|
+ }
|
|
|
+ })
|
|
|
})
|
|
|
listPgSupplyH({
|
|
|
startRecTime: dayjs().format(DateTool.DateFormat.YYYY_MM_DD_00_00_00),
|
|
@@ -676,8 +864,14 @@ export default {
|
|
|
this.areaOptions = [{
|
|
|
id: '-1',
|
|
|
label: '全部',
|
|
|
- children: []
|
|
|
- }].concat(response.data)
|
|
|
+ children: response.data || []
|
|
|
+ }]
|
|
|
+ this.defaultExpandedKeys = ['-1']
|
|
|
+ this.$nextTick(() => {
|
|
|
+ if (this.$refs.tree) {
|
|
|
+ this.$refs.tree.setCurrentKey('-1') // 设置默认选中全部
|
|
|
+ }
|
|
|
+ })
|
|
|
})
|
|
|
listPvSupplyH({
|
|
|
startRecTime: dayjs().format(DateTool.DateFormat.YYYY_MM_DD_00_00_00),
|
|
@@ -690,6 +884,7 @@ export default {
|
|
|
})
|
|
|
}
|
|
|
},
|
|
|
+
|
|
|
getList() {
|
|
|
this.loading = true
|
|
|
this.queryParams.startRecTime = ''
|
|
@@ -700,15 +895,13 @@ export default {
|
|
|
this.queryParams.endRecTime = endRecTime
|
|
|
}
|
|
|
if (this.activeName === 'first') {
|
|
|
- listPgSupplyH(
|
|
|
- {
|
|
|
- startRecTime: this.queryParams.startRecTime,
|
|
|
- endRecTime: this.queryParams.endRecTime,
|
|
|
- areaCode: this.queryParams.areaCode,
|
|
|
- pageNum: 1,
|
|
|
- pageSize: 999
|
|
|
- }
|
|
|
- ).then(response => {
|
|
|
+ listPgSupplyH({
|
|
|
+ startRecTime: this.queryParams.startRecTime,
|
|
|
+ endRecTime: this.queryParams.endRecTime,
|
|
|
+ areaCode: this.queryParams.areaCode,
|
|
|
+ pageNum: this.queryParams.pageNum,
|
|
|
+ pageSize: this.queryParams.pageSize
|
|
|
+ }).then(response => {
|
|
|
this.pgSupplyHList = response.rows
|
|
|
this.total = response.total
|
|
|
this.loading = false
|
|
@@ -718,8 +911,8 @@ export default {
|
|
|
startRecTime: this.queryParams.startRecTime,
|
|
|
endRecTime: this.queryParams.endRecTime,
|
|
|
areaCode: this.queryParams.areaCode,
|
|
|
- pageNum: 1,
|
|
|
- pageSize: 999
|
|
|
+ pageNum: this.queryParams.pageNum,
|
|
|
+ pageSize: this.queryParams.pageSize
|
|
|
}).then(response => {
|
|
|
this.pvSupplyHList = response.rows
|
|
|
this.total = response.total
|
|
@@ -727,28 +920,29 @@ export default {
|
|
|
})
|
|
|
}
|
|
|
},
|
|
|
- // 筛选节点
|
|
|
+
|
|
|
filterNode(value, data) {
|
|
|
if (!value) return true
|
|
|
return data.label.indexOf(value) !== -1
|
|
|
},
|
|
|
- // 节点单击事件
|
|
|
+
|
|
|
handleNodeClick(data) {
|
|
|
this.queryParams.areaCode = data.id
|
|
|
this.selectedLabel = data.label
|
|
|
this.handleQuery()
|
|
|
},
|
|
|
- /** 搜索按钮操作 */
|
|
|
+
|
|
|
handleQuery() {
|
|
|
this.queryParams.pageNum = 1
|
|
|
this.getTodayList()
|
|
|
this.getList()
|
|
|
},
|
|
|
+
|
|
|
getMeterTypeName(meterType) {
|
|
|
const meterTypeMap = {
|
|
|
'-1': '低谷电',
|
|
|
'0': '平峰电',
|
|
|
- '1': '高峰点',
|
|
|
+ '1': '高峰电',
|
|
|
'2': '尖峰电'
|
|
|
}
|
|
|
return meterTypeMap[meterType] || '平峰电'
|
|
@@ -756,17 +950,317 @@ export default {
|
|
|
}
|
|
|
}
|
|
|
</script>
|
|
|
+
|
|
|
<style lang="scss" scoped>
|
|
|
.app-container {
|
|
|
- padding-top: 10px;
|
|
|
+ padding: 20px;
|
|
|
+ background: #f5f7fa;
|
|
|
+ min-height: calc(100vh - 84px);
|
|
|
+
|
|
|
+ // 总览页面的图表卡片样式
|
|
|
+ .chart-card {
|
|
|
+ background: #fff;
|
|
|
+ border-radius: 12px;
|
|
|
+ padding: 20px;
|
|
|
+ box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.08);
|
|
|
+ height: 100%;
|
|
|
+
|
|
|
+ ::v-deep .el-card {
|
|
|
+ border-radius: 12px;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 顶部统计卡片
|
|
|
+ .stats-card {
|
|
|
+ background: #fff;
|
|
|
+ border-radius: 8px;
|
|
|
+ padding: 20px;
|
|
|
+ margin-bottom: 20px;
|
|
|
+ box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
|
|
|
+
|
|
|
+ .stats-container {
|
|
|
+ display: flex;
|
|
|
+ justify-content: space-around;
|
|
|
+ flex-wrap: wrap;
|
|
|
+
|
|
|
+ .stat-item {
|
|
|
+ flex: 1;
|
|
|
+ min-width: 150px;
|
|
|
+ text-align: center;
|
|
|
+ padding: 10px;
|
|
|
+
|
|
|
+ ::v-deep .el-statistic__head {
|
|
|
+ color: #409eff;
|
|
|
+ font-size: 14px;
|
|
|
+ margin-bottom: 10px;
|
|
|
+ }
|
|
|
+
|
|
|
+ .stat-value {
|
|
|
+ font-size: 24px;
|
|
|
+ font-weight: 600;
|
|
|
+
|
|
|
+ &.primary {
|
|
|
+ color: #409eff;
|
|
|
+ }
|
|
|
+
|
|
|
+ &.success {
|
|
|
+ color: #67c23a;
|
|
|
+ }
|
|
|
+
|
|
|
+ &.info {
|
|
|
+ color: #409eff;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 主标签页样式
|
|
|
+ .main-tabs {
|
|
|
+ ::v-deep .el-tabs__header {
|
|
|
+ margin: 0 0 20px;
|
|
|
+ background: #fff;
|
|
|
+ padding: 0 20px;
|
|
|
+ border-radius: 8px 8px 0 0;
|
|
|
+ box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
|
|
|
+ }
|
|
|
+
|
|
|
+ ::v-deep .el-tabs__nav-wrap {
|
|
|
+ &::after {
|
|
|
+ height: 1px;
|
|
|
+ background-color: #e4e7ed;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ ::v-deep .el-tabs__item {
|
|
|
+ height: 50px;
|
|
|
+ line-height: 50px;
|
|
|
+ font-size: 15px;
|
|
|
+ font-weight: 500;
|
|
|
+ color: #606266;
|
|
|
+
|
|
|
+ i {
|
|
|
+ margin-right: 5px;
|
|
|
+ font-size: 18px;
|
|
|
+ }
|
|
|
+
|
|
|
+ &:hover {
|
|
|
+ color: #409eff;
|
|
|
+ }
|
|
|
+
|
|
|
+ &.is-active {
|
|
|
+ color: #409eff;
|
|
|
+ font-weight: 600;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ ::v-deep .el-tabs__active-bar {
|
|
|
+ height: 3px;
|
|
|
+ background: linear-gradient(90deg, #409eff 0%, #53a8ff 100%);
|
|
|
+ }
|
|
|
+
|
|
|
+ ::v-deep .el-tabs__content {
|
|
|
+ overflow: initial;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 树容器样式
|
|
|
+ .head-container {
|
|
|
+ background: #fff;
|
|
|
+ padding: 15px;
|
|
|
+ border-radius: 8px;
|
|
|
+ margin-bottom: 15px;
|
|
|
+ box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
|
|
|
+
|
|
|
+ &.tree-container {
|
|
|
+ max-height: calc(100vh - 350px);
|
|
|
+ overflow-y: auto;
|
|
|
+
|
|
|
+ &::-webkit-scrollbar {
|
|
|
+ width: 6px;
|
|
|
+ }
|
|
|
+
|
|
|
+ &::-webkit-scrollbar-track {
|
|
|
+ background: #f1f1f1;
|
|
|
+ border-radius: 3px;
|
|
|
+ }
|
|
|
+
|
|
|
+ &::-webkit-scrollbar-thumb {
|
|
|
+ background: #c1c1c1;
|
|
|
+ border-radius: 3px;
|
|
|
+ }
|
|
|
+
|
|
|
+ &::-webkit-scrollbar-thumb:hover {
|
|
|
+ background: #a8a8a8;
|
|
|
+ }
|
|
|
+
|
|
|
+ ::v-deep .el-tree {
|
|
|
+ background: transparent;
|
|
|
+
|
|
|
+ .el-tree-node__content {
|
|
|
+ height: 40px;
|
|
|
+ padding: 0 8px;
|
|
|
+ transition: all 0.3s;
|
|
|
+
|
|
|
+ &:hover {
|
|
|
+ background-color: #f5f7fa;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ .el-tree-node.is-current > .el-tree-node__content {
|
|
|
+ background-color: #ecf5ff;
|
|
|
+ color: #409eff;
|
|
|
+
|
|
|
+ .tree-icon {
|
|
|
+ color: #409eff !important;
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
- ::v-deep .el-tabs__content {
|
|
|
- overflow: initial;
|
|
|
+ .custom-tree-node {
|
|
|
+ flex: 1;
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ justify-content: space-between;
|
|
|
+ font-size: 14px;
|
|
|
+
|
|
|
+ .tree-label {
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+
|
|
|
+ .tree-icon {
|
|
|
+ margin-right: 8px;
|
|
|
+ font-size: 16px;
|
|
|
+ color: #409eff;
|
|
|
+ transition: color 0.3s;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ .tree-tag {
|
|
|
+ margin-right: 8px;
|
|
|
+
|
|
|
+ &.warning {
|
|
|
+ color: #e6a23c;
|
|
|
+ background: #fdf6ec;
|
|
|
+ border-color: #f5dab1;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 光伏tab下的树节点图标特殊样式
|
|
|
+ .pv-tab-pane {
|
|
|
+ .tree-container {
|
|
|
+ ::v-deep .el-tree {
|
|
|
+ .custom-tree-node {
|
|
|
+ .tree-label {
|
|
|
+ .tree-icon {
|
|
|
+ color: #409eff !important; // 光伏tab下图标都显示为蓝色
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 右侧内容区域
|
|
|
+ .content-wrapper {
|
|
|
+ background: #fff;
|
|
|
+ border-radius: 12px;
|
|
|
+ box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.08);
|
|
|
+
|
|
|
+ .chart-section {
|
|
|
+ padding: 20px;
|
|
|
+ border-bottom: 1px solid #ebeef5;
|
|
|
+
|
|
|
+ ::v-deep .sub-title {
|
|
|
+ font-size: 16px;
|
|
|
+ font-weight: 600;
|
|
|
+ color: #303133;
|
|
|
+ margin-bottom: 15px;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ .table-section {
|
|
|
+ padding: 20px;
|
|
|
+
|
|
|
+ .control-container {
|
|
|
+ display: flex;
|
|
|
+ justify-content: flex-end;
|
|
|
+ margin-bottom: 15px;
|
|
|
+
|
|
|
+ ::v-deep .el-date-editor {
|
|
|
+ width: 400px;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ .data-table {
|
|
|
+ ::v-deep .el-table__header {
|
|
|
+ th {
|
|
|
+ background-color: #f5f7fa;
|
|
|
+ color: #606266;
|
|
|
+ font-weight: 600;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ ::v-deep .el-table__body {
|
|
|
+ .data-value {
|
|
|
+ font-weight: 500;
|
|
|
+
|
|
|
+ &.primary {
|
|
|
+ color: #409eff;
|
|
|
+ }
|
|
|
+
|
|
|
+ &.success {
|
|
|
+ color: #67c23a;
|
|
|
+ }
|
|
|
+
|
|
|
+ &.info {
|
|
|
+ color: #409eff;
|
|
|
+ }
|
|
|
+
|
|
|
+ &.warning {
|
|
|
+ color: #e6a23c;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-.tips {
|
|
|
- display: flex;
|
|
|
+// 响应式布局
|
|
|
+@media (max-width: 768px) {
|
|
|
+ .app-container {
|
|
|
+ padding: 10px;
|
|
|
+
|
|
|
+ .stats-card {
|
|
|
+ .stats-container {
|
|
|
+ flex-direction: column;
|
|
|
+
|
|
|
+ .stat-item {
|
|
|
+ margin-bottom: 10px;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ .el-col {
|
|
|
+ margin-bottom: 20px;
|
|
|
+ }
|
|
|
+
|
|
|
+ .content-wrapper {
|
|
|
+ .table-section {
|
|
|
+ .control-container {
|
|
|
+ justify-content: center;
|
|
|
+
|
|
|
+ ::v-deep .el-date-editor {
|
|
|
+ width: 100%;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
</style>
|
|
|
<style lang="scss" scoped src="./index.scss"></style>
|