|
@@ -2,14 +2,15 @@
|
|
<div class="app-container page-nesting totalEnergyC">
|
|
<div class="app-container page-nesting totalEnergyC">
|
|
<!-- 筛选start -->
|
|
<!-- 筛选start -->
|
|
<div class="filter-container mb-20" style="justify-content: left">
|
|
<div class="filter-container mb-20" style="justify-content: left">
|
|
- <el-radio-group v-model="timeRangeType" @change="(val) => handleTimeRangeChange(val)" style="margin-right: 50px">
|
|
|
|
|
|
+ <el-radio-group v-model="timeRangeType" @change="(val) => handleDateChange(val, dataViewType)"
|
|
|
|
+ style="margin-right: 50px">
|
|
<el-radio-button value="overview">概览</el-radio-button>
|
|
<el-radio-button value="overview">概览</el-radio-button>
|
|
<el-radio-button value="day">按日</el-radio-button>
|
|
<el-radio-button value="day">按日</el-radio-button>
|
|
<el-radio-button value="month">按月</el-radio-button>
|
|
<el-radio-button value="month">按月</el-radio-button>
|
|
<el-radio-button value="year">按年</el-radio-button>
|
|
<el-radio-button value="year">按年</el-radio-button>
|
|
</el-radio-group>
|
|
</el-radio-group>
|
|
|
|
|
|
- <el-radio-group v-model="dataViewType" @change="(val) => handleDataViewChange(val, 3)">
|
|
|
|
|
|
+ <el-radio-group v-model="dataViewType" @change="(val) => handleDateChange(timeRangeType, val)">
|
|
<el-radio-button value="usage">用量</el-radio-button>
|
|
<el-radio-button value="usage">用量</el-radio-button>
|
|
<el-radio-button value="cost">费用</el-radio-button>
|
|
<el-radio-button value="cost">费用</el-radio-button>
|
|
</el-radio-group>
|
|
</el-radio-group>
|
|
@@ -18,12 +19,12 @@
|
|
|
|
|
|
<!-- 概览(用量) -->
|
|
<!-- 概览(用量) -->
|
|
<overviewUsage v-if="timeRangeType == 'overview' && dataViewType == 'usage'" ref="overviewUsageRef"
|
|
<overviewUsage v-if="timeRangeType == 'overview' && dataViewType == 'usage'" ref="overviewUsageRef"
|
|
- :overviewLoading="overviewLoading" :overviewList="overviewList" :timeRangeType="timeRangeType" />
|
|
|
|
|
|
+ :overviewLoading="statisticsLoading" :overviewList="statisticsList" />
|
|
<!-- 概览(费用) -->
|
|
<!-- 概览(费用) -->
|
|
<overviewCost v-else-if="timeRangeType == 'overview' && dataViewType == 'cost'" ref="overviewCostRef"
|
|
<overviewCost v-else-if="timeRangeType == 'overview' && dataViewType == 'cost'" ref="overviewCostRef"
|
|
- :overviewLoading="overviewLoading" :overviewList="overviewList" :timeRangeType="timeRangeType" />
|
|
|
|
|
|
+ :overviewLoading="statisticsLoading" :overviewList="statisticsList" />
|
|
<!-- 日、月、年 -->
|
|
<!-- 日、月、年 -->
|
|
- <expense v-else ref="expenseRef" :timeRangeType="timeRangeType" :dataViewType="dataViewType"></expense>
|
|
|
|
|
|
+ <expense v-else ref="expenseRef" :expenseLoading="statisticsLoading" :expenseList="expenseList"></expense>
|
|
</div>
|
|
</div>
|
|
</template>
|
|
</template>
|
|
|
|
|
|
@@ -46,6 +47,8 @@ import overviewCost from './overview-cost'
|
|
import expense from './expense.vue'
|
|
import expense from './expense.vue'
|
|
/*----------------------------------store引入-----------------------------------*/
|
|
/*----------------------------------store引入-----------------------------------*/
|
|
/*----------------------------------公共方法引入-----------------------------------*/
|
|
/*----------------------------------公共方法引入-----------------------------------*/
|
|
|
|
+import { GetTimeIntervals } from '@/utils/timeProcessing.utils.js'
|
|
|
|
+import dayjs from 'dayjs';
|
|
/*----------------------------------公共变量-----------------------------------*/
|
|
/*----------------------------------公共变量-----------------------------------*/
|
|
const props = defineProps({}) //数据双向绑定
|
|
const props = defineProps({}) //数据双向绑定
|
|
const emit = defineEmits([])
|
|
const emit = defineEmits([])
|
|
@@ -55,57 +58,176 @@ const state = reactive({
|
|
timeRangeType: 'overview',
|
|
timeRangeType: 'overview',
|
|
dataViewType: 'usage',
|
|
dataViewType: 'usage',
|
|
|
|
|
|
- overviewLoading: false,
|
|
|
|
- overviewList: [],
|
|
|
|
-})
|
|
|
|
-const { timeRangeType, dataViewType, overviewLoading, overviewList } = toRefs(state)
|
|
|
|
|
|
+ statisticsLoading: false,
|
|
|
|
+ statisticsList: [],
|
|
|
|
|
|
|
|
+ expenseList: {
|
|
|
|
+ title: "当日",
|
|
|
|
+ subTitle: "昨日",
|
|
|
|
+ unit: "吨标准煤",
|
|
|
|
+ oneArea: {
|
|
|
|
+ centerValue: 0,
|
|
|
|
+ footerValue: 0,
|
|
|
|
+ footerPercent: 0
|
|
|
|
+ },
|
|
|
|
+ tableData: [
|
|
|
|
+ {
|
|
|
|
+ energyType: "电",
|
|
|
|
+ energyPurpose: "用能",
|
|
|
|
+ energyQuantity: "-",
|
|
|
|
+ energyQuantityUnit: "",
|
|
|
|
+ yearOnYear: "-",
|
|
|
|
+ monthOnMonth: "-"
|
|
|
|
+ }, {
|
|
|
|
+ energyType: "总能耗",
|
|
|
|
+ energyPurpose: "用能",
|
|
|
|
+ energyQuantity: "-",
|
|
|
|
+ energyQuantityUnit: "",
|
|
|
|
+ yearOnYear: "-",
|
|
|
|
+ monthOnMonth: "-"
|
|
|
|
+ }
|
|
|
|
+ ],
|
|
|
|
+ pieChartData: {
|
|
|
|
+ text: '0',
|
|
|
|
+ subtext: '吨标准煤',
|
|
|
|
+ seriesData: [
|
|
|
|
+ { value: 0, name: '电' },
|
|
|
|
+ ]
|
|
|
|
+ },
|
|
|
|
+ oneChartLoading: true,
|
|
|
|
+ oneChartData: {
|
|
|
|
+ subtext: '吨标准煤',
|
|
|
|
+ legendData: ['电'],
|
|
|
|
+ xAxisData: [],
|
|
|
|
+ seriesData: [
|
|
|
|
+ { name: '电', type: 'bar', data: [], },
|
|
|
|
+ ]
|
|
|
|
+ },
|
|
|
|
+ },
|
|
|
|
+})
|
|
|
|
+const { timeRangeType, dataViewType, statisticsLoading, statisticsList, expenseList } = toRefs(state)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function initData() {
|
|
function initData() {
|
|
- state.overviewLoading = true;
|
|
|
|
|
|
+ state.statisticsLoading = true;
|
|
energyApi()
|
|
energyApi()
|
|
.Statistics({
|
|
.Statistics({
|
|
siteId: 395,
|
|
siteId: 395,
|
|
timeType: state.timeRangeType,
|
|
timeType: state.timeRangeType,
|
|
consume: state.dataViewType == "usage" ? 1 : 2
|
|
consume: state.dataViewType == "usage" ? 1 : 2
|
|
-
|
|
|
|
})
|
|
})
|
|
.then((requset) => {
|
|
.then((requset) => {
|
|
- state.overviewLoading = false;
|
|
|
|
- state.overviewList = requset.data;
|
|
|
|
|
|
+ var li = requset.data
|
|
|
|
+ state.statisticsList = requset.data;
|
|
|
|
+
|
|
|
|
+ if (state.dataViewType == 'usage') {
|
|
|
|
+ state.expenseList.oneArea.centerValue = state.timeRangeType == 'day' ? li.today : state.timeRangeType == 'month' ? li.month : li.year;//能源量
|
|
|
|
+ state.expenseList.oneArea.footerValue = state.timeRangeType == 'day' ? li.yesterday : state.timeRangeType == 'month' ? li.lastMonth : li.lastYear
|
|
|
|
+ state.expenseList.oneArea.footerPercent = state.timeRangeType == 'day' ? li.todayRingRatio : state.timeRangeType == 'month' ? li.monthRingRatio : li.yearRingRatio
|
|
|
|
+ } else if (state.dataViewType == 'cost') {
|
|
|
|
+ state.expenseList.oneArea.centerValue = state.timeRangeType == 'day' ? li.todayCost : state.timeRangeType == 'month' ? li.monthCost : li.yearCost;//能源量
|
|
|
|
+ state.expenseList.oneArea.footerValue = state.timeRangeType == 'day' ? li.dayCostRingRatio : state.timeRangeType == 'month' ? li.monthCostRingRatio : li.yearCostRingRatio
|
|
|
|
+ state.expenseList.oneArea.footerPercent = state.timeRangeType == 'day' ? li.todayRingRatio : state.timeRangeType == 'month' ? li.monthRingRatio : li.yearRingRatio
|
|
|
|
+ }
|
|
|
|
+ state.expenseList.tableData.forEach((e) => {
|
|
|
|
+ e.energyQuantity = (state.timeRangeType == 'day' ? li.todayElectricity : state.timeRangeType == 'month' ? li.monthElectricity : li.yearElectricity) + ' kWh';//能源量
|
|
|
|
+ if (state.dataViewType == 'usage') {
|
|
|
|
+ e.energyQuantityUnit = state.timeRangeType == 'day' ? li.today : state.timeRangeType == 'month' ? li.month : li.year;//能源量
|
|
|
|
+ e.monthOnMonth = (state.timeRangeType == 'day' ? li.yesterday + `(${li.todayRingRatio}%)` : state.timeRangeType == 'month' ? li.lastMonth + `(${li.monthRingRatio}%)` : li.lastYear + `(${li.yearRingRatio}%)`);//环比
|
|
|
|
+ } else if (state.dataViewType == 'cost') {
|
|
|
|
+ e.energyQuantityUnit = state.timeRangeType == 'day' ? li.todayCost : state.timeRangeType == 'month' ? li.monthCost : li.yearCost;//能源量
|
|
|
|
+ e.monthOnMonth = (state.timeRangeType == 'day' ? li.dayCostRingRatio + `(${li.todayRingRatio}%)` : state.timeRangeType == 'month' ? li.monthCostRingRatio + `(${li.monthRingRatio}%)` : li.yearCostRingRatio + `(${li.yearRingRatio}%)`)//环比
|
|
|
|
+ }
|
|
|
|
+ e.yearOnYear = li.yearOnYear + `(${li.yearOnYearPercent}%)`//同比
|
|
|
|
+ })
|
|
|
|
+
|
|
|
|
+ if (state.dataViewType == 'usage') {
|
|
|
|
+ state.expenseList.pieChartData.subtext = "吨标准煤"
|
|
|
|
+ state.expenseList.pieChartData.text = state.timeRangeType == 'day' ? li.today : state.timeRangeType == 'month' ? li.month : li.year;//能源量
|
|
|
|
+ state.expenseList.pieChartData.seriesData[0].value = state.timeRangeType == 'day' ? li.today : state.timeRangeType == 'month' ? li.month : li.year;//能源量
|
|
|
|
+ } else if (state.dataViewType == 'cost') {
|
|
|
|
+ state.expenseList.pieChartData.subtext = "元"
|
|
|
|
+ state.expenseList.pieChartData.text = state.timeRangeType == 'day' ? li.todayCost : state.timeRangeType == 'month' ? li.monthCost : li.yearCost;//能源量
|
|
|
|
+ state.expenseList.pieChartData.seriesData[0].value = state.timeRangeType == 'day' ? li.todayCost : state.timeRangeType == 'month' ? li.monthCost : li.yearCost;//能源量
|
|
|
|
+ }
|
|
|
|
+ proxy.$refs['expenseRef'].initChart();
|
|
|
|
+
|
|
|
|
+ state.statisticsLoading = false;
|
|
})
|
|
})
|
|
.catch((err) => {
|
|
.catch((err) => {
|
|
- state.overviewLoading = false;
|
|
|
|
|
|
+ state.statisticsLoading = false;
|
|
});
|
|
});
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
-function handleTimeRangeChange(val) {
|
|
|
|
- if (val == 'overview' && state.dataViewType == 'usage') {
|
|
|
|
- initData()
|
|
|
|
- proxy.$refs['overviewUsageRef'].initChartData()
|
|
|
|
- proxy.$refs['overviewUsageRef'].getDayChartData();
|
|
|
|
- proxy.$refs['overviewUsageRef'].getMonthChartData();
|
|
|
|
- }
|
|
|
|
|
|
+// 取图表数据
|
|
|
|
+function getChartData({ param, success, error }) {
|
|
|
|
+ energyApi()
|
|
|
|
+ .EchartsData(param)
|
|
|
|
+ .then((requset) => {
|
|
|
|
+ success(requset)
|
|
|
|
+ })
|
|
|
|
+ .catch((err) => {
|
|
|
|
+ error(err)
|
|
|
|
+ });
|
|
}
|
|
}
|
|
|
|
|
|
-function handleDataViewChange(val, type) {
|
|
|
|
|
|
+
|
|
|
|
+function handleDateChange(timeRangeType, dataViewType) {
|
|
initData()
|
|
initData()
|
|
- if (state.timeRangeType == 'overview' && val == 'usage') {
|
|
|
|
- proxy.$refs['overviewUsageRef'].initChartData()
|
|
|
|
- proxy.$refs['overviewUsageRef'].getDayChartData();
|
|
|
|
- proxy.$refs['overviewUsageRef'].getMonthChartData();
|
|
|
|
- } else {
|
|
|
|
- proxy.$refs['overviewCostRef'].initChartData()
|
|
|
|
- proxy.$refs['overviewCostRef'].getMonthChartData();
|
|
|
|
- proxy.$refs['overviewCostRef'].getYearChartData();
|
|
|
|
|
|
+ if (timeRangeType == 'overview') {
|
|
|
|
+ if (dataViewType == 'usage') {
|
|
|
|
+ proxy.$refs['overviewUsageRef'].initChartData()
|
|
|
|
+ proxy.$refs['overviewUsageRef'].getDayChartData();
|
|
|
|
+ proxy.$refs['overviewUsageRef'].getMonthChartData();
|
|
|
|
+ } else if (dataViewType == 'cost') {
|
|
|
|
+ proxy.$refs['overviewCostRef'].initChartData()
|
|
|
|
+ proxy.$refs['overviewCostRef'].getMonthChartData();
|
|
|
|
+ proxy.$refs['overviewCostRef'].getYearChartData();
|
|
|
|
+ }
|
|
|
|
+ } else if (timeRangeType == 'day' || timeRangeType == 'month' || timeRangeType == 'year') {
|
|
|
|
+ state.expenseList.title = timeRangeType == 'day' ? "当日" : timeRangeType == 'month' ? "当月" : "当年"
|
|
|
|
+ state.expenseList.subTitle = timeRangeType == 'day' ? "昨日" : timeRangeType == 'month' ? "上月" : "上年"
|
|
|
|
+ state.expenseList.unit = dataViewType == 'usage' ? "吨标准煤" : "元"
|
|
|
|
+
|
|
|
|
+ getExpenseChartData();
|
|
|
|
+
|
|
|
|
+ proxy.$refs['expenseRef'].initChart();//初始化图表
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+//获取日月年图表数据
|
|
|
|
+function getExpenseChartData() {
|
|
|
|
+ state.expenseList.oneChartData.subtext = "吨标准煤"
|
|
|
|
+ state.expenseList.oneChartData.xAxisData = GetTimeIntervals('day', 60)
|
|
|
|
+ state.expenseList.oneChartData.seriesData[0].data = []
|
|
|
|
+ state.expenseList.oneChartLoading = false
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ state.expenseList.oneChartLoading = true;
|
|
|
|
+ state.expenseList.oneChartData.subtext = state.dataViewType == 'usage' ? "吨标准煤" : "元"
|
|
|
|
+ state.expenseList.oneChartData.xAxisData = state.timeRangeType == 'day' ? GetTimeIntervals('day', 60) : state.timeRangeType == 'month' ? GetTimeIntervals('month', 1) : GetTimeIntervals('year', null)
|
|
|
|
+ getChartData({
|
|
|
|
+ param: {
|
|
|
|
+ siteId: 395,
|
|
|
|
+ queryPeriod: state.timeRangeType,
|
|
|
|
+ queryTime: dayjs().format('YYYY-MM-DD HH:mm:ss'),
|
|
|
|
+ queryType: 'electric'
|
|
|
|
+ },
|
|
|
|
+ success: (res) => {
|
|
|
|
+ state.expenseList.oneChartLoading = false;
|
|
|
|
+ state.expenseList.oneChartData.seriesData[0].data = res.data.amountList || []
|
|
|
|
+ proxy.$refs['expenseRef'].initChart();
|
|
|
|
+ },
|
|
|
|
+ error: (err) => {
|
|
|
|
+ state.expenseList.oneChartLoading = false;
|
|
|
|
+ },
|
|
|
|
+ });
|
|
|
|
+}
|
|
|
|
+
|
|
onMounted(() => {
|
|
onMounted(() => {
|
|
- handleTimeRangeChange("overview")
|
|
|
|
|
|
+ handleDateChange(state.timeRangeType, state.dataViewType)
|
|
})
|
|
})
|
|
</script>
|
|
</script>
|
|
|
|
|