!62 综合能耗日月年
Merge pull request !62 from Alioo/develop_alioo
¶Ô±ÈÐÂÎļþ |
| | |
| | | import request from '@/utils/request' |
| | | |
| | | //å
¨å综åè½èç»è®¡ |
| | | export function getDataList(query) { |
| | | return request({ |
| | | url: '/statisticalData/comprehensiveStatistics/list', |
| | | method: 'get', |
| | | params: query |
| | | }) |
| | | } |
| | | |
| | | //å
¨å综åè½èç»è®¡å¾ |
| | | export function getlistChart(query) { |
| | | return request({ |
| | | url: '/statisticalData/comprehensiveStatistics/listChart', |
| | | method: 'get', |
| | | params: query |
| | | }) |
| | | } |
| | | export function exportList(query) { |
| | | return request({ |
| | | url: '/statisticalData/comprehensiveStatistics/export', |
| | | method: 'get', |
| | | params: query |
| | | }) |
| | | } |
| | | export function getEnergyList(query) { |
| | | return request({ |
| | | url: '/statisticalData/comprehensiveStatistics/getList', |
| | | method: 'get', |
| | | params: query |
| | | }) |
| | | } |
| | | //éç¹è®¾å¤è½èæå |
| | | export function energyList(query) { |
| | | return request({ |
| | | url: '/statisticalData/comprehensiveStatistics/energyList', |
| | | method: 'get', |
| | | params: query |
| | | }) |
| | | } |
| | | //è®¾å¤ |
| | | export function getFacilityArchives() { |
| | | return request({ |
| | | url: '/statisticalData/comprehensiveStatistics/getFacilityArchives', |
| | | method: 'get' |
| | | }) |
| | | } |
| | | //éç¹è®¾å¤ |
| | | export function getPointFacility() { |
| | | return request({ |
| | | url: '/statisticalData/comprehensiveStatistics/getPointFacility', |
| | | method: 'get' |
| | | }) |
| | | } |
| | | export function getDeviceList(query) { |
| | | return request({ |
| | | url: '/statisticalData/comprehensiveStatistics/getDeviceList', |
| | | method: 'get', |
| | | params: query |
| | | }) |
| | | } |
| | | //è·å模åä¸çè½æºåç§ |
| | | export function energyDevice(query) { |
| | | return request({ |
| | | url: '/statisticalData/comprehensiveStatistics/energyDevice', |
| | | method: 'get', |
| | | params: query |
| | | }) |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | import request from "@/utils/request" |
| | | |
| | | //æ¥è¯¢æ¥æ¥è¡¨ |
| | | export function getDataList(query) { |
| | | return request({ |
| | | url: "/comprehensive/dailyComprehensive/list", |
| | | method: "get", |
| | | params: query, |
| | | }) |
| | | } |
| | | export function getlistChart(query) { |
| | | return request({ |
| | | url: "/comprehensive/dailyComprehensive/listChart", |
| | | method: "get", |
| | | params: query, |
| | | }) |
| | | } |
| | | |
| | | // 导åºç»¼åæ¥è¡¨ |
| | | export function exportList(query) { |
| | | return request({ |
| | | url: "/report/dailyReport/export", |
| | | method: "get", |
| | | params: query, |
| | | }) |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | import request from '@/utils/request' |
| | | |
| | | //æ¥è¯¢æ¥æ¥è¡¨ |
| | | export function getDataList(query) { |
| | | return request({ |
| | | url: '/comprehensive/monthlyComprehensive/list', |
| | | method: 'get', |
| | | params: query |
| | | }) |
| | | } |
| | | export function getlistChart(query) { |
| | | return request({ |
| | | url: '/comprehensive/monthlyComprehensive/listChart', |
| | | method: 'get', |
| | | params: query |
| | | }) |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | import request from '@/utils/request' |
| | | |
| | | //å
¨å综åè½èç»è®¡ |
| | | export function getDataList(query) { |
| | | return request({ |
| | | url: '/statisticalData/processEnergyConsumption/list', |
| | | method: 'get', |
| | | params: query |
| | | }) |
| | | } |
| | | |
| | | //å
¨å综åè½èç»è®¡å¾ |
| | | export function getlistChart(query) { |
| | | return request({ |
| | | url: '/statisticalData/processEnergyConsumption/listChart', |
| | | method: 'get', |
| | | params: query |
| | | }) |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | import request from '@/utils/request' |
| | | |
| | | //æ¥è¯¢æ¥æ¥è¡¨ |
| | | export function getDataList(query) { |
| | | return request({ |
| | | url: '/comprehensive/yearComprehensive/list', |
| | | method: 'get', |
| | | params: query |
| | | }) |
| | | } |
| | | export function getlistChart(query) { |
| | | return request({ |
| | | url: '/comprehensive/yearComprehensive/listChart', |
| | | method: 'get', |
| | | params: query |
| | | }) |
| | | } |
| | |
| | | // tr:hover > td { |
| | | // background-color: #141E4A; |
| | | // } |
| | | |
| | | .el-table-fixed-column--left { |
| | | background-color: #110f2e !important; |
| | | } |
| | | } |
| | | } |
| | | |
| | |
| | | // tr:hover > td { |
| | | // background-color: #141E4A; |
| | | // } |
| | | .el-table-fixed-column--left { |
| | | background-color: #fff; |
| | | } |
| | | } |
| | | } |
| | | |
| | |
| | | |
| | | |
| | | /** |
| | | * éç¨jsæ¹æ³å°è£
å¤ç |
| | | * Copyright (c) 2019 ruoyi |
| | |
| | | if (arguments.length === 0 || !time) { |
| | | return null |
| | | } |
| | | const format = pattern || '{y}-{m}-{d} {h}:{i}:{s}' |
| | | const format = pattern || "{y}-{m}-{d} {h}:{i}:{s}" |
| | | let date |
| | | if (typeof time === 'object') { |
| | | if (typeof time === "object") { |
| | | date = time |
| | | } else { |
| | | if ((typeof time === 'string') && (/^[0-9]+$/.test(time))) { |
| | | if (typeof time === "string" && /^[0-9]+$/.test(time)) { |
| | | time = parseInt(time) |
| | | } else if (typeof time === 'string') { |
| | | time = time.replace(new RegExp(/-/gm), '/').replace('T', ' ').replace(new RegExp(/\.[\d]{3}/gm), ''); |
| | | } else if (typeof time === "string") { |
| | | time = time |
| | | .replace(new RegExp(/-/gm), "/") |
| | | .replace("T", " ") |
| | | .replace(new RegExp(/\.[\d]{3}/gm), "") |
| | | } |
| | | if ((typeof time === 'number') && (time.toString().length === 10)) { |
| | | if (typeof time === "number" && time.toString().length === 10) { |
| | | time = time * 1000 |
| | | } |
| | | date = new Date(time) |
| | |
| | | h: date.getHours(), |
| | | i: date.getMinutes(), |
| | | s: date.getSeconds(), |
| | | a: date.getDay() |
| | | a: date.getDay(), |
| | | } |
| | | const time_str = format.replace(/{(y|m|d|h|i|s|a)+}/g, (result, key) => { |
| | | let value = formatObj[key] |
| | | // Note: getDay() returns 0 on Sunday |
| | | if (key === 'a') { return ['æ¥', 'ä¸', 'äº', 'ä¸', 'å', 'äº', 'å
'][value] } |
| | | if (key === "a") { |
| | | return ["æ¥", "ä¸", "äº", "ä¸", "å", "äº", "å
"][value] |
| | | } |
| | | if (result.length > 0 && value < 10) { |
| | | value = '0' + value |
| | | value = "0" + value |
| | | } |
| | | return value || 0 |
| | | }) |
| | |
| | | // 表åéç½® |
| | | export function resetForm(refName) { |
| | | if (this.$refs[refName]) { |
| | | this.$refs[refName].resetFields(); |
| | | this.$refs[refName].resetFields() |
| | | } |
| | | } |
| | | |
| | | // æ·»å æ¥æèå´ |
| | | export function addDateRange(params, dateRange, propName) { |
| | | let search = params; |
| | | search.params = typeof (search.params) === 'object' && search.params !== null && !Array.isArray(search.params) ? search.params : {}; |
| | | dateRange = Array.isArray(dateRange) ? dateRange : []; |
| | | if (typeof (propName) === 'undefined') { |
| | | search.params['beginTime'] = dateRange[0]; |
| | | search.params['endTime'] = dateRange[1]; |
| | | let search = params |
| | | search.params = |
| | | typeof search.params === "object" && search.params !== null && !Array.isArray(search.params) ? search.params : {} |
| | | dateRange = Array.isArray(dateRange) ? dateRange : [] |
| | | if (typeof propName === "undefined") { |
| | | search.params["beginTime"] = dateRange[0] |
| | | search.params["endTime"] = dateRange[1] |
| | | } else { |
| | | search.params['begin' + propName] = dateRange[0]; |
| | | search.params['end' + propName] = dateRange[1]; |
| | | search.params["begin" + propName] = dateRange[0] |
| | | search.params["end" + propName] = dateRange[1] |
| | | } |
| | | return search; |
| | | return search |
| | | } |
| | | |
| | | // åæ¾æ°æ®åå
¸ |
| | | export function selectDictLabel(datas, value) { |
| | | if (value === undefined) { |
| | | return ""; |
| | | return "" |
| | | } |
| | | var actions = []; |
| | | var actions = [] |
| | | Object.keys(datas).some((key) => { |
| | | if (datas[key].value == ('' + value)) { |
| | | actions.push(datas[key].label); |
| | | return true; |
| | | if (datas[key].value == "" + value) { |
| | | actions.push(datas[key].label) |
| | | return true |
| | | } |
| | | }) |
| | | if (actions.length === 0) { |
| | | actions.push(value); |
| | | actions.push(value) |
| | | } |
| | | return actions.join(''); |
| | | return actions.join("") |
| | | } |
| | | |
| | | // åæ¾æ°æ®åå
¸ï¼å符串æ°ç»ï¼ |
| | | export function selectDictLabels(datas, value, separator) { |
| | | if (value === undefined || value.length ===0) { |
| | | return ""; |
| | | if (value === undefined || value.length === 0) { |
| | | return "" |
| | | } |
| | | if (Array.isArray(value)) { |
| | | value = value.join(","); |
| | | value = value.join(",") |
| | | } |
| | | var actions = []; |
| | | var currentSeparator = undefined === separator ? "," : separator; |
| | | var temp = value.split(currentSeparator); |
| | | var actions = [] |
| | | var currentSeparator = undefined === separator ? "," : separator |
| | | var temp = value.split(currentSeparator) |
| | | Object.keys(value.split(currentSeparator)).some((val) => { |
| | | var match = false; |
| | | var match = false |
| | | Object.keys(datas).some((key) => { |
| | | if (datas[key].value == ('' + temp[val])) { |
| | | actions.push(datas[key].label + currentSeparator); |
| | | match = true; |
| | | if (datas[key].value == "" + temp[val]) { |
| | | actions.push(datas[key].label + currentSeparator) |
| | | match = true |
| | | } |
| | | }) |
| | | if (!match) { |
| | | actions.push(temp[val] + currentSeparator); |
| | | actions.push(temp[val] + currentSeparator) |
| | | } |
| | | }) |
| | | return actions.join('').substring(0, actions.join('').length - 1); |
| | | return actions.join("").substring(0, actions.join("").length - 1) |
| | | } |
| | | |
| | | // åç¬¦ä¸²æ ¼å¼å(%s ) |
| | | export function sprintf(str) { |
| | | var args = arguments, flag = true, i = 1; |
| | | var args = arguments, |
| | | flag = true, |
| | | i = 1 |
| | | str = str.replace(/%s/g, function () { |
| | | var arg = args[i++]; |
| | | if (typeof arg === 'undefined') { |
| | | flag = false; |
| | | return ''; |
| | | var arg = args[i++] |
| | | if (typeof arg === "undefined") { |
| | | flag = false |
| | | return "" |
| | | } |
| | | return arg; |
| | | }); |
| | | return flag ? str : ''; |
| | | return arg |
| | | }) |
| | | return flag ? str : "" |
| | | } |
| | | |
| | | // 转æ¢å符串ï¼undefined,nullç转å为"" |
| | | export function parseStrEmpty(str) { |
| | | if (!str || str == "undefined" || str == "null") { |
| | | return ""; |
| | | return "" |
| | | } |
| | | return str; |
| | | return str |
| | | } |
| | | |
| | | // æ°æ®åå¹¶ |
| | |
| | | for (var p in target) { |
| | | try { |
| | | if (target[p].constructor == Object) { |
| | | source[p] = mergeRecursive(source[p], target[p]); |
| | | source[p] = mergeRecursive(source[p], target[p]) |
| | | } else { |
| | | source[p] = target[p]; |
| | | source[p] = target[p] |
| | | } |
| | | } catch (e) { |
| | | source[p] = target[p]; |
| | | source[p] = target[p] |
| | | } |
| | | } |
| | | return source; |
| | | }; |
| | | return source |
| | | } |
| | | |
| | | /** |
| | | * æé æ åç»ææ°æ® |
| | |
| | | */ |
| | | export function handleTree(data, id, parentId, children) { |
| | | let config = { |
| | | id: id || 'id', |
| | | parentId: parentId || 'parentId', |
| | | childrenList: children || 'children' |
| | | }; |
| | | id: id || "id", |
| | | parentId: parentId || "parentId", |
| | | childrenList: children || "children", |
| | | } |
| | | |
| | | var childrenListMap = {}; |
| | | var nodeIds = {}; |
| | | var tree = []; |
| | | var childrenListMap = {} |
| | | var nodeIds = {} |
| | | var tree = [] |
| | | |
| | | for (let d of data) { |
| | | let parentId = d[config.parentId]; |
| | | let parentId = d[config.parentId] |
| | | if (childrenListMap[parentId] == null) { |
| | | childrenListMap[parentId] = []; |
| | | childrenListMap[parentId] = [] |
| | | } |
| | | nodeIds[d[config.id]] = d; |
| | | childrenListMap[parentId].push(d); |
| | | nodeIds[d[config.id]] = d |
| | | childrenListMap[parentId].push(d) |
| | | } |
| | | |
| | | for (let d of data) { |
| | | let parentId = d[config.parentId]; |
| | | let parentId = d[config.parentId] |
| | | if (nodeIds[parentId] == null) { |
| | | tree.push(d); |
| | | tree.push(d) |
| | | } |
| | | } |
| | | |
| | | for (let t of tree) { |
| | | adaptToChildrenList(t); |
| | | adaptToChildrenList(t) |
| | | } |
| | | |
| | | function adaptToChildrenList(o) { |
| | | if (childrenListMap[o[config.id]] !== null) { |
| | | o[config.childrenList] = childrenListMap[o[config.id]]; |
| | | o[config.childrenList] = childrenListMap[o[config.id]] |
| | | } |
| | | if (o[config.childrenList]) { |
| | | for (let c of o[config.childrenList]) { |
| | | adaptToChildrenList(c); |
| | | adaptToChildrenList(c) |
| | | } |
| | | } |
| | | } |
| | | return tree; |
| | | return tree |
| | | } |
| | | |
| | | /** |
| | | * åæ°å¤ç |
| | | * @param {*} params åæ° |
| | | */ |
| | | * åæ°å¤ç |
| | | * @param {*} params åæ° |
| | | */ |
| | | export function tansParams(params) { |
| | | let result = '' |
| | | let result = "" |
| | | for (const propName of Object.keys(params)) { |
| | | const value = params[propName]; |
| | | var part = encodeURIComponent(propName) + "="; |
| | | if (value !== null && value !== "" && typeof (value) !== "undefined") { |
| | | if (typeof value === 'object') { |
| | | const value = params[propName] |
| | | var part = encodeURIComponent(propName) + "=" |
| | | if (value !== null && value !== "" && typeof value !== "undefined") { |
| | | if (typeof value === "object") { |
| | | for (const key of Object.keys(value)) { |
| | | if (value[key] !== null && value[key] !== "" && typeof (value[key]) !== 'undefined') { |
| | | let params = propName + '[' + key + ']'; |
| | | var subPart = encodeURIComponent(params) + "="; |
| | | result += subPart + encodeURIComponent(value[key]) + "&"; |
| | | if (value[key] !== null && value[key] !== "" && typeof value[key] !== "undefined") { |
| | | let params = propName + "[" + key + "]" |
| | | var subPart = encodeURIComponent(params) + "=" |
| | | result += subPart + encodeURIComponent(value[key]) + "&" |
| | | } |
| | | } |
| | | } else { |
| | | result += part + encodeURIComponent(value) + "&"; |
| | | result += part + encodeURIComponent(value) + "&" |
| | | } |
| | | } |
| | | } |
| | | return result |
| | | } |
| | | |
| | | |
| | | // è¿å项ç®è·¯å¾ |
| | | export function getNormalPath(p) { |
| | | if (p.length === 0 || !p || p == 'undefined') { |
| | | if (p.length === 0 || !p || p == "undefined") { |
| | | return p |
| | | }; |
| | | let res = p.replace('//', '/') |
| | | if (res[res.length - 1] === '/') { |
| | | } |
| | | let res = p.replace("//", "/") |
| | | if (res[res.length - 1] === "/") { |
| | | return res.slice(0, res.length - 1) |
| | | } |
| | | return res; |
| | | return res |
| | | } |
| | | |
| | | // éªè¯æ¯å¦ä¸ºblobæ ¼å¼ |
| | | export function blobValidate(data) { |
| | | return data.type !== 'application/json' |
| | | return data.type !== "application/json" |
| | | } |
| | | |
| | | // éç¨ä¸è½½æ¹æ³ |
| | | const baseURL = import.meta.env.VITE_APP_BASE_API |
| | | export function download(fileName) { |
| | | window.location.href = baseURL + "/common/download?fileName=" + encodeURI(fileName) + "&delete=" + true |
| | | } |
| | | |
| | | // éç¨ä¸è½½æ¹æ³ showfileNameï¼ä¸è½½åçæä»¶å称带æ©å±å;filePath:è¦ä¸è½½æä»¶çç»å¯¹è·¯å¾,带çæä»¶ååæ©å±åï¼deleteflageä¸è½½å®æåæ¯å¦å 餿件 |
| | | export function fileDownload(showfileName, filePath, deleteflage) { |
| | | window.location.href = |
| | | baseURL + |
| | | "/common/downloadAssign?showFileName=" + |
| | | encodeURI(showfileName) + |
| | | "&filePath=" + |
| | | encodeURI(filePath) + |
| | | "&delete=" + |
| | | deleteflage |
| | | } |
| | |
| | | <div class="form-card"> |
| | | <el-form :model="form" ref="queryRef" :inline="true" label-width="85px"> |
| | | <el-form-item label="æé´" prop="timeType"> |
| | | <el-select v-model="queryParams.timeType" placeholder="æé´" clearable style="width: 100%" |
| | | @change="handleTimeType"> |
| | | <el-select |
| | | v-model="queryParams.timeType" |
| | | placeholder="æé´" |
| | | clearable |
| | | style="width: 100%" |
| | | @change="handleTimeType" |
| | | > |
| | | <el-option v-for="dict in period" :key="dict.value" :label="dict.label" :value="dict.value" /> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="æ¶é´"> |
| | | <el-date-picker v-model="queryParams.dataTime" :clearable="false" |
| | | <el-date-picker |
| | | v-model="queryParams.dataTime" |
| | | :clearable="false" |
| | | :type="queryParams.timeType == 'YEAR' ? 'year' : queryParams.timeType == 'MONTH' ? 'month' : 'date'" |
| | | :format="queryParams.timeType == 'YEAR' ? 'YYYY' : queryParams.timeType == 'MONTH' ? 'YYYY-MM' : 'YYYY-MM-DD'" |
| | | value-format="YYYY-MM-DD" placeholder="æ¶é´" style="width: 100%" /> |
| | | :format=" |
| | | queryParams.timeType == 'YEAR' ? 'YYYY' : queryParams.timeType == 'MONTH' ? 'YYYY-MM' : 'YYYY-MM-DD' |
| | | " |
| | | value-format="YYYY-MM-DD" |
| | | placeholder="æ¶é´" |
| | | style="width: 100%" |
| | | /> |
| | | </el-form-item> |
| | | <el-form-item> |
| | | <el-button type="primary" icon="Search" @click="handleQuery">æç´¢</el-button> |
| | |
| | | </template> |
| | | |
| | | <script setup> |
| | | import * as echarts from 'echarts'; |
| | | import { onMounted, reactive, ref } from 'vue'; |
| | | import { listEnergyTypeList } from "@/api/modelConfiguration/energyType"; |
| | | const { proxy } = getCurrentInstance(); |
| | | const { period } = proxy.useDict("period"); |
| | | let { alarm_record_category } = proxy.useDict("alarm_record_category"); |
| | | import * as echarts from "echarts" |
| | | import { onMounted, reactive, ref } from "vue" |
| | | import { listEnergyTypeList } from "@/api/modelConfiguration/energyType" |
| | | const { proxy } = getCurrentInstance() |
| | | const { period } = proxy.useDict("period") |
| | | let { alarm_record_category } = proxy.useDict("alarm_record_category") |
| | | let energyTypeList = ref([]) |
| | | function getEnergyTypeList() { |
| | | listEnergyTypeList().then((res) => { |
| | | energyTypeList.value = res.data; |
| | | }); |
| | | energyTypeList.value = res.data |
| | | }) |
| | | } |
| | | getEnergyTypeList() |
| | | function formatterLabel(list, value) { |
| | | console.log(list, value); |
| | | console.log(list, value) |
| | | |
| | | let dict = list.find(item => item.enersno == value) |
| | | return dict ? dict.enername : '' |
| | | let dict = list.find((item) => item.enersno == value) |
| | | return dict ? dict.enername : "" |
| | | } |
| | | |
| | | |
| | | let queryParams = ref({ |
| | | timeType: null, |
| | | dataTime: null, |
| | | nodeId: null |
| | | nodeId: null, |
| | | }) |
| | | |
| | | import { getByNodeId, getCountInfo } from "@/api/alarmManage/alarmManage"; |
| | | import { el } from 'element-plus/es/locales.mjs'; |
| | | let form = ref({}); |
| | | import { getByNodeId, getCountInfo } from "@/api/alarmManage/alarmManage" |
| | | import { el } from "element-plus/es/locales.mjs" |
| | | let form = ref({}) |
| | | let currentNode = ref() |
| | | |
| | | function handleTimeType(e) { |
| | | queryParams.value.timeType = e; |
| | | queryParams.value.dataTime = proxy.dayjs(new Date()).format("YYYY-MM-DD"); |
| | | queryParams.value.timeType = e |
| | | queryParams.value.dataTime = proxy.dayjs(new Date()).format("YYYY-MM-DD") |
| | | } |
| | | function handleNodeClick(e) { |
| | | currentNode.value = e |
| | | queryParams.value.nodeId = e.id |
| | | handleTimeType('YEAR') |
| | | handleTimeType("YEAR") |
| | | getByNodeIdFun() |
| | | } |
| | | |
| | | function getByNodeIdFun() { |
| | | getByNodeId(queryParams.value).then(res => { |
| | | getByNodeId(queryParams.value).then((res) => { |
| | | let alarmList = [] |
| | | let energyList = [] |
| | | let alarmNumberList = { |
| | | data: [], |
| | | xAxisData: [] |
| | | xAxisData: [], |
| | | } |
| | | console.log(111, res); |
| | | console.log(111, res) |
| | | if (res.code == 200) { |
| | | let { data } = res |
| | | alarmList = data.alarmProportion.map(item => { |
| | | alarmList = data.alarmProportion.map((item) => { |
| | | return { |
| | | name: proxy.selectDictLabel(alarm_record_category.value, item.energyName), |
| | | value: item.percentage |
| | | value: item.percentage, |
| | | } |
| | | }) |
| | | energyList = data.energyProportion.map(item => { |
| | | energyList = data.energyProportion.map((item) => { |
| | | return { |
| | | name: formatterLabel(energyTypeList.value, item.energyName), |
| | | value: item.percentage |
| | | value: item.percentage, |
| | | } |
| | | }) |
| | | for (const item of data.chartDataList) { |
| | |
| | | alarmNumberList.data.push(item.yvalue) |
| | | } |
| | | |
| | | pieChart('Chart1', alarmList, 'æ¥è¦ç±»åå æ¯') |
| | | pieChart('Chart2', energyList, 'è½æºç±»åå æ¯') |
| | | getChart('Chart3', alarmNumberList) |
| | | pieChart("Chart1", alarmList, "æ¥è¦ç±»åå æ¯") |
| | | pieChart("Chart2", energyList, "è½æºç±»åå æ¯") |
| | | getChart("Chart3", alarmNumberList) |
| | | } |
| | | }) |
| | | } |
| | |
| | | getByNodeIdFun() |
| | | } |
| | | function resetQuery() { |
| | | handleTimeType('YEAR') |
| | | handleTimeType("YEAR") |
| | | getByNodeIdFun() |
| | | } |
| | | |
| | | |
| | | function pieChart(Id, data, name) { |
| | | let total = 0; |
| | | let total = 0 |
| | | data.forEach(function (val, idx, arr) { |
| | | total += val.value; |
| | | total += val.value |
| | | }) |
| | | const myChart = echarts.init(document.getElementById(Id)); |
| | | const myChart = echarts.init(document.getElementById(Id)) |
| | | myChart.setOption({ |
| | | color: ['#4D94FF', '#00C27C', '#F0142F', '#F2D261', '#0E7CE2', '#FF8352', '#E271DE', '#F8456B', '#00FFFF', '#4AEAB0'], |
| | | color: [ |
| | | "#4D94FF", |
| | | "#00C27C", |
| | | "#F0142F", |
| | | "#F2D261", |
| | | "#0E7CE2", |
| | | "#FF8352", |
| | | "#E271DE", |
| | | "#F8456B", |
| | | "#00FFFF", |
| | | "#4AEAB0", |
| | | ], |
| | | grid: { |
| | | top: '20%', |
| | | left: '1%', |
| | | right: '1%', |
| | | bottom: '0%', |
| | | containLabel: true |
| | | top: "20%", |
| | | left: "1%", |
| | | right: "1%", |
| | | bottom: "0%", |
| | | containLabel: true, |
| | | }, |
| | | tooltip: { |
| | | trigger: 'item' |
| | | trigger: "item", |
| | | }, |
| | | legend: { |
| | | orient: 'vertical', |
| | | top: 'center', |
| | | icon: 'circle', |
| | | orient: "vertical", |
| | | top: "center", |
| | | icon: "circle", |
| | | itemWidth: 14, |
| | | itemHeight: 14, |
| | | right: '2%', |
| | | right: "2%", |
| | | itemGap: 10, |
| | | textStyle: { |
| | | align: 'left', |
| | | verticalAlign: 'middle', |
| | | align: "left", |
| | | verticalAlign: "middle", |
| | | rich: { |
| | | name: { |
| | | color: '#999', |
| | | color: "#999", |
| | | fontSize: 14, |
| | | }, |
| | | value: { |
| | | color: '#999', |
| | | color: "#999", |
| | | fontSize: 14, |
| | | }, |
| | | rate: { |
| | | color: '#999', |
| | | color: "#999", |
| | | fontSize: 14, |
| | | }, |
| | | }, |
| | | }, |
| | | formatter: (name) => { |
| | | if (data.length) { |
| | | let target, percent; |
| | | let target, percent |
| | | for (let i = 0; i < data.length; i++) { |
| | | if (data[i].name === name) { |
| | | target = data[i].value; |
| | | percent = ((target / total) * 100).toFixed(2); |
| | | target = data[i].value |
| | | percent = ((target / total) * 100).toFixed(2) |
| | | } |
| | | } |
| | | return `{name|${name} }{value| ${target}} {rate| ${percent}%}`; |
| | | |
| | | return `{name|${name} }{value| ${target}} {rate| ${percent}%}` |
| | | } else { |
| | | return `{name|${name} }{value| ${0}} {rate| ${0}%}`; |
| | | |
| | | return `{name|${name} }{value| ${0}} {rate| ${0}%}` |
| | | } |
| | | }, |
| | | }, |
| | | series: [{ |
| | | name, |
| | | type: 'pie', |
| | | radius: ['45%', '70%'], |
| | | center: ['35%', '50%'], |
| | | avoidLabelOverlap: false, |
| | | label: { |
| | | show: false, |
| | | overflow: 'none', |
| | | formatter: '{b} {d}% \n {c} tce', |
| | | series: [ |
| | | { |
| | | name, |
| | | type: "pie", |
| | | radius: ["45%", "70%"], |
| | | center: ["35%", "50%"], |
| | | avoidLabelOverlap: false, |
| | | label: { |
| | | show: false, |
| | | overflow: "none", |
| | | formatter: "{b} {d}% \n {c} tce", |
| | | }, |
| | | data, |
| | | }, |
| | | data, |
| | | }] |
| | | ], |
| | | }) |
| | | } |
| | | function getChart(Id, dataList) { |
| | | const myChart3 = echarts.init(document.getElementById(Id)); |
| | | myChart3.setOption( |
| | | { |
| | | |
| | | grid: { |
| | | left: '3%', |
| | | right: '2%', |
| | | bottom: '2%', |
| | | containLabel: true |
| | | const myChart3 = echarts.init(document.getElementById(Id)) |
| | | myChart3.setOption({ |
| | | grid: { |
| | | left: "3%", |
| | | right: "2%", |
| | | bottom: "2%", |
| | | containLabel: true, |
| | | }, |
| | | tooltip: { |
| | | trigger: "axis", |
| | | }, |
| | | xAxis: { |
| | | type: "category", |
| | | // boundaryGap: false, |
| | | data: dataList.xAxisData, |
| | | axisPointer: { |
| | | type: "shadow", |
| | | }, |
| | | tooltip: { |
| | | trigger: 'axis', |
| | | |
| | | axisTick: { |
| | | show: false, |
| | | alignWithLabel: true, |
| | | length: 5, |
| | | }, |
| | | xAxis: { |
| | | type: 'category', |
| | | // boundaryGap: false, |
| | | data: dataList.xAxisData, |
| | | axisPointer: { |
| | | type: 'shadow' |
| | | // åæ è½´å»åº¦çº¿æ ·å¼ |
| | | axisTick: { |
| | | show: false, |
| | | length: 5, |
| | | lineStyle: { |
| | | color: "#ddd", |
| | | }, |
| | | axisTick: { |
| | | show: false, |
| | | alignWithLabel: true, |
| | | length: 5 |
| | | }, |
| | | // åæ è½´å»åº¦çº¿æ ·å¼ |
| | | axisTick: { |
| | | show: false, |
| | | length: 5, |
| | | lineStyle: { |
| | | color: '#ddd' |
| | | } |
| | | }, |
| | | |
| | | // åå²çº¿ |
| | | splitLine: { |
| | | show: false, |
| | | lineStyle: { |
| | | type: 'dashed', |
| | | color: 'rgba(220,222,226,0.4)' |
| | | } |
| | | }, |
| | | axisLabel: { |
| | | color: '#999', |
| | | fontSize: 14, |
| | | padding: [5, 0, 0, 0], |
| | | // formatter: '{value} ml' |
| | | } |
| | | }, |
| | | yAxis: { |
| | | type: 'value', |
| | | name: 'ï¼æ¬¡ï¼', |
| | | // 设置åç§°æ ·å¼ |
| | | nameTextStyle: { |
| | | color: ' #CEE3FF', |
| | | fontSize: 14, |
| | | padding: [0, 0, 5, 0], |
| | | }, |
| | | // åæ è½´å»åº¦ |
| | | axisTick: { |
| | | show: false, |
| | | alignWithLabel: true, |
| | | length: 5 |
| | | }, |
| | | // åæ è½´å»åº¦çº¿æ ·å¼ |
| | | axisTick: { |
| | | show: false, |
| | | length: 5, |
| | | lineStyle: { |
| | | color: '' |
| | | } |
| | | }, |
| | | |
| | | // åå²çº¿ |
| | | splitLine: { |
| | | show: true, |
| | | lineStyle: { |
| | | type: 'dashed', |
| | | color: 'rgba(220,222,226,0.4)' |
| | | } |
| | | // åå²çº¿ |
| | | splitLine: { |
| | | show: false, |
| | | lineStyle: { |
| | | type: "dashed", |
| | | color: "rgba(220,222,226,0.4)", |
| | | }, |
| | | |
| | | // åæ è½´å»åº¦é´é |
| | | // interval: '50', |
| | | // // åæ è½´æå°å¼ |
| | | // min: 'dataMin', |
| | | // // åæ è½´æå¤§å¼ |
| | | // max: 'dataMax', |
| | | // // åæ è½´å°æ°ç¹ç²¾åº¦ |
| | | // precision: 0, |
| | | // // åæ è½´å»åº¦ææ¬çå¸å±æå |
| | | // position: 'left' |
| | | axisLabel: { |
| | | color: '#B2B8C2', |
| | | fontSize: 14, |
| | | // formatter: '{value} ml' |
| | | } |
| | | }, |
| | | series: [ |
| | | { |
| | | name: "æ¥è¦æ¬¡æ°", |
| | | type: "bar", |
| | | barWidth: '17', |
| | | stack: 'number', |
| | | data: dataList.data, |
| | | tooltip: { |
| | | show: false, |
| | | } |
| | | axisLabel: { |
| | | color: "#999", |
| | | fontSize: 14, |
| | | padding: [5, 0, 0, 0], |
| | | // formatter: '{value} ml' |
| | | }, |
| | | }, |
| | | yAxis: { |
| | | type: "value", |
| | | name: "ï¼æ¬¡ï¼", |
| | | // 设置åç§°æ ·å¼ |
| | | nameTextStyle: { |
| | | color: " #CEE3FF", |
| | | fontSize: 14, |
| | | padding: [0, 0, 5, 0], |
| | | }, |
| | | // åæ è½´å»åº¦ |
| | | axisTick: { |
| | | show: false, |
| | | alignWithLabel: true, |
| | | length: 5, |
| | | }, |
| | | // åæ è½´å»åº¦çº¿æ ·å¼ |
| | | axisTick: { |
| | | show: false, |
| | | length: 5, |
| | | lineStyle: { |
| | | color: "", |
| | | }, |
| | | { |
| | | name: 'æ¥è¦æ¬¡æ°', |
| | | type: 'line', |
| | | symbol: 'none', // 设置为 'none' 廿åç¹ |
| | | lineStyle: { |
| | | color: '#EE0303' |
| | | }, |
| | | data: dataList.data, |
| | | }, |
| | | ] |
| | | }) |
| | | }, |
| | | |
| | | window.addEventListener("resize", () => { |
| | | myChart1.resize(); |
| | | myChart2.resize(); |
| | | myChart3.resize(); |
| | | }, { passive: true }); |
| | | // åå²çº¿ |
| | | splitLine: { |
| | | show: true, |
| | | lineStyle: { |
| | | type: "dashed", |
| | | color: "rgba(220,222,226,0.4)", |
| | | }, |
| | | }, |
| | | |
| | | // åæ è½´å»åº¦é´é |
| | | // interval: '50', |
| | | // // åæ è½´æå°å¼ |
| | | // min: 'dataMin', |
| | | // // åæ è½´æå¤§å¼ |
| | | // max: 'dataMax', |
| | | // // åæ è½´å°æ°ç¹ç²¾åº¦ |
| | | // precision: 0, |
| | | // // åæ è½´å»åº¦ææ¬çå¸å±æå |
| | | // position: 'left' |
| | | axisLabel: { |
| | | color: "#B2B8C2", |
| | | fontSize: 14, |
| | | // formatter: '{value} ml' |
| | | }, |
| | | }, |
| | | series: [ |
| | | { |
| | | name: "æ¥è¦æ¬¡æ°", |
| | | type: "bar", |
| | | barWidth: "12", |
| | | stack: "number", |
| | | data: dataList.data, |
| | | tooltip: { |
| | | show: false, |
| | | }, |
| | | }, |
| | | { |
| | | name: "æ¥è¦æ¬¡æ°", |
| | | type: "line", |
| | | symbol: "none", // 设置为 'none' 廿åç¹ |
| | | lineStyle: { |
| | | color: "#EE0303", |
| | | }, |
| | | data: dataList.data, |
| | | }, |
| | | ], |
| | | }) |
| | | |
| | | window.addEventListener( |
| | | "resize", |
| | | () => { |
| | | myChart1.resize() |
| | | myChart2.resize() |
| | | myChart3.resize() |
| | | }, |
| | | { passive: true } |
| | | ) |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | </script> |
| | | |
| | | <style scoped lang="scss"> |
| | | @import "@/assets/styles/page.scss"; |
| | | |
| | | |
| | | .chart-box { |
| | | height: calc((100vh - 410px)/2) !important; |
| | | height: calc((100vh - 410px) / 2) !important; |
| | | } |
| | | </style> |
| | | </style> |
| | |
| | | <div class="form-card"> |
| | | <el-form :model="form" ref="queryRef" :inline="true" label-width="85px"> |
| | | <el-form-item label="æé´" prop="timeType"> |
| | | <el-select v-model="queryParams.timeType" placeholder="æé´" clearable style="width: 120px" |
| | | @change="handleTimeType"> |
| | | <el-select |
| | | v-model="queryParams.timeType" |
| | | placeholder="æé´" |
| | | clearable |
| | | style="width: 120px" |
| | | @change="handleTimeType" |
| | | > |
| | | <el-option v-for="dict in period" :key="dict.value" :label="dict.label" :value="dict.value" /> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="æ¶é´"> |
| | | <el-date-picker v-model="queryParams.dataTime" :clearable="false" |
| | | <el-date-picker |
| | | v-model="queryParams.dataTime" |
| | | :clearable="false" |
| | | :type="queryParams.timeType == 'YEAR' ? 'year' : queryParams.timeType == 'MONTH' ? 'month' : 'date'" |
| | | :format="queryParams.timeType == 'YEAR' ? 'YYYY' : queryParams.timeType == 'MONTH' ? 'YYYY-MM' : 'YYYY-MM-DD'" |
| | | value-format="YYYY-MM-DD" placeholder="æ¶é´" style="width: 100%" /> |
| | | :format=" |
| | | queryParams.timeType == 'YEAR' ? 'YYYY' : queryParams.timeType == 'MONTH' ? 'YYYY-MM' : 'YYYY-MM-DD' |
| | | " |
| | | value-format="YYYY-MM-DD" |
| | | placeholder="æ¶é´" |
| | | style="width: 100%" |
| | | /> |
| | | </el-form-item> |
| | | <el-form-item> |
| | | <el-button type="primary" icon="Search" @click="handleQuery">æç´¢</el-button> |
| | |
| | | </div> |
| | | |
| | | <div class="mt20 mb20 text-center data-item"> |
| | | æ¬ç¨è½åå
ææ <span>{{ dataArray.indexCount }}</span>ä¸ªï¼ |
| | | æ¬å¹´åº¦æ¥è¦<span>{{ dataArray.yearCount }}</span>æ¬¡ï¼æ¬æ<span>{{ dataArray.monthCount }}</span>次 |
| | | æ¬ç¨è½åå
ææ <span>{{ dataArray.indexCount }}</span |
| | | >ä¸ªï¼ æ¬å¹´åº¦æ¥è¦<span>{{ dataArray.yearCount }}</span |
| | | >æ¬¡ï¼æ¬æ<span>{{ dataArray.monthCount }}</span |
| | | >次 |
| | | </div> |
| | | <el-row :gutter="24" class="mb20"> |
| | | <el-col :span="12"> |
| | |
| | | </template> |
| | | |
| | | <script setup> |
| | | import * as echarts from 'echarts'; |
| | | import { onMounted, reactive, ref } from 'vue'; |
| | | import { listEnergyTypeList } from "@/api/modelConfiguration/energyType"; |
| | | const { proxy } = getCurrentInstance(); |
| | | const { period } = proxy.useDict("period"); |
| | | let { alarm_record_category } = proxy.useDict("alarm_record_category"); |
| | | import * as echarts from "echarts" |
| | | import { onMounted, reactive, ref } from "vue" |
| | | import { listEnergyTypeList } from "@/api/modelConfiguration/energyType" |
| | | const { proxy } = getCurrentInstance() |
| | | const { period } = proxy.useDict("period") |
| | | let { alarm_record_category } = proxy.useDict("alarm_record_category") |
| | | let energyTypeList = ref([]) |
| | | function getEnergyTypeList() { |
| | | listEnergyTypeList().then((res) => { |
| | | energyTypeList.value = res.data; |
| | | queryParams.value.energyType = energyTypeList.value[0].enersno; |
| | | }); |
| | | energyTypeList.value = res.data |
| | | queryParams.value.energyType = energyTypeList.value[0].enersno |
| | | }) |
| | | } |
| | | getEnergyTypeList() |
| | | function formatterLabel(list, value) { |
| | | let dict = list.find(item => item.enersno == value) |
| | | return dict ? dict.enername : '' |
| | | let dict = list.find((item) => item.enersno == value) |
| | | return dict ? dict.enername : "" |
| | | } |
| | | |
| | | |
| | | let queryParams = ref({ |
| | | timeType: null, |
| | | dataTime: null, |
| | | nodeId: null |
| | | nodeId: null, |
| | | }) |
| | | |
| | | import { getByNodeId, getCountInfo } from "@/api/alarmManage/alarmManage"; |
| | | import { el } from 'element-plus/es/locales.mjs'; |
| | | let form = ref({}); |
| | | import { getByNodeId, getCountInfo } from "@/api/alarmManage/alarmManage" |
| | | import { el } from "element-plus/es/locales.mjs" |
| | | let form = ref({}) |
| | | let currentNode = ref() |
| | | |
| | | function handleTimeType(e) { |
| | | queryParams.value.timeType = e; |
| | | queryParams.value.dataTime = proxy.dayjs(new Date()).format("YYYY-MM-DD"); |
| | | queryParams.value.timeType = e |
| | | queryParams.value.dataTime = proxy.dayjs(new Date()).format("YYYY-MM-DD") |
| | | } |
| | | function handleNodeClick(e) { |
| | | currentNode.value = e |
| | | queryParams.value.nodeId = e.id |
| | | handleTimeType(period.value[0].value); |
| | | handleTimeType(period.value[0].value) |
| | | |
| | | getByNodeIdFun() |
| | | } |
| | | |
| | | function getByNodeIdFun() { |
| | | getByNodeId(queryParams.value).then(res => { |
| | | getByNodeId(queryParams.value).then((res) => { |
| | | let alarmList = [] |
| | | let energyList = [] |
| | | let alarmNumberList = { |
| | | data: [], |
| | | xAxisData: [] |
| | | xAxisData: [], |
| | | } |
| | | if (res.code == 200) { |
| | | let { data } = res |
| | | alarmList = data.alarmProportion.map(item => { |
| | | alarmList = data.alarmProportion.map((item) => { |
| | | return { |
| | | name: proxy.selectDictLabel(alarm_record_category.value, item.energyName), |
| | | value: item.count, |
| | | percentage: item.percentage |
| | | percentage: item.percentage, |
| | | } |
| | | }) |
| | | energyList = data.energyProportion.map(item => { |
| | | energyList = data.energyProportion.map((item) => { |
| | | return { |
| | | name: formatterLabel(energyTypeList.value, item.energyName), |
| | | value: item.count, |
| | | percentage: item.percentage |
| | | percentage: item.percentage, |
| | | } |
| | | }) |
| | | for (const item of data.chartDataList) { |
| | |
| | | alarmNumberList.data.push(item.yvalue) |
| | | } |
| | | |
| | | pieChart('Chart1', alarmList, 'æ¥è¦ç±»åå æ¯') |
| | | pieChart('Chart2', energyList, 'è½æºç±»åå æ¯') |
| | | getChart('Chart3', alarmNumberList) |
| | | pieChart("Chart1", alarmList, "æ¥è¦ç±»åå æ¯") |
| | | pieChart("Chart2", energyList, "è½æºç±»åå æ¯") |
| | | getChart("Chart3", alarmNumberList) |
| | | } |
| | | }) |
| | | } |
| | |
| | | getByNodeIdFun() |
| | | } |
| | | function resetQuery() { |
| | | handleTimeType('YEAR') |
| | | handleTimeType("YEAR") |
| | | getByNodeIdFun() |
| | | } |
| | | let dataArray = ref({ |
| | | indexCount: 0, |
| | | yearCount: 0, |
| | | monthCount: 0 |
| | | monthCount: 0, |
| | | }) |
| | | function getCountInfoFun() { |
| | | getCountInfo(queryParams.value).then(res => { |
| | | getCountInfo(queryParams.value).then((res) => { |
| | | if (res.code == 200) { |
| | | dataArray.value = res.data |
| | | } |
| | |
| | | getCountInfoFun() |
| | | function pieChart(Id, data, name) { |
| | | console.log(data) |
| | | let total = 0; |
| | | let total = 0 |
| | | data.forEach(function (val, idx, arr) { |
| | | total += val.value; |
| | | total += val.value |
| | | }) |
| | | const myChart = echarts.init(document.getElementById(Id)); |
| | | const myChart = echarts.init(document.getElementById(Id)) |
| | | myChart.setOption({ |
| | | color: ['#4D94FF', '#00C27C', '#F0142F', '#F2D261', '#0E7CE2', '#FF8352', '#E271DE', '#F8456B', '#00FFFF', '#4AEAB0'], |
| | | color: [ |
| | | "#4D94FF", |
| | | "#00C27C", |
| | | "#F0142F", |
| | | "#F2D261", |
| | | "#0E7CE2", |
| | | "#FF8352", |
| | | "#E271DE", |
| | | "#F8456B", |
| | | "#00FFFF", |
| | | "#4AEAB0", |
| | | ], |
| | | grid: { |
| | | top: '20%', |
| | | left: '1%', |
| | | right: '1%', |
| | | bottom: '0%', |
| | | containLabel: true |
| | | top: "20%", |
| | | left: "1%", |
| | | right: "1%", |
| | | bottom: "0%", |
| | | containLabel: true, |
| | | }, |
| | | tooltip: { |
| | | trigger: 'item' |
| | | trigger: "item", |
| | | }, |
| | | legend: { |
| | | orient: 'vertical', |
| | | top: 'center', |
| | | icon: 'circle', |
| | | orient: "vertical", |
| | | top: "center", |
| | | icon: "circle", |
| | | itemWidth: 14, |
| | | itemHeight: 14, |
| | | right: '2%', |
| | | right: "2%", |
| | | itemGap: 10, |
| | | textStyle: { |
| | | align: 'left', |
| | | verticalAlign: 'middle', |
| | | align: "left", |
| | | verticalAlign: "middle", |
| | | rich: { |
| | | name: { |
| | | color: '#999', |
| | | color: "#999", |
| | | fontSize: 14, |
| | | }, |
| | | value: { |
| | | color: '#999', |
| | | color: "#999", |
| | | fontSize: 14, |
| | | }, |
| | | rate: { |
| | | color: '#999', |
| | | color: "#999", |
| | | fontSize: 14, |
| | | }, |
| | | }, |
| | |
| | | formatter: (name) => { |
| | | for (let i = 0; i < data.length; i++) { |
| | | if (data[i].name === name) { |
| | | return `{name|${data[i].name} }{value| ${data[i].value}} {rate| ${data[i].percentage}%}`; |
| | | return `{name|${data[i].name} }{value| ${data[i].value}} {rate| ${data[i].percentage}%}` |
| | | } |
| | | } |
| | | }, |
| | | }, |
| | | series: [{ |
| | | name, |
| | | type: 'pie', |
| | | radius: ['45%', '70%'], |
| | | center: ['35%', '50%'], |
| | | avoidLabelOverlap: false, |
| | | label: { |
| | | show: false, |
| | | overflow: 'none', |
| | | formatter: '{b} {d}% \n {c} tce', |
| | | series: [ |
| | | { |
| | | name, |
| | | type: "pie", |
| | | radius: ["45%", "70%"], |
| | | center: ["35%", "50%"], |
| | | avoidLabelOverlap: false, |
| | | label: { |
| | | show: false, |
| | | overflow: "none", |
| | | formatter: "{b} {d}% \n {c} tce", |
| | | }, |
| | | data, |
| | | }, |
| | | data, |
| | | }] |
| | | ], |
| | | }) |
| | | } |
| | | function getChart(Id, dataList) { |
| | | const myChart3 = echarts.init(document.getElementById(Id)); |
| | | myChart3.setOption( |
| | | { |
| | | |
| | | grid: { |
| | | left: '3%', |
| | | right: '2%', |
| | | bottom: '2%', |
| | | containLabel: true |
| | | const myChart3 = echarts.init(document.getElementById(Id)) |
| | | myChart3.setOption({ |
| | | grid: { |
| | | left: "3%", |
| | | right: "2%", |
| | | bottom: "2%", |
| | | containLabel: true, |
| | | }, |
| | | tooltip: { |
| | | trigger: "axis", |
| | | }, |
| | | xAxis: { |
| | | type: "category", |
| | | // boundaryGap: false, |
| | | data: dataList.xAxisData, |
| | | axisPointer: { |
| | | type: "shadow", |
| | | }, |
| | | tooltip: { |
| | | trigger: 'axis', |
| | | |
| | | axisTick: { |
| | | show: false, |
| | | alignWithLabel: true, |
| | | length: 5, |
| | | }, |
| | | xAxis: { |
| | | type: 'category', |
| | | // boundaryGap: false, |
| | | data: dataList.xAxisData, |
| | | axisPointer: { |
| | | type: 'shadow' |
| | | // åæ è½´å»åº¦çº¿æ ·å¼ |
| | | axisTick: { |
| | | show: false, |
| | | length: 5, |
| | | lineStyle: { |
| | | color: "#ddd", |
| | | }, |
| | | axisTick: { |
| | | show: false, |
| | | alignWithLabel: true, |
| | | length: 5 |
| | | }, |
| | | // åæ è½´å»åº¦çº¿æ ·å¼ |
| | | axisTick: { |
| | | show: false, |
| | | length: 5, |
| | | lineStyle: { |
| | | color: '#ddd' |
| | | } |
| | | }, |
| | | |
| | | // åå²çº¿ |
| | | splitLine: { |
| | | show: false, |
| | | lineStyle: { |
| | | type: 'dashed', |
| | | color: 'rgba(220,222,226,0.4)' |
| | | } |
| | | }, |
| | | axisLabel: { |
| | | color: '#999', |
| | | fontSize: 14, |
| | | padding: [5, 0, 0, 0], |
| | | // formatter: '{value} ml' |
| | | } |
| | | }, |
| | | yAxis: { |
| | | type: 'value', |
| | | name: 'ï¼æ¬¡ï¼', |
| | | // 设置åç§°æ ·å¼ |
| | | nameTextStyle: { |
| | | color: ' #CEE3FF', |
| | | fontSize: 14, |
| | | padding: [0, 0, 5, 0], |
| | | }, |
| | | // åæ è½´å»åº¦ |
| | | axisTick: { |
| | | show: false, |
| | | alignWithLabel: true, |
| | | length: 5 |
| | | }, |
| | | // åæ è½´å»åº¦çº¿æ ·å¼ |
| | | axisTick: { |
| | | show: false, |
| | | length: 5, |
| | | lineStyle: { |
| | | color: '' |
| | | } |
| | | }, |
| | | |
| | | // åå²çº¿ |
| | | splitLine: { |
| | | show: true, |
| | | lineStyle: { |
| | | type: 'dashed', |
| | | color: 'rgba(220,222,226,0.4)' |
| | | } |
| | | // åå²çº¿ |
| | | splitLine: { |
| | | show: false, |
| | | lineStyle: { |
| | | type: "dashed", |
| | | color: "rgba(220,222,226,0.4)", |
| | | }, |
| | | |
| | | // åæ è½´å»åº¦é´é |
| | | // interval: '50', |
| | | // // åæ è½´æå°å¼ |
| | | // min: 'dataMin', |
| | | // // åæ è½´æå¤§å¼ |
| | | // max: 'dataMax', |
| | | // // åæ è½´å°æ°ç¹ç²¾åº¦ |
| | | // precision: 0, |
| | | // // åæ è½´å»åº¦ææ¬çå¸å±æå |
| | | // position: 'left' |
| | | axisLabel: { |
| | | color: '#B2B8C2', |
| | | fontSize: 14, |
| | | // formatter: '{value} ml' |
| | | } |
| | | }, |
| | | series: [ |
| | | { |
| | | name: "æ¥è¦æ¬¡æ°", |
| | | type: "bar", |
| | | barWidth: '17', |
| | | stack: 'number', |
| | | data: dataList.data, |
| | | tooltip: { |
| | | show: false, |
| | | } |
| | | axisLabel: { |
| | | color: "#999", |
| | | fontSize: 14, |
| | | padding: [5, 0, 0, 0], |
| | | // formatter: '{value} ml' |
| | | }, |
| | | }, |
| | | yAxis: { |
| | | type: "value", |
| | | name: "ï¼æ¬¡ï¼", |
| | | // 设置åç§°æ ·å¼ |
| | | nameTextStyle: { |
| | | color: " #CEE3FF", |
| | | fontSize: 14, |
| | | padding: [0, 0, 5, 0], |
| | | }, |
| | | // åæ è½´å»åº¦ |
| | | axisTick: { |
| | | show: false, |
| | | alignWithLabel: true, |
| | | length: 5, |
| | | }, |
| | | // åæ è½´å»åº¦çº¿æ ·å¼ |
| | | axisTick: { |
| | | show: false, |
| | | length: 5, |
| | | lineStyle: { |
| | | color: "", |
| | | }, |
| | | { |
| | | name: 'æ¥è¦æ¬¡æ°', |
| | | type: 'line', |
| | | symbol: 'none', // 设置为 'none' 廿åç¹ |
| | | lineStyle: { |
| | | color: '#EE0303' |
| | | }, |
| | | data: dataList.data, |
| | | }, |
| | | ] |
| | | }) |
| | | }, |
| | | |
| | | window.addEventListener("resize", () => { |
| | | myChart1.resize(); |
| | | myChart2.resize(); |
| | | myChart3.resize(); |
| | | }, { passive: true }); |
| | | // åå²çº¿ |
| | | splitLine: { |
| | | show: true, |
| | | lineStyle: { |
| | | type: "dashed", |
| | | color: "rgba(220,222,226,0.4)", |
| | | }, |
| | | }, |
| | | |
| | | // åæ è½´å»åº¦é´é |
| | | // interval: '50', |
| | | // // åæ è½´æå°å¼ |
| | | // min: 'dataMin', |
| | | // // åæ è½´æå¤§å¼ |
| | | // max: 'dataMax', |
| | | // // åæ è½´å°æ°ç¹ç²¾åº¦ |
| | | // precision: 0, |
| | | // // åæ è½´å»åº¦ææ¬çå¸å±æå |
| | | // position: 'left' |
| | | axisLabel: { |
| | | color: "#B2B8C2", |
| | | fontSize: 14, |
| | | // formatter: '{value} ml' |
| | | }, |
| | | }, |
| | | series: [ |
| | | { |
| | | name: "æ¥è¦æ¬¡æ°", |
| | | type: "bar", |
| | | barWidth: "12", |
| | | stack: "number", |
| | | data: dataList.data, |
| | | tooltip: { |
| | | show: false, |
| | | }, |
| | | }, |
| | | { |
| | | name: "æ¥è¦æ¬¡æ°", |
| | | type: "line", |
| | | symbol: "none", // 设置为 'none' 廿åç¹ |
| | | lineStyle: { |
| | | color: "#EE0303", |
| | | }, |
| | | data: dataList.data, |
| | | }, |
| | | ], |
| | | }) |
| | | |
| | | window.addEventListener( |
| | | "resize", |
| | | () => { |
| | | myChart1.resize() |
| | | myChart2.resize() |
| | | myChart3.resize() |
| | | }, |
| | | { passive: true } |
| | | ) |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | </script> |
| | | |
| | | <style scoped lang="scss"> |
| | | @import "@/assets/styles/page.scss"; |
| | | |
| | | |
| | | .chart-box { |
| | | height: calc((100vh - 410px)/2) !important; |
| | | height: calc((100vh - 410px) / 2) !important; |
| | | } |
| | | |
| | | .data-item { |
| | |
| | | font-weight: bold; |
| | | |
| | | span { |
| | | color: #397AEE; |
| | | color: #397aee; |
| | | margin: 0 5px; |
| | | } |
| | | } |
| | |
| | | font-weight: bold; |
| | | |
| | | span { |
| | | color: #397AEE; |
| | | color: #397aee; |
| | | margin: 0 5px; |
| | | } |
| | | } |
| | | |
| | | } |
| | | </style> |
| | | </style> |
| | |
| | | <div class="form-card"> |
| | | <el-form :model="queryParams" ref="queryRef" :inline="true"> |
| | | <el-form-item label="æé´" prop="timeType"> |
| | | <el-select v-model="queryParams.timeType" placeholder="æé´" clearable style="width: 120px" |
| | | @change="handleTimeType"> |
| | | <el-select |
| | | v-model="queryParams.timeType" |
| | | placeholder="æé´" |
| | | clearable |
| | | style="width: 120px" |
| | | @change="handleTimeType" |
| | | > |
| | | <el-option v-for="dict in period" :key="dict.value" :label="dict.label" :value="dict.value" /> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="æ¶é´"> |
| | | <el-date-picker v-model="queryParams.dataTime" :type="queryParams.timeType == 'YEAR' |
| | | ? 'year' |
| | | : queryParams.timeType == 'MONTH' |
| | | ? 'month' |
| | | : 'date' |
| | | " :format="queryParams.timeType == 'YEAR' |
| | | ? 'YYYY' |
| | | : queryParams.timeType == 'MONTH' |
| | | ? 'YYYY-MM' |
| | | : 'YYYY-MM-DD' |
| | | " value-format="YYYY-MM-DD" placeholder="æ¶é´" style="width: 100%" /> |
| | | <el-date-picker |
| | | v-model="queryParams.dataTime" |
| | | :type="queryParams.timeType == 'YEAR' ? 'year' : queryParams.timeType == 'MONTH' ? 'month' : 'date'" |
| | | :format=" |
| | | queryParams.timeType == 'YEAR' ? 'YYYY' : queryParams.timeType == 'MONTH' ? 'YYYY-MM' : 'YYYY-MM-DD' |
| | | " |
| | | value-format="YYYY-MM-DD" |
| | | placeholder="æ¶é´" |
| | | style="width: 100%" |
| | | /> |
| | | </el-form-item> |
| | | <el-form-item> |
| | | <el-button type="primary" icon="Search" @click="handleQuery"> |
| | | æç´¢ |
| | | </el-button> |
| | | <el-button type="primary" icon="Search" @click="handleQuery"> æç´¢ </el-button> |
| | | <el-button icon="Refresh" @click="resetQuery">éç½®</el-button> |
| | | </el-form-item> |
| | | <el-form-item> |
| | | <el-button type="primary" icon="Download" @click="handleExport"> |
| | | å¯¼åº |
| | | </el-button> |
| | | <el-button type="primary" icon="Download" @click="handleExport"> å¯¼åº </el-button> |
| | | </el-form-item> |
| | | </el-form> |
| | | </div> |
| | | <div style=" |
| | | height: calc(100vh - 220px) !important; |
| | | max-height: calc(100vh - 220px) !important; |
| | | overflow-y: auto; |
| | | "> |
| | | <div |
| | | style="height: calc(100vh - 220px) !important; max-height: calc(100vh - 220px) !important; overflow-y: auto" |
| | | > |
| | | <div class="card-list" v-if="listTop.length > 1"> |
| | | <el-button @click="dialogVisible = true"> æ¥çæ´å¤ </el-button> |
| | | </div> |
| | |
| | | <template v-for="(item, index) in row" :key="index"> |
| | | <div class="card-list-item"> |
| | | <div class="item-top"> |
| | | <div class="top-icon" :style="{ |
| | | backgroundImage: 'url(' + bgList[index].icon + ')', |
| | | }" /> |
| | | <div |
| | | class="top-icon" |
| | | :style="{ |
| | | backgroundImage: 'url(' + bgList[index].icon + ')', |
| | | }" |
| | | /> |
| | | <div class="top-right"> |
| | | {{ item.allEneryType }} |
| | | </div> |
| | |
| | | <div class="bottom-left">忝</div> |
| | | <div class="bottom-right" :style="{ color: bgList[index].color }"> |
| | | {{ Math.abs(item.yoyEnery) }}% |
| | | <el-icon v-if="!!item.yoyEnery" :color="item.yoyEnery > 0 |
| | | ? 'green' |
| | | : item.yoyEnery < 0 |
| | | ? 'red' |
| | | : '' |
| | | "> |
| | | <el-icon |
| | | v-if="!!item.yoyEnery" |
| | | :color="item.yoyEnery > 0 ? 'green' : item.yoyEnery < 0 ? 'red' : ''" |
| | | > |
| | | <Top v-if="item.yoyEnery > 0" /> |
| | | <Bottom v-if="item.yoyEnery < 0" /> |
| | | </el-icon> |
| | |
| | | </template> |
| | | </div> |
| | | </template> |
| | | <BaseCard :title="queryParams.nodeName + |
| | | '-ç¢³ææ¾éåç¯æ¯(' + |
| | | queryParams.dataTime + |
| | | ')' |
| | | "> |
| | | <BaseCard :title="queryParams.nodeName + '-ç¢³ææ¾éåç¯æ¯(' + queryParams.dataTime + ')'"> |
| | | <div class="chart-box" v-loading="loading"> |
| | | <div id="Chart1" /> |
| | | </div> |
| | | </BaseCard> |
| | | <BaseCard :title="queryParams.nodeName + |
| | | '-ç¢³ææ¾éç»è®¡åæè¡¨(' + |
| | | queryParams.dataTime + |
| | | ')' |
| | | "> |
| | | <BaseCard :title="queryParams.nodeName + '-ç¢³ææ¾éç»è®¡åæè¡¨(' + queryParams.dataTime + ')'"> |
| | | <div class="table-box"> |
| | | <el-table :data="listBottom" v-loading="loading"> |
| | | <el-table-column label="æ¶é´" align="center" key="xaxis" prop="xaxis" :show-overflow-tooltip="true" /> |
| | | <el-table-column label="ç ´ææ¾é(tCOâe) |
| | | " align="center" key="yaxis" prop="yaxis" :show-overflow-tooltip="true" /> |
| | | <el-table-column |
| | | label="ç ´ææ¾é(tCOâe) |
| | | " |
| | | align="center" |
| | | key="yaxis" |
| | | prop="yaxis" |
| | | :show-overflow-tooltip="true" |
| | | /> |
| | | <el-table-column label="忝" align="center" key="yoy" prop="yoy" :show-overflow-tooltip="true" /> |
| | | <el-table-column label="ç¯æ¯" align="center" key="qoq" prop="qoq" :show-overflow-tooltip="true" /> |
| | | </el-table> |
| | |
| | | <template v-for="(item, index) in row" :key="index"> |
| | | <div class="card-list-item"> |
| | | <div class="item-top"> |
| | | <div class="top-icon" :style="{ |
| | | backgroundImage: 'url(' + bgList[index].icon + ')', |
| | | }" /> |
| | | <div |
| | | class="top-icon" |
| | | :style="{ |
| | | backgroundImage: 'url(' + bgList[index].icon + ')', |
| | | }" |
| | | /> |
| | | <div class="top-right"> |
| | | {{ item.allEneryType }} |
| | | </div> |
| | |
| | | <div class="bottom-left">忝</div> |
| | | <div class="bottom-right" :style="{ color: bgList[index].color }"> |
| | | {{ Math.abs(item.yoyEnery) }}% |
| | | <el-icon v-if="!!item.yoyEnery" :color="item.yoyEnery > 0 |
| | | ? 'green' |
| | | : item.yoyEnery < 0 |
| | | ? 'red' |
| | | : '' |
| | | "> |
| | | <el-icon v-if="!!item.yoyEnery" :color="item.yoyEnery > 0 ? 'green' : item.yoyEnery < 0 ? 'red' : ''"> |
| | | <Top v-if="item.yoyEnery > 0" /> |
| | | <Bottom v-if="item.yoyEnery < 0" /> |
| | | </el-icon> |
| | |
| | | </div> |
| | | </template> |
| | | <script setup name="carbonEmission"> |
| | | import { |
| | | listUpCarbonemission, |
| | | listMiddleCarbonemission, |
| | | } from "@/api/carbonemission/carbonemission"; |
| | | import * as echarts from "echarts"; |
| | | const { proxy } = getCurrentInstance(); |
| | | import { useRoute } from "vue-router"; |
| | | const { period } = proxy.useDict("period"); |
| | | import useSettingsStore from "@/store/modules/settings"; |
| | | const settingsStore = useSettingsStore(); |
| | | import { listUpCarbonemission, listMiddleCarbonemission } from "@/api/carbonemission/carbonemission" |
| | | import * as echarts from "echarts" |
| | | const { proxy } = getCurrentInstance() |
| | | import { useRoute } from "vue-router" |
| | | const { period } = proxy.useDict("period") |
| | | import useSettingsStore from "@/store/modules/settings" |
| | | const settingsStore = useSettingsStore() |
| | | watch( |
| | | () => settingsStore.sideTheme, |
| | | (val) => { |
| | | getList(); |
| | | getList() |
| | | } |
| | | ); |
| | | const loading = ref(false); |
| | | const dialogVisible = ref(false); |
| | | import icon1 from "@/assets/images/period/icon1.png"; |
| | | import icon2 from "@/assets/images/period/icon2.png"; |
| | | import icon3 from "@/assets/images/period/icon3.png"; |
| | | import icon4 from "@/assets/images/period/icon4.png"; |
| | | import icon5 from "@/assets/images/period/icon5.png"; |
| | | ) |
| | | const loading = ref(false) |
| | | const dialogVisible = ref(false) |
| | | import icon1 from "@/assets/images/period/icon1.png" |
| | | import icon2 from "@/assets/images/period/icon2.png" |
| | | import icon3 from "@/assets/images/period/icon3.png" |
| | | import icon4 from "@/assets/images/period/icon4.png" |
| | | import icon5 from "@/assets/images/period/icon5.png" |
| | | const bgList = ref([ |
| | | { |
| | | icon: icon1, |
| | |
| | | icon: icon5, |
| | | color: "#78e801", |
| | | }, |
| | | ]); |
| | | const listTop = ref([]); |
| | | const listBottom = ref([]); |
| | | ]) |
| | | const listTop = ref([]) |
| | | const listBottom = ref([]) |
| | | const data = reactive({ |
| | | queryParams: { |
| | | nodeId: null, |
| | |
| | | dataTime: null, |
| | | }, |
| | | query: { ...useRoute().query }, |
| | | }); |
| | | const { queryParams, query } = toRefs(data); |
| | | }) |
| | | const { queryParams, query } = toRefs(data) |
| | | /** èç¹åå»äºä»¶ */ |
| | | function handleNodeClick(data) { |
| | | queryParams.value.nodeId = data.id; |
| | | queryParams.value.nodeName = data.label; |
| | | handleTimeType(period.value[0].value); |
| | | handleQuery(); |
| | | queryParams.value.nodeId = data.id |
| | | queryParams.value.nodeName = data.label |
| | | handleTimeType(period.value[0].value) |
| | | handleQuery() |
| | | } |
| | | function handleTimeType(e) { |
| | | queryParams.value.timeType = e; |
| | | queryParams.value.dataTime = proxy.dayjs(new Date()).format("YYYY-MM-DD"); |
| | | queryParams.value.timeType = e |
| | | queryParams.value.dataTime = proxy.dayjs(new Date()).format("YYYY-MM-DD") |
| | | } |
| | | // ç¢³ææ¾ç®¡ç-ç¢³ææ¾éæ ¸ç®-å表 |
| | | function getList() { |
| | | loading.value = true; |
| | | listTop.value = []; |
| | | loading.value = true |
| | | listTop.value = [] |
| | | listUpCarbonemission( |
| | | proxy.addDateRange({ |
| | | ...queryParams.value, |
| | |
| | | ).then((res) => { |
| | | res.data.upData.map((item, index) => { |
| | | if (index % 5 === 0) { |
| | | listTop.value.push(res.data.upData.slice(index, index + 5)); |
| | | listTop.value.push(res.data.upData.slice(index, index + 5)) |
| | | } |
| | | }); |
| | | }); |
| | | }) |
| | | }) |
| | | // å¨åå§åä¹åï¼å
disposeæ§çå®ä¾ |
| | | if (echarts.getInstanceByDom(document.getElementById("Chart1"))) { |
| | | echarts.dispose(document.getElementById("Chart1")); |
| | | echarts.dispose(document.getElementById("Chart1")) |
| | | } |
| | | const myChart1 = echarts.init(document.getElementById("Chart1")); |
| | | const myChart1 = echarts.init(document.getElementById("Chart1")) |
| | | listMiddleCarbonemission( |
| | | proxy.addDateRange({ |
| | | emissionType: "allType", |
| | |
| | | }) |
| | | ).then((res) => { |
| | | if (!!res.code && res.code == 200) { |
| | | loading.value = false; |
| | | let xaxis = []; |
| | | let yaxis = []; |
| | | let yoy = []; |
| | | let qoq = []; |
| | | loading.value = false |
| | | let xaxis = [] |
| | | let yaxis = [] |
| | | let yoy = [] |
| | | let qoq = [] |
| | | if (!!res.data) { |
| | | res.data.map((item) => { |
| | | xaxis.push(item.xaxis); |
| | | yaxis.push(!!item.yaxis ? item.yaxis : 0); |
| | | yoy.push(!!item.yoy ? item.yoy : 0); |
| | | qoq.push(!!item.qoq ? item.qoq : 0); |
| | | }); |
| | | listBottom.value = res.data; |
| | | xaxis.push(item.xaxis) |
| | | yaxis.push(!!item.yaxis ? item.yaxis : 0) |
| | | yoy.push(!!item.yoy ? item.yoy : 0) |
| | | qoq.push(!!item.qoq ? item.qoq : 0) |
| | | }) |
| | | listBottom.value = res.data |
| | | } |
| | | setTimeout(() => { |
| | | myChart1.setOption({ |
| | |
| | | type: "shadow", |
| | | textStyle: { |
| | | fontSize: 14, |
| | | color: |
| | | settingsStore.sideTheme == "theme-dark" |
| | | ? "#FFFFFF" |
| | | : "#222222", |
| | | color: settingsStore.sideTheme == "theme-dark" ? "#FFFFFF" : "#222222", |
| | | }, |
| | | }, |
| | | }, |
| | |
| | | itemWidth: 14, |
| | | itemHeight: 10, |
| | | textStyle: { |
| | | color: |
| | | settingsStore.sideTheme == "theme-dark" ? "#FFFFFF" : "#222222", |
| | | color: settingsStore.sideTheme == "theme-dark" ? "#FFFFFF" : "#222222", |
| | | }, |
| | | }, |
| | | xAxis: { |
| | |
| | | axisLine: { |
| | | show: true, |
| | | lineStyle: { |
| | | color: |
| | | settingsStore.sideTheme == "theme-dark" |
| | | ? "#FFFFFF" |
| | | : "#222222", |
| | | color: settingsStore.sideTheme == "theme-dark" ? "#FFFFFF" : "#222222", |
| | | }, |
| | | }, |
| | | axisTick: { |
| | |
| | | show: false, |
| | | }, |
| | | axisLabel: { |
| | | color: |
| | | settingsStore.sideTheme == "theme-dark" ? "#FFFFFF" : "#222222", |
| | | color: settingsStore.sideTheme == "theme-dark" ? "#FFFFFF" : "#222222", |
| | | fontSize: 14, |
| | | padding: [5, 0, 0, 0], |
| | | // formatter: '{value} ml' |
| | |
| | | name: "tCOâe", |
| | | type: "value", |
| | | nameTextStyle: { |
| | | color: |
| | | settingsStore.sideTheme == "theme-dark" |
| | | ? "#FFFFFF" |
| | | : "#222222", |
| | | color: settingsStore.sideTheme == "theme-dark" ? "#FFFFFF" : "#222222", |
| | | fontSize: 14, |
| | | padding: [0, 0, 5, 0], |
| | | }, |
| | |
| | | show: true, |
| | | lineStyle: { |
| | | type: "dashed", |
| | | color: |
| | | settingsStore.sideTheme == "theme-dark" |
| | | ? "#FFFFFF" |
| | | : "#222222", |
| | | color: settingsStore.sideTheme == "theme-dark" ? "#FFFFFF" : "#222222", |
| | | }, |
| | | }, |
| | | axisTick: { |
| | |
| | | show: false, |
| | | }, |
| | | axisLabel: { |
| | | color: |
| | | settingsStore.sideTheme == "theme-dark" |
| | | ? "#FFFFFF" |
| | | : "#222222", |
| | | color: settingsStore.sideTheme == "theme-dark" ? "#FFFFFF" : "#222222", |
| | | fontSize: 14, |
| | | }, |
| | | }, |
| | |
| | | name: "%", |
| | | alignTicks: true, |
| | | nameTextStyle: { |
| | | color: |
| | | settingsStore.sideTheme == "theme-dark" |
| | | ? "#FFFFFF" |
| | | : "#222222", |
| | | color: settingsStore.sideTheme == "theme-dark" ? "#FFFFFF" : "#222222", |
| | | fontSize: 14, |
| | | padding: [0, 0, 5, 0], |
| | | }, |
| | |
| | | show: true, |
| | | lineStyle: { |
| | | type: "dashed", |
| | | color: |
| | | settingsStore.sideTheme == "theme-dark" |
| | | ? "#FFFFFF" |
| | | : "#222222", |
| | | color: settingsStore.sideTheme == "theme-dark" ? "#FFFFFF" : "#222222", |
| | | }, |
| | | }, |
| | | splitArea: { |
| | | show: false, |
| | | }, |
| | | axisLabel: { |
| | | color: |
| | | settingsStore.sideTheme == "theme-dark" |
| | | ? "#FFFFFF" |
| | | : "#222222", |
| | | color: settingsStore.sideTheme == "theme-dark" ? "#FFFFFF" : "#222222", |
| | | fontSize: 14, |
| | | }, |
| | | }, |
| | |
| | | { |
| | | name: "ç¢³ææ¾é", |
| | | type: "bar", |
| | | barWidth: "27", |
| | | barWidth: "12", |
| | | itemStyle: { |
| | | borderRadius: [15, 15, 0, 0], |
| | | }, |
| | |
| | | data: qoq, |
| | | }, |
| | | ], |
| | | }); |
| | | }, 100); |
| | | }) |
| | | }, 100) |
| | | window.addEventListener( |
| | | "resize", |
| | | () => { |
| | | myChart1.resize(); |
| | | myChart1.resize() |
| | | }, |
| | | { passive: true } |
| | | ); |
| | | ) |
| | | } |
| | | }); |
| | | }) |
| | | } |
| | | // ç¢³ææ¾ç®¡ç-ç¢³ææ¾éæ ¸ç®-æç´¢ |
| | | function handleQuery() { |
| | | getList(); |
| | | getList() |
| | | } |
| | | // ç¢³ææ¾ç®¡ç-ç¢³ææ¾éæ ¸ç®-éç½® |
| | | function resetQuery() { |
| | | proxy.resetForm("queryRef"); |
| | | queryParams.value.timeType = null; |
| | | queryParams.value.dataTime = null; |
| | | handleTimeType(period.value[0].value); |
| | | handleQuery(); |
| | | proxy.resetForm("queryRef") |
| | | queryParams.value.timeType = null |
| | | queryParams.value.dataTime = null |
| | | handleTimeType(period.value[0].value) |
| | | handleQuery() |
| | | } |
| | | // ç¢³ææ¾ç®¡ç-ç¢³ææ¾éæ ¸ç®-å¯¼åº |
| | | function handleExport() { |
| | |
| | | ...query.value, |
| | | }, |
| | | `${queryParams.value.nodeName}-ç¢³ææ¾éæ ¸ç®_${new Date().getTime()}.xlsx` |
| | | ); |
| | | ) |
| | | } |
| | | </script> |
| | | <style scoped lang="scss"> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <div class="chart-box"> |
| | | <div id="ChartDom" style="width: 100%; height: 100%"></div> |
| | | </div> |
| | | </template> |
| | | |
| | | <script setup> |
| | | import * as echarts from "echarts" |
| | | const { proxy } = getCurrentInstance() |
| | | import useSettingsStore from "@/store/modules/settings" |
| | | const settingsStore = useSettingsStore() |
| | | const emit = defineEmits() |
| | | const props = defineProps({ |
| | | chartData: { |
| | | type: Object, |
| | | default: () => {}, |
| | | }, |
| | | }) |
| | | |
| | | watch( |
| | | () => props.chartData, |
| | | (val) => { |
| | | console.log("watch", val) |
| | | initChart() |
| | | } |
| | | ) |
| | | watch( |
| | | () => settingsStore.sideTheme, |
| | | (val) => { |
| | | initChart() |
| | | } |
| | | ) |
| | | |
| | | function initChart(value) { |
| | | const chartDom = document.getElementById("ChartDom") |
| | | if (echarts.getInstanceByDom(chartDom)) { |
| | | echarts.dispose(chartDom) |
| | | } |
| | | const myChart = echarts.init(chartDom) |
| | | let option = { |
| | | title: { |
| | | text: props.chartData.title, |
| | | left: "40", |
| | | textStyle: { |
| | | color: "#2979ff", |
| | | }, |
| | | }, |
| | | color: ["#2979ff", "#19be6b", "#ff9900", "#fa3534"], |
| | | tooltip: { |
| | | trigger: "axis", |
| | | axisPointer: { |
| | | type: "shadow", |
| | | }, |
| | | }, |
| | | legend: { |
| | | icon: "rect", |
| | | itemWidth: 14, |
| | | itemHeight: 10, |
| | | textStyle: { |
| | | color: settingsStore.sideTheme == "theme-dark" ? "#FFFFFF" : "#222222", |
| | | }, |
| | | }, |
| | | grid: { |
| | | top: "40", |
| | | left: "50", |
| | | right: "40", |
| | | bottom: "20", |
| | | containLabel: true, |
| | | }, |
| | | xAxis: { |
| | | type: "category", |
| | | axisPointer: { |
| | | type: "shadow", |
| | | }, |
| | | axisLine: { |
| | | show: true, |
| | | lineStyle: { |
| | | color: settingsStore.sideTheme == "theme-dark" ? "#FFFFFF" : "#222222", |
| | | }, |
| | | }, |
| | | axisTick: { |
| | | show: false, |
| | | }, |
| | | splitArea: { |
| | | show: false, |
| | | }, |
| | | splitLine: { |
| | | show: false, |
| | | }, |
| | | axisLabel: { |
| | | color: settingsStore.sideTheme == "theme-dark" ? "#FFFFFF" : "#222222", |
| | | fontSize: 14, |
| | | padding: [5, 0, 0, 0], |
| | | // formatter: '{value} ml' |
| | | }, |
| | | data: props.chartData.xData, |
| | | }, |
| | | yAxis: [ |
| | | { |
| | | type: "value", |
| | | nameTextStyle: { |
| | | color: settingsStore.sideTheme == "theme-dark" ? "#FFFFFF" : "#222222", |
| | | fontSize: 14, |
| | | padding: [0, 0, 5, 0], |
| | | }, |
| | | axisLine: { |
| | | show: false, |
| | | }, |
| | | splitLine: { |
| | | show: true, |
| | | lineStyle: { |
| | | type: "dashed", |
| | | color: settingsStore.sideTheme == "theme-dark" ? "#FFFFFF" : "#222222", |
| | | }, |
| | | }, |
| | | axisTick: { |
| | | show: false, |
| | | }, |
| | | splitArea: { |
| | | show: false, |
| | | }, |
| | | axisLabel: { |
| | | color: settingsStore.sideTheme == "theme-dark" ? "#FFFFFF" : "#222222", |
| | | fontSize: 14, |
| | | }, |
| | | }, |
| | | ], |
| | | series: [ |
| | | { |
| | | name: props.chartData.title, |
| | | type: "bar", |
| | | barWidth: "16", |
| | | // tooltip: { |
| | | // valueFormatter: function (value) { |
| | | // return value + "tce" |
| | | // }, |
| | | // }, |
| | | itemStyle: { |
| | | borderRadius: [15, 15, 0, 0], |
| | | }, |
| | | data: props.chartData.yData, |
| | | markPoint: { |
| | | data: [ |
| | | { type: "max", name: "Max" }, |
| | | { type: "min", name: "Min" }, |
| | | ], |
| | | }, |
| | | }, |
| | | ], |
| | | } |
| | | setTimeout(() => { |
| | | myChart.setOption(option) |
| | | }, 200) |
| | | |
| | | window.addEventListener( |
| | | "resize", |
| | | () => { |
| | | myChart.resize() |
| | | }, |
| | | { passive: true } |
| | | ) |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | .chart-box { |
| | | width: 100%; |
| | | height: 400px; |
| | | border: 1px solid #eaeaea; |
| | | margin-top: 20px; |
| | | padding-top: 20px; |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <div class="page"> |
| | | <div class="form-card"> |
| | | <el-form :model="queryParams" ref="queryRef" :inline="true" label-width="68px"> |
| | | <el-form-item label="è½æºç±»å" prop="energyType"> |
| | | <el-select v-model="queryParams.energyType" placeholder="è¯·éæ©è½æºç±»å"> |
| | | <el-option |
| | | :label="item.enername" |
| | | :value="item.enersno" |
| | | v-for="item in energyTypeList" |
| | | :key="item.enersno" |
| | | /> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="ç»è®¡æ¶é´"> |
| | | <el-date-picker |
| | | v-model="queryParams.dataTime" |
| | | type="date" |
| | | format="YYYY-MM-DD" |
| | | value-format="YYYY-MM-DD" |
| | | placeholder="éæ©æ¥æ" |
| | | style="width: 100%" |
| | | :clearable="false" |
| | | /> |
| | | </el-form-item> |
| | | <el-form-item> |
| | | <el-button type="primary" icon="Search" @click="handleQuery">æç´¢</el-button> |
| | | <el-button icon="Refresh" @click="resetQuery">éç½®</el-button> |
| | | </el-form-item> |
| | | <!-- <el-form-item> |
| | | <el-button type="warning" icon="Download" @click="handleExport"> å¯¼åº </el-button> |
| | | </el-form-item> --> |
| | | </el-form> |
| | | </div> |
| | | |
| | | <div class="table-bg-style"> |
| | | <div class="table-box"> |
| | | <el-table :data="energyList" v-loading="loading" border max-height="380px"> |
| | | <el-table-column fixed prop="indexName" label="ææ åç§°" width="210px"> |
| | | <template #default="scope"> |
| | | <div style="width: 100%; text-align: left"> |
| | | <el-button |
| | | v-if="scope.row.indexId == queryParams.indexId" |
| | | icon="search" |
| | | circle |
| | | @click="selectChange(scope.row)" |
| | | style="color: #fff; background: #409eff; margin-right: 8px" |
| | | ></el-button> |
| | | <el-button |
| | | v-else |
| | | icon="search" |
| | | circle |
| | | @click="selectChange(scope.row)" |
| | | style="margin-right: 8px" |
| | | ></el-button> |
| | | <el-tooltip |
| | | v-if="scope.row.indexName.length > 9" |
| | | class="item" |
| | | effect="dark" |
| | | :content="scope.row.indexName" |
| | | placement="top-end" |
| | | > |
| | | <span> |
| | | {{ scope.row.indexName.substr(0, 9) + "..." }} |
| | | </span> |
| | | </el-tooltip> |
| | | <span v-else>{{ scope.row.indexName }}</span> |
| | | </div> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column v-for="index in 24" :key="index" :label="index - 1 + 'æ¶'" align="center" min-width="100"> |
| | | <template #default="scope">{{ numFilter(scope.row[`value${index - 1}`]) }}</template> |
| | | </el-table-column> |
| | | </el-table> |
| | | |
| | | <div> |
| | | <line-chart ref="LineChartRef" :chartData="lineChartData" /> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | |
| | | <script setup> |
| | | import { |
| | | getDataList, |
| | | getlistChart, |
| | | exportList, |
| | | } from "@/api/comprehensiveStatistics/dailyComprehensive/dailyComprehensive" |
| | | import { listEnergyTypeList } from "@/api/modelConfiguration/energyType" |
| | | import LineChart from "../comps/LineChart.vue" |
| | | let { proxy } = getCurrentInstance() |
| | | const energyTypeList = ref() |
| | | function getEnergyTypeList() { |
| | | listEnergyTypeList().then((res) => { |
| | | energyTypeList.value = res.data |
| | | // form.value.indexType = alarm_record_category.value[0].value |
| | | // form.value.energyType = energyTypeList.value[0].enersno |
| | | getList() |
| | | }) |
| | | } |
| | | getEnergyTypeList() |
| | | function numFilter(value) { |
| | | // æªåå½åæ°æ®å°å°æ°ç¹åçå ä½ |
| | | let realVal = "" |
| | | if (!isNaN(value) && value !== "" && value !== null) { |
| | | realVal = parseFloat(value).toFixed(2) |
| | | } else { |
| | | realVal = "--" |
| | | } |
| | | return realVal |
| | | } |
| | | let loading = ref(false) |
| | | let total = ref(0) |
| | | let queryParams = ref({ |
| | | indexStorageId: "", |
| | | indexCode: "", |
| | | pageNum: 1, |
| | | pageSize: 10, |
| | | dataTime: "", |
| | | }) |
| | | |
| | | const energyList = ref([]) |
| | | const lineChartData = ref({}) |
| | | function getList() { |
| | | queryParams.value.indexCode = proxy.$route.query.modelCode |
| | | getDataList({ |
| | | ...queryParams.value, |
| | | timeType: "HOUR", |
| | | }).then((response) => { |
| | | energyList.value = response.data |
| | | if (response.data && response.data.length !== 0) { |
| | | selectChange(response.data[0]) |
| | | } |
| | | }) |
| | | } |
| | | |
| | | const LineChartRef = ref() |
| | | function selectChange(row) { |
| | | queryParams.value.indexId = row ? row.indexId : undefined |
| | | queryParams.value.timeType = "HOUR" |
| | | getlistChart(queryParams.value).then((response) => { |
| | | let actualData = [] |
| | | let expectedData = [] |
| | | let title = "" |
| | | response.data.forEach((item) => { |
| | | expectedData.push(numFilter(item.value)) |
| | | actualData.push(item.timeCode.slice(item.timeCode.length - 2, item.timeCode.length) + "æ¶") |
| | | title = item.indexName + "(" + (item.unitId || "") + ")" |
| | | }) |
| | | |
| | | console.log(response) |
| | | console.log(actualData) |
| | | console.log(expectedData) |
| | | |
| | | lineChartData.value = { |
| | | // xData: [ |
| | | // "0æ¶", |
| | | // "1æ¶", |
| | | // "2æ¶", |
| | | // "3æ¶", |
| | | // "4æ¶", |
| | | // "5æ¶", |
| | | // "6æ¶", |
| | | // "7æ¶", |
| | | // "8æ¶", |
| | | // "9æ¶", |
| | | // "10æ¶", |
| | | // "11æ¶", |
| | | // "12æ¶", |
| | | // "13æ¶", |
| | | // "14æ¶", |
| | | // "15æ¶", |
| | | // "16æ¶", |
| | | // "17æ¶", |
| | | // "18æ¶", |
| | | // "19æ¶", |
| | | // "20æ¶", |
| | | // "21æ¶", |
| | | // "22æ¶", |
| | | // "23æ¶", |
| | | // ], |
| | | xData: actualData, |
| | | yData: expectedData, |
| | | title, |
| | | } |
| | | // LineChartRef.value.initChart() |
| | | // this.lineChartData.actualData = actualData; |
| | | // this.lineChartData.expectedData = expectedData; |
| | | // this.lineChartData.title = title; |
| | | // this.$refs.LineChart.initChart(this.lineChartData); |
| | | // this.$refs.BarChart.initChart(this.lineChartData); |
| | | }) |
| | | } |
| | | |
| | | function getTime() { |
| | | var date = new Date() |
| | | var year = date.getFullYear() |
| | | var month = date.getMonth() + 1 |
| | | var date = date.getDate() |
| | | month = month < 10 ? "0" + month : month |
| | | date = date < 10 ? "0" + date : date |
| | | queryParams.value.dataTime = year + "-" + month + "-" + date |
| | | } |
| | | getTime() |
| | | |
| | | // å¯¼åºæé®æä½ |
| | | function handleExport() { |
| | | exportList(queryParams.value).then((response) => { |
| | | console.log(response) |
| | | // download(response.msg); |
| | | }) |
| | | } |
| | | |
| | | function handleQuery() { |
| | | queryParams.value.pageNum = 1 |
| | | getList() |
| | | } |
| | | |
| | | function resetQuery() { |
| | | queryParams.value = { |
| | | limitName: "", |
| | | pageNum: 1, |
| | | pageSize: 10, |
| | | dataTime: null, |
| | | } |
| | | getTime() |
| | | getList() |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | @import "@/assets/styles/page.scss"; |
| | | |
| | | .header-box { |
| | | :deep .el-form-item__content { |
| | | color: #fff; |
| | | font-size: 16px; |
| | | } |
| | | } |
| | | |
| | | :deep .el-table--fit { |
| | | border-bottom: 1px solid #eaeaea; |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <div class="page"> |
| | | <div class="form-card"> |
| | | <el-form :model="queryParams" ref="queryRef" :inline="true" label-width="68px"> |
| | | <el-form-item label="è½æºç±»å" prop="energyType"> |
| | | <el-select v-model="queryParams.energyType" placeholder="è¯·éæ©è½æºç±»å"> |
| | | <el-option |
| | | :label="item.enername" |
| | | :value="item.enersno" |
| | | v-for="item in energyTypeList" |
| | | :key="item.enersno" |
| | | /> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="ç»è®¡æ¶é´"> |
| | | <el-date-picker |
| | | style="width: 100%" |
| | | v-model="queryParams.dataTime" |
| | | type="month" |
| | | :clearable="false" |
| | | value-format="yyyy-MM" |
| | | placeholder="éæ©æ¥æ" |
| | | > |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | <el-form-item> |
| | | <el-button type="primary" icon="Search" @click="handleQuery">æç´¢</el-button> |
| | | <el-button icon="Refresh" @click="resetQuery">éç½®</el-button> |
| | | </el-form-item> |
| | | <!-- <el-form-item> |
| | | <el-button type="warning" icon="Download" @click="handleExport"> å¯¼åº </el-button> |
| | | </el-form-item> --> |
| | | </el-form> |
| | | </div> |
| | | |
| | | <div class="table-bg-style"> |
| | | <div class="table-box"> |
| | | <el-table :data="energyList" v-loading="loading" border max-height="380px"> |
| | | <el-table-column fixed prop="indexName" label="ææ åç§°" width="210px"> |
| | | <template #default="scope"> |
| | | <div style="width: 100%; text-align: left"> |
| | | <el-button |
| | | v-if="scope.row.indexId == queryParams.indexId" |
| | | icon="search" |
| | | circle |
| | | @click="selectChange(scope.row)" |
| | | style="color: #fff; background: #409eff; margin-right: 8px" |
| | | ></el-button> |
| | | <el-button |
| | | v-else |
| | | icon="search" |
| | | circle |
| | | @click="selectChange(scope.row)" |
| | | style="margin-right: 8px" |
| | | ></el-button> |
| | | <el-tooltip |
| | | v-if="scope.row.indexName.length > 9" |
| | | class="item" |
| | | effect="dark" |
| | | :content="scope.row.indexName" |
| | | placement="top-end" |
| | | > |
| | | <span> |
| | | {{ scope.row.indexName.substr(0, 9) + "..." }} |
| | | </span> |
| | | </el-tooltip> |
| | | <span v-else>{{ scope.row.indexName }}</span> |
| | | </div> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column v-for="index in 31" :key="index" :label="index + 'æ¥'" align="center" min-width="100"> |
| | | <template #default="scope">{{ numFilter(scope.row[`value${index - 1}`]) }}</template> |
| | | </el-table-column> |
| | | </el-table> |
| | | |
| | | <div> |
| | | <line-chart ref="LineChartRef" :chartData="lineChartData" /> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | |
| | | <script setup> |
| | | import { getDataList, getlistChart } from "@/api/comprehensiveStatistics/monthlyComprehensive/monthlyComprehensive" |
| | | import { listEnergyTypeList } from "@/api/modelConfiguration/energyType" |
| | | import LineChart from "../comps/LineChart.vue" |
| | | let { proxy } = getCurrentInstance() |
| | | const energyTypeList = ref() |
| | | function getEnergyTypeList() { |
| | | listEnergyTypeList().then((res) => { |
| | | energyTypeList.value = res.data |
| | | // form.value.indexType = alarm_record_category.value[0].value |
| | | // form.value.energyType = energyTypeList.value[0].enersno |
| | | getList() |
| | | }) |
| | | } |
| | | getEnergyTypeList() |
| | | function numFilter(value) { |
| | | // æªåå½åæ°æ®å°å°æ°ç¹åçå ä½ |
| | | let realVal = "" |
| | | if (!isNaN(value) && value !== "" && value !== null) { |
| | | realVal = parseFloat(value).toFixed(2) |
| | | } else { |
| | | realVal = "--" |
| | | } |
| | | return realVal |
| | | } |
| | | let loading = ref(false) |
| | | let total = ref(0) |
| | | let queryParams = ref({ |
| | | indexStorageId: "", |
| | | indexCode: "", |
| | | pageNum: 1, |
| | | pageSize: 10, |
| | | dataTime: "", |
| | | timeType: "DAY", |
| | | }) |
| | | |
| | | const energyList = ref([]) |
| | | const lineChartData = ref({}) |
| | | function getList() { |
| | | queryParams.value.indexCode = proxy.$route.query.modelCode |
| | | getDataList({ |
| | | ...queryParams.value, |
| | | }).then((response) => { |
| | | energyList.value = response.data.tabledata |
| | | if (energyList.value && energyList.value.length !== 0) { |
| | | selectChange(energyList.value[0]) |
| | | } |
| | | }) |
| | | } |
| | | |
| | | const LineChartRef = ref() |
| | | function selectChange(row) { |
| | | queryParams.value.indexId = row ? row.indexId : undefined |
| | | getlistChart(queryParams.value).then((response) => { |
| | | let actualData = [] |
| | | let expectedData = [] |
| | | let title = "" |
| | | response.data.forEach((item) => { |
| | | expectedData.push(numFilter(item.value)) |
| | | actualData.push(item.timeCode.slice(item.timeCode.length - 2, item.timeCode.length) + "æ¥") |
| | | title = item.indexName + "(" + (item.unitId || "") + ")" |
| | | }) |
| | | |
| | | console.log(response) |
| | | console.log(actualData) |
| | | console.log(expectedData) |
| | | |
| | | lineChartData.value = { |
| | | // xData: [ |
| | | // "0æ¶", |
| | | // "1æ¶", |
| | | // "2æ¶", |
| | | // "3æ¶", |
| | | // "4æ¶", |
| | | // "5æ¶", |
| | | // "6æ¶", |
| | | // "7æ¶", |
| | | // "8æ¶", |
| | | // "9æ¶", |
| | | // "10æ¶", |
| | | // "11æ¶", |
| | | // "12æ¶", |
| | | // "13æ¶", |
| | | // "14æ¶", |
| | | // "15æ¶", |
| | | // "16æ¶", |
| | | // "17æ¶", |
| | | // "18æ¶", |
| | | // "19æ¶", |
| | | // "20æ¶", |
| | | // "21æ¶", |
| | | // "22æ¶", |
| | | // "23æ¶", |
| | | // ], |
| | | xData: actualData, |
| | | yData: expectedData, |
| | | title, |
| | | } |
| | | // LineChartRef.value.initChart() |
| | | // this.lineChartData.actualData = actualData; |
| | | // this.lineChartData.expectedData = expectedData; |
| | | // this.lineChartData.title = title; |
| | | // this.$refs.LineChart.initChart(this.lineChartData); |
| | | // this.$refs.BarChart.initChart(this.lineChartData); |
| | | }) |
| | | } |
| | | |
| | | function getTime() { |
| | | var date = new Date() |
| | | var year = date.getFullYear() |
| | | var month = date.getMonth() + 1 |
| | | var date = date.getDate() |
| | | month = month < 10 ? "0" + month : month |
| | | date = date < 10 ? "0" + date : date |
| | | queryParams.value.dataTime = year + "-" + month |
| | | } |
| | | getTime() |
| | | |
| | | // å¯¼åºæé®æä½ |
| | | function handleExport() { |
| | | exportList(queryParams.value).then((response) => { |
| | | console.log(response) |
| | | // download(response.msg); |
| | | }) |
| | | } |
| | | |
| | | function handleQuery() { |
| | | queryParams.value.pageNum = 1 |
| | | getList() |
| | | } |
| | | |
| | | function resetQuery() { |
| | | queryParams.value = { |
| | | limitName: "", |
| | | pageNum: 1, |
| | | pageSize: 10, |
| | | dataTime: null, |
| | | timeType: "DAY", |
| | | } |
| | | getTime() |
| | | getList() |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | @import "@/assets/styles/page.scss"; |
| | | |
| | | .header-box { |
| | | :deep .el-form-item__content { |
| | | color: #fff; |
| | | font-size: 16px; |
| | | } |
| | | } |
| | | |
| | | :deep .el-table--fit { |
| | | border-bottom: 1px solid #eaeaea; |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <div class="page"> |
| | | <div class="form-card"> |
| | | <el-form :model="queryParams" ref="queryRef" :inline="true" label-width="68px"> |
| | | <el-form-item label="è½æºç±»å" prop="energyType"> |
| | | <el-select v-model="queryParams.energyType" placeholder="è¯·éæ©è½æºç±»å"> |
| | | <el-option |
| | | :label="item.enername" |
| | | :value="item.enersno" |
| | | v-for="item in energyTypeList" |
| | | :key="item.enersno" |
| | | /> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="ç»è®¡æ¶é´"> |
| | | <el-date-picker |
| | | style="width: 100%" |
| | | v-model="queryParams.dataTime" |
| | | type="year" |
| | | :clearable="false" |
| | | value-format="YYYY" |
| | | placeholder="éæ©æ¥æ" |
| | | > |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | <el-form-item> |
| | | <el-button type="primary" icon="Search" @click="handleQuery">æç´¢</el-button> |
| | | <el-button icon="Refresh" @click="resetQuery">éç½®</el-button> |
| | | </el-form-item> |
| | | <!-- <el-form-item> |
| | | <el-button type="warning" icon="Download" @click="handleExport"> å¯¼åº </el-button> |
| | | </el-form-item> --> |
| | | </el-form> |
| | | </div> |
| | | |
| | | <div class="table-bg-style"> |
| | | <div class="table-box"> |
| | | <el-table :data="energyList" v-loading="loading" border max-height="380px"> |
| | | <el-table-column fixed prop="indexName" label="ææ åç§°" width="210px"> |
| | | <template #default="scope"> |
| | | <div style="width: 100%; text-align: left"> |
| | | <el-button |
| | | v-if="scope.row.indexId == queryParams.indexId" |
| | | icon="search" |
| | | circle |
| | | @click="selectChange(scope.row)" |
| | | style="color: #fff; background: #409eff; margin-right: 8px" |
| | | ></el-button> |
| | | <el-button |
| | | v-else |
| | | icon="search" |
| | | circle |
| | | @click="selectChange(scope.row)" |
| | | style="margin-right: 8px" |
| | | ></el-button> |
| | | <el-tooltip |
| | | v-if="scope.row.indexName.length > 9" |
| | | class="item" |
| | | effect="dark" |
| | | :content="scope.row.indexName" |
| | | placement="top-end" |
| | | > |
| | | <span> |
| | | {{ scope.row.indexName.substr(0, 9) + "..." }} |
| | | </span> |
| | | </el-tooltip> |
| | | <span v-else>{{ scope.row.indexName }}</span> |
| | | </div> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column v-for="index in 12" :key="index" :label="index + 'æ'" align="center" min-width="100"> |
| | | <template #default="scope">{{ numFilter(scope.row[`value${index - 1}`]) }}</template> |
| | | </el-table-column> |
| | | </el-table> |
| | | |
| | | <div> |
| | | <line-chart ref="LineChartRef" :chartData="lineChartData" /> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | |
| | | <script setup> |
| | | import { getDataList, getlistChart } from "@/api/comprehensiveStatistics/yearComprehensive/yearComprehensive" |
| | | import { listEnergyTypeList } from "@/api/modelConfiguration/energyType" |
| | | import LineChart from "../comps/LineChart.vue" |
| | | let { proxy } = getCurrentInstance() |
| | | const energyTypeList = ref() |
| | | function getEnergyTypeList() { |
| | | listEnergyTypeList().then((res) => { |
| | | energyTypeList.value = res.data |
| | | // form.value.indexType = alarm_record_category.value[0].value |
| | | // form.value.energyType = energyTypeList.value[0].enersno |
| | | getList() |
| | | }) |
| | | } |
| | | getEnergyTypeList() |
| | | function numFilter(value) { |
| | | // æªåå½åæ°æ®å°å°æ°ç¹åçå ä½ |
| | | let realVal = "" |
| | | if (!isNaN(value) && value !== "" && value !== null) { |
| | | realVal = parseFloat(value).toFixed(2) |
| | | } else { |
| | | realVal = "--" |
| | | } |
| | | return realVal |
| | | } |
| | | let loading = ref(false) |
| | | let queryParams = ref({ |
| | | indexStorageId: "", |
| | | indexCode: "", |
| | | pageNum: 1, |
| | | pageSize: 10, |
| | | dataTime: "2025-01-0", |
| | | timeType: "MONTH", |
| | | }) |
| | | |
| | | const energyList = ref([]) |
| | | const lineChartData = ref({}) |
| | | function getList() { |
| | | queryParams.value.indexCode = proxy.$route.query.modelCode |
| | | getDataList({ |
| | | ...queryParams.value, |
| | | dataTime: queryParams.value.dataTime ? queryParams.value.dataTime + "-01" : "", |
| | | }).then((response) => { |
| | | energyList.value = response.data |
| | | if (response.data && response.data.length !== 0) { |
| | | selectChange(response.data[0]) |
| | | } |
| | | }) |
| | | } |
| | | |
| | | const LineChartRef = ref() |
| | | function selectChange(row) { |
| | | queryParams.value.indexId = row ? row.indexId : undefined |
| | | getlistChart({ |
| | | ...queryParams.value, |
| | | dataTime: queryParams.value.dataTime ? queryParams.value.dataTime + "-01" : "", |
| | | }).then((response) => { |
| | | let actualData = [] |
| | | let expectedData = [] |
| | | let title = "" |
| | | response.data.forEach((item) => { |
| | | expectedData.push(numFilter(item.value)) |
| | | actualData.push(item.timeCode.slice(item.timeCode.length - 2, item.timeCode.length) + "æ¶") |
| | | title = item.indexName + "(" + (item.unitId || "") + ")" |
| | | }) |
| | | |
| | | console.log(response) |
| | | console.log(actualData) |
| | | console.log(expectedData) |
| | | |
| | | lineChartData.value = { |
| | | // xData: [ |
| | | // "0æ¶", |
| | | // "1æ¶", |
| | | // "2æ¶", |
| | | // "3æ¶", |
| | | // "4æ¶", |
| | | // "5æ¶", |
| | | // "6æ¶", |
| | | // "7æ¶", |
| | | // "8æ¶", |
| | | // "9æ¶", |
| | | // "10æ¶", |
| | | // "11æ¶", |
| | | // "12æ¶", |
| | | // "13æ¶", |
| | | // "14æ¶", |
| | | // "15æ¶", |
| | | // "16æ¶", |
| | | // "17æ¶", |
| | | // "18æ¶", |
| | | // "19æ¶", |
| | | // "20æ¶", |
| | | // "21æ¶", |
| | | // "22æ¶", |
| | | // "23æ¶", |
| | | // ], |
| | | xData: actualData, |
| | | yData: expectedData, |
| | | title, |
| | | } |
| | | // LineChartRef.value.initChart() |
| | | // this.lineChartData.actualData = actualData; |
| | | // this.lineChartData.expectedData = expectedData; |
| | | // this.lineChartData.title = title; |
| | | // this.$refs.LineChart.initChart(this.lineChartData); |
| | | // this.$refs.BarChart.initChart(this.lineChartData); |
| | | }) |
| | | } |
| | | |
| | | function getTime() { |
| | | var date = new Date() |
| | | var year = date.getFullYear() |
| | | var month = date.getMonth() + 1 |
| | | var date = date.getDate() |
| | | month = month < 10 ? "0" + month : month |
| | | date = date < 10 ? "0" + date : date |
| | | queryParams.value.dataTime = year + "" |
| | | } |
| | | |
| | | // å¯¼åºæé®æä½ |
| | | function handleExport() { |
| | | exportList(queryParams.value).then((response) => { |
| | | console.log(response) |
| | | // download(response.msg); |
| | | }) |
| | | } |
| | | |
| | | function handleQuery() { |
| | | queryParams.value.pageNum = 1 |
| | | getList() |
| | | } |
| | | |
| | | function resetQuery() { |
| | | queryParams.value = { |
| | | limitName: "", |
| | | pageNum: 1, |
| | | pageSize: 10, |
| | | dataTime: null, |
| | | timeType: "MONTH", |
| | | } |
| | | getTime() |
| | | getList() |
| | | } |
| | | |
| | | getTime() |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | @import "@/assets/styles/page.scss"; |
| | | |
| | | .header-box { |
| | | :deep .el-form-item__content { |
| | | color: #fff; |
| | | font-size: 16px; |
| | | } |
| | | } |
| | | |
| | | :deep .el-table--fit { |
| | | border-bottom: 1px solid #eaeaea; |
| | | } |
| | | </style> |
| | |
| | | </div> |
| | | <div class="page-container-right"> |
| | | <div class="form-card"> |
| | | <el-form |
| | | :model="queryParams" |
| | | ref="queryRef" |
| | | :inline="true" |
| | | > |
| | | <el-form :model="queryParams" ref="queryRef" :inline="true"> |
| | | <el-form-item label="æ¶é´" prop="queryTime"> |
| | | <el-date-picker |
| | | v-model="queryParams.queryTime" |
| | |
| | | /> |
| | | </el-form-item> |
| | | <el-form-item> |
| | | <el-button type="primary" icon="Search" @click="handleQuery"> |
| | | æç´¢ |
| | | </el-button> |
| | | <el-button type="primary" icon="Search" @click="handleQuery"> æç´¢ </el-button> |
| | | <el-button icon="Refresh" @click="resetQuery">éç½®</el-button> |
| | | </el-form-item> |
| | | </el-form> |
| | | </div> |
| | | <div |
| | | style=" |
| | | height: calc(100vh - 205px) !important; |
| | | max-height: calc(100vh - 205px) !important; |
| | | overflow-y: auto; |
| | | " |
| | | style="height: calc(100vh - 205px) !important; max-height: calc(100vh - 205px) !important; overflow-y: auto" |
| | | v-loading="loading" |
| | | > |
| | | <div class="card-list"> |
| | | <div |
| | | class="card-list-item" |
| | | v-for="item in periodList" |
| | | :key="item.title" |
| | | > |
| | | <div class="card-list-item" v-for="item in periodList" :key="item.title"> |
| | | <div class="item-top"> |
| | | <div |
| | | class="icon" |
| | | :style="{ backgroundImage: 'url(' + item.icon + ')' }" |
| | | ></div> |
| | | <div class="icon" :style="{ backgroundImage: 'url(' + item.icon + ')' }"></div> |
| | | <div class="name">{{ item.title }}</div> |
| | | </div> |
| | | <div |
| | | class="item-bottom" |
| | | v-for="(node, nodeIndex) in item.data" |
| | | :key="nodeIndex" |
| | | > |
| | | <div class="item-bottom" v-for="(node, nodeIndex) in item.data" :key="nodeIndex"> |
| | | <div class="bottom-left">{{ node.label }}</div> |
| | | <div class="bottom-right" :style="{ color: item.color }"> |
| | | {{ node.value }} |
| | |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <BaseCard :title="queryParams.nodeName+'-å°å³°å¹³è°·çµéå¾'"> |
| | | <BaseCard :title="queryParams.nodeName + '-å°å³°å¹³è°·çµéå¾'"> |
| | | <div class="chart-box"> |
| | | <div id="Chart1" /> |
| | | </div> |
| | | </BaseCard> |
| | | <BaseCard :title="queryParams.nodeName+'-å°å³°å¹³è°·çµè´¹å¾'"> |
| | | <BaseCard :title="queryParams.nodeName + '-å°å³°å¹³è°·çµè´¹å¾'"> |
| | | <div class="chart-box"> |
| | | <div id="Chart2" /> |
| | | </div> |
| | |
| | | </div> |
| | | </template> |
| | | <script setup name="period"> |
| | | import { listPeriod } from "@/api/peakValley/period"; |
| | | import * as echarts from "echarts"; |
| | | const { proxy } = getCurrentInstance(); |
| | | import { useRoute } from "vue-router"; |
| | | import useSettingsStore from "@/store/modules/settings"; |
| | | const settingsStore = useSettingsStore(); |
| | | import { listPeriod } from "@/api/peakValley/period" |
| | | import * as echarts from "echarts" |
| | | const { proxy } = getCurrentInstance() |
| | | import { useRoute } from "vue-router" |
| | | import useSettingsStore from "@/store/modules/settings" |
| | | const settingsStore = useSettingsStore() |
| | | watch( |
| | | () => settingsStore.sideTheme, |
| | | (val) => { |
| | | getList(); |
| | | getList() |
| | | } |
| | | ); |
| | | const loading = ref(false); |
| | | import icon1 from "@/assets/images/period/icon1.png"; |
| | | import icon2 from "@/assets/images/period/icon2.png"; |
| | | import icon3 from "@/assets/images/period/icon3.png"; |
| | | import icon4 from "@/assets/images/period/icon4.png"; |
| | | import icon5 from "@/assets/images/period/icon5.png"; |
| | | ) |
| | | const loading = ref(false) |
| | | import icon1 from "@/assets/images/period/icon1.png" |
| | | import icon2 from "@/assets/images/period/icon2.png" |
| | | import icon3 from "@/assets/images/period/icon3.png" |
| | | import icon4 from "@/assets/images/period/icon4.png" |
| | | import icon5 from "@/assets/images/period/icon5.png" |
| | | const periodList = ref([ |
| | | { |
| | | icon: icon1, |
| | |
| | | }, |
| | | ], |
| | | }, |
| | | ]); |
| | | ]) |
| | | const data = reactive({ |
| | | queryParams: { |
| | | nodeId: null, |
| | |
| | | queryTime: null, |
| | | }, |
| | | query: { ...useRoute().query }, |
| | | }); |
| | | const { queryParams, query } = toRefs(data); |
| | | }) |
| | | const { queryParams, query } = toRefs(data) |
| | | /** èç¹åå»äºä»¶ */ |
| | | function handleNodeClick(data) { |
| | | queryParams.value.nodeId = data.id; |
| | | queryParams.value.nodeName = data.label; |
| | | queryParams.value.queryTime = proxy.dayjs(new Date()).format("YYYY-MM"); |
| | | handleQuery(); |
| | | queryParams.value.nodeId = data.id |
| | | queryParams.value.nodeName = data.label |
| | | queryParams.value.queryTime = proxy.dayjs(new Date()).format("YYYY-MM") |
| | | handleQuery() |
| | | } |
| | | // 峰平谷è½èåæ-å³°å¹³è°·æ¶æ®µç»è®¡-å表 |
| | | function getList() { |
| | | loading.value = true; |
| | | loading.value = true |
| | | listPeriod( |
| | | proxy.addDateRange({ |
| | | ...queryParams.value, |
| | | ...query.value, |
| | | }) |
| | | ).then((res) => { |
| | | loading.value = false; |
| | | loading.value = false |
| | | if (!!res.code && res.code == 200) { |
| | | if (!!res.data.totalVO) { |
| | | periodList.value[0].data[0].value = !!res.data.totalVO |
| | | .totalPowerConsumption |
| | | periodList.value[0].data[0].value = !!res.data.totalVO.totalPowerConsumption |
| | | ? res.data.totalVO.totalPowerConsumption |
| | | : 0; |
| | | periodList.value[0].data[1].value = !!res.data.totalVO.totalCost |
| | | ? res.data.totalVO.totalCost |
| | | : 0; |
| | | : 0 |
| | | periodList.value[0].data[1].value = !!res.data.totalVO.totalCost ? res.data.totalVO.totalCost : 0 |
| | | |
| | | periodList.value[1].data[0].value = !!res.data.totalVO |
| | | .tipPowerConsumption |
| | | periodList.value[1].data[0].value = !!res.data.totalVO.tipPowerConsumption |
| | | ? res.data.totalVO.tipPowerConsumption |
| | | : 0; |
| | | : 0 |
| | | periodList.value[1].data[1].value = |
| | | (!!res.data.totalVO.tipPowerProportion |
| | | ? res.data.totalVO.tipPowerProportion |
| | | : 0) + "%"; |
| | | periodList.value[1].data[2].value = !!res.data.totalVO.tipPowerCost |
| | | ? res.data.totalVO.tipPowerCost |
| | | : 0; |
| | | (!!res.data.totalVO.tipPowerProportion ? res.data.totalVO.tipPowerProportion : 0) + "%" |
| | | periodList.value[1].data[2].value = !!res.data.totalVO.tipPowerCost ? res.data.totalVO.tipPowerCost : 0 |
| | | periodList.value[1].data[3].value = |
| | | (!!res.data.totalVO.tipPowerCostProportion |
| | | ? res.data.totalVO.tipPowerCostProportion |
| | | : 0) + "%"; |
| | | (!!res.data.totalVO.tipPowerCostProportion ? res.data.totalVO.tipPowerCostProportion : 0) + "%" |
| | | |
| | | periodList.value[2].data[0].value = !!res.data.totalVO |
| | | .peakPowerConsumption |
| | | periodList.value[2].data[0].value = !!res.data.totalVO.peakPowerConsumption |
| | | ? res.data.totalVO.peakPowerConsumption |
| | | : 0; |
| | | : 0 |
| | | periodList.value[2].data[1].value = |
| | | (!!res.data.totalVO.peakPowerProportion |
| | | ? res.data.totalVO.peakPowerProportion |
| | | : 0) + "%"; |
| | | periodList.value[2].data[2].value = !!res.data.totalVO.peakPowerCost |
| | | ? res.data.totalVO.peakPowerCost |
| | | : 0; |
| | | (!!res.data.totalVO.peakPowerProportion ? res.data.totalVO.peakPowerProportion : 0) + "%" |
| | | periodList.value[2].data[2].value = !!res.data.totalVO.peakPowerCost ? res.data.totalVO.peakPowerCost : 0 |
| | | periodList.value[2].data[3].value = |
| | | (!!res.data.totalVO.peakPowerCostProportion |
| | | ? res.data.totalVO.peakPowerCostProportion |
| | | : 0) + "%"; |
| | | (!!res.data.totalVO.peakPowerCostProportion ? res.data.totalVO.peakPowerCostProportion : 0) + "%" |
| | | |
| | | periodList.value[3].data[0].value = !!res.data.totalVO |
| | | .flatPowerConsumption |
| | | periodList.value[3].data[0].value = !!res.data.totalVO.flatPowerConsumption |
| | | ? res.data.totalVO.flatPowerConsumption |
| | | : 0; |
| | | : 0 |
| | | periodList.value[3].data[1].value = |
| | | (!!res.data.totalVO.flatPowerProportion |
| | | ? res.data.totalVO.flatPowerProportion |
| | | : 0) + "%"; |
| | | periodList.value[3].data[2].value = !!res.data.totalVO.flatPowerCost |
| | | ? res.data.totalVO.flatPowerCost |
| | | : 0; |
| | | (!!res.data.totalVO.flatPowerProportion ? res.data.totalVO.flatPowerProportion : 0) + "%" |
| | | periodList.value[3].data[2].value = !!res.data.totalVO.flatPowerCost ? res.data.totalVO.flatPowerCost : 0 |
| | | periodList.value[3].data[3].value = |
| | | (!!res.data.totalVO.flatPowerCostProportion |
| | | ? res.data.totalVO.flatPowerCostProportion |
| | | : 0) + "%"; |
| | | (!!res.data.totalVO.flatPowerCostProportion ? res.data.totalVO.flatPowerCostProportion : 0) + "%" |
| | | |
| | | periodList.value[4].data[0].value = !!res.data.totalVO |
| | | .troughPowerConsumption |
| | | periodList.value[4].data[0].value = !!res.data.totalVO.troughPowerConsumption |
| | | ? res.data.totalVO.troughPowerConsumption |
| | | : 0; |
| | | : 0 |
| | | periodList.value[4].data[1].value = |
| | | (!!res.data.totalVO.troughPowerProportion |
| | | ? res.data.totalVO.troughPowerProportion |
| | | : 0) + "%"; |
| | | periodList.value[4].data[2].value = !!res.data.totalVO.troughPowerCost |
| | | ? res.data.totalVO.troughPowerCost |
| | | : 0; |
| | | (!!res.data.totalVO.troughPowerProportion ? res.data.totalVO.troughPowerProportion : 0) + "%" |
| | | periodList.value[4].data[2].value = !!res.data.totalVO.troughPowerCost ? res.data.totalVO.troughPowerCost : 0 |
| | | periodList.value[4].data[3].value = |
| | | (!!res.data.totalVO.troughPowerCostProportion |
| | | ? res.data.totalVO.troughPowerCostProportion |
| | | : 0) + "%"; |
| | | (!!res.data.totalVO.troughPowerCostProportion ? res.data.totalVO.troughPowerCostProportion : 0) + "%" |
| | | } |
| | | // å¨åå§åä¹åï¼å
disposeæ§çå®ä¾ |
| | | if (echarts.getInstanceByDom(document.getElementById("Chart1"))) { |
| | | echarts.dispose(document.getElementById("Chart1")); |
| | | echarts.dispose(document.getElementById("Chart1")) |
| | | } |
| | | if (echarts.getInstanceByDom(document.getElementById("Chart2"))) { |
| | | echarts.dispose(document.getElementById("Chart2")); |
| | | echarts.dispose(document.getElementById("Chart2")) |
| | | } |
| | | const myChart1 = echarts.init(document.getElementById("Chart1")); |
| | | const myChart2 = echarts.init(document.getElementById("Chart2")); |
| | | const myChart1 = echarts.init(document.getElementById("Chart1")) |
| | | const myChart2 = echarts.init(document.getElementById("Chart2")) |
| | | if (!!res.data.powerConsumptionList) { |
| | | let xdata = []; |
| | | let ytip = []; |
| | | let ypeak = []; |
| | | let yflat = []; |
| | | let ytrough = []; |
| | | let xdata = [] |
| | | let ytip = [] |
| | | let ypeak = [] |
| | | let yflat = [] |
| | | let ytrough = [] |
| | | res.data.powerConsumptionList.map((item) => { |
| | | xdata.push(Number(item.xdata.slice(-2)) + "æ¥"); |
| | | ytip.push(!!item.ytip ? item.ytip : 0); |
| | | ypeak.push(!!item.ypeak ? item.ypeak : 0); |
| | | yflat.push(!!item.yflat ? item.yflat : 0); |
| | | ytrough.push(!!item.ytrough ? item.ytrough : 0); |
| | | }); |
| | | xdata.push(Number(item.xdata.slice(-2)) + "æ¥") |
| | | ytip.push(!!item.ytip ? item.ytip : 0) |
| | | ypeak.push(!!item.ypeak ? item.ypeak : 0) |
| | | yflat.push(!!item.yflat ? item.yflat : 0) |
| | | ytrough.push(!!item.ytrough ? item.ytrough : 0) |
| | | }) |
| | | myChart1.setOption({ |
| | | color: ["#f52528", "#ff6200", "#ffce0c", "#78e801"], |
| | | tooltip: { |
| | |
| | | type: "shadow", |
| | | textStyle: { |
| | | fontSize: 14, |
| | | color: |
| | | settingsStore.sideTheme == "theme-dark" |
| | | ? "#FFFFFF" |
| | | : "#222222", |
| | | color: settingsStore.sideTheme == "theme-dark" ? "#FFFFFF" : "#222222", |
| | | }, |
| | | }, |
| | | }, |
| | |
| | | itemHeight: 10, |
| | | // right: 0, |
| | | textStyle: { |
| | | color: |
| | | settingsStore.sideTheme == "theme-dark" ? "#FFFFFF" : "#222222", |
| | | color: settingsStore.sideTheme == "theme-dark" ? "#FFFFFF" : "#222222", |
| | | }, |
| | | }, |
| | | xAxis: { |
| | |
| | | axisLine: { |
| | | show: true, |
| | | lineStyle: { |
| | | color: |
| | | settingsStore.sideTheme == "theme-dark" |
| | | ? "#FFFFFF" |
| | | : "#222222", |
| | | color: settingsStore.sideTheme == "theme-dark" ? "#FFFFFF" : "#222222", |
| | | }, |
| | | }, |
| | | axisTick: { |
| | |
| | | show: false, |
| | | }, |
| | | axisLabel: { |
| | | color: |
| | | settingsStore.sideTheme == "theme-dark" ? "#FFFFFF" : "#222222", |
| | | color: settingsStore.sideTheme == "theme-dark" ? "#FFFFFF" : "#222222", |
| | | fontSize: 14, |
| | | padding: [5, 0, 0, 0], |
| | | // formatter: '{value} ml' |
| | |
| | | name: "èçµé(KWH)", |
| | | type: "value", |
| | | nameTextStyle: { |
| | | color: |
| | | settingsStore.sideTheme == "theme-dark" ? "#FFFFFF" : "#222222", |
| | | color: settingsStore.sideTheme == "theme-dark" ? "#FFFFFF" : "#222222", |
| | | fontSize: 14, |
| | | padding: [0, 0, 5, 0], |
| | | }, |
| | |
| | | show: true, |
| | | lineStyle: { |
| | | type: "dashed", |
| | | color: |
| | | settingsStore.sideTheme == "theme-dark" |
| | | ? "#FFFFFF" |
| | | : "#222222", |
| | | color: settingsStore.sideTheme == "theme-dark" ? "#FFFFFF" : "#222222", |
| | | }, |
| | | }, |
| | | axisTick: { |
| | |
| | | show: false, |
| | | }, |
| | | axisLabel: { |
| | | color: |
| | | settingsStore.sideTheme == "theme-dark" ? "#FFFFFF" : "#222222", |
| | | color: settingsStore.sideTheme == "theme-dark" ? "#FFFFFF" : "#222222", |
| | | fontSize: 14, |
| | | // formatter: '{value} ml' |
| | | }, |
| | |
| | | name: "å°", |
| | | type: "bar", |
| | | stack: "total", |
| | | barWidth: "27", |
| | | barWidth: "12", |
| | | data: ytip, |
| | | }, |
| | | { |
| | | name: "å³°", |
| | | type: "bar", |
| | | stack: "total", |
| | | barWidth: "27", |
| | | barWidth: "12", |
| | | data: ypeak, |
| | | }, |
| | | { |
| | | name: "å¹³", |
| | | type: "bar", |
| | | stack: "total", |
| | | barWidth: "27", |
| | | barWidth: "12", |
| | | data: yflat, |
| | | }, |
| | | { |
| | | name: "è°·", |
| | | type: "bar", |
| | | stack: "total", |
| | | barWidth: "27", |
| | | barWidth: "12", |
| | | data: ytrough, |
| | | }, |
| | | ], |
| | | }); |
| | | }) |
| | | } |
| | | if (!!res.data.costList) { |
| | | let xdata = []; |
| | | let ytip = []; |
| | | let ypeak = []; |
| | | let yflat = []; |
| | | let ytrough = []; |
| | | let xdata = [] |
| | | let ytip = [] |
| | | let ypeak = [] |
| | | let yflat = [] |
| | | let ytrough = [] |
| | | res.data.costList.map((item) => { |
| | | xdata.push(Number(item.xdata.slice(-2)) + "æ¥"); |
| | | ytip.push(!!item.ytip ? item.ytip : 0); |
| | | ypeak.push(!!item.ypeak ? item.ypeak : 0); |
| | | yflat.push(!!item.yflat ? item.yflat : 0); |
| | | ytrough.push(!!item.ytrough ? item.ytrough : 0); |
| | | }); |
| | | xdata.push(Number(item.xdata.slice(-2)) + "æ¥") |
| | | ytip.push(!!item.ytip ? item.ytip : 0) |
| | | ypeak.push(!!item.ypeak ? item.ypeak : 0) |
| | | yflat.push(!!item.yflat ? item.yflat : 0) |
| | | ytrough.push(!!item.ytrough ? item.ytrough : 0) |
| | | }) |
| | | myChart2.setOption({ |
| | | color: ["#f52528", "#ff6200", "#ffce0c", "#78e801"], |
| | | tooltip: { |
| | |
| | | type: "shadow", |
| | | textStyle: { |
| | | fontSize: 14, |
| | | color: |
| | | settingsStore.sideTheme == "theme-dark" |
| | | ? "#FFFFFF" |
| | | : "#222222", |
| | | color: settingsStore.sideTheme == "theme-dark" ? "#FFFFFF" : "#222222", |
| | | }, |
| | | }, |
| | | }, |
| | |
| | | itemHeight: 10, |
| | | // right: 0, |
| | | textStyle: { |
| | | color: |
| | | settingsStore.sideTheme == "theme-dark" ? "#FFFFFF" : "#222222", |
| | | color: settingsStore.sideTheme == "theme-dark" ? "#FFFFFF" : "#222222", |
| | | }, |
| | | }, |
| | | xAxis: { |
| | |
| | | axisLine: { |
| | | show: true, |
| | | lineStyle: { |
| | | color: |
| | | settingsStore.sideTheme == "theme-dark" |
| | | ? "#FFFFFF" |
| | | : "#222222", |
| | | color: settingsStore.sideTheme == "theme-dark" ? "#FFFFFF" : "#222222", |
| | | }, |
| | | }, |
| | | axisTick: { |
| | |
| | | show: false, |
| | | }, |
| | | axisLabel: { |
| | | color: |
| | | settingsStore.sideTheme == "theme-dark" ? "#FFFFFF" : "#222222", |
| | | color: settingsStore.sideTheme == "theme-dark" ? "#FFFFFF" : "#222222", |
| | | fontSize: 14, |
| | | padding: [5, 0, 0, 0], |
| | | // formatter: '{value} ml' |
| | |
| | | name: "çµè´¹(å
)", |
| | | type: "value", |
| | | nameTextStyle: { |
| | | color: |
| | | settingsStore.sideTheme == "theme-dark" ? "#FFFFFF" : "#222222", |
| | | color: settingsStore.sideTheme == "theme-dark" ? "#FFFFFF" : "#222222", |
| | | fontSize: 14, |
| | | padding: [0, 0, 5, 0], |
| | | }, |
| | |
| | | show: true, |
| | | lineStyle: { |
| | | type: "dashed", |
| | | color: |
| | | settingsStore.sideTheme == "theme-dark" |
| | | ? "#FFFFFF" |
| | | : "#222222", |
| | | color: settingsStore.sideTheme == "theme-dark" ? "#FFFFFF" : "#222222", |
| | | }, |
| | | }, |
| | | axisTick: { |
| | |
| | | show: false, |
| | | }, |
| | | axisLabel: { |
| | | color: |
| | | settingsStore.sideTheme == "theme-dark" ? "#FFFFFF" : "#222222", |
| | | color: settingsStore.sideTheme == "theme-dark" ? "#FFFFFF" : "#222222", |
| | | fontSize: 14, |
| | | // formatter: '{value} ml' |
| | | }, |
| | |
| | | name: "å°", |
| | | type: "bar", |
| | | stack: "total", |
| | | barWidth: "27", |
| | | barWidth: "12", |
| | | data: ytip, |
| | | }, |
| | | { |
| | | name: "å³°", |
| | | type: "bar", |
| | | stack: "total", |
| | | barWidth: "27", |
| | | barWidth: "12", |
| | | data: ypeak, |
| | | }, |
| | | { |
| | | name: "å¹³", |
| | | type: "bar", |
| | | stack: "total", |
| | | barWidth: "27", |
| | | barWidth: "12", |
| | | data: yflat, |
| | | }, |
| | | { |
| | | name: "è°·", |
| | | type: "bar", |
| | | stack: "total", |
| | | barWidth: "27", |
| | | barWidth: "12", |
| | | data: ytrough, |
| | | }, |
| | | ], |
| | | }); |
| | | }) |
| | | } |
| | | window.addEventListener("resize", () => { |
| | | myChart1.resize(); |
| | | myChart2.resize(); |
| | | },{passive: true}); |
| | | window.addEventListener( |
| | | "resize", |
| | | () => { |
| | | myChart1.resize() |
| | | myChart2.resize() |
| | | }, |
| | | { passive: true } |
| | | ) |
| | | } |
| | | }); |
| | | }) |
| | | } |
| | | // 峰平谷è½èåæ-å³°å¹³è°·æ¶æ®µç»è®¡-æç´¢ |
| | | function handleQuery() { |
| | | getList(); |
| | | getList() |
| | | } |
| | | // 峰平谷è½èåæ-å³°å¹³è°·æ¶æ®µç»è®¡-éç½® |
| | | function resetQuery() { |
| | | proxy.resetForm("queryRef"); |
| | | queryParams.value.queryTime = proxy.dayjs(new Date()).format("YYYY-MM"); |
| | | handleQuery(); |
| | | proxy.resetForm("queryRef") |
| | | queryParams.value.queryTime = proxy.dayjs(new Date()).format("YYYY-MM") |
| | | handleQuery() |
| | | } |
| | | </script> |
| | | <style scoped lang="scss"> |
| | |
| | | /> |
| | | </el-form-item> |
| | | <el-form-item> |
| | | <el-button type="primary" icon="Search" @click="handleQuery"> |
| | | æç´¢ |
| | | </el-button> |
| | | <el-button type="primary" icon="Search" @click="handleQuery"> æç´¢ </el-button> |
| | | <el-button icon="Refresh" @click="resetQuery">éç½®</el-button> |
| | | </el-form-item> |
| | | <el-form-item> |
| | | <el-button type="primary" icon="Download" @click="handleExport"> |
| | | å¯¼åº |
| | | </el-button> |
| | | <el-button type="primary" icon="Download" @click="handleExport"> å¯¼åº </el-button> |
| | | </el-form-item> |
| | | </el-form> |
| | | </div> |
| | | <div |
| | | style=" |
| | | height: calc(100vh - 205px) !important; |
| | | max-height: calc(100vh - 205px) !important; |
| | | overflow-y: auto; |
| | | " |
| | | style="height: calc(100vh - 205px) !important; max-height: calc(100vh - 205px) !important; overflow-y: auto" |
| | | v-loading="loading" |
| | | > |
| | | <el-row> |
| | |
| | | <el-col :span="24"> |
| | | <BaseCard :title="queryParams.nodeName + '-å³°å¹³è°·åæ¶ç»è®¡'"> |
| | | <div class="table-box"> |
| | | <el-table |
| | | :data="timeSharingList" |
| | | style="width: 100%" |
| | | show-summary |
| | | > |
| | | <el-table-column |
| | | label="æ¶é´" |
| | | align="center" |
| | | show-overflow-tooltip |
| | | > |
| | | <el-table :data="timeSharingList" style="width: 100%" show-summary> |
| | | <el-table-column label="æ¶é´" align="center" show-overflow-tooltip> |
| | | <template #default="scope"> |
| | | {{ proxy.dayjs(scope.row.time).format("HHæ¶") }} |
| | | </template> |
| | |
| | | show-overflow-tooltip |
| | | width="120" |
| | | /> |
| | | <el-table-column |
| | | prop="sharpFee" |
| | | label="çµè´¹(å
)" |
| | | align="center" |
| | | show-overflow-tooltip |
| | | /> |
| | | <el-table-column prop="sharpFee" label="çµè´¹(å
)" align="center" show-overflow-tooltip /> |
| | | </el-table-column> |
| | | <el-table-column label="å³°" align="center"> |
| | | <el-table-column |
| | |
| | | show-overflow-tooltip |
| | | width="120" |
| | | /> |
| | | <el-table-column |
| | | prop="peakFee" |
| | | label="çµè´¹(å
)" |
| | | align="center" |
| | | show-overflow-tooltip |
| | | /> |
| | | <el-table-column prop="peakFee" label="çµè´¹(å
)" align="center" show-overflow-tooltip /> |
| | | </el-table-column> |
| | | <el-table-column label="å¹³" align="center"> |
| | | <el-table-column |
| | |
| | | show-overflow-tooltip |
| | | width="120" |
| | | /> |
| | | <el-table-column |
| | | prop="flatFee" |
| | | label="çµè´¹(å
)" |
| | | align="center" |
| | | show-overflow-tooltip |
| | | /> |
| | | <el-table-column prop="flatFee" label="çµè´¹(å
)" align="center" show-overflow-tooltip /> |
| | | </el-table-column> |
| | | <el-table-column label="è°·" align="center"> |
| | | <el-table-column |
| | |
| | | show-overflow-tooltip |
| | | width="120" |
| | | /> |
| | | <el-table-column |
| | | prop="valleyFee" |
| | | label="çµè´¹(å
)" |
| | | align="center" |
| | | show-overflow-tooltip |
| | | /> |
| | | <el-table-column prop="valleyFee" label="çµè´¹(å
)" align="center" show-overflow-tooltip /> |
| | | </el-table-column> |
| | | <el-table-column label="å计" align="center"> |
| | | <el-table-column |
| | |
| | | show-overflow-tooltip |
| | | width="120" |
| | | /> |
| | | <el-table-column |
| | | prop="totalFee" |
| | | label="æ»çµè´¹(å
)" |
| | | align="center" |
| | | show-overflow-tooltip |
| | | /> |
| | | <el-table-column prop="totalFee" label="æ»çµè´¹(å
)" align="center" show-overflow-tooltip /> |
| | | </el-table-column> |
| | | <!-- <el-table-column label="æä½" align="center"> |
| | | <template #default="scope"> |
| | |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <el-dialog |
| | | v-model="timeSharingDialogTableVisible" |
| | | title="æ¥çåæ¶ç»è®¡è¯¦æ
" |
| | | width="1300" |
| | | > |
| | | <el-dialog v-model="timeSharingDialogTableVisible" title="æ¥çåæ¶ç»è®¡è¯¦æ
" width="1300"> |
| | | <div class="table-box"> |
| | | <el-table :data="viewTimeSharingList" style="width: 100%" height="420"> |
| | | <el-table-column |
| | | label="æ¶é´" |
| | | align="center" |
| | | show-overflow-tooltip |
| | | width="200" |
| | | > |
| | | <el-table-column label="æ¶é´" align="center" show-overflow-tooltip width="200"> |
| | | <template #default="scope"> {{ scope.row.time }}æ¶ </template> |
| | | </el-table-column> |
| | | <el-table-column label="å°" align="center"> |
| | | <el-table-column |
| | | prop="sharpPower" |
| | | label="èçµé(kWh)" |
| | | align="center" |
| | | show-overflow-tooltip |
| | | width="120" |
| | | /> |
| | | <el-table-column |
| | | prop="sharpFee" |
| | | label="çµè´¹(å
)" |
| | | align="center" |
| | | show-overflow-tooltip |
| | | width="90" |
| | | /> |
| | | <el-table-column prop="sharpPower" label="èçµé(kWh)" align="center" show-overflow-tooltip width="120" /> |
| | | <el-table-column prop="sharpFee" label="çµè´¹(å
)" align="center" show-overflow-tooltip width="90" /> |
| | | </el-table-column> |
| | | <el-table-column label="å³°" align="center"> |
| | | <el-table-column |
| | | prop="peakPower" |
| | | label="èçµé(kWh)" |
| | | align="center" |
| | | show-overflow-tooltip |
| | | width="120" |
| | | /> |
| | | <el-table-column |
| | | prop="peakFee" |
| | | label="çµè´¹(å
)" |
| | | align="center" |
| | | show-overflow-tooltip |
| | | width="90" |
| | | /> |
| | | <el-table-column prop="peakPower" label="èçµé(kWh)" align="center" show-overflow-tooltip width="120" /> |
| | | <el-table-column prop="peakFee" label="çµè´¹(å
)" align="center" show-overflow-tooltip width="90" /> |
| | | </el-table-column> |
| | | <el-table-column label="å¹³" align="center"> |
| | | <el-table-column |
| | | prop="flatPower" |
| | | label="èçµé(kWh)" |
| | | align="center" |
| | | show-overflow-tooltip |
| | | width="120" |
| | | /> |
| | | <el-table-column |
| | | prop="flatFee" |
| | | label="çµè´¹(å
)" |
| | | align="center" |
| | | show-overflow-tooltip |
| | | width="90" |
| | | /> |
| | | <el-table-column prop="flatPower" label="èçµé(kWh)" align="center" show-overflow-tooltip width="120" /> |
| | | <el-table-column prop="flatFee" label="çµè´¹(å
)" align="center" show-overflow-tooltip width="90" /> |
| | | </el-table-column> |
| | | <el-table-column label="è°·" align="center"> |
| | | <el-table-column |
| | | prop="valleyPower" |
| | | label="èçµé(kWh)" |
| | | align="center" |
| | | show-overflow-tooltip |
| | | width="120" |
| | | /> |
| | | <el-table-column |
| | | prop="valleyFee" |
| | | label="çµè´¹(å
)" |
| | | align="center" |
| | | show-overflow-tooltip |
| | | width="90" |
| | | /> |
| | | <el-table-column prop="valleyPower" label="èçµé(kWh)" align="center" show-overflow-tooltip width="120" /> |
| | | <el-table-column prop="valleyFee" label="çµè´¹(å
)" align="center" show-overflow-tooltip width="90" /> |
| | | </el-table-column> |
| | | <el-table-column label="å计" align="center"> |
| | | <el-table-column |
| | |
| | | width="120" |
| | | > |
| | | <template #default="scope"> |
| | | {{ |
| | | scope.row.sharpPower + |
| | | scope.row.peakPower + |
| | | scope.row.flatPower + |
| | | scope.row.valleyPower |
| | | }} |
| | | {{ scope.row.sharpPower + scope.row.peakPower + scope.row.flatPower + scope.row.valleyPower }} |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="totalCost" |
| | | label="æ»çµè´¹(å
)" |
| | | align="center" |
| | | show-overflow-tooltip |
| | | width="100" |
| | | > |
| | | <el-table-column prop="totalCost" label="æ»çµè´¹(å
)" align="center" show-overflow-tooltip width="100"> |
| | | <template #default="scope"> |
| | | {{ |
| | | scope.row.sharpFee + |
| | | scope.row.peakFee + |
| | | scope.row.flatFee + |
| | | scope.row.valleyFee |
| | | }} |
| | | {{ scope.row.sharpFee + scope.row.peakFee + scope.row.flatFee + scope.row.valleyFee }} |
| | | </template> |
| | | </el-table-column> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="nodeName" |
| | | label="ç¨è½åå
" |
| | | align="center" |
| | | show-overflow-tooltip |
| | | width="200" |
| | | /> |
| | | <el-table-column prop="nodeName" label="ç¨è½åå
" align="center" show-overflow-tooltip width="200" /> |
| | | </el-table> |
| | | </div> |
| | | </el-dialog> |
| | |
| | | </template> |
| | | |
| | | <script setup name="timeSharing"> |
| | | import { listTimeSharing } from "@/api/peakValley/timeSharing"; |
| | | import * as echarts from "echarts"; |
| | | const { proxy } = getCurrentInstance(); |
| | | import { useRoute } from "vue-router"; |
| | | import useSettingsStore from "@/store/modules/settings"; |
| | | const settingsStore = useSettingsStore(); |
| | | import { listTimeSharing } from "@/api/peakValley/timeSharing" |
| | | import * as echarts from "echarts" |
| | | const { proxy } = getCurrentInstance() |
| | | import { useRoute } from "vue-router" |
| | | import useSettingsStore from "@/store/modules/settings" |
| | | const settingsStore = useSettingsStore() |
| | | watch( |
| | | () => settingsStore.sideTheme, |
| | | (val) => { |
| | | getList(); |
| | | getList() |
| | | } |
| | | ); |
| | | const loading = ref(false); |
| | | const timeSharingList = ref([]); |
| | | const timeSharingDialogTableVisible = ref(false); |
| | | const viewTimeSharingList = ref([]); |
| | | const nodeOptions = ref(undefined); |
| | | ) |
| | | const loading = ref(false) |
| | | const timeSharingList = ref([]) |
| | | const timeSharingDialogTableVisible = ref(false) |
| | | const viewTimeSharingList = ref([]) |
| | | const nodeOptions = ref(undefined) |
| | | const data = reactive({ |
| | | queryParams: { |
| | | nodeId: null, |
| | |
| | | queryTime: null, |
| | | }, |
| | | query: { ...useRoute().query }, |
| | | }); |
| | | const { queryParams, query } = toRefs(data); |
| | | }) |
| | | const { queryParams, query } = toRefs(data) |
| | | /** éè¿æ¡ä»¶è¿æ»¤èç¹ */ |
| | | const filterNode = (value, data) => { |
| | | if (!value) return true; |
| | | return data.label.indexOf(value) !== -1; |
| | | }; |
| | | if (!value) return true |
| | | return data.label.indexOf(value) !== -1 |
| | | } |
| | | function handleNodeClick(data) { |
| | | queryParams.value.nodeId = data.id; |
| | | queryParams.value.nodeName = data.label; |
| | | queryParams.value.queryTime = proxy.dayjs(new Date()).format("YYYY-MM-DD"); |
| | | handleQuery(); |
| | | queryParams.value.nodeId = data.id |
| | | queryParams.value.nodeName = data.label |
| | | queryParams.value.queryTime = proxy.dayjs(new Date()).format("YYYY-MM-DD") |
| | | handleQuery() |
| | | } |
| | | // 峰平谷è½èåæ-å³°å¹³è°·åæ¶ç»è®¡-å表 |
| | | function getList() { |
| | | loading.value = true; |
| | | loading.value = true |
| | | listTimeSharing( |
| | | proxy.addDateRange({ |
| | | ...queryParams.value, |
| | | ...query.value, |
| | | }) |
| | | ).then((res) => { |
| | | loading.value = false; |
| | | loading.value = false |
| | | if (!!res.code && res.code == 200) { |
| | | // å¨åå§åä¹åï¼å
disposeæ§çå®ä¾ |
| | | if (echarts.getInstanceByDom(document.getElementById("Chart1"))) { |
| | | echarts.dispose(document.getElementById("Chart1")); |
| | | echarts.dispose(document.getElementById("Chart1")) |
| | | } |
| | | if (echarts.getInstanceByDom(document.getElementById("Chart2"))) { |
| | | echarts.dispose(document.getElementById("Chart2")); |
| | | echarts.dispose(document.getElementById("Chart2")) |
| | | } |
| | | const myChart1 = echarts.init(document.getElementById("Chart1")); |
| | | const myChart2 = echarts.init(document.getElementById("Chart2")); |
| | | const myChart1 = echarts.init(document.getElementById("Chart1")) |
| | | const myChart2 = echarts.init(document.getElementById("Chart2")) |
| | | if (!!res.data.lineChat) { |
| | | let xdata = []; |
| | | let ytip = []; |
| | | let ypeak = []; |
| | | let yflat = []; |
| | | let ytrough = []; |
| | | let xdata = [] |
| | | let ytip = [] |
| | | let ypeak = [] |
| | | let yflat = [] |
| | | let ytrough = [] |
| | | res.data.lineChat.map((item) => { |
| | | xdata.push(Number(item.xdata.slice(-8).substring(0, 2)) + "æ¶"); |
| | | ytip.push(!!item.ytip ? item.ytip : 0); |
| | | ypeak.push(!!item.ypeak ? item.ypeak : 0); |
| | | yflat.push(!!item.yflat ? item.yflat : 0); |
| | | ytrough.push(!!item.ytrough ? item.ytrough : 0); |
| | | }); |
| | | xdata.push(Number(item.xdata.slice(-8).substring(0, 2)) + "æ¶") |
| | | ytip.push(!!item.ytip ? item.ytip : 0) |
| | | ypeak.push(!!item.ypeak ? item.ypeak : 0) |
| | | yflat.push(!!item.yflat ? item.yflat : 0) |
| | | ytrough.push(!!item.ytrough ? item.ytrough : 0) |
| | | }) |
| | | myChart1.setOption({ |
| | | color: ["#f52528", "#ff6200", "#ffce0c", "#78e801"], |
| | | grid: { |
| | |
| | | itemHeight: 10, |
| | | // right: 0, |
| | | textStyle: { |
| | | color: |
| | | settingsStore.sideTheme == "theme-dark" ? "#FFFFFF" : "#222222", |
| | | color: settingsStore.sideTheme == "theme-dark" ? "#FFFFFF" : "#222222", |
| | | }, |
| | | // data: ['å°', 'å³°', 'å¹³', 'è°·'] |
| | | }, |
| | |
| | | axisLine: { |
| | | show: true, |
| | | lineStyle: { |
| | | color: |
| | | settingsStore.sideTheme == "theme-dark" |
| | | ? "#FFFFFF" |
| | | : "#222222", |
| | | color: settingsStore.sideTheme == "theme-dark" ? "#FFFFFF" : "#222222", |
| | | }, |
| | | }, |
| | | axisTick: { |
| | |
| | | show: false, |
| | | }, |
| | | axisLabel: { |
| | | color: |
| | | settingsStore.sideTheme == "theme-dark" ? "#FFFFFF" : "#222222", |
| | | color: settingsStore.sideTheme == "theme-dark" ? "#FFFFFF" : "#222222", |
| | | fontSize: 14, |
| | | padding: [5, 0, 0, 0], |
| | | // formatter: '{value} ml' |
| | |
| | | name: "èçµé(KWH)", |
| | | type: "value", |
| | | nameTextStyle: { |
| | | color: |
| | | settingsStore.sideTheme == "theme-dark" ? "#FFFFFF" : "#222222", |
| | | color: settingsStore.sideTheme == "theme-dark" ? "#FFFFFF" : "#222222", |
| | | fontSize: 14, |
| | | padding: [0, 0, 5, 0], |
| | | }, |
| | |
| | | show: true, |
| | | lineStyle: { |
| | | type: "dashed", |
| | | color: |
| | | settingsStore.sideTheme == "theme-dark" |
| | | ? "#FFFFFF" |
| | | : "#222222", |
| | | color: settingsStore.sideTheme == "theme-dark" ? "#FFFFFF" : "#222222", |
| | | }, |
| | | }, |
| | | axisTick: { |
| | |
| | | show: false, |
| | | }, |
| | | axisLabel: { |
| | | color: |
| | | settingsStore.sideTheme == "theme-dark" ? "#FFFFFF" : "#222222", |
| | | color: settingsStore.sideTheme == "theme-dark" ? "#FFFFFF" : "#222222", |
| | | fontSize: 14, |
| | | // formatter: '{value} ml' |
| | | }, |
| | |
| | | { |
| | | name: "å°", // ytip |
| | | type: "bar", |
| | | barWidth: "27", |
| | | barWidth: "12", |
| | | stack: "total", |
| | | data: ytip, |
| | | }, |
| | | { |
| | | name: "å³°", // ypeak |
| | | type: "bar", |
| | | barWidth: "27", |
| | | barWidth: "12", |
| | | stack: "total", |
| | | data: ypeak, |
| | | }, |
| | | { |
| | | name: "å¹³", // yflat |
| | | type: "bar", |
| | | barWidth: "27", |
| | | barWidth: "12", |
| | | stack: "total", |
| | | data: yflat, |
| | | }, |
| | | { |
| | | name: "è°·", // ytrough |
| | | type: "bar", |
| | | barWidth: "27", |
| | | barWidth: "12", |
| | | stack: "total", |
| | | data: ytrough, |
| | | }, |
| | | ], |
| | | }); |
| | | }) |
| | | } |
| | | if (!!res.data.pieChat) { |
| | | myChart2.setOption({ |
| | |
| | | itemGap: 10, |
| | | // right: 0, |
| | | textStyle: { |
| | | color: |
| | | settingsStore.sideTheme == "theme-dark" ? "#FFFFFF" : "#222222", |
| | | color: settingsStore.sideTheme == "theme-dark" ? "#FFFFFF" : "#222222", |
| | | }, |
| | | }, |
| | | series: [ |
| | |
| | | label: { |
| | | overflow: "none", |
| | | formatter: "{b} {c}% ", |
| | | color: |
| | | settingsStore.sideTheme == "theme-dark" |
| | | ? "#FFFFFF" |
| | | : "#222222", |
| | | color: settingsStore.sideTheme == "theme-dark" ? "#FFFFFF" : "#222222", |
| | | }, |
| | | data: [ |
| | | { |
| | | value: !!res.data.pieChat.tip |
| | | ? Number(res.data.pieChat.tip) |
| | | : 0, |
| | | value: !!res.data.pieChat.tip ? Number(res.data.pieChat.tip) : 0, |
| | | name: "å°", |
| | | }, |
| | | { |
| | | value: !!res.data.pieChat.peak |
| | | ? Number(res.data.pieChat.peak) |
| | | : 0, |
| | | value: !!res.data.pieChat.peak ? Number(res.data.pieChat.peak) : 0, |
| | | name: "å³°", |
| | | }, |
| | | { |
| | | value: !!res.data.pieChat.flat |
| | | ? Number(res.data.pieChat.flat) |
| | | : 0, |
| | | value: !!res.data.pieChat.flat ? Number(res.data.pieChat.flat) : 0, |
| | | name: "å¹³", |
| | | }, |
| | | { |
| | | value: !!res.data.pieChat.trough |
| | | ? Number(res.data.pieChat.trough) |
| | | : 0, |
| | | value: !!res.data.pieChat.trough ? Number(res.data.pieChat.trough) : 0, |
| | | name: "è°·", |
| | | }, |
| | | ], |
| | | }, |
| | | ], |
| | | }); |
| | | }) |
| | | } |
| | | if (!!res.data.dataList) { |
| | | timeSharingList.value = !!res.data.dataList ? res.data.dataList : []; |
| | | timeSharingList.value = !!res.data.dataList ? res.data.dataList : [] |
| | | } |
| | | window.addEventListener( |
| | | "resize", |
| | | () => { |
| | | myChart1.resize(); |
| | | myChart2.resize(); |
| | | myChart1.resize() |
| | | myChart2.resize() |
| | | }, |
| | | { passive: true } |
| | | ); |
| | | ) |
| | | } |
| | | }); |
| | | }) |
| | | } |
| | | // 峰平谷è½èåæ-å³°å¹³è°·åæ¶ç»è®¡-æ¥ç |
| | | function handleView(row) { |
| | | queryParams.value.key = row.timeStr; |
| | | timeSharingDialogTableVisible.value = true; |
| | | viewTimeSharingList.value = [row]; |
| | | queryParams.value.key = row.timeStr |
| | | timeSharingDialogTableVisible.value = true |
| | | viewTimeSharingList.value = [row] |
| | | } |
| | | // 峰平谷è½èåæ-å³°å¹³è°·åæ¶ç»è®¡-æç´¢ |
| | | function handleQuery() { |
| | | getList(); |
| | | getList() |
| | | } |
| | | // 峰平谷è½èåæ-å³°å¹³è°·åæ¶ç»è®¡-éç½® |
| | | function resetQuery() { |
| | | proxy.resetForm("queryRef"); |
| | | (queryParams.value.queryTime = proxy.dayjs(new Date()).format("YYYY-MM-DD")), |
| | | handleQuery(); |
| | | proxy.resetForm("queryRef") |
| | | ;(queryParams.value.queryTime = proxy.dayjs(new Date()).format("YYYY-MM-DD")), handleQuery() |
| | | } |
| | | // 峰平谷è½èåæ-å³°å¹³è°·åæ¶ç»è®¡-å¯¼åº |
| | | function handleExport() { |
| | |
| | | ...query.value, |
| | | }, |
| | | `${queryParams.value.nodeName}_å³°å¹³è°·åæ¶ç»è®¡_${new Date().getTime()}.xlsx` |
| | | ); |
| | | ) |
| | | } |
| | | </script> |
| | | <style scoped lang="scss"> |
| | |
| | | <div class="page"> |
| | | <el-form :model="queryParams" ref="queryRef" :inline="true" label-width="80px"> |
| | | <el-form-item label="æ¥æçé" prop="dataTime"> |
| | | <el-date-picker v-model="queryParams.dataTime" value-format="YYYY-MM-DD 00:00:00" type="date" |
| | | placeholder="æ¥æçé" style="width: 100%" /> |
| | | <el-date-picker |
| | | v-model="queryParams.dataTime" |
| | | value-format="YYYY-MM-DD 00:00:00" |
| | | type="date" |
| | | placeholder="æ¥æçé" |
| | | style="width: 100%" |
| | | /> |
| | | </el-form-item> |
| | | <el-form-item> |
| | | <el-button type="primary" icon="Search" @click="handleQuery"> |
| | | æç´¢ |
| | | </el-button> |
| | | <el-button type="primary" icon="Search" @click="handleQuery"> æç´¢ </el-button> |
| | | <el-button icon="Refresh" @click="resetQuery">éç½®</el-button> |
| | | </el-form-item> |
| | | <el-form-item> |
| | | <el-button type="primary" icon="Download" @click="handleExport"> |
| | | å¯¼åº |
| | | </el-button> |
| | | <el-button type="primary" icon="Download" @click="handleExport"> å¯¼åº </el-button> |
| | | </el-form-item> |
| | | </el-form> |
| | | <div class="chart-box" v-loading="loading"> |
| | |
| | | </template> |
| | | |
| | | <script setup name="chartModal"> |
| | | import * as echarts from "echarts"; |
| | | import { getEnergyRealTimeMonitor } from "@/api/realTimeMonitor/realTimeMonitor"; |
| | | const { proxy } = getCurrentInstance(); |
| | | import useSettingsStore from "@/store/modules/settings"; |
| | | const settingsStore = useSettingsStore(); |
| | | const dialogTableVisible = ref(false); |
| | | import * as echarts from "echarts" |
| | | import { getEnergyRealTimeMonitor } from "@/api/realTimeMonitor/realTimeMonitor" |
| | | const { proxy } = getCurrentInstance() |
| | | import useSettingsStore from "@/store/modules/settings" |
| | | const settingsStore = useSettingsStore() |
| | | const dialogTableVisible = ref(false) |
| | | const data = reactive({ |
| | | title: null, |
| | | queryParams: { |
| | | tagCode: null, |
| | | dataTime: null, |
| | | }, |
| | | }); |
| | | const { queryParams, title } = toRefs(data); |
| | | const loading = ref(false); |
| | | defineExpose({ handleOpen }); |
| | | }) |
| | | const { queryParams, title } = toRefs(data) |
| | | const loading = ref(false) |
| | | defineExpose({ handleOpen }) |
| | | function handleOpen(row) { |
| | | title.value = row.name; |
| | | dialogTableVisible.value = true; |
| | | queryParams.value.nodeName = row.nodeName; |
| | | queryParams.value.tagCode = row.indexCode; |
| | | queryParams.value.unit = row.unit; |
| | | queryParams.value.name = row.name; |
| | | queryParams.value.dataTime = proxy |
| | | .dayjs(new Date()) |
| | | .format("YYYY-MM-DD 00:00:00"); |
| | | getList(); |
| | | title.value = row.name |
| | | dialogTableVisible.value = true |
| | | queryParams.value.nodeName = row.nodeName |
| | | queryParams.value.tagCode = row.indexCode |
| | | queryParams.value.unit = row.unit |
| | | queryParams.value.name = row.name |
| | | queryParams.value.dataTime = proxy.dayjs(new Date()).format("YYYY-MM-DD 00:00:00") |
| | | getList() |
| | | } |
| | | function handleClose() { |
| | | dialogTableVisible.value = false; |
| | | dialogTableVisible.value = false |
| | | } |
| | | // è½æºå®æ¶çæ§-è½æºå®æ¶çæ§-å表 |
| | | function getList() { |
| | | loading.value = true; |
| | | getEnergyRealTimeMonitor(proxy.addDateRange(queryParams.value)).then( |
| | | (res) => { |
| | | const myChart1 = echarts.init(document.getElementById("Chart1")); |
| | | if (!!res.code && res.code == 200) { |
| | | if (!!res.data) { |
| | | let xdata = []; |
| | | let ydata = []; |
| | | res.data.map((item) => { |
| | | xdata.push(proxy.dayjs(item.name).format("HH:mm")); |
| | | ydata.push(!!item.value ? item.value : 0); |
| | | }); |
| | | loading.value = false; |
| | | myChart1.setOption({ |
| | | color: ["#2979ff", "#19be6b", "#ff9900", "#fa3534"], |
| | | grid: { |
| | | top: "45", |
| | | left: "6%", |
| | | right: "5%", |
| | | bottom: "10", |
| | | containLabel: true, |
| | | }, |
| | | tooltip: { |
| | | trigger: "axis", |
| | | axisPointer: { |
| | | type: "shadow", |
| | | }, |
| | | }, |
| | | xAxis: { |
| | | type: "category", |
| | | axisLine: { |
| | | show: true, |
| | | lineStyle: { |
| | | color: |
| | | settingsStore.sideTheme == "theme-dark" |
| | | ? "#FFFFFF" |
| | | : "#222222", |
| | | }, |
| | | }, |
| | | axisTick: { |
| | | show: false, |
| | | }, |
| | | splitArea: { |
| | | show: false, |
| | | }, |
| | | splitLine: { |
| | | show: false, |
| | | }, |
| | | axisLabel: { |
| | | color: |
| | | settingsStore.sideTheme == "theme-dark" |
| | | ? "#FFFFFF" |
| | | : "#222222", |
| | | fontSize: 14, |
| | | padding: [5, 0, 0, 0], |
| | | // formatter: '{value} ml' |
| | | }, |
| | | data: xdata, |
| | | }, |
| | | yAxis: { |
| | | type: "value", |
| | | name: |
| | | queryParams.value.name + |
| | | (!!queryParams.value.unit |
| | | ? "(" + queryParams.value.unit + ")" |
| | | : ""), |
| | | nameTextStyle: { |
| | | color: |
| | | settingsStore.sideTheme == "theme-dark" |
| | | ? "#FFFFFF" |
| | | : "#222222", |
| | | fontSize: 14, |
| | | padding: [0, 0, 5, 0], |
| | | }, |
| | | axisLine: { |
| | | show: false, |
| | | }, |
| | | splitLine: { |
| | | show: true, |
| | | lineStyle: { |
| | | type: "dashed", |
| | | color: |
| | | settingsStore.sideTheme == "theme-dark" |
| | | ? "#FFFFFF" |
| | | : "#222222", |
| | | }, |
| | | }, |
| | | axisTick: { |
| | | show: false, |
| | | }, |
| | | splitArea: { |
| | | show: false, |
| | | }, |
| | | axisLabel: { |
| | | color: |
| | | settingsStore.sideTheme == "theme-dark" |
| | | ? "#FFFFFF" |
| | | : "#222222", |
| | | fontSize: 14, |
| | | }, |
| | | }, |
| | | series: [ |
| | | { |
| | | name: title.value + "å岿°æ®æ¥è¯¢", // ytip |
| | | type: "line", |
| | | barWidth: "27", |
| | | stack: "total", |
| | | data: ydata, |
| | | }, |
| | | ], |
| | | }); |
| | | } |
| | | window.addEventListener( |
| | | "resize", |
| | | () => { |
| | | myChart1.resize(); |
| | | loading.value = true |
| | | getEnergyRealTimeMonitor(proxy.addDateRange(queryParams.value)).then((res) => { |
| | | const myChart1 = echarts.init(document.getElementById("Chart1")) |
| | | if (!!res.code && res.code == 200) { |
| | | if (!!res.data) { |
| | | let xdata = [] |
| | | let ydata = [] |
| | | res.data.map((item) => { |
| | | xdata.push(proxy.dayjs(item.name).format("HH:mm")) |
| | | ydata.push(!!item.value ? item.value : 0) |
| | | }) |
| | | loading.value = false |
| | | myChart1.setOption({ |
| | | color: ["#2979ff", "#19be6b", "#ff9900", "#fa3534"], |
| | | grid: { |
| | | top: "45", |
| | | left: "6%", |
| | | right: "5%", |
| | | bottom: "10", |
| | | containLabel: true, |
| | | }, |
| | | { passive: true } |
| | | ); |
| | | tooltip: { |
| | | trigger: "axis", |
| | | axisPointer: { |
| | | type: "shadow", |
| | | }, |
| | | }, |
| | | xAxis: { |
| | | type: "category", |
| | | axisLine: { |
| | | show: true, |
| | | lineStyle: { |
| | | color: settingsStore.sideTheme == "theme-dark" ? "#FFFFFF" : "#222222", |
| | | }, |
| | | }, |
| | | axisTick: { |
| | | show: false, |
| | | }, |
| | | splitArea: { |
| | | show: false, |
| | | }, |
| | | splitLine: { |
| | | show: false, |
| | | }, |
| | | axisLabel: { |
| | | color: settingsStore.sideTheme == "theme-dark" ? "#FFFFFF" : "#222222", |
| | | fontSize: 14, |
| | | padding: [5, 0, 0, 0], |
| | | // formatter: '{value} ml' |
| | | }, |
| | | data: xdata, |
| | | }, |
| | | yAxis: { |
| | | type: "value", |
| | | name: queryParams.value.name + (!!queryParams.value.unit ? "(" + queryParams.value.unit + ")" : ""), |
| | | nameTextStyle: { |
| | | color: settingsStore.sideTheme == "theme-dark" ? "#FFFFFF" : "#222222", |
| | | fontSize: 14, |
| | | padding: [0, 0, 5, 0], |
| | | }, |
| | | axisLine: { |
| | | show: false, |
| | | }, |
| | | splitLine: { |
| | | show: true, |
| | | lineStyle: { |
| | | type: "dashed", |
| | | color: settingsStore.sideTheme == "theme-dark" ? "#FFFFFF" : "#222222", |
| | | }, |
| | | }, |
| | | axisTick: { |
| | | show: false, |
| | | }, |
| | | splitArea: { |
| | | show: false, |
| | | }, |
| | | axisLabel: { |
| | | color: settingsStore.sideTheme == "theme-dark" ? "#FFFFFF" : "#222222", |
| | | fontSize: 14, |
| | | }, |
| | | }, |
| | | series: [ |
| | | { |
| | | name: title.value + "å岿°æ®æ¥è¯¢", // ytip |
| | | type: "line", |
| | | barWidth: "12", |
| | | stack: "total", |
| | | data: ydata, |
| | | }, |
| | | ], |
| | | }) |
| | | } |
| | | window.addEventListener( |
| | | "resize", |
| | | () => { |
| | | myChart1.resize() |
| | | }, |
| | | { passive: true } |
| | | ) |
| | | } |
| | | ); |
| | | }) |
| | | } |
| | | // è½æºå®æ¶çæ§-è½æºå®æ¶çæ§-æç´¢ |
| | | function handleQuery() { |
| | | getList(); |
| | | getList() |
| | | } |
| | | // è½æºå®æ¶çæ§-è½æºå®æ¶çæ§-éç½® |
| | | function resetQuery() { |
| | | proxy.resetForm("queryRef"); |
| | | (queryParams.value.dataTime = proxy |
| | | .dayjs(new Date()) |
| | | .format("YYYY-MM-DD 00:00:00")), |
| | | handleNodeClick(nodeOptions.value[0]); |
| | | proxy.resetForm("queryRef") |
| | | ;(queryParams.value.dataTime = proxy.dayjs(new Date()).format("YYYY-MM-DD 00:00:00")), |
| | | handleNodeClick(nodeOptions.value[0]) |
| | | } |
| | | // è½æºå®æ¶çæ§-è½æºå®æ¶çæ§-å¯¼åº |
| | | function handleExport() { |
| | |
| | | "rtdb/realtimeTrend/export", |
| | | queryParams.value, |
| | | `${queryParams.value.nodeName}-${queryParams.value.name}_è½æºå®æ¶çæ§_${new Date().getTime()}.xlsx` |
| | | ); |
| | | ) |
| | | } |
| | | </script> |
| | | <style scoped lang="scss"> |
| | |
| | | form.value.svgType = "COLLECT" |
| | | updateEquipmentfile(form.value).then((result) => { |
| | | if (result.code === 200) { |
| | | filePath.value = response.msg |
| | | filePath.value = val[0].fullUrl |
| | | tags.value = [] |
| | | getSvg() |
| | | } else { |
| | |
| | | } |
| | | }) |
| | | } else { |
| | | proxy.$modal.msgError(response.msg) |
| | | proxy.$modal.msgError(result.msg) |
| | | } |
| | | } |
| | | |