diff --git a/src/api/ems/dzjk.js b/src/api/ems/dzjk.js index eb2d979..47b89e2 100644 --- a/src/api/ems/dzjk.js +++ b/src/api/ems/dzjk.js @@ -93,9 +93,9 @@ export function getAmmeterDataList(siteId) { } // 故障告警 -export function getAlarmDetailList({siteId, deviceId, alarmLevel, alarmStartTime, alarmEndTime,pageSize,pageNum}) { +export function getAlarmDetailList({status,siteId, deviceId, alarmLevel, alarmStartTime, alarmEndTime,pageSize,pageNum}) { return request({ - url: `/ems/siteAlarm/getAlarmDetailList?siteId=${siteId}&deviceId=${deviceId}&alarmLevel=${alarmLevel}&alarmStartTime=${alarmStartTime}&alarmEndTime=${alarmEndTime}&pageSize=${pageSize}&pageNum=${pageNum}`, + url: `/ems/siteAlarm/getAlarmDetailList?siteId=${siteId}&status=${status}&deviceId=${deviceId}&alarmLevel=${alarmLevel}&alarmStartTime=${alarmStartTime}&alarmEndTime=${alarmEndTime}&pageSize=${pageSize}&pageNum=${pageNum}`, method: 'get' }) } @@ -116,16 +116,16 @@ export function getPcsNameList(siteId) { }) } //pcs曲线 -export function getPCSData({siteId,deviceId,startTime,endTime,dataType}) { +export function getPCSData({siteId,startTime,endTime,dataType}) { return request({ - url: `/ems/statsReport/getPCSData?siteId=${siteId}&deviceId=${deviceId}&startDate=${startTime}&endDate=${endTime}&dataType=${dataType}`, + url: `/ems/statsReport/getPCSData?siteId=${siteId}&startDate=${startTime}&endDate=${endTime}&dataType=${dataType}`, method: 'get' }) } //电池堆曲线 -export function getStackData({siteId,deviceId,startTime,endTime,dataType}) { +export function getStackData({siteId,startTime,endTime,dataType}) { return request({ - url: `/ems/statsReport/getStackData?siteId=${siteId}&deviceId=${deviceId}&startDate=${startTime}&endDate=${endTime}&dataType=${dataType}`, + url: `/ems/statsReport/getStackData?siteId=${siteId}&startDate=${startTime}&endDate=${endTime}&dataType=${dataType}`, method: 'get' }) } @@ -168,9 +168,9 @@ export function batteryAveTemp(siteId) { }) } // 功率曲线 -export function getPowerData({siteId,deviceId,startDate,endDate,dataType}) { +export function getPowerData({siteId,startDate,endDate}) { return request({ - url: `/ems/statsReport/getPowerData?siteId=${siteId}&deviceId=${deviceId}&startDate=${startDate}&endDate=${endDate}&dataType=${dataType}`, + url: `/ems/statsReport/getPowerData?siteId=${siteId}&startDate=${startDate}&endDate=${endDate}`, method: 'get' }) } @@ -291,3 +291,11 @@ export function curveList({siteId,strategyId}) { method: 'get', }) } + +//单站监控 首页 当日功率曲线 +export function getPointData({siteId,startDate,endDate}) { + return request({ + url: `/ems/siteMonitor/getPointData?siteId=${siteId}&startDate=${startDate}&endDate=${endDate}`, + method: 'get', + }) +} \ No newline at end of file diff --git a/src/api/ems/search.js b/src/api/ems/search.js new file mode 100644 index 0000000..32bd1ea --- /dev/null +++ b/src/api/ems/search.js @@ -0,0 +1,32 @@ +import request from '@/utils/request' +// 获取设备列表 +export function getAllDeviceCategory() { + return request({ + url: '/ems/generalQuery/getAllDeviceCategory', + method: 'get' + }) +} +// 点位列表 +export function pointFuzzyQuery(data) { + return request({ + url: '/ems/generalQuery/pointFuzzyQuery', + method: 'post', + data + }) +} +// 图表 +export function getPointValueList(data) { + return request({ + url: '/ems/generalQuery/getPointValueList', + method: 'post', + data + }) +} + +// 图表 +export function getAllBatteryIdsBySites(data) { + return request({ + url: `/ems/generalQuery/getAllBatteryIdsBySites/${data}`, + method: 'get', + }) +} \ No newline at end of file diff --git a/src/api/ems/site.js b/src/api/ems/site.js index e80d29a..73a7f74 100644 --- a/src/api/ems/site.js +++ b/src/api/ems/site.js @@ -62,3 +62,11 @@ export function getDeviceList(siteId) { method: 'get', }) } + +//获取设备点位table +export function getDevicePointList({siteId,deviceCategory,pageNum,pageSize}) { + return request({ + url: `/ems/siteConfig/getDevicePointList?siteId=${siteId}&pageNum=${pageNum}&pageSize=${pageSize}&deviceCategory=${deviceCategory}`, + method: 'get', + }) +} \ No newline at end of file diff --git a/src/assets/styles/common.scss b/src/assets/styles/common.scss index b706689..04c1fae 100644 --- a/src/assets/styles/common.scss +++ b/src/assets/styles/common.scss @@ -26,18 +26,15 @@ border-bottom: none; font-size: 12px; background: #F1F5FB ; + position: relative; .card-title{ font-weight: 500; color:#333333; } - .large-title{ - font-size: 20px; - font-weight: 500; - line-height: 40px; - } .el-button--text{ color: #666666; } + } } .common-card-container-body-no-padding{ @@ -50,6 +47,80 @@ background-color: transparent; } } +//单站监控 设备监控card公共样式 +.sbjk-card-container{ + .el-card__header { + background-color: transparent; + padding: 10px 14px; + color: #ffffff; + position: relative; + border-radius: 5px 5px 0 0; + .large-title{ + font-size: 20px; + font-weight: 500; + line-height: 40px; + padding: 0 50px 0 11px; + display: inline-block; + vertical-align: middle; + } + .info { + display: inline-block; + vertical-align: middle; + color: #ffffff; + font-size: 12px; + line-height: 20px; + } + .el-button--text{ + color: #666666; + } + .alarm{ + position: absolute; + right: 25px; + top: 50%; + transform: translateY(-50%); + } + } + //红色背景颜色标题 + &.warning-card-container{ + .el-card__header { + background-color: #fc6b69; + } + } + //绿色背景颜色标题 + &.running-card-container { + .el-card__header { + background-color: #05aea3; + } + } + //灰色背景颜色标题 + &.timing-card-container { + .el-card__header { + background-color: #666666; + } + } +} + +/* card标题里的时间选择器 */ +.time-range-card { + &.common-card-container .el-card__header { + padding-top: 0; + padding-bottom: 0; + .time-range-header { + height: 40px; + display: flex; + justify-content: space-between; + align-items: center; + .card-title { + line-height: 40px; + } + } + } +} + + + + + //描述样式 PCS、BMS总览、BMS电池簇页面公共样式 .descriptions-main{ padding:24px; diff --git a/src/components/Ems/DateRangeSelect/index.vue b/src/components/Ems/DateRangeSelect/index.vue index 10196c2..fb026df 100644 --- a/src/components/Ems/DateRangeSelect/index.vue +++ b/src/components/Ems/DateRangeSelect/index.vue @@ -38,9 +38,9 @@ export default { } }, methods: { - init(){ + init(today=false){ const now = new Date(),formatNow = formatDate(now); - const weekAgo = formatDate(new Date(now.getTime() - 7 * 24 * 60 * 60 * 1000)) + const weekAgo = formatDate(today ? new Date(now.getTime()) : new Date(now.getTime() - 7 * 24 * 60 * 60 * 1000)) this.dateRange = [weekAgo, formatNow]; this.defaultDateRange=[weekAgo, formatNow]; this.$emit('updateDate',this.dateRange) diff --git a/src/components/Ems/ZdSelect/index.vue b/src/components/Ems/ZdSelect/index.vue index 83e85cc..bfe869f 100644 --- a/src/components/Ems/ZdSelect/index.vue +++ b/src/components/Ems/ZdSelect/index.vue @@ -3,13 +3,13 @@
- + - - 搜索 - + + +
diff --git a/src/filters/ems.js b/src/filters/ems.js index df51d22..cfc0572 100644 --- a/src/filters/ems.js +++ b/src/filters/ems.js @@ -17,7 +17,7 @@ export const formatDate = (val,toSeconds = false,onlyTime=false) => { if(!toSeconds){ return front } else{ - return front +''+back + return front +' '+back } diff --git a/src/mixins/ems/intervalUpdate.js b/src/mixins/ems/intervalUpdate.js new file mode 100644 index 0000000..d83a85c --- /dev/null +++ b/src/mixins/ems/intervalUpdate.js @@ -0,0 +1,24 @@ +// 定时刷新 +const intervalUpdate= { + data: function () { + return { + intervalUpdateTimer:null + } + }, + beforeDestroy() { + console.log('销毁之前 清空定时器') + if( this.intervalUpdateTimer) { + window.clearInterval(this.intervalUpdateTimer) + this.intervalUpdateTimer = null + } + }, + methods:{ + updateInterval: function (cn,time=60000) { + window.clearInterval(this.intervalUpdateTimer) + this.intervalUpdateTimer = null + this.intervalUpdateTimer = window.setInterval(cn,time) + } + } + +} +export default intervalUpdate diff --git a/src/store/modules/ems.js b/src/store/modules/ems.js index 48c2089..5e02ef5 100644 --- a/src/store/modules/ems.js +++ b/src/store/modules/ems.js @@ -15,6 +15,7 @@ const ems = { ticketStatusOptions:{0:'待处理', 1:'已处理', 2:'处理中'},//工单处理状态 strategyStatusOptions:{'0':'未启用', '1':'已运行', '2':'已暂停', '3':'禁用', '4':'删除'},//策略状态 chargeStatusOptions:{'1':'充电','2':'待机'},//冲放状态 + deviceCategoryOptions:{'PCS':'PCS','STACK':'电池堆','CLUSTER':'电池簇','COOLING':'液冷','BATTERY':'单体电池','AMMETER':'电表'},//设备类别 }, mutations: { SET_ZD_LIST(state, list) { diff --git a/src/views/ems/dzjk/gzgj/index.vue b/src/views/ems/dzjk/gzgj/index.vue index 43a7339..1b9368b 100644 --- a/src/views/ems/dzjk/gzgj/index.vue +++ b/src/views/ems/dzjk/gzgj/index.vue @@ -124,7 +124,7 @@ export default { return { loading:false, btnList:[ - {name:'今日告警',id:'today'}, + {name:'未处理告警',id:'today'}, {name:'历史告警',id:'history'}, ], deviceOptions:[],//设备列表 @@ -173,17 +173,6 @@ export default { onSearch(){ this.pageNum =1//每次搜索从1开始搜索 const [alarmStartTime='',alarmEndTime='']=(this.dateRange || []) - // 选中了时间范围 - if(alarmStartTime && alarmStartTime){ - // 如果选择的时间范围是今天 - if(this.isSameDay(alarmStartTime,alarmEndTime) && this.isSameDay(alarmStartTime,new Date())){ - this.activeBtn = 'today' - }else { - this.activeBtn = 'history' - } - }else{ - //没有选择时间范围 还是按照选中的今日告警、历史告警查询 - } this.getData() }, // 重置 @@ -198,17 +187,6 @@ export default { if(id !== this.activeBtn){ console.log('点击了不同的菜单,更新数据') this.activeBtn=id; - const [alarmStartTime,alarmEndTime]=(this.dateRange || []) - // 切换到今日告警,如果已经选择了时间范围清空 - if(alarmStartTime && alarmEndTime){ - // 如果切换到了今日告警,时间范围不相等或者相等但是不是今天 清空时间选择范围 - if(id === 'today' && !this.isSameDay(alarmStartTime,alarmEndTime) || (this.isSameDay(alarmStartTime,alarmEndTime) && !this.isSameDay(alarmStartTime,new Date()))){ - this.dateRange = [] - }else if(id === 'history' && this.isSameDay(alarmStartTime,alarmEndTime) && this.isSameDay(alarmStartTime,new Date())){ - // 切换成历史告警,但是选择时间范围是当天,清空时间范围 - this.dateRange = [] - } - } this.getData() } }, @@ -218,21 +196,8 @@ export default { const {deviceId,alarmLevel} = this.search const {siteId,pageNum,pageSize,activeBtn} =this const [alarmStartTime='',alarmEndTime='']=(this.dateRange || []) - let start='',end = '',now =new Date() - if(activeBtn === 'today'){ - start = end = now - }else{ - if(alarmStartTime && alarmEndTime){ - start = alarmStartTime - end = alarmEndTime - }else{ - start='' - end = '' - // now - // end.setDate(end.getDate() - 1); - } - } - getAlarmDetailList({deviceId,alarmLevel,siteId,pageSize,pageNum,alarmStartTime:formatDate(start),alarmEndTime:formatDate(end)}).then(response => { + let status = activeBtn === 'today' ? '0' : '1,2' + getAlarmDetailList({status,deviceId,alarmLevel,siteId,pageSize,pageNum,alarmStartTime:formatDate(alarmStartTime),alarmEndTime:formatDate(alarmEndTime)}).then(response => { this.tableData=response?.rows || []; this.totalSize = response?.total || 0 }).finally(() => {this.loading=false}) diff --git a/src/views/ems/dzjk/home/ActiveChart.vue b/src/views/ems/dzjk/home/ActiveChart.vue index 0b4eca4..a1a5aa1 100644 --- a/src/views/ems/dzjk/home/ActiveChart.vue +++ b/src/views/ems/dzjk/home/ActiveChart.vue @@ -13,7 +13,7 @@ import * as echarts from 'echarts' import resize from '@/mixins/ems/resize' import DateRangeSelect from '@/components/Ems/DateRangeSelect/index.vue' -import {getPcsNameList, getPowerData} from '@/api/ems/dzjk' +import { getPointData } from '@/api/ems/dzjk' export default { mixins: [resize], @@ -23,7 +23,7 @@ export default { chart: null, timeRange:[], siteId:'', - deviceId:'' + isInit:true } }, mounted() { @@ -42,33 +42,23 @@ export default { // 更新时间范围 重置图表 updateDate(data){ this.timeRange=data - this.getGVQXData() + !this.isInit && this.getGVQXData() + this.isInit = false }, getGVQXData(){ this.showLoading() - const {siteId,deviceId,timeRange}=this - if(!deviceId) return this.hideLoading() - getPowerData({siteId,deviceId,startDate:timeRange[0],endDate:timeRange[1],dataType:'1'}).then(response => { + const {siteId,timeRange}=this + getPointData({siteId,startDate:timeRange[0],endDate:timeRange[1]}).then(response => { this.setOption(response?.data || []) }).finally(()=>this.hideLoading()) }, init(siteId){ //初始化 清空数据 this.siteId = siteId + this.isInit = true this.timeRange=[] - this.deviceId='' - this.$refs.dateRangeSelect.init() - this.showLoading() - getPcsNameList(siteId).then(response=>{ - const data=response?.data || []; - if(data.length>0){ - this.deviceId=data[0].id - //接口调用完成之后 设置图表、结束loading - this.getGVQXData() - }else{ - this.hideLoading() - } - }) + this.$refs.dateRangeSelect.init(true) + this.getGVQXData() }, initChart() { this.chart = echarts.init(document.querySelector('#activeChart')) @@ -80,12 +70,12 @@ export default { this.chart && this.chart.hideLoading() }, setOption(data) { - const source = [['日期','电网功率']] + const source = [['日期','电网功率','负载功率','储能功率','光伏功率','soc平均值','soh平均值','电池平均温度平均值']] + console.log('source.slice(1)',source[0].slice(1)) this.chart && data.forEach((item)=>{ - source.push([item.statisDate,item.gridPower]) + source.push([item.statisDate,item.gridPower,item.loadPower,item.storagePower,item.pvPower,item.avgSoc,item.avgSoh,item.avgTemp]) }) this.chart.setOption({ - color:['#FFBD00','#3C81FF'], grid: { containLabel: true }, @@ -105,16 +95,21 @@ export default { xAxis: { type: 'category', }, - yAxis: { - type: 'value', - }, - dataset:{source}, - series: [ + yAxis: [ { - name:'电网功率', + type: 'value', + }, + { + type: 'value', + }, + ], + dataset:{source}, + series: source[0].slice(1).map((item,index)=>{ + return { type: 'line', + yAxisIndex:index<=4 ? 0 : 1 } - ] + }) }) }, diff --git a/src/views/ems/dzjk/home/WeekChart.vue b/src/views/ems/dzjk/home/WeekChart.vue index 486f5e8..acd0685 100644 --- a/src/views/ems/dzjk/home/WeekChart.vue +++ b/src/views/ems/dzjk/home/WeekChart.vue @@ -72,7 +72,7 @@ export default { source.push([item.ammeterDate, item.chargedCap,item.disChargedCap]) }) this.chart && this.chart.setOption({ - color:['#FFBD00','#3C81FF','#05AEA3'], + color:['#4472c4','#70ad47'],//所有充放电颜色保持统一 tooltip: { trigger: 'axis', axisPointer: { // 坐标轴指示器,坐标轴触发有效 @@ -107,11 +107,11 @@ export default { series: [ { yAxisIndex:0, - type: 'line', + type: 'bar', }, { yAxisIndex:0, - type: 'line', + type: 'bar', }, ] }) diff --git a/src/views/ems/dzjk/home/index.vue b/src/views/ems/dzjk/home/index.vue index ff1e665..51ddebf 100644 --- a/src/views/ems/dzjk/home/index.vue +++ b/src/views/ems/dzjk/home/index.vue @@ -13,7 +13,7 @@ class="common-card-container common-card-container-body-no-padding" >
- 静态信息 + 站点信息
diff --git a/src/views/ems/dzjk/sbjk/PointChart.vue b/src/views/ems/dzjk/sbjk/PointChart.vue new file mode 100644 index 0000000..a0f4ff5 --- /dev/null +++ b/src/views/ems/dzjk/sbjk/PointChart.vue @@ -0,0 +1,221 @@ + + + + \ No newline at end of file diff --git a/src/views/ems/dzjk/sbjk/bmsdcc/index.vue b/src/views/ems/dzjk/sbjk/bmsdcc/index.vue index 16584bc..cd19393 100644 --- a/src/views/ems/dzjk/sbjk/bmsdcc/index.vue +++ b/src/views/ems/dzjk/sbjk/bmsdcc/index.vue @@ -2,9 +2,13 @@ - diff --git a/src/views/ems/dzjk/sbjk/dtdc/index.vue b/src/views/ems/dzjk/sbjk/dtdc/index.vue index d085e62..46c9ac2 100644 --- a/src/views/ems/dzjk/sbjk/dtdc/index.vue +++ b/src/views/ems/dzjk/sbjk/dtdc/index.vue @@ -2,7 +2,7 @@
单体电池实时数据 diff --git a/src/views/ems/dzjk/sbjk/pcs/index.vue b/src/views/ems/dzjk/sbjk/pcs/index.vue index 70bf861..5e85d36 100644 --- a/src/views/ems/dzjk/sbjk/pcs/index.vue +++ b/src/views/ems/dzjk/sbjk/pcs/index.vue @@ -1,141 +1,112 @@ - diff --git a/src/views/ems/dzjk/sbjk/ssyx/index.vue b/src/views/ems/dzjk/sbjk/ssyx/index.vue index c862ef8..54bce5b 100644 --- a/src/views/ems/dzjk/sbjk/ssyx/index.vue +++ b/src/views/ems/dzjk/sbjk/ssyx/index.vue @@ -34,11 +34,12 @@ import DcpjwdChart from './DcpjwdChart.vue' import DcpjsocChart from './DcpjsocChart.vue' import getQuerySiteId from "@/mixins/ems/getQuerySiteId"; import {getRunningHeadInfo} from '@/api/ems/dzjk' +import intervalUpdate from "@/mixins/ems/intervalUpdate"; export default { name:'DzjkSbjkSsyx', components:{RealTimeBaseInfo,CnglqxChart,PocpjwdChart,DcpjwdChart,DcpjsocChart}, - mixins:[getQuerySiteId], + mixins:[getQuerySiteId,intervalUpdate], data() { return { runningHeadData:{},//运行信息 @@ -51,15 +52,18 @@ export default { this.runningHeadData = response?.data || {} }) }, + updateData(){ + this.$refs.cnglqx.init(this.siteId) + this.$refs.pocpjwd.init(this.siteId) + this.$refs.dcpjsoc.init(this.siteId) + this.$refs.dcpjwd.init(this.siteId) + }, init(){ this.getRunningHeadData() this.$nextTick(()=>{ - this.$refs.cnglqx.init(this.siteId) - this.$refs.pocpjwd.init(this.siteId) - this.$refs.dcpjsoc.init(this.siteId) - this.$refs.dcpjwd.init(this.siteId) + this.updateData() + this.updateInterval(this.updateData) }) - } } diff --git a/src/views/ems/dzjk/sbjk/yl/index.vue b/src/views/ems/dzjk/sbjk/yl/index.vue index 51323e0..1c07198 100644 --- a/src/views/ems/dzjk/sbjk/yl/index.vue +++ b/src/views/ems/dzjk/sbjk/yl/index.vue @@ -1,7 +1,7 @@