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 @@
-
+
- {{index+1}}#{{baseInfo.deviceName}}
+ {{index+1}}#{{baseInfo.parentDeviceName?`${baseInfo.parentDeviceName} —> ` : ''}}{{baseInfo.deviceName}}
@@ -15,14 +19,18 @@
- {{baseInfo[item.attr] | formatNumber}}
+
+
+ {{baseInfo[item.attr] | formatNumber}}
+
+
-
当前SOC : {{baseInfo.currentSoc}}%
+
当前SOC : {{baseInfo.currentSoc}}%
+
+ {{scope.row.avgData}}
+
+
+ {{scope.row.minData}}
+
+
+ {{scope.row.maxData}}
+
+
-
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 @@
-