From b739cca19743c5189192b832ce225b3a4ce21f55 Mon Sep 17 00:00:00 2001 From: yinq Date: Fri, 28 Jun 2024 16:27:52 +0800 Subject: [PATCH] =?UTF-8?q?change=20-=20add=E8=83=BD=E6=BA=90=E9=A2=84?= =?UTF-8?q?=E8=A7=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/ems/report/reportPort.js | 9 + src/assets/images/electricityIcon.svg | 6 + src/utils/dateReportUtils.js | 63 ++ src/utils/export.js | 36 + src/views/ems/base/baseEnergyType/index.vue | 18 +- .../ems/base/baseMonitorWorkUnit/index.vue | 26 +- src/views/ems/report/energyPreview/index.vue | 635 ++++++++++++++++++ .../peaksValleysConsumptionReport/index.vue | 1 - 8 files changed, 771 insertions(+), 23 deletions(-) create mode 100644 src/assets/images/electricityIcon.svg create mode 100644 src/utils/dateReportUtils.js create mode 100644 src/utils/export.js create mode 100644 src/views/ems/report/energyPreview/index.vue diff --git a/src/api/ems/report/reportPort.js b/src/api/ems/report/reportPort.js index a5e7c17..17c2023 100644 --- a/src/api/ems/report/reportPort.js +++ b/src/api/ems/report/reportPort.js @@ -17,3 +17,12 @@ export function peaksValleysConsumptionReportList(query) { params: query }) } + +// 查询能源预览接口 +export function energyPreviewReportList(query) { + return request({ + url: '/ems/report/energyPreviewReportList', + method: 'get', + params: query + }) +} diff --git a/src/assets/images/electricityIcon.svg b/src/assets/images/electricityIcon.svg new file mode 100644 index 0000000..c150c81 --- /dev/null +++ b/src/assets/images/electricityIcon.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/src/utils/dateReportUtils.js b/src/utils/dateReportUtils.js new file mode 100644 index 0000000..6485110 --- /dev/null +++ b/src/utils/dateReportUtils.js @@ -0,0 +1,63 @@ +export function getHoursBetween(startHourStr, endHourStr) { + const startHour = new Date(startHourStr) + let endHour = new Date(endHourStr) + let nowDate = new Date() + nowDate.setHours(nowDate.getHours() - 1); + if (endHour.getTime() > nowDate.getTime()) { + endHour = nowDate + } + const hours = [] + while (startHour <= endHour) { + const hourString = `${startHour.getFullYear()}-${String(startHour.getMonth() + 1).padStart(2, '0')}-${String(startHour.getDate()).padStart(2, '0')} ${String(startHour.getHours()).padStart(2, '0')}:00:00` + hours.push(hourString) + startHour.setTime(startHour.getTime() + 60 * 60 * 1000) + } + // return hours; + return hours.sort((a, b) => new Date(b) - new Date(a)) +} + +export function getDatesBetween(startDateStr, endDateStr) { + const startDate = new Date(startDateStr) + let endDate = new Date(endDateStr) + let nowDate = new Date() + nowDate.setHours(nowDate.getHours() - 1); + if (endDate.getTime() > nowDate.getTime()) { + endDate = nowDate + } + const dates = [] + while (startDate <= endDate) { + dates.push(`${startDate.getFullYear()}-${String(startDate.getMonth() + 1).padStart(2, '0')}-${String(startDate.getDate()).padStart(2, '0')}`) + startDate.setDate(startDate.getDate() + 1) + } + // return dates; + return dates.sort((a, b) => new Date(b) - new Date(a)) +} + +export function getMonthsBetween(startMonthStr, endMonthStr) { + const result = [] + const startDate = new Date(startMonthStr + '-01') + let endDate = new Date(endMonthStr + '-01') + const currentDate = new Date(startDate) + let nowDate = new Date() + nowDate.setHours(nowDate.getHours() - 1); + if (endDate.getTime() > nowDate.getTime()) { + endDate = nowDate + } + while (currentDate <= endDate) { + const year = currentDate.getFullYear() + const month = String(currentDate.getMonth() + 1).padStart(2, '0') + result.push(`${year}-${month}`) + currentDate.setMonth(currentDate.getMonth() + 1) + } + return result.sort((a, b) => new Date(b) - new Date(a)) +} + +export function getYearsBetween(startYearStr, endYearStr) { + const result = [] + const startYear = Number(startYearStr.substring(0, 4)) + const endYear = Number(endYearStr.substring(0, 4)) + for (let i = startYear; i <= endYear; i++) { + result.push(`${i}`) + } + return result.sort((a, b) => new Date(b) - new Date(a)) +} diff --git a/src/utils/export.js b/src/utils/export.js new file mode 100644 index 0000000..3c8c6c8 --- /dev/null +++ b/src/utils/export.js @@ -0,0 +1,36 @@ + +import FileSaver from "file-saver"; +import XLSX from "xlsx"; + + +/** + * 字符权限校验 + * @param {Array} value 校验值 + * @returns {Boolean} + * id:表ID + * name:导出表名字 + *xlsxParam:true/false:如果表格里有数字、日期这些、需要加上raw: true + */ +export function handleExport(id,name,xlsxParam) { + var wb = XLSX.utils.table_to_book( + document.querySelector('#'+id), + {raw: xlsxParam} + ); + + var wbout = XLSX.write(wb, { + bookType: "xlsx", + bookSST: true, + type: "array", + }); + try { + FileSaver.saveAs( + new Blob([wbout], { type: "application/octet-stream" }), + name+".xlsx" + ); + } catch (e) { + if (typeof console !== "undefined") { + console.log(e, wbout); + } + } + return wbout; +} diff --git a/src/views/ems/base/baseEnergyType/index.vue b/src/views/ems/base/baseEnergyType/index.vue index e2fa0c3..42567eb 100644 --- a/src/views/ems/base/baseEnergyType/index.vue +++ b/src/views/ems/base/baseEnergyType/index.vue @@ -72,7 +72,7 @@ - + diff --git a/src/views/ems/base/baseMonitorWorkUnit/index.vue b/src/views/ems/base/baseMonitorWorkUnit/index.vue index 6f43ece..a7cfb8f 100644 --- a/src/views/ems/base/baseMonitorWorkUnit/index.vue +++ b/src/views/ems/base/baseMonitorWorkUnit/index.vue @@ -253,16 +253,16 @@ - - - - - - - - - - + + + {{ dict.label }} + + +