From f5fc1d64ec83069e5a8ee9d369ebf7e4b2a8af5b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E7=99=BD=E8=8F=9C?=
<43331987+JiaLiBai@users.noreply.github.com>
Date: Mon, 25 Aug 2025 14:29:27 +0800
Subject: [PATCH 01/20] =?UTF-8?q?=E4=BC=98=E5=8C=96?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/api/ems/dzjk.js | 4 +--
src/views/ems/dzjk/gzgj/index.vue | 41 +++---------------------------
src/views/ems/dzjk/zxlt/index.vue | 42 +++++++++++++++++++++++--------
3 files changed, 37 insertions(+), 50 deletions(-)
diff --git a/src/api/ems/dzjk.js b/src/api/ems/dzjk.js
index eb2d979..5faf472 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'
})
}
diff --git a/src/views/ems/dzjk/gzgj/index.vue b/src/views/ems/dzjk/gzgj/index.vue
index 3108136..d600f42 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/zxlt/index.vue b/src/views/ems/dzjk/zxlt/index.vue
index 98a3999..d8a2dfd 100644
--- a/src/views/ems/dzjk/zxlt/index.vue
+++ b/src/views/ems/dzjk/zxlt/index.vue
@@ -112,11 +112,14 @@
>
{{ communicationStatusOptions[item.communicationStatus] }}
-
-
![]()
+
+
+
![]()
+
{{item.batteryNum || 0}}
+
{{ item.deviceName }}
@@ -179,11 +182,14 @@
]
}}
-
-
![]()
+
+
+
![]()
+
{{item.batteryNum || 0}}
+
{{ item.children[0].deviceName }}
@@ -505,10 +511,26 @@ $lineColor: #86bcc7;
.row-items-img {
position: relative;
padding-top: 12px;
+ &.row-items-img-bms{
+ padding-top: 14px;
+ .num{
+ position: absolute;
+ top: -2px;
+ right: -2px;
+ font-size: 10px;
+ line-height: 10px;
+ padding: 2px 4px;
+ text-align: center;
+ border-radius: 10px;
+ background-color: #03c69d;
+ color: #fff;
+ }
+ }
img {
width: 80px;
height: auto;
display: block;
+ position: relative;
&.img-lq {
width: 50px;
}
From 8808b256829c38a62429f070e2540fb70bd3b59e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E7=99=BD=E8=8F=9C?=
<43331987+JiaLiBai@users.noreply.github.com>
Date: Mon, 1 Sep 2025 18:06:56 +0800
Subject: [PATCH 02/20] =?UTF-8?q?=E7=BB=BC=E5=90=88=E6=9F=A5=E8=AF=A2?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/store/modules/ems.js | 1 +
src/views/ems/search/index.vue | 136 +++++++++++++++++++++++++++++++++
2 files changed, 137 insertions(+)
create mode 100644 src/views/ems/search/index.vue
diff --git a/src/store/modules/ems.js b/src/store/modules/ems.js
index cad9f32..2bc171c 100644
--- a/src/store/modules/ems.js
+++ b/src/store/modules/ems.js
@@ -14,6 +14,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/search/index.vue b/src/views/ems/search/index.vue
new file mode 100644
index 0000000..45d4e8c
--- /dev/null
+++ b/src/views/ems/search/index.vue
@@ -0,0 +1,136 @@
+
+
+
+
+
+
+ {{ item.siteName }}
+
+
+
+
+
+
+ {{ name }}
+
+
+
+
+
+
+
+
+
+
+ 时
+ 分
+ 秒
+
+
+
+
+ 生成图表
+
+
+
+
+
+
+
+
+
+
+
+
From 243724c9a649cc8df7562e8f91442b9a77f85a82 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E7=99=BD=E8=8F=9C?=
<43331987+JiaLiBai@users.noreply.github.com>
Date: Thu, 4 Sep 2025 15:37:15 +0800
Subject: [PATCH 03/20] =?UTF-8?q?=E7=BB=BC=E5=90=88=E6=9F=A5=E8=AF=A2?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/api/ems/search.js | 24 ++++
src/views/ems/search/index.vue | 193 ++++++++++++++++++++++++---------
2 files changed, 163 insertions(+), 54 deletions(-)
create mode 100644 src/api/ems/search.js
diff --git a/src/api/ems/search.js b/src/api/ems/search.js
new file mode 100644
index 0000000..f53e504
--- /dev/null
+++ b/src/api/ems/search.js
@@ -0,0 +1,24 @@
+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
+ })
+}
diff --git a/src/views/ems/search/index.vue b/src/views/ems/search/index.vue
index 45d4e8c..2e4f6fe 100644
--- a/src/views/ems/search/index.vue
+++ b/src/views/ems/search/index.vue
@@ -3,36 +3,36 @@
-
+
{{ item.siteName }}
-
-
-
- {{ name }}
+
+
+
+ {{ key }}
-
-
-
+
+
-
-
- 时
- 分
- 秒
+
+
+ 分钟
+ 小时
+ 天
@@ -43,7 +43,6 @@
@@ -53,35 +52,23 @@
From c5026887371b67f38725174734fc215665ba97c6 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E7=99=BD=E8=8F=9C?=
<43331987+JiaLiBai@users.noreply.github.com>
Date: Thu, 4 Sep 2025 20:12:05 +0800
Subject: [PATCH 04/20] =?UTF-8?q?=E7=BB=BC=E5=90=88=E6=9F=A5=E8=AF=A2?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/filters/ems.js | 2 +-
src/views/ems/search/DateTimeSelect.vue | 142 ++++++++++++++++++++++++
src/views/ems/search/index.vue | 79 ++++++++++++-
3 files changed, 220 insertions(+), 3 deletions(-)
create mode 100644 src/views/ems/search/DateTimeSelect.vue
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/views/ems/search/DateTimeSelect.vue b/src/views/ems/search/DateTimeSelect.vue
new file mode 100644
index 0000000..515b760
--- /dev/null
+++ b/src/views/ems/search/DateTimeSelect.vue
@@ -0,0 +1,142 @@
+
+
+
+
+ 重置
+ 搜索
+ 上一时段
+ 下一时段
+
+
+
+
+
diff --git a/src/views/ems/search/index.vue b/src/views/ems/search/index.vue
index 2e4f6fe..650bff6 100644
--- a/src/views/ems/search/index.vue
+++ b/src/views/ems/search/index.vue
@@ -28,6 +28,13 @@
@select="handleSelect"
>
+
+
+
分钟
@@ -43,6 +50,7 @@
@@ -54,26 +62,91 @@ import * as echarts from 'echarts'
import resize from '@/mixins/ems/resize'
import {getAllSites} from "@/api/ems/zddt";
import {getAllDeviceCategory,getPointValueList,pointFuzzyQuery} from '@/api/ems/search'
+import DateTimeSelect from "./DateTimeSelect.vue";
export default {
name: "Search",
mixins: [resize],
+ components:{DateTimeSelect},
computed: {
+ isDtdc(){
+ return this.form.categoryName === '单体电池'
+ }
},
data() {
return {
chart: null,
deviceCategoryList:[],//设备列表
siteList: [],//站点列表
+ childOptions:[
+ {
+ value: '021_DDS_01',
+ label: '站点一',
+ children:[{
+ value: '1',
+ label: '1-50',
+ children:[{
+ value: '001',
+ label: '设备一'
+ },{
+ value: '002',
+ label: '设备二'
+ },{
+ value: '003',
+ label: '设备三'
+ }]
+ }]
+ },
+ {
+ value: '021_DDS_02',
+ label: '站点二',
+ children:
+ [{
+ value: '1',
+ label: '1-50',
+ children:[{
+ value: '001',
+ label: '设备一'
+ },{
+ value: '002',
+ label: '设备二'
+ }, {
+ value: '003',
+ label: '设备三'
+ }]
+ },
+ {
+ value: '2',
+ label: '51-100',
+ children:[{
+ value: '001',
+ label: '设备一'
+ },{
+ value: '002',
+ label: '设备二'
+ },{
+ value: '003',
+ label: '设备三'
+ }]
+ }]
+
+ }
+ ],//二级设备列表
form: {
+ dataRange:[],//时间选择范围
+ child:[],
siteIds: [],//当前选中的站点id 默认选中第一个站点
categoryName: '',//设备
pointName: '',//点位
- dataUnit: '',//横坐标
+ dataUnit: 1,//横坐标
},
loading: false,
}
},
methods: {
+ handleChildChange(data){
+ console.log('选择二级设备',data)
+ this.form.child=data
+ },
showLoading(){
this.chart && this.chart.showLoading()
},
@@ -150,7 +223,6 @@ export default {
this.form.pointName = data.value
},
querySearchAsync(query,cb){
- // query = query.trim()
console.log('查询数据',query)
if(this.form.siteIds.length===0 || !this.form.categoryName){
this.$message({
@@ -188,6 +260,9 @@ export default {
if(!this.form.pointName){
return this.$message.error('请输入正确的点位');
}
+ if(this.isDtdc && (this.form.child.length === 0 || this.form.child.length > 5 )){
+ return this.$message.error('请选择二级设备且不能超过5个');
+ }
this.loading = true
const{siteIds,dataUnit,categoryName,pointName}=this.form
getPointValueList({siteIds,dataUnit,categoryName,pointName}).then(response => {
From e7ea8c8f447533197e478127ad3eec5f41884776 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E7=99=BD=E8=8F=9C?=
<43331987+JiaLiBai@users.noreply.github.com>
Date: Fri, 5 Sep 2025 20:37:44 +0800
Subject: [PATCH 05/20] =?UTF-8?q?=E7=BB=BC=E5=90=88=E6=9F=A5=E8=AF=A2?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/api/ems/search.js | 8 ++
src/views/ems/search/DateTimeSelect.vue | 15 ++-
src/views/ems/search/index.vue | 167 ++++++++++++++----------
3 files changed, 119 insertions(+), 71 deletions(-)
diff --git a/src/api/ems/search.js b/src/api/ems/search.js
index f53e504..32bd1ea 100644
--- a/src/api/ems/search.js
+++ b/src/api/ems/search.js
@@ -22,3 +22,11 @@ export function getPointValueList(data) {
data
})
}
+
+// 图表
+export function getAllBatteryIdsBySites(data) {
+ return request({
+ url: `/ems/generalQuery/getAllBatteryIdsBySites/${data}`,
+ method: 'get',
+ })
+}
\ No newline at end of file
diff --git a/src/views/ems/search/DateTimeSelect.vue b/src/views/ems/search/DateTimeSelect.vue
index 515b760..0827588 100644
--- a/src/views/ems/search/DateTimeSelect.vue
+++ b/src/views/ems/search/DateTimeSelect.vue
@@ -32,7 +32,7 @@ export default {
return this.dataUnit === 3 ? 'daterange' : 'datetimerange'
},
valueFormat(){
- return this.dataUnit === 3 ? 'yyyy-MM-dd' : 'yyyy-MM-dd HH:mm'
+ return this.dataUnit === 3 ? 'yyyy-MM-dd' :this.dataUnit === 2 ? 'yyyy-MM-dd HH:mm' : 'yyyy-MM-dd HH:mm:ss'
},
disabledNextBtn(){
if(this.dateRange && this.dateRange.length ===2){
@@ -47,7 +47,14 @@ export default {
dataUnit:{
handler(newVal,oldVal){
console.log('wacth到了dataUnit的变化',newVal,oldVal)
- newVal && newVal!==oldVal && this.init()
+ this.init()
+ // if(!oldVal && newVal){
+ // this.init()
+ // }else{
+ // this.init()
+ // //为了触发调用图表接口
+ // this.$emit('updateDate',this.dateRange || [])
+ // }
},
immediate: true,
}
@@ -73,7 +80,7 @@ export default {
this.dateRange = [timeAgo, formatNow];
this.defaultDateRange=[timeAgo, formatNow];
console.log('init',timeAgo,formatNow)
- this.$emit('updateDate',this.dateRange || [])
+ this.$emit('initDate',this.dateRange || [])
},
showBtnLoading(status){
this.loading = status
@@ -96,6 +103,8 @@ export default {
const timeDis= dataUnit === 3? 30 * 24 * 60 * 60 * 1000 :dataUnit === 2 ? 24 * 60 * 60 * 1000 : 60 * 60 * 1000
if(endTime - startTime > timeDis){
this.$message.error(`时间范围不能超过${dataUnit === 3 ? '30天' : dataUnit === 2 ? '24小时' : '1小时'}`)
+ }else{
+ this.$emit('updateDate',this.dateRange || [])
}
}else{
this.$emit('updateDate',this.dateRange || [])
diff --git a/src/views/ems/search/index.vue b/src/views/ems/search/index.vue
index 650bff6..60c2d77 100644
--- a/src/views/ems/search/index.vue
+++ b/src/views/ems/search/index.vue
@@ -6,11 +6,16 @@
prop="siteIds"
:rules="[{ required: true, message: '请选择站点' }]"
>
-
-
+
+
+
+
+
+
+
{{ item.siteName }}
-
-
+
+
@@ -28,10 +33,11 @@
@select="handleSelect"
>
-
+
@@ -50,7 +56,7 @@
@@ -61,7 +67,7 @@
import * as echarts from 'echarts'
import resize from '@/mixins/ems/resize'
import {getAllSites} from "@/api/ems/zddt";
-import {getAllDeviceCategory,getPointValueList,pointFuzzyQuery} from '@/api/ems/search'
+import {getAllDeviceCategory,getPointValueList,pointFuzzyQuery,getAllBatteryIdsBySites} from '@/api/ems/search'
import DateTimeSelect from "./DateTimeSelect.vue";
export default {
name: "Search",
@@ -70,71 +76,32 @@ export default {
computed: {
isDtdc(){
return this.form.categoryName === '单体电池'
- }
+ },
+ },
+ watch:{
+ 'form.siteIds':{
+ handler(newVal){
+ newVal && this.isDtdc && this.getChildList()
+ }
+ },
+ isDtdc:{
+ handler(newVal){
+ newVal && this.form.siteIds && this.getChildList()
+ !newVal && (this.form.child = [])
+ }
+ },
+
},
data() {
return {
chart: null,
deviceCategoryList:[],//设备列表
siteList: [],//站点列表
- childOptions:[
- {
- value: '021_DDS_01',
- label: '站点一',
- children:[{
- value: '1',
- label: '1-50',
- children:[{
- value: '001',
- label: '设备一'
- },{
- value: '002',
- label: '设备二'
- },{
- value: '003',
- label: '设备三'
- }]
- }]
- },
- {
- value: '021_DDS_02',
- label: '站点二',
- children:
- [{
- value: '1',
- label: '1-50',
- children:[{
- value: '001',
- label: '设备一'
- },{
- value: '002',
- label: '设备二'
- }, {
- value: '003',
- label: '设备三'
- }]
- },
- {
- value: '2',
- label: '51-100',
- children:[{
- value: '001',
- label: '设备一'
- },{
- value: '002',
- label: '设备二'
- },{
- value: '003',
- label: '设备三'
- }]
- }]
-
- }
- ],//二级设备列表
+ childOptions:[],//二级设备列表
form: {
dataRange:[],//时间选择范围
child:[],
- siteIds: [],//当前选中的站点id 默认选中第一个站点
+ siteIds: '',//当前选中的站点id 默认选中第一个站点
categoryName: '',//设备
pointName: '',//点位
dataUnit: 1,//横坐标
@@ -143,6 +110,43 @@ export default {
}
},
methods: {
+ getChildList(){
+ this.childOptions=[]
+ this.form.child=[]
+ const {siteIds} = this.form
+ getAllBatteryIdsBySites([siteIds]).then(response=>{
+ const data = response?.data || {};
+ const base = 50
+ let options = []
+ Object.entries(data).forEach(([key,value],index)=>{
+ if(!value) value =[]
+ options.push({
+ value: key,
+ label: this.siteList.find(s=>s.siteId === key)?.siteName || '',
+ children:[]
+ })
+ const length = value.length
+ const num = Math.ceil(length /base )
+ if(num === 0) return
+ for(let i = 1; i <= num; i++){
+ const start = (i-1)*base+1,end = i*base
+ options[index].children.push({
+ value:i,
+ label: `${start}-${end}`,
+ children:[]
+ })
+ for(let s = start;s<=Math.min(length,end);s++){
+ options[index].children[i-1].children.push({
+ value:value[s-1],
+ label:value[s-1]
+ })
+ }
+ }
+ })
+ console.log('二级设备options',options)
+ this.childOptions = options;
+ })
+ },
handleChildChange(data){
console.log('选择二级设备',data)
this.form.child=data
@@ -156,6 +160,10 @@ export default {
initChart() {
this.chart = echarts.init(document.querySelector('#searchChart'))
},
+ updateDate(val){
+ this.form.dataRange =val || []
+ this.getDate()
+ },
setOption(data) {
if(!this.chart) return
this.chart.clear()
@@ -165,7 +173,7 @@ export default {
data.forEach((item,index)=>{
item.deviceList.forEach(inner=>{
dataset.push({
- name:`${this.siteList.find(s=>s.siteId === item.siteId)?.siteName || ''}-${inner.deviceId}`,
+ name:`${this.isDtdc ? `${inner.parentDeviceId ? inner.parentDeviceId+'-' : ''}` : ''}${inner.deviceId}`,
type:'line',
xdata:[],
data:[]
@@ -224,7 +232,7 @@ export default {
},
querySearchAsync(query,cb){
console.log('查询数据',query)
- if(this.form.siteIds.length===0 || !this.form.categoryName){
+ if(!this.form.siteIds || !this.form.categoryName){
this.$message({
type: 'warning',
message: '请先选择站点和设备',
@@ -232,7 +240,7 @@ export default {
return cb([])
}
pointFuzzyQuery({
- siteIds:this.form.siteIds,
+ siteIds:[this.form.siteIds],
categoryName:this.form.categoryName,
pointName:query,
}).then(response => {
@@ -264,8 +272,31 @@ export default {
return this.$message.error('请选择二级设备且不能超过5个');
}
this.loading = true
- const{siteIds,dataUnit,categoryName,pointName}=this.form
- getPointValueList({siteIds,dataUnit,categoryName,pointName}).then(response => {
+ const{siteIds,dataUnit,categoryName,pointName,dataRange:[start='',end=''],child}=this.form
+ let siteDeviceMap={}
+ child.forEach(([first,second,third])=>{
+ if(siteDeviceMap[first]){
+ siteDeviceMap[first].push(third)
+ }else{
+ siteDeviceMap[first]=[]
+ siteDeviceMap[first].push(third)
+ }
+ })
+ let startDate,endDate
+ if(start && dataUnit===3){
+ // startDate= start + `${dataUnit === 2 ? ':00' : ' 00:00:00'}`
+ startDate = start + ' 00:00:00'
+ }else{
+ startDate=start
+ }
+ if(end && dataUnit===3){
+ // endDate= end + `${dataUnit === 2 ? ':00' : ' 00:00:00'}`
+ endDate = end + ' 00:00:00'
+ }else{
+ endDate=end
+ }
+
+ getPointValueList({siteIds:[siteIds],dataUnit,categoryName,pointName,startDate,endDate,siteDeviceMap}).then(response => {
this.setOption(response?.data || [])
}).finally(()=>{
this.loading = false
From 2742f874ce3082d16e65a2080e145aa8a743e650 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E7=99=BD=E8=8F=9C?=
<43331987+JiaLiBai@users.noreply.github.com>
Date: Fri, 5 Sep 2025 20:50:27 +0800
Subject: [PATCH 06/20] =?UTF-8?q?=E7=BB=BC=E5=90=88=E6=9F=A5=E8=AF=A2?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/views/ems/search/index.vue | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/src/views/ems/search/index.vue b/src/views/ems/search/index.vue
index 60c2d77..aecbbed 100644
--- a/src/views/ems/search/index.vue
+++ b/src/views/ems/search/index.vue
@@ -25,17 +25,19 @@
-
+
-
+
5 )){
- return this.$message.error('请选择二级设备且不能超过5个');
+ return this.$message.error('请选择单体电池且不能超过5个');
}
this.loading = true
const{siteIds,dataUnit,categoryName,pointName,dataRange:[start='',end=''],child}=this.form
From cc3164a423e316f90a31e610639efe6e36b1672c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E7=99=BD=E8=8F=9C?=
<43331987+JiaLiBai@users.noreply.github.com>
Date: Mon, 8 Sep 2025 18:01:48 +0800
Subject: [PATCH 07/20] =?UTF-8?q?=E4=BC=98=E5=8C=96?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/components/Ems/DateRangeSelect/index.vue | 4 ++--
src/components/Ems/ZdSelect/index.vue | 8 ++++----
src/views/ems/dzjk/home/ActiveChart.vue | 2 +-
src/views/ems/dzjk/home/WeekChart.vue | 4 ++--
src/views/ems/dzjk/home/index.vue | 2 +-
src/views/ems/dzjk/sbjk/bmsdcc/index.vue | 4 ++--
src/views/ems/search/index.vue | 6 +++---
src/views/ems/site/sblb/index.vue | 4 ++--
8 files changed, 17 insertions(+), 17 deletions(-)
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/views/ems/dzjk/home/ActiveChart.vue b/src/views/ems/dzjk/home/ActiveChart.vue
index 0b4eca4..1d768a0 100644
--- a/src/views/ems/dzjk/home/ActiveChart.vue
+++ b/src/views/ems/dzjk/home/ActiveChart.vue
@@ -57,7 +57,7 @@ export default {
this.siteId = siteId
this.timeRange=[]
this.deviceId=''
- this.$refs.dateRangeSelect.init()
+ this.$refs.dateRangeSelect.init(true)
this.showLoading()
getPcsNameList(siteId).then(response=>{
const data=response?.data || [];
diff --git a/src/views/ems/dzjk/home/WeekChart.vue b/src/views/ems/dzjk/home/WeekChart.vue
index 486f5e8..1cd685f 100644
--- a/src/views/ems/dzjk/home/WeekChart.vue
+++ b/src/views/ems/dzjk/home/WeekChart.vue
@@ -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 9398a11..e500155 100644
--- a/src/views/ems/dzjk/home/index.vue
+++ b/src/views/ems/dzjk/home/index.vue
@@ -10,7 +10,7 @@
class="common-card-container common-card-container-body-no-padding"
>
- 静态信息
+ 站点信息
- {{index+1}}#{{baseInfo.deviceName}}
+ {{index+1}}#{{baseInfo.parentDeviceName?`${baseInfo.parentDeviceName} -> ` : ''}}{{baseInfo.deviceName}}
@@ -20,7 +20,7 @@
当前SOC : {{baseInfo.currentSoc}}%
diff --git a/src/views/ems/search/index.vue b/src/views/ems/search/index.vue
index aecbbed..62c2c86 100644
--- a/src/views/ems/search/index.vue
+++ b/src/views/ems/search/index.vue
@@ -60,7 +60,7 @@
form.dataRange=e||[])" @updateDate="updateDate"/>
-
+
@@ -193,8 +193,8 @@ export default {
console.log('图表数据',dataset)
this.chart.setOption({
legend: {
- left: 'center',
- top: '10',
+ // left: 'center',
+ // top: '10',
},
grid: {
containLabel: true
diff --git a/src/views/ems/site/sblb/index.vue b/src/views/ems/site/sblb/index.vue
index 597ef95..1823343 100644
--- a/src/views/ems/site/sblb/index.vue
+++ b/src/views/ems/site/sblb/index.vue
@@ -3,12 +3,12 @@
-
+
- 搜索
+
重置
From f16b92582cc0a1ce2d36e579fe85ea07303a7b6e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E7=99=BD=E8=8F=9C?=
<43331987+JiaLiBai@users.noreply.github.com>
Date: Tue, 9 Sep 2025 17:51:52 +0800
Subject: [PATCH 08/20] =?UTF-8?q?=E4=BC=98=E5=8C=96?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/mixins/ems/intervalUpdate.js | 24 ++++++++++++++++++++++++
src/views/ems/dzjk/sbjk/pcs/index.vue | 9 +++++++--
src/views/ems/dzjk/sbjk/ssyx/index.vue | 16 ++++++++++------
3 files changed, 41 insertions(+), 8 deletions(-)
create mode 100644 src/mixins/ems/intervalUpdate.js
diff --git a/src/mixins/ems/intervalUpdate.js b/src/mixins/ems/intervalUpdate.js
new file mode 100644
index 0000000..774f221
--- /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=10000) {
+ window.clearInterval(this.intervalUpdateTimer)
+ this.intervalUpdateTimer = null
+ this.intervalUpdateTimer = window.setInterval(cn,time)
+ }
+ }
+
+}
+export default intervalUpdate
diff --git a/src/views/ems/dzjk/sbjk/pcs/index.vue b/src/views/ems/dzjk/sbjk/pcs/index.vue
index 70bf861..d222055 100644
--- a/src/views/ems/dzjk/sbjk/pcs/index.vue
+++ b/src/views/ems/dzjk/sbjk/pcs/index.vue
@@ -51,10 +51,11 @@
import RealTimeBaseInfo from "./../RealTimeBaseInfo.vue";
import getQuerySiteId from "@/mixins/ems/getQuerySiteId";
import {getRunningHeadInfo,getPcsDetailInfo} from '@/api/ems/dzjk'
+import intervalUpdate from "@/mixins/ems/intervalUpdate";
export default {
name:'DzjkSbjkPcs',
components:{RealTimeBaseInfo},
- mixins:[getQuerySiteId],
+ mixins:[getQuerySiteId,intervalUpdate],
data() {
return {
loading:false,
@@ -150,9 +151,13 @@ export default {
this.pcsList = JSON.parse(JSON.stringify(data))
}).finally(()=>this.loading = false)
},
- init(){
+ updateData(){
this.getRunningHeadData()
this.getPcsList()
+ },
+ init(){
+ this.updateData()
+ this.updateInterval(this.updateData,5000)
}
},
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)
})
-
}
}
From ae1c2a5d6ce55b383832aaf59d344338a1dca193 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E7=99=BD=E8=8F=9C?=
<43331987+JiaLiBai@users.noreply.github.com>
Date: Wed, 10 Sep 2025 09:54:29 +0800
Subject: [PATCH 09/20] =?UTF-8?q?=E5=AE=9A=E6=97=B6=E5=88=B7=E6=96=B0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/views/ems/dzjk/sbjk/bmsdcc/index.vue | 10 ++--
src/views/ems/dzjk/sbjk/bmszl/index.vue | 11 +++--
src/views/ems/dzjk/sbjk/db/index.vue | 61 ++++++++++++++----------
src/views/ems/dzjk/sbjk/pcs/index.vue | 2 +-
src/views/ems/dzjk/sbjk/yl/index.vue | 25 +++++++---
5 files changed, 70 insertions(+), 39 deletions(-)
diff --git a/src/views/ems/dzjk/sbjk/bmsdcc/index.vue b/src/views/ems/dzjk/sbjk/bmsdcc/index.vue
index 8653293..028b47e 100644
--- a/src/views/ems/dzjk/sbjk/bmsdcc/index.vue
+++ b/src/views/ems/dzjk/sbjk/bmsdcc/index.vue
@@ -69,9 +69,10 @@
From ba4df3217610b5a6fc735296a77da33d6f928214 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E7=99=BD=E8=8F=9C?=
<43331987+JiaLiBai@users.noreply.github.com>
Date: Wed, 10 Sep 2025 09:56:22 +0800
Subject: [PATCH 10/20] =?UTF-8?q?=E4=BC=98=E5=8C=96?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/views/ems/dzjk/sbjk/db/index.vue | 1 -
1 file changed, 1 deletion(-)
diff --git a/src/views/ems/dzjk/sbjk/db/index.vue b/src/views/ems/dzjk/sbjk/db/index.vue
index f5945d0..75c6c50 100644
--- a/src/views/ems/dzjk/sbjk/db/index.vue
+++ b/src/views/ems/dzjk/sbjk/db/index.vue
@@ -130,7 +130,6 @@ export default {
}
}
.cnb-common-card-container {
- margin-top: 25px;
::v-deep {
.el-card__header {
background-color: #05aea3;
From f0054487058179c9721e43c7e338231b5e944a74 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E7=99=BD=E8=8F=9C?=
<43331987+JiaLiBai@users.noreply.github.com>
Date: Wed, 10 Sep 2025 14:25:00 +0800
Subject: [PATCH 11/20] =?UTF-8?q?=E4=BC=98=E5=8C=96?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/mixins/ems/intervalUpdate.js | 2 +-
src/views/ems/search/index.vue | 18 +++++++++---------
2 files changed, 10 insertions(+), 10 deletions(-)
diff --git a/src/mixins/ems/intervalUpdate.js b/src/mixins/ems/intervalUpdate.js
index 774f221..d83a85c 100644
--- a/src/mixins/ems/intervalUpdate.js
+++ b/src/mixins/ems/intervalUpdate.js
@@ -13,7 +13,7 @@ const intervalUpdate= {
}
},
methods:{
- updateInterval: function (cn,time=10000) {
+ updateInterval: function (cn,time=60000) {
window.clearInterval(this.intervalUpdateTimer)
this.intervalUpdateTimer = null
this.intervalUpdateTimer = window.setInterval(cn,time)
diff --git a/src/views/ems/search/index.vue b/src/views/ems/search/index.vue
index 62c2c86..13de9df 100644
--- a/src/views/ems/search/index.vue
+++ b/src/views/ems/search/index.vue
@@ -24,6 +24,15 @@
+
+
+
-
-
-
分钟
From c51baa166bb801f38a2399950b637c8068c3721f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E7=99=BD=E8=8F=9C?=
<43331987+JiaLiBai@users.noreply.github.com>
Date: Sat, 13 Sep 2025 14:47:37 +0800
Subject: [PATCH 12/20] =?UTF-8?q?=E7=AB=99=E7=82=B9=E9=A6=96=E9=A1=B5?=
=?UTF-8?q?=E6=80=BB=E5=85=85=E7=94=B5=E9=87=8F=E3=80=81=E6=80=BB=E6=94=BE?=
=?UTF-8?q?=E7=94=B5=E9=87=8F=E5=8D=95=E4=BD=8D=E6=9B=B4=E6=96=B0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/views/ems/dzjk/home/index.vue | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/views/ems/dzjk/home/index.vue b/src/views/ems/dzjk/home/index.vue
index e500155..f9bb0c1 100644
--- a/src/views/ems/dzjk/home/index.vue
+++ b/src/views/ems/dzjk/home/index.vue
@@ -102,11 +102,11 @@ export default {
],
sjglData: [
{
- title: "今日充电量(MWh)",
+ title: "今日充电量(kWh)",
attr: "dayChargedCap",
},
{
- title: "今日放电量(MWh)",
+ title: "今日放电量(kWh)",
attr: "dayDisChargedCap",
},
{
From b61a202267d5266dc31e3082f8949b0a546929bd Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E7=99=BD=E8=8F=9C?=
<43331987+JiaLiBai@users.noreply.github.com>
Date: Sat, 13 Sep 2025 14:58:42 +0800
Subject: [PATCH 13/20] =?UTF-8?q?['#4472c4','#70ad47'],//=E6=89=80?=
=?UTF-8?q?=E6=9C=89=E5=85=85=E6=94=BE=E7=94=B5=E9=A2=9C=E8=89=B2=E4=BF=9D?=
=?UTF-8?q?=E6=8C=81=E7=BB=9F=E4=B8=80?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/views/ems/dzjk/home/WeekChart.vue | 2 +-
src/views/ems/dzjk/tjbb/gltj/Dlzb.vue | 5 ++++-
src/views/ems/zddt/BarChart.vue | 2 +-
3 files changed, 6 insertions(+), 3 deletions(-)
diff --git a/src/views/ems/dzjk/home/WeekChart.vue b/src/views/ems/dzjk/home/WeekChart.vue
index 1cd685f..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: { // 坐标轴指示器,坐标轴触发有效
diff --git a/src/views/ems/dzjk/tjbb/gltj/Dlzb.vue b/src/views/ems/dzjk/tjbb/gltj/Dlzb.vue
index dee45ae..8731f61 100644
--- a/src/views/ems/dzjk/tjbb/gltj/Dlzb.vue
+++ b/src/views/ems/dzjk/tjbb/gltj/Dlzb.vue
@@ -72,7 +72,6 @@ export default {
source.push([item.ammeterDate, item.chargedCap,item.disChargedCap,item.dailyEfficiency])
})
this.chart.setOption({
- color:['#FFBD00','#3C81FF','#05AEA3'],
legend: {
left: 'center',
bottom: '15',
@@ -110,18 +109,22 @@ export default {
dataset:{
source
},
+ //所有充放电颜色保持统一
series: [
{
yAxisIndex:0,
type: 'bar',//柱状图
+ color:'#4472c4'
},
{
yAxisIndex:0,
type: 'bar',//柱状图
+ color:'#70ad47'
},
{
yAxisIndex:1,
type: 'line',//柱状图
+ color:'#FFBD00'
},
]
})
diff --git a/src/views/ems/zddt/BarChart.vue b/src/views/ems/zddt/BarChart.vue
index e893c44..2e03973 100644
--- a/src/views/ems/zddt/BarChart.vue
+++ b/src/views/ems/zddt/BarChart.vue
@@ -32,7 +32,7 @@ export default {
source.push([item.ammeterDate, item.chargedCap,item.disChargedCap])
})
this.chart.setOption({
- color:['#A796FF','#FFBE01'],
+ color:['#4472c4','#70ad47'],//所有充放电颜色保持统一
grid: {
top:30,
containLabel: true
From 4c31eeb837b4d3be3389276d0cc6d3f716ba30b1 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E7=99=BD=E8=8F=9C?=
<43331987+JiaLiBai@users.noreply.github.com>
Date: Sat, 13 Sep 2025 20:36:46 +0800
Subject: [PATCH 14/20] =?UTF-8?q?=E8=AE=BE=E5=A4=87=E7=9B=91=E6=8E=A7?=
=?UTF-8?q?=E7=82=B9=E5=87=BB=E6=95=B0=E6=8D=AE=E6=9F=A5=E7=9C=8B=E8=A1=A8?=
=?UTF-8?q?=E6=A0=BC?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/assets/styles/common.scss | 21 +++
src/views/ems/dzjk/home/index.vue | 16 --
src/views/ems/dzjk/sbjk/PointChart.vue | 221 +++++++++++++++++++++++
src/views/ems/dzjk/sbjk/bmsdcc/index.vue | 54 ++++--
src/views/ems/dzjk/sbjk/bmszl/index.vue | 48 +++--
src/views/ems/dzjk/sbjk/db/index.vue | 30 +++
src/views/ems/dzjk/sbjk/pcs/index.vue | 113 ++++--------
src/views/ems/search/DateTimeSelect.vue | 18 +-
src/views/ems/search/index.vue | 41 +++--
9 files changed, 408 insertions(+), 154 deletions(-)
create mode 100644 src/views/ems/dzjk/sbjk/PointChart.vue
diff --git a/src/assets/styles/common.scss b/src/assets/styles/common.scss
index fdfc88f..7a7d78a 100644
--- a/src/assets/styles/common.scss
+++ b/src/assets/styles/common.scss
@@ -50,6 +50,27 @@
background-color: transparent;
}
}
+/* 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/views/ems/dzjk/home/index.vue b/src/views/ems/dzjk/home/index.vue
index f9bb0c1..0a8699a 100644
--- a/src/views/ems/dzjk/home/index.vue
+++ b/src/views/ems/dzjk/home/index.vue
@@ -199,20 +199,4 @@ export default {
}
}
}
-/* 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;
- }
- }
- }
-}
diff --git a/src/views/ems/dzjk/sbjk/PointChart.vue b/src/views/ems/dzjk/sbjk/PointChart.vue
new file mode 100644
index 0000000..dcef16a
--- /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 028b47e..3134f57 100644
--- a/src/views/ems/dzjk/sbjk/bmsdcc/index.vue
+++ b/src/views/ems/dzjk/sbjk/bmsdcc/index.vue
@@ -15,14 +15,18 @@
- {{baseInfo[item.attr] | formatNumber}}
+
+
+ {{baseInfo[item.attr] | formatNumber}}
+
+
-
当前SOC : {{baseInfo.currentSoc}}%
+
当前SOC : {{baseInfo.currentSoc}}%
+
+ {{scope.row.avgData}}
+
+
+ {{scope.row.minData}}
+
+
+ {{scope.row.maxData}}
+
+
+
\ No newline at end of file
diff --git a/src/views/ems/site/sblb/index.vue b/src/views/ems/site/sblb/index.vue
index 1823343..cca460d 100644
--- a/src/views/ems/site/sblb/index.vue
+++ b/src/views/ems/site/sblb/index.vue
@@ -50,7 +50,7 @@
+ width="260">
@@ -58,6 +58,12 @@
+
+ 电位列表
+
+
@@ -101,10 +108,11 @@
import {getDeviceInfoList,getDeviceDetailInfo,deleteService} from'@/api/ems/site'
import {getAllSites} from '@/api/ems/zddt'
import {formatNumber} from "@/filters/ems";
+import PointTable from './PointTable.vue'
import AddDevice from "./AddDevice.vue";
export default {
name: "Sblb",
- components:{AddDevice},
+ components:{AddDevice,PointTable},
data() {
return {
loading:false,
@@ -142,6 +150,10 @@ export default {
}
},
methods:{
+ // 查看设备电位表格
+ pointDetail(row){
+ this.$refs.pointTable.showTable({deviceCategory:row.deviceCategory,siteId:row.siteId})
+ },
clearEditDeviceData(){
this.mode = '';
this.editDeviceId=''
From 52b6083baad2c3a6ea844cff3716eddb973c8c09 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E7=99=BD=E8=8F=9C?=
<43331987+JiaLiBai@users.noreply.github.com>
Date: Sat, 13 Sep 2025 22:56:07 +0800
Subject: [PATCH 16/20] =?UTF-8?q?=E8=AE=BE=E5=A4=87=E6=A3=80=E6=8E=A7?=
=?UTF-8?q?=E5=AE=98=E6=9F=A5=E7=9C=8B=E7=82=B9=E4=BD=8D=E5=9B=BE=E8=A1=A8?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/views/ems/dzjk/sbjk/PointChart.vue | 2 +-
src/views/ems/dzjk/sbjk/bmsdcc/index.vue | 2 +-
src/views/ems/dzjk/sbjk/db/index.vue | 12 ++++++------
src/views/ems/dzjk/sbjk/pcs/index.vue | 2 +-
4 files changed, 9 insertions(+), 9 deletions(-)
diff --git a/src/views/ems/dzjk/sbjk/PointChart.vue b/src/views/ems/dzjk/sbjk/PointChart.vue
index dcef16a..a0f4ff5 100644
--- a/src/views/ems/dzjk/sbjk/PointChart.vue
+++ b/src/views/ems/dzjk/sbjk/PointChart.vue
@@ -130,7 +130,7 @@ export default {
endDate=end
}
- getPointValueList({siteIds:[this.siteId],dataUnit,categoryName:this.categoryName,pointName:this.pointName,startDate,endDate,siteDeviceMap:{}}).then(response => {
+ getPointValueList({siteIds:[this.siteId],deviceId:this.deviceId,dataUnit,categoryName:this.categoryName,pointName:this.pointName,startDate,endDate,siteDeviceMap:{}}).then(response => {
this.setOption(response?.data || [])
}).finally(()=>{
this.hideLoading()
diff --git a/src/views/ems/dzjk/sbjk/bmsdcc/index.vue b/src/views/ems/dzjk/sbjk/bmsdcc/index.vue
index 3134f57..c0e1ebf 100644
--- a/src/views/ems/dzjk/sbjk/bmsdcc/index.vue
+++ b/src/views/ems/dzjk/sbjk/bmsdcc/index.vue
@@ -105,7 +105,7 @@ export default {
'温度单体平均值':'温度平均值',
'温度单体最大值':'最高单体温度',
'SOC单体最小值':'最低单体SOC',
- 'SOC单体平均值':'',
+ 'SOC单体平均值':'当前SOC',
'SOC单体最大值':'最高单体SOC',
},
baseInfoList:[],
diff --git a/src/views/ems/dzjk/sbjk/db/index.vue b/src/views/ems/dzjk/sbjk/db/index.vue
index 487663f..95f4271 100644
--- a/src/views/ems/dzjk/sbjk/db/index.vue
+++ b/src/views/ems/dzjk/sbjk/db/index.vue
@@ -24,7 +24,7 @@
{handlerCell(zbInfo.deviceId,row,col)}"
stripe
style="width: 100%"
>
@@ -61,7 +61,7 @@
{handlerCellCN(cnbInfo.deviceId,row,col)}"
stripe
style="width: 100%"
>
@@ -92,18 +92,18 @@ export default {
};
},
methods: {
- handlerCell(row,column){
+ handlerCell(id,row,column){
if(column.label !== '类别'){
const arr = row.category.split('')
arr.splice(6,0,column.label[0])
- this.showChart(arr.join(''),'电表')
+ this.showChart(arr.join(''),'电表',id)
}
},
- handlerCellCN(row,column){
+ handlerCellCN(id,row,column){
if(column.label !== '类别'){
const arr = row.category.split('')
arr.splice(2,arr.length-2,column.label)
- this.showChart(arr.join(''),'电表')
+ this.showChart(arr.join(''),'电表',id)
}
},
showChart(pointName,categoryName,deviceId){
diff --git a/src/views/ems/dzjk/sbjk/pcs/index.vue b/src/views/ems/dzjk/sbjk/pcs/index.vue
index 2ca9ce7..11b2a7d 100644
--- a/src/views/ems/dzjk/sbjk/pcs/index.vue
+++ b/src/views/ems/dzjk/sbjk/pcs/index.vue
@@ -30,7 +30,7 @@
-
+
{{pcsItem[item.attr] | formatNumber}}
From e3224d37a19f2b241286665b56b6c06bd9e859fe Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E7=99=BD=E8=8F=9C?=
<43331987+JiaLiBai@users.noreply.github.com>
Date: Sun, 14 Sep 2025 23:33:53 +0800
Subject: [PATCH 17/20] =?UTF-8?q?=E7=BB=9F=E8=AE=A1=E6=8A=A5=E8=A1=A8?=
=?UTF-8?q?=E4=BC=98=E5=8C=96?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/api/ems/dzjk.js | 12 +--
src/views/ems/dzjk/tjbb/dcdqx/index.vue | 110 ++++++++++++++----------
src/views/ems/dzjk/tjbb/glqx/index.vue | 76 ++++------------
src/views/ems/dzjk/tjbb/pcsqx/index.vue | 93 ++++++++++----------
4 files changed, 136 insertions(+), 155 deletions(-)
diff --git a/src/api/ems/dzjk.js b/src/api/ems/dzjk.js
index 5faf472..f14ab7a 100644
--- a/src/api/ems/dzjk.js
+++ b/src/api/ems/dzjk.js
@@ -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'
})
}
diff --git a/src/views/ems/dzjk/tjbb/dcdqx/index.vue b/src/views/ems/dzjk/tjbb/dcdqx/index.vue
index 8897cee..1e9f208 100644
--- a/src/views/ems/dzjk/tjbb/dcdqx/index.vue
+++ b/src/views/ems/dzjk/tjbb/dcdqx/index.vue
@@ -3,11 +3,11 @@
-
-
-
-
-
+
+
+
+
+
{
- const data = JSON.parse(JSON.stringify(response?.data || []))
- this.pcsOptions = data
- this.pcs = data.length>0?data[0].id:'';
- })
- },
+ // getPcsList(){
+ // return getStackNameList(this.siteId).then(response => {
+ // const data = JSON.parse(JSON.stringify(response?.data || []))
+ // this.pcsOptions = data
+ // this.pcs = data.length>0?data[0].id:'';
+ // })
+ // },
getData(){
- const {siteId,pcs,activeBtn}=this;
+ const {siteId,activeBtn}=this;
const [start='',end='']=(this.dateRange || [])
- if(!pcs) return
//接口调用完成之后 设置图表、结束loading
this.loading=true;
- getStackData({siteId,deviceId:pcs,startTime:formatDate(start),endTime:formatDate(end),dataType:activeBtn}).then(response => {
+ getStackData({siteId,startTime:formatDate(start),endTime:formatDate(end),dataType:activeBtn}).then(response => {
this.setOption(response?.data || [])
}).finally(()=>{this.loading=false;})
-
},
setOption(data) {
+
+ // [{
+ // "deviceId": "PCS04",
+ // "dataList": [
+ // {
+ // "statisDate": "2025-09-05",
+ // "activePower": null,
+ // "reactivePower": null,
+ // "uCurrent": 1.30,
+ // "vCurrent": 0.90,
+ // "wCurrent": 1.00,
+ // "deviceId": "PCS04"
+ // },
+ // {
+ // "statisDate": "2025-09-04",
+ // "activePower": null,
+ // "reactivePower": null,
+ // "uCurrent": 71.40,
+ // "vCurrent": 71.30,
+ // "wCurrent": 71.80,
+ // "deviceId": "PCS04"
+ // }
+ // ]
+ // }]
const ele = this.btnList.find((item)=>{return item.id === this.activeBtn})
- const source = JSON.parse(JSON.stringify(ele.source))
- const length = ele.attr.length
- const series = []
- data.forEach((item)=>{
- const arr = ele.attr.map(key=>item[key])
- source.push([item.statisDate,...arr])
- })
- ele.attr.forEach((item)=>{
- series.push({
- name:length>1?item:ele.name,
- type:ele.type || 'scatter'
+ const sourceBase = JSON.parse(JSON.stringify(ele.source))
+ const source=[]
+ const sourceTop = ['日期']
+ sourceBase.forEach((outer,outerIndex)=>{
+ data.forEach((item,itemIndex)=>{
+ sourceTop.push(`${item.deviceId}-${outer}`)
+ item.dataList.forEach((inner,innerIndex)=>{
+ if(itemIndex === 0 || innerIndex+1>source.length) {
+ source.push([inner.statisDate])
+ }
+ source[innerIndex].push(inner[ele.attr[outerIndex]])
+ })
})
})
+ source.unshift(sourceTop)
+ console.log('========',source)
this.chart.setOption({
- color:['#FFBD00','#3C81FF'],
grid: {
containLabel: true
},
@@ -148,7 +172,11 @@ export default {
type: 'value',
},
dataset: {source},
- series
+ series:source[0].slice(1).map(item=>{
+ return {
+ type:ele.type || 'scatter'
+ }
+ })
},true)
},
initChart() {
@@ -156,16 +184,10 @@ export default {
},
init(){
this.loading = true
- this.pcs=''
- this.pcsOptions=[]
+ // this.pcs=''
+ // this.pcsOptions=[]
this.initChart()
- this.getPcsList().then(()=>{
- if(this.pcs){
- this.onReset()
- }else{
- this.loading = false
- }
- })
+ this.onReset()
}
},
mounted(){
diff --git a/src/views/ems/dzjk/tjbb/glqx/index.vue b/src/views/ems/dzjk/tjbb/glqx/index.vue
index f4d8781..15270e6 100644
--- a/src/views/ems/dzjk/tjbb/glqx/index.vue
+++ b/src/views/ems/dzjk/tjbb/glqx/index.vue
@@ -3,16 +3,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {{item.name}}
-
-
-
-
@@ -67,26 +48,9 @@ export default {
defaultDateRange:[],//默认展示的时间
dateRange:[],
loading:false,
- pcs:'',
- pcsOptions: [],
- activeBtn:'1',
- btnList:[
- {name:'电网功率',id:'1',attr:'gridPower'},
- {name:'负载功率',id:'2',attr:'loadPower'},
- {name:'储能功率',id:'3',attr:'storagePower'},
- {name:'光伏功率',id:'4',attr:'pvPower'},
- ],
-
}
},
methods: {
- changeDataType(id){
- if(id !== this.activeBtn){
- console.log('点击了不同的菜单,更新数据')
- this.activeBtn=id;
- this.getData()
- }
- },
// 搜索
onSearch(){
this.getData()
@@ -96,31 +60,21 @@ export default {
this.dateRange=[]
this.getData()
},
- getPcsList(){
- return getPcsNameList(this.siteId).then(response => {
- const data = response?.data || [];
- this.pcsOptions = data
- this.pcs = data.length>0?data[0].id:'';
- })
- },
getData(){
- const {siteId,pcs,activeBtn}=this;
+ const {siteId}=this;
const [start='',end='']=(this.dateRange || [])
- if(!pcs) return
//接口调用完成之后 设置图表、结束loading
this.loading=true;
- getPowerData({siteId,deviceId:pcs,startDate:formatDate(start),endDate:formatDate(end),dataType:activeBtn}).then(response => {
+ getPowerData({siteId,startDate:formatDate(start),endDate:formatDate(end)}).then(response => {
this.setOption(response?.data || [])
}).finally(()=>{this.loading=false;})
},
setOption(data) {
- const {name,attr} =this.btnList.find(item=>item.id===this.activeBtn)
- const source = [['日期',name]]
- data.forEach((item,index)=>{
- source.push([item.statisDate,item[attr]])
+ const source = [['日期','电网功率','负载功率','储能功率','光伏功率']]
+ data.forEach(item=>{
+ source.push([item.statisDate,item.gridPower,item.loadPower,item.storagePower,item.pvPower])
})
this.chart.setOption({
- color:['#FFBD00','#3C81FF'],
grid: {
containLabel: true
},
@@ -146,7 +100,15 @@ export default {
dataset:{source},
series: [
{
- name,
+ type: 'scatter',
+ },
+ {
+ type: 'scatter',
+ },
+ {
+ type: 'scatter',
+ },
+ {
type: 'scatter',
}
]
@@ -157,16 +119,8 @@ export default {
},
init(){
this.loading = true
- this.pcs=''
- this.pcsOptions=[]
this.initChart()
- this.getPcsList().then(()=>{
- if(this.pcs){
- this.onReset()
- }else{
- this.loading = false
- }
- })
+ this.getData()
}
},
mounted(){
diff --git a/src/views/ems/dzjk/tjbb/pcsqx/index.vue b/src/views/ems/dzjk/tjbb/pcsqx/index.vue
index c2ba632..62b5436 100644
--- a/src/views/ems/dzjk/tjbb/pcsqx/index.vue
+++ b/src/views/ems/dzjk/tjbb/pcsqx/index.vue
@@ -3,11 +3,11 @@
-
-
-
-
-
+
+
+
+
+
{
- const data = response?.data || [];
- this.pcsOptions = data
- this.pcs = data.length>0?data[0].id:'';
- })
- },
+ // getPcsList(){
+ // return getPcsNameList(this.siteId).then(response => {
+ // const data = response?.data || [];
+ // this.pcsOptions = data
+ // this.pcs = data.length>0?data[0].id:'';
+ // })
+ // },
getData(){
- const {siteId,pcs,activeBtn}=this;
+ const {siteId,activeBtn}=this;
const [start='',end='']=(this.dateRange || [])
- if(!pcs) return
this.loading=true;
//接口调用完成之后 设置图表、结束loading
- getPCSData({siteId,deviceId:pcs,startTime:formatDate(start),endTime:formatDate(end),dataType:activeBtn}).then(response => {
+ getPCSData({siteId,startTime:formatDate(start),endTime:formatDate(end),dataType:activeBtn}).then(response => {
this.setOption(response?.data || [])
}).finally(()=>{this.loading=false;})
},
setOption(data) {
const ele = this.btnList.find((item)=>{return item.id === this.activeBtn})
- const source = JSON.parse(JSON.stringify(ele.source))
- const length = ele.attr.length
- const series = []
- data.forEach((item)=>{
- const arr = ele.attr.map(key=>item[key])
- source.push([item.statisDate,...arr])
- })
- ele.attr.forEach((item)=>{
- series.push({
- name:length>1?item:ele.name,
- type:ele.type || 'scatter'
+ const sourceBase = JSON.parse(JSON.stringify(ele.source))
+ const source=[]
+ const sourceTop = ['日期']
+ sourceBase.forEach((outer,outerIndex)=>{
+ data.forEach((item,itemIndex)=>{
+ sourceTop.push(`${item.deviceId}-${outer}`)
+ item.dataList.forEach((inner,innerIndex)=>{
+ if(itemIndex === 0 || innerIndex+1>source.length) {
+ source.push([inner.statisDate])
+ }
+ source[innerIndex].push(inner[ele.attr[outerIndex]])
+ })
})
})
+ source.unshift(sourceTop)
+ console.log('========',source)
this.chart.setOption({
- color:['#FFBD00','#3C81FF','#91cc74'],
grid: {
containLabel: true
},
@@ -151,7 +152,11 @@ export default {
type: 'value',
},
dataset: {source},
- series
+ series:source[0].slice(1).map(item=>{
+ return {
+ type:ele.type || 'scatter'
+ }
+ })
},true)
},
@@ -160,18 +165,18 @@ export default {
},
init(){
this.loading = true
- this.pcs=''
- this.pcsOptions=[]
- this.dateRange =[]
+ // this.pcs=''
+ // this.pcsOptions=[]
this.initChart()
- this.getPcsList().then(()=>{
- if(this.pcs){
- this.onReset()
- }else{
- this.loading=false;
- }
-
- })
+ this.onReset()
+ // this.getPcsList().then(()=>{
+ // if(this.pcs){
+ // this.onReset()
+ // }else{
+ // this.loading=false;
+ // }
+ //
+ // })
}
},
mounted(){
From 7f560cd1402fcde279f8f6d509b73a8f82b26ec8 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E7=99=BD=E8=8F=9C?=
<43331987+JiaLiBai@users.noreply.github.com>
Date: Tue, 16 Sep 2025 18:20:48 +0800
Subject: [PATCH 18/20] =?UTF-8?q?=E7=BB=9F=E8=AE=A1=E6=8A=A5=E8=A1=A8?=
=?UTF-8?q?=E4=BC=98=E5=8C=96?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/views/ems/dzjk/tjbb/dcdqx/index.vue | 66 ++++++++++++++-----------
src/views/ems/dzjk/tjbb/pcsqx/index.vue | 42 +++++++++++++---
2 files changed, 72 insertions(+), 36 deletions(-)
diff --git a/src/views/ems/dzjk/tjbb/dcdqx/index.vue b/src/views/ems/dzjk/tjbb/dcdqx/index.vue
index 1e9f208..dae643c 100644
--- a/src/views/ems/dzjk/tjbb/dcdqx/index.vue
+++ b/src/views/ems/dzjk/tjbb/dcdqx/index.vue
@@ -106,47 +106,53 @@ export default {
this.setOption(response?.data || [])
}).finally(()=>{this.loading=false;})
},
+ compareDate(date1,date2){
+ console.log('比较时间',date1,date2)
+ // 年2025-09/天2025-09-15/时2025-09-15/10:00
+ if(date1.indexOf(':') > -1 && date2.indexOf(':') > -1){
+ return parseInt(date1) - parseInt(date2)
+ }
+ const [date1_Y='',date1_M='',date1_D=''] = date1.split('-')//根据空格区分[年月日,小时]
+ const [date2_Y='',date2_M='',date2_D=''] = date2.split('-')//根据空格区分[年月日,小时]
+ return (date1_Y === date2_Y && date1_M === date2_M && date1_D - date2_D) || (date1_Y === date2_Y && date1_M - date2_M) || date1_Y - date2_Y
+ },
setOption(data) {
-
- // [{
- // "deviceId": "PCS04",
- // "dataList": [
- // {
- // "statisDate": "2025-09-05",
- // "activePower": null,
- // "reactivePower": null,
- // "uCurrent": 1.30,
- // "vCurrent": 0.90,
- // "wCurrent": 1.00,
- // "deviceId": "PCS04"
- // },
- // {
- // "statisDate": "2025-09-04",
- // "activePower": null,
- // "reactivePower": null,
- // "uCurrent": 71.40,
- // "vCurrent": 71.30,
- // "wCurrent": 71.80,
- // "deviceId": "PCS04"
- // }
- // ]
- // }]
const ele = this.btnList.find((item)=>{return item.id === this.activeBtn})
const sourceBase = JSON.parse(JSON.stringify(ele.source))
+ // sourceBase={name:'堆平均维度',id:'1',attr:['temp'],source:['有功功率']},
const source=[]
const sourceTop = ['日期']
- sourceBase.forEach((outer,outerIndex)=>{
- data.forEach((item,itemIndex)=>{
+ let map={},mapArr=[]
+ // 生成所有{日期:[],日期:[]}格式的对象和所有包含所有日期的[日期1,日期2...]
+ data.forEach((item)=>{
+ item.dataList.forEach((inner)=>{
+ // 日期格式
+ // 年2025-09/天2025-09-15/时2025-09-15/10:00
+ // 所有数据的日期格式一致
+ if(!map[inner.statisDate]) {
+ map[inner.statisDate] = []
+ mapArr.push(inner.statisDate)
+ }
+ })
+ })
+ data.forEach((item,itemIndex)=>{
+ const dataTimeList = item.dataList.map(i =>i.statisDate)
+ const noDataTime = mapArr.filter(i=>!dataTimeList.includes(i))
+ sourceBase.forEach((outer,outerIndex)=>{
sourceTop.push(`${item.deviceId}-${outer}`)
+ noDataTime.forEach(i=>map[i].push(''))
item.dataList.forEach((inner,innerIndex)=>{
- if(itemIndex === 0 || innerIndex+1>source.length) {
- source.push([inner.statisDate])
- }
- source[innerIndex].push(inner[ele.attr[outerIndex]])
+ map[inner.statisDate].push(inner[ele.attr[outerIndex]])
})
})
})
+ mapArr = mapArr.sort((a,b)=>this.compareDate(a,b))
+ mapArr.forEach(item=>{
+ source.push([item,...map[item]])
+ })
source.unshift(sourceTop)
+ console.log('map=',map)
+ console.log('mapArr=',mapArr)
console.log('========',source)
this.chart.setOption({
grid: {
diff --git a/src/views/ems/dzjk/tjbb/pcsqx/index.vue b/src/views/ems/dzjk/tjbb/pcsqx/index.vue
index 62b5436..b6c7131 100644
--- a/src/views/ems/dzjk/tjbb/pcsqx/index.vue
+++ b/src/views/ems/dzjk/tjbb/pcsqx/index.vue
@@ -110,23 +110,53 @@ export default {
}).finally(()=>{this.loading=false;})
},
+ compareDate(date1,date2){
+ console.log('比较时间',date1,date2)
+ // 年2025-09/天2025-09-15/时2025-09-15/10:00
+ if(date1.indexOf(':') > -1 && date2.indexOf(':') > -1){
+ return parseInt(date1) - parseInt(date2)
+ }
+ const [date1_Y='',date1_M='',date1_D=''] = date1.split('-')//根据空格区分[年月日,小时]
+ const [date2_Y='',date2_M='',date2_D=''] = date2.split('-')//根据空格区分[年月日,小时]
+ return (date1_Y === date2_Y && date1_M === date2_M && date1_D - date2_D) || (date1_Y === date2_Y && date1_M - date2_M) || date1_Y - date2_Y
+ },
setOption(data) {
const ele = this.btnList.find((item)=>{return item.id === this.activeBtn})
const sourceBase = JSON.parse(JSON.stringify(ele.source))
+ // sourceBase={name:'堆平均维度',id:'1',attr:['temp'],source:['有功功率']},
const source=[]
const sourceTop = ['日期']
- sourceBase.forEach((outer,outerIndex)=>{
- data.forEach((item,itemIndex)=>{
+ let map={},mapArr=[]
+ // 生成所有{日期:[],日期:[]}格式的对象和所有包含所有日期的[日期1,日期2...]
+ data.forEach((item)=>{
+ item.dataList.forEach((inner)=>{
+ // 日期格式
+ // 年2025-09/天2025-09-15/时2025-09-15/10:00
+ // 所有数据的日期格式一致
+ if(!map[inner.statisDate]) {
+ map[inner.statisDate] = []
+ mapArr.push(inner.statisDate)
+ }
+ })
+ })
+ data.forEach((item,itemIndex)=>{
+ const dataTimeList = item.dataList.map(i =>i.statisDate)
+ const noDataTime = mapArr.filter(i=>!dataTimeList.includes(i))
+ sourceBase.forEach((outer,outerIndex)=>{
sourceTop.push(`${item.deviceId}-${outer}`)
+ noDataTime.forEach(i=>map[i].push(''))
item.dataList.forEach((inner,innerIndex)=>{
- if(itemIndex === 0 || innerIndex+1>source.length) {
- source.push([inner.statisDate])
- }
- source[innerIndex].push(inner[ele.attr[outerIndex]])
+ map[inner.statisDate].push(inner[ele.attr[outerIndex]])
})
})
})
+ mapArr = mapArr.sort((a,b)=>this.compareDate(a,b))
+ mapArr.forEach(item=>{
+ source.push([item,...map[item]])
+ })
source.unshift(sourceTop)
+ console.log('map=',map)
+ console.log('mapArr=',mapArr)
console.log('========',source)
this.chart.setOption({
grid: {
From 902e9a0a031c5810f04e73875d515a2921d61946 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E7=99=BD=E8=8F=9C?=
<43331987+JiaLiBai@users.noreply.github.com>
Date: Wed, 17 Sep 2025 11:15:54 +0800
Subject: [PATCH 19/20] =?UTF-8?q?=E7=AB=99=E7=82=B9=E9=A6=96=E9=A1=B5-?=
=?UTF-8?q?=E5=BD=93=E6=97=A5=E5=8A=9F=E7=8E=87=E6=9B=B2=E7=BA=BF?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/api/ems/dzjk.js | 8 ++++
src/views/ems/dzjk/home/ActiveChart.vue | 51 +++++++++++--------------
2 files changed, 31 insertions(+), 28 deletions(-)
diff --git a/src/api/ems/dzjk.js b/src/api/ems/dzjk.js
index f14ab7a..47b89e2 100644
--- a/src/api/ems/dzjk.js
+++ b/src/api/ems/dzjk.js
@@ -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/views/ems/dzjk/home/ActiveChart.vue b/src/views/ems/dzjk/home/ActiveChart.vue
index 1d768a0..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(true)
- 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.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
}
- ]
+ })
})
},
From 36b1e19120dc317749b337bb57c7f7cf03a72599 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E7=99=BD=E8=8F=9C?=
<43331987+JiaLiBai@users.noreply.github.com>
Date: Wed, 17 Sep 2025 14:52:08 +0800
Subject: [PATCH 20/20] =?UTF-8?q?=E8=AE=BE=E5=A4=87=E7=9B=91=E6=8E=A7?=
=?UTF-8?q?=E6=A0=87=E9=A2=98=E6=A0=B7=E5=BC=8F=E7=BB=9F=E4=B8=80?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/assets/styles/common.scss | 60 +++++++++-
src/views/ems/dzjk/sbjk/bmsdcc/index.vue | 8 +-
src/views/ems/dzjk/sbjk/bmszl/index.vue | 59 +++++-----
src/views/ems/dzjk/sbjk/db/index.vue | 46 ++------
src/views/ems/dzjk/sbjk/dtdc/index.vue | 2 +-
src/views/ems/dzjk/sbjk/pcs/index.vue | 143 +++++++++--------------
6 files changed, 158 insertions(+), 160 deletions(-)
diff --git a/src/assets/styles/common.scss b/src/assets/styles/common.scss
index 7a7d78a..435ec15 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,59 @@
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 {
diff --git a/src/views/ems/dzjk/sbjk/bmsdcc/index.vue b/src/views/ems/dzjk/sbjk/bmsdcc/index.vue
index c0e1ebf..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.parentDeviceName?`${baseInfo.parentDeviceName} -> ` : ''}}{{baseInfo.deviceName}}
+ {{index+1}}#{{baseInfo.parentDeviceName?`${baseInfo.parentDeviceName} —> ` : ''}}{{baseInfo.deviceName}}
diff --git a/src/views/ems/dzjk/sbjk/bmszl/index.vue b/src/views/ems/dzjk/sbjk/bmszl/index.vue
index c3466b2..391ea2e 100644
--- a/src/views/ems/dzjk/sbjk/bmszl/index.vue
+++ b/src/views/ems/dzjk/sbjk/bmszl/index.vue
@@ -2,20 +2,24 @@
-
+
{{index+1}}#{{baseInfo.deviceName}}
-
- {{$store.state.ems.workStatusOptions[baseInfo.workStatus]}}
- {{$store.state.ems.communicationStatusOptions[baseInfo.pcsCommunicationStatus]}}
- {{$store.state.ems.communicationStatusOptions[baseInfo.emsCommunicationStatus]}}
+
+ {{$store.state.ems.workStatusOptions[baseInfo.workStatus]}}
+ {{$store.state.ems.communicationStatusOptions[baseInfo.pcsCommunicationStatus]}}
+ {{$store.state.ems.communicationStatusOptions[baseInfo.emsCommunicationStatus]}}
-
-
+
+
{{baseInfo[item.attr] | formatNumber}}
@@ -24,20 +28,20 @@
当前SOC : {{baseInfo.stackSoc}}%
+ label="簇号"
+ prop="clusterId">
+ label="单体最高电压"
+ prop="maxVoltage">
{{scope.row.maxCellVoltage}} V
+ label="电池号码"
+ prop="maxCellVoltageId">
+ label="单体最低电压"
+ prop="minVoltage">
{{scope.row.minCellVoltage}} V
+ label="电池号码"
+ prop="minCellVoltageId">
@@ -87,19 +91,19 @@
+ label="电池号码"
+ prop="maxCellTempId">
+ label="单体最低温度"
+ prop="minTemperature">
{{scope.row.minCellTemp}} ℃
+ label="电池号码"
+ prop="minCellTempId">
@@ -137,7 +141,6 @@ export default {
}
},
methods:{
- //todo 后续需要新增设备id
showChart(pointName,categoryName,deviceId){
console.log('点击查询图表',pointName,categoryName,deviceId)
pointName && this.$refs.pointChart.showChart({pointName,categoryName,deviceId})
@@ -157,7 +160,7 @@ export default {
}
-
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 11b2a7d..5e85d36 100644
--- a/src/views/ems/dzjk/sbjk/pcs/index.vue
+++ b/src/views/ems/dzjk/sbjk/pcs/index.vue
@@ -1,57 +1,66 @@
-