From a0ea6041cca85d9d9a9b0271d55e5709f4815f06 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, 25 Sep 2025 17:30:16 +0800 Subject: [PATCH 01/40] =?UTF-8?q?=E4=BC=98=E5=8C=960918?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/ems/site.js | 4 +- src/views/ems/dzjk/home/ActiveChart.vue | 4 +- src/views/ems/dzjk/home/index.vue | 5 +- src/views/ems/dzjk/sbjk/bmsdcc/index.vue | 2 +- src/views/ems/dzjk/tjbb/glqx/index.vue | 8 +- src/views/ems/site/sblb/PointTable.vue | 177 +++++++++++++---------- src/views/ems/site/sblb/index.vue | 8 +- 7 files changed, 121 insertions(+), 87 deletions(-) diff --git a/src/api/ems/site.js b/src/api/ems/site.js index 950fe15..ea68371 100644 --- a/src/api/ems/site.js +++ b/src/api/ems/site.js @@ -64,9 +64,9 @@ export function getDeviceList(siteId) { } //获取设备点位table -export function getDevicePointList({siteId,deviceId,deviceCategory,pageNum,pageSize,dataPointName=''}) { +export function getDevicePointList({siteId,deviceId,deviceCategory,pageNum,pageSize,dataPointName='',sortMethod,dataPoint,lower,upper}) { return request({ - url: `/ems/siteConfig/getDevicePointList?siteId=${siteId}&deviceId=${deviceId}&pageNum=${pageNum}&pageSize=${pageSize}&deviceCategory=${deviceCategory}&dataPointName=${dataPointName}`, + url: `/ems/siteConfig/getDevicePointList?siteId=${siteId}&deviceId=${deviceId}&pageNum=${pageNum}&pageSize=${pageSize}&deviceCategory=${deviceCategory}&dataPointName=${dataPointName}&dataPoint=${dataPoint}&lower=${lower}&upper=${upper}&pageNum=${pageNum}&sortMethod=${sortMethod}`, 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 a1a5aa1..b0815c9 100644 --- a/src/views/ems/dzjk/home/ActiveChart.vue +++ b/src/views/ems/dzjk/home/ActiveChart.vue @@ -14,9 +14,10 @@ import * as echarts from 'echarts' import resize from '@/mixins/ems/resize' import DateRangeSelect from '@/components/Ems/DateRangeSelect/index.vue' import { getPointData } from '@/api/ems/dzjk' +import intervalUpdate from "@/mixins/ems/intervalUpdate"; export default { - mixins: [resize], + mixins: [resize,intervalUpdate], components: {DateRangeSelect}, data() { return { @@ -59,6 +60,7 @@ export default { this.timeRange=[] this.$refs.dateRangeSelect.init(true) this.getGVQXData() + this.updateInterval(this.getGVQXData) }, initChart() { this.chart = echarts.init(document.querySelector('#activeChart')) diff --git a/src/views/ems/dzjk/home/index.vue b/src/views/ems/dzjk/home/index.vue index 0a8699a..f01824c 100644 --- a/src/views/ems/dzjk/home/index.vue +++ b/src/views/ems/dzjk/home/index.vue @@ -75,10 +75,11 @@ import ActiveChart from "./ActiveChart.vue"; import AlarmTable from "./AlarmTable.vue"; import ClInfo from "./ClInfo.vue"; import getQuerySiteId from "@/mixins/ems/getQuerySiteId"; +import intervalUpdate from "@/mixins/ems/intervalUpdate"; export default { name: "DzjkSbjkHome", components: { WeekChart, ActiveChart, AlarmTable, ClInfo }, - mixins: [getQuerySiteId], + mixins: [getQuerySiteId,intervalUpdate], data() { return { loading: false, @@ -153,6 +154,8 @@ export default { Promise.all([this.getBaseInfo(), this.getRunningInfo()]).finally(() => { this.loading = false; }); + // 一分钟循环一次总累计运行数据 + this.updateInterval(this.getRunningInfo) }, }, }; diff --git a/src/views/ems/dzjk/sbjk/bmsdcc/index.vue b/src/views/ems/dzjk/sbjk/bmsdcc/index.vue index cd19393..5cd8684 100644 --- a/src/views/ems/dzjk/sbjk/bmsdcc/index.vue +++ b/src/views/ems/dzjk/sbjk/bmsdcc/index.vue @@ -106,7 +106,7 @@ export default { '电压单体平均值':'电压平均值', '电压单体最大值':'最高单体电压', '温度单体最小值':'最低单体温度', - '温度单体平均值':'温度平均值', + '温度单体平均值':'平均单体温度', '温度单体最大值':'最高单体温度', 'SOC单体最小值':'最低单体SOC', 'SOC单体平均值':'当前SOC', diff --git a/src/views/ems/dzjk/tjbb/glqx/index.vue b/src/views/ems/dzjk/tjbb/glqx/index.vue index c2e9d26..e592727 100644 --- a/src/views/ems/dzjk/tjbb/glqx/index.vue +++ b/src/views/ems/dzjk/tjbb/glqx/index.vue @@ -32,6 +32,7 @@ export default { }, dateRange:[], loading:false, + dateRangeInit:true, } }, methods: { @@ -42,9 +43,14 @@ export default { }, getData(){ const {siteId}=this; - const [start='',end='']=(this.dateRange || []) + let [start='',end='']=(this.dateRange || []) //接口调用完成之后 设置图表、结束loading this.loading=true; + if(this.dateRangeInit){ + start = '' + end = '' + this.dateRangeInit=false + } getPowerData({siteId,startDate:formatDate(start),endDate:formatDate(end)}).then(response => { this.setOption(response?.data || []) }).finally(()=>{this.loading=false;}) diff --git a/src/views/ems/site/sblb/PointTable.vue b/src/views/ems/site/sblb/PointTable.vue index 69c8073..80f7999 100644 --- a/src/views/ems/site/sblb/PointTable.vue +++ b/src/views/ems/site/sblb/PointTable.vue @@ -9,27 +9,37 @@ destroy-on-close lock-scroll show-close - title="点位列表" + title="点位清单" width="800px" > -
- - - - - - - - - 搜索 -
+ + + + + + + +
+ + + + + + + + 搜索 + +
+ + style="width: 100%;" + :default-sort = "{prop: 'updateTime', order: 'descending'}" + @sort-change="changeSort"> @@ -44,7 +54,9 @@ + prop="updateTime" + sortable="custom" + > diff --git a/src/views/ems/dzjk/tjbb/glqx/index.vue b/src/views/ems/dzjk/tjbb/glqx/index.vue index e592727..9520c61 100644 --- a/src/views/ems/dzjk/tjbb/glqx/index.vue +++ b/src/views/ems/dzjk/tjbb/glqx/index.vue @@ -3,7 +3,7 @@
功率曲线 - +
@@ -41,6 +41,9 @@ export default { this.dateRange=data || [] this.getData() }, + resetTime(){ + this.dateRangeInit=true; + }, getData(){ const {siteId}=this; let [start='',end='']=(this.dateRange || []) @@ -101,15 +104,18 @@ export default { },true) }, initChart() { + if(this.chart) return this.chart = echarts.init(document.querySelector('#glqxEchart')); }, init(){ this.$nextTick(()=>{ + this.dateRangeInit=true; this.initChart() this.$refs.dateRangeSelect.init() }) } }, + beforeDestroy() { if (!this.chart) { return diff --git a/src/views/ems/site/sblb/PointTable.vue b/src/views/ems/site/sblb/PointTable.vue index 80f7999..da8e266 100644 --- a/src/views/ems/site/sblb/PointTable.vue +++ b/src/views/ems/site/sblb/PointTable.vue @@ -13,7 +13,7 @@ width="800px" > - + From 506cf28c9646ace925125d13d16274e8b97b8945 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, 26 Sep 2025 15:09:58 +0800 Subject: [PATCH 04/40] =?UTF-8?q?=E6=B6=B2=E5=86=B7=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 | 1 + src/views/ems/dzjk/sbjk/yl/index.vue | 15 ++++++++++++--- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/src/views/ems/dzjk/sbjk/PointChart.vue b/src/views/ems/dzjk/sbjk/PointChart.vue index a0f4ff5..514ff90 100644 --- a/src/views/ems/dzjk/sbjk/PointChart.vue +++ b/src/views/ems/dzjk/sbjk/PointChart.vue @@ -62,6 +62,7 @@ export default { }, dataUnit:{ handler(newVal,oldVal){ + if(!this.show) return console.log('wacth到了dataUnit的变化',newVal,oldVal) this.$nextTick(()=>{ this.$refs.dateTimeSelect.init() diff --git a/src/views/ems/dzjk/sbjk/yl/index.vue b/src/views/ems/dzjk/sbjk/yl/index.vue index 1290d08..d6a8765 100644 --- a/src/views/ems/dzjk/sbjk/yl/index.vue +++ b/src/views/ems/dzjk/sbjk/yl/index.vue @@ -11,11 +11,14 @@
- {{tempDataItem.title}}:{{item[tempDataItem.attr]}} + + {{tempDataItem.title}}:{{item[tempDataItem.attr]}} +
+ @@ -24,9 +27,11 @@ import getQuerySiteId from "@/mixins/ems/getQuerySiteId"; import {getCoolingDataList} from '@/api/ems/dzjk' import intervalUpdate from "@/mixins/ems/intervalUpdate"; +import pointChart from "./../PointChart.vue"; export default { name:'DzjkSbjkYl', mixins:[getQuerySiteId,intervalUpdate], + components:{pointChart}, data() { return { loading:false, @@ -37,12 +42,16 @@ export default { {title:'供水压力',attr:'gsPressure',unit:'bar'}, {title:'回水压力',attr:'hsPressure',unit:'bar'}, {title:'冷源水温度',attr:'lysTemp',unit:'℃'}, - {title:'VB01 开度',attr:'vb01Kd',unit:'%'}, - {title:'VB02 开度',attr:'vb02Kd',unit:'%'}, + {title:'VB01开度',attr:'vb01Kd',unit:'%'}, + {title:'VB02开度',attr:'vb02Kd',unit:'%'}, ] } }, methods:{ + showChart(pointName,deviceName,deviceId){ + console.log('点击查询图表',pointName,deviceName,deviceId) + pointName && this.$refs.pointChart.showChart({pointName,deviceName,deviceId}) + }, updateData(){ this.loading = true getCoolingDataList(this.siteId).then(response => { From 6600a5db7ad4aa32aaf1c01135345c788a08537d 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, 26 Sep 2025 17:34:12 +0800 Subject: [PATCH 05/40] =?UTF-8?q?=E7=82=B9=E4=BD=8D=E5=9B=BE=E8=A1=A8?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=90=8D=E7=A7=B0=E3=80=81=E6=97=B6=E9=97=B4?= =?UTF-8?q?=E9=99=90=E5=88=B6?= 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/search/DateTimeSelect.vue | 14 ++++++++------ 3 files changed, 10 insertions(+), 8 deletions(-) diff --git a/src/views/ems/dzjk/sbjk/PointChart.vue b/src/views/ems/dzjk/sbjk/PointChart.vue index 514ff90..0589cbb 100644 --- a/src/views/ems/dzjk/sbjk/PointChart.vue +++ b/src/views/ems/dzjk/sbjk/PointChart.vue @@ -146,7 +146,7 @@ export default { data.forEach((item,index)=>{ item.deviceList.forEach(inner=>{ dataset.push({ - name:`${this.isDtdc ? `${inner.parentDeviceId ? inner.parentDeviceId+'-' : ''}` : ''}${inner.deviceId}`, + name:`${this.isDtdc ? `${inner.parentDeviceId ? inner.parentDeviceId+'-' : ''}` : ''}${this.pointName}`, type:'line', xdata:[], data:[] diff --git a/src/views/ems/dzjk/sbjk/bmsdcc/index.vue b/src/views/ems/dzjk/sbjk/bmsdcc/index.vue index 5cd8684..5b98ab3 100644 --- a/src/views/ems/dzjk/sbjk/bmsdcc/index.vue +++ b/src/views/ems/dzjk/sbjk/bmsdcc/index.vue @@ -68,7 +68,7 @@ prop="maxData" label="单体最大值"> 0){ const {dataUnit} = this const [start,end] = this.dateRange - const startTime = new Date(start),endTime=new Date(end) - 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 || []) + if([1,2].includes(dataUnit)){ + const startTime = new Date(start),endTime=new Date(end) + const timeDis= 7 * 24 * 60 * 60 * 1000 + if(endTime - startTime > timeDis){ + this.$message.error(`按分钟或小时查询数据,时间范围不能超过7天`) + return + } } + this.$emit('updateDate',this.dateRange || []) }else{ this.$emit('updateDate',this.dateRange || []) } From b5956822ab50cb8570d835acefdedce5b7519268 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, 26 Sep 2025 18:43:38 +0800 Subject: [PATCH 06/40] =?UTF-8?q?=E6=97=B6=E9=97=B4=E9=80=89=E6=8B=A9?= =?UTF-8?q?=E8=8C=83=E5=9B=B4=E4=B8=8A=E4=B8=8B=E6=97=B6=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/Ems/DateRangeSelect/index.vue | 18 +++++++------- src/views/ems/search/DateTimeSelect.vue | 25 ++++++++++---------- src/views/ems/search/index.vue | 4 ++-- 3 files changed, 24 insertions(+), 23 deletions(-) diff --git a/src/components/Ems/DateRangeSelect/index.vue b/src/components/Ems/DateRangeSelect/index.vue index 14bcf15..58f7b18 100644 --- a/src/components/Ems/DateRangeSelect/index.vue +++ b/src/components/Ems/DateRangeSelect/index.vue @@ -62,15 +62,17 @@ export default { this.$emit('updateDate',this.dateRange) }, timeLine(type){ + if(!this.dateRange || !this.dateRange[0] || !this.dateRange[1]) return + const nowStartTimes = new Date(this.dateRange[0]).getTime(),nowEndTimes = new Date(this.dateRange[1]).getTime(),maxTime = new Date(this.defaultDateRange[1]).getTime() + const nowDis = nowEndTimes - nowStartTimes//用户当前选择时间差 可能=0 //baseTime,maxTime 毫秒数 - let baseTime = type === 'before' ? new Date(this.dateRange[0]).getTime() - ( 24 * 60 * 60 * 1000) :new Date(this.dateRange[1]).getTime() + ( 24 * 60 * 60 * 1000) , - maxTime = new Date(this.defaultDateRange[1]).getTime() - //updateTime 毫秒数 - let updateTime = type === 'before' ? baseTime - 7 * 24 * 60 * 60 * 1000 : baseTime + 7 * 24 * 60 * 60 * 1000 - if(type === 'next' && updateTime >= maxTime) updateTime = maxTime - const start = formatDate(type === 'before' ? updateTime : baseTime) - const end = formatDate(type === 'before' ? baseTime : updateTime) - this.dateRange = [start,end] + const baseDis = this.dataUnit === 3 ? 24 * 60 * 60 * 1000 :this.dataUnit === 2 ? 60 * 60 * 1000 : 60 * 1000 + const calcDis = nowDis === 0 ? baseDis : nowDis + let start = type === 'before' ? nowStartTimes - calcDis : nowStartTimes + calcDis + start = Math.min(start,maxTime) + let end = type === 'before' ? nowEndTimes - calcDis : nowEndTimes + calcDis + end = Math.min(end,maxTime) + this.dateRange = [formatDate(start,this.dataUnit !== 3),formatDate(end,this.dataUnit !== 3)] this.$emit('updateDate',this.dateRange) }, } diff --git a/src/views/ems/search/DateTimeSelect.vue b/src/views/ems/search/DateTimeSelect.vue index 99bf7d5..6c01274 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' :this.dataUnit === 2 ? 'yyyy-MM-dd HH:mm' : 'yyyy-MM-dd HH:mm:ss' + return this.dataUnit === 3 ? 'yyyy-MM-dd' : 'yyyy-MM-dd HH:mm:ss' }, disabledNextBtn(){ if(this.dateRange && this.dateRange.length ===2){ @@ -97,19 +97,18 @@ export default { } }, timeLine(type){ - if(!this.dateRange) return + if(!this.dateRange || !this.dateRange[0] || !this.dateRange[1]) return + const nowStartTimes = new Date(this.dateRange[0]).getTime(),nowEndTimes = new Date(this.dateRange[1]).getTime(),maxTime = new Date(this.defaultDateRange[1]).getTime() + const nowDis = nowEndTimes - nowStartTimes//用户当前选择时间差 可能=0 //baseTime,maxTime 毫秒数 - const baseTimes= this.dataUnit === 3 ? 24 * 60 * 60 * 1000 :this.dataUnit === 2 ? 60 * 60 * 1000 : 60 * 1000 - const baseDis = this.dataUnit === 3 ? 30 :this.dataUnit === 2 ? 24 : 60 - let baseTime = type === 'before' ? new Date(this.dateRange[0]).getTime() - baseTimes :new Date(this.dateRange[1]).getTime() + baseTimes , - maxTime = new Date(this.defaultDateRange[1]).getTime() - //updateTime 毫秒数 - let updateTime = type === 'before' ? baseTime - baseDis * baseTimes : baseTime + baseDis * baseTimes - if(type === 'next' && updateTime >= maxTime) updateTime = maxTime - const start = formatDate(type === 'before' ? updateTime : baseTime,this.dataUnit !== 3) - const end = formatDate(type === 'before' ? baseTime : updateTime,this.dataUnit !== 3) - this.dateRange = [start,end] - this.$emit('updateDate',this.dateRange || []) + const baseDis = this.dataUnit === 3 ? 24 * 60 * 60 * 1000 :this.dataUnit === 2 ? 60 * 60 * 1000 : 60 * 1000 + const calcDis = nowDis === 0 ? baseDis : nowDis + let start = type === 'before' ? nowStartTimes - calcDis : nowStartTimes + calcDis + start = Math.min(start,maxTime) + let end = type === 'before' ? nowEndTimes - calcDis : nowEndTimes + calcDis + end = Math.min(end,maxTime) + this.dateRange = [formatDate(start,this.dataUnit !== 3),formatDate(end,this.dataUnit !== 3)] + this.$emit('updateDate',this.dateRange) }, } } diff --git a/src/views/ems/search/index.vue b/src/views/ems/search/index.vue index d3d8eaa..b0dac96 100644 --- a/src/views/ems/search/index.vue +++ b/src/views/ems/search/index.vue @@ -283,8 +283,8 @@ export default { 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,dataRange:[start='',end=''],child}=this.form + if(!start || !end) return this.$message.error('请选择时间'); let siteDeviceMap={} child.forEach(([first,second,third])=>{ if(siteDeviceMap[first]){ @@ -307,7 +307,7 @@ export default { }else{ endDate=end } - + this.loading = true getPointValueList({siteIds:[siteIds],dataUnit,categoryName,pointName,startDate,endDate,siteDeviceMap}).then(response => { this.setOption(response?.data || []) }).finally(()=>{ From 408ba489ca1f954e67618c20d0b5322c83a82daa 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, 26 Sep 2025 18:51:55 +0800 Subject: [PATCH 07/40] =?UTF-8?q?=E6=97=B6=E9=97=B4=E9=80=89=E6=8B=A9?= =?UTF-8?q?=E8=8C=83=E5=9B=B4=E4=B8=8A=E4=B8=8B=E6=97=B6=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/Ems/DateRangeSelect/index.vue | 8 ++++---- src/views/ems/search/DateTimeSelect.vue | 6 +++--- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/components/Ems/DateRangeSelect/index.vue b/src/components/Ems/DateRangeSelect/index.vue index 58f7b18..ae234d9 100644 --- a/src/components/Ems/DateRangeSelect/index.vue +++ b/src/components/Ems/DateRangeSelect/index.vue @@ -66,13 +66,13 @@ export default { const nowStartTimes = new Date(this.dateRange[0]).getTime(),nowEndTimes = new Date(this.dateRange[1]).getTime(),maxTime = new Date(this.defaultDateRange[1]).getTime() const nowDis = nowEndTimes - nowStartTimes//用户当前选择时间差 可能=0 //baseTime,maxTime 毫秒数 - const baseDis = this.dataUnit === 3 ? 24 * 60 * 60 * 1000 :this.dataUnit === 2 ? 60 * 60 * 1000 : 60 * 1000 + const baseDis = 24 * 60 * 60 * 1000 const calcDis = nowDis === 0 ? baseDis : nowDis let start = type === 'before' ? nowStartTimes - calcDis : nowStartTimes + calcDis - start = Math.min(start,maxTime) + if(start>maxTime) start=maxTime let end = type === 'before' ? nowEndTimes - calcDis : nowEndTimes + calcDis - end = Math.min(end,maxTime) - this.dateRange = [formatDate(start,this.dataUnit !== 3),formatDate(end,this.dataUnit !== 3)] + if(end>maxTime) end=maxTime + this.dateRange = [formatDate(start),formatDate(end)] this.$emit('updateDate',this.dateRange) }, } diff --git a/src/views/ems/search/DateTimeSelect.vue b/src/views/ems/search/DateTimeSelect.vue index 6c01274..9df5cb6 100644 --- a/src/views/ems/search/DateTimeSelect.vue +++ b/src/views/ems/search/DateTimeSelect.vue @@ -101,12 +101,12 @@ export default { const nowStartTimes = new Date(this.dateRange[0]).getTime(),nowEndTimes = new Date(this.dateRange[1]).getTime(),maxTime = new Date(this.defaultDateRange[1]).getTime() const nowDis = nowEndTimes - nowStartTimes//用户当前选择时间差 可能=0 //baseTime,maxTime 毫秒数 - const baseDis = this.dataUnit === 3 ? 24 * 60 * 60 * 1000 :this.dataUnit === 2 ? 60 * 60 * 1000 : 60 * 1000 + const baseDis = this.dataUnit === 3 ? 24 * 60 * 60 * 1000 :60 * 60 * 1000 const calcDis = nowDis === 0 ? baseDis : nowDis let start = type === 'before' ? nowStartTimes - calcDis : nowStartTimes + calcDis - start = Math.min(start,maxTime) + if(start>maxTime) start=maxTime let end = type === 'before' ? nowEndTimes - calcDis : nowEndTimes + calcDis - end = Math.min(end,maxTime) + if(end>maxTime) end=maxTime this.dateRange = [formatDate(start,this.dataUnit !== 3),formatDate(end,this.dataUnit !== 3)] this.$emit('updateDate',this.dateRange) }, From b421d11bc2a54a258b145c1bf1ed2057f6ae43f7 Mon Sep 17 00:00:00 2001 From: baicai <18221243570@163.com> Date: Sat, 27 Sep 2025 14:50:20 +0800 Subject: [PATCH 08/40] =?UTF-8?q?=E5=AE=9E=E6=97=B6=E8=BF=90=E8=A1=8C?= =?UTF-8?q?=E5=9B=BE=E6=A0=87=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/ems/dzjk.js | 6 +- src/views/ems/dzjk/sbjk/ssyx/CnglqxChart.vue | 150 ++++++++++-------- src/views/ems/dzjk/sbjk/ssyx/DcpjsocChart.vue | 127 ++++++++------- src/views/ems/dzjk/sbjk/ssyx/DcpjwdChart.vue | 125 ++++++++------- src/views/ems/dzjk/sbjk/ssyx/PocpjwdChart.vue | 129 ++++++++------- 5 files changed, 293 insertions(+), 244 deletions(-) diff --git a/src/api/ems/dzjk.js b/src/api/ems/dzjk.js index 47b89e2..2662ffa 100644 --- a/src/api/ems/dzjk.js +++ b/src/api/ems/dzjk.js @@ -146,10 +146,10 @@ export function storagePower(siteId) { method: 'get' }) } -//poc平均温度 -export function stackAveTemp(siteId) { +//poc温度 +export function pcsMaxTemp(siteId) { return request({ - url: `/ems/siteMonitor/runningGraph/stackAveTemp?siteId=${siteId}`, + url: `/ems/siteMonitor/runningGraph/pcsMaxTemp?siteId=${siteId}`, method: 'get' }) } diff --git a/src/views/ems/dzjk/sbjk/ssyx/CnglqxChart.vue b/src/views/ems/dzjk/sbjk/ssyx/CnglqxChart.vue index ce7dd5c..ec46f10 100644 --- a/src/views/ems/dzjk/sbjk/ssyx/CnglqxChart.vue +++ b/src/views/ems/dzjk/sbjk/ssyx/CnglqxChart.vue @@ -1,107 +1,125 @@ - diff --git a/src/views/ems/dzjk/sbjk/ssyx/DcpjsocChart.vue b/src/views/ems/dzjk/sbjk/ssyx/DcpjsocChart.vue index bc737a2..4ed6d39 100644 --- a/src/views/ems/dzjk/sbjk/ssyx/DcpjsocChart.vue +++ b/src/views/ems/dzjk/sbjk/ssyx/DcpjsocChart.vue @@ -1,99 +1,106 @@ - diff --git a/src/views/ems/dzjk/sbjk/ssyx/DcpjwdChart.vue b/src/views/ems/dzjk/sbjk/ssyx/DcpjwdChart.vue index 04900ac..78ab03f 100644 --- a/src/views/ems/dzjk/sbjk/ssyx/DcpjwdChart.vue +++ b/src/views/ems/dzjk/sbjk/ssyx/DcpjwdChart.vue @@ -1,99 +1,110 @@ - diff --git a/src/views/ems/dzjk/sbjk/ssyx/PocpjwdChart.vue b/src/views/ems/dzjk/sbjk/ssyx/PocpjwdChart.vue index 4294047..8b67734 100644 --- a/src/views/ems/dzjk/sbjk/ssyx/PocpjwdChart.vue +++ b/src/views/ems/dzjk/sbjk/ssyx/PocpjwdChart.vue @@ -1,96 +1,109 @@ - From 466d3a14b66fd248bbf86e32a41b626031ac8a60 Mon Sep 17 00:00:00 2001 From: baicai <18221243570@163.com> Date: Sat, 27 Sep 2025 15:19:15 +0800 Subject: [PATCH 09/40] =?UTF-8?q?logo=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/index.html | 2 +- public/logo-icon.png | Bin 0 -> 32060 bytes src/assets/images/ems/logo-icon.png | Bin 0 -> 32060 bytes src/assets/images/ems/logo-large.png | Bin 137096 -> 0 bytes src/assets/images/ems/logo-small.png | Bin 0 -> 66544 bytes src/assets/images/ems/logo.png | Bin 34810 -> 85447 bytes src/layout/components/Sidebar/Logo.vue | 54 +-- src/views/login.vue | 162 ++++++--- src/views/tool/build/index.vue | 473 ++++++++++++++----------- 9 files changed, 394 insertions(+), 297 deletions(-) create mode 100644 public/logo-icon.png create mode 100644 src/assets/images/ems/logo-icon.png delete mode 100644 src/assets/images/ems/logo-large.png create mode 100644 src/assets/images/ems/logo-small.png diff --git a/public/index.html b/public/index.html index 925455c..3bfd9c7 100644 --- a/public/index.html +++ b/public/index.html @@ -5,7 +5,7 @@ - + <%= webpackConfig.name %> + From a1fdc958db61217a4400d689976f75342da8476f Mon Sep 17 00:00:00 2001 From: baicai <18221243570@163.com> Date: Sat, 27 Sep 2025 17:44:03 +0800 Subject: [PATCH 14/40] =?UTF-8?q?=E6=A0=B7=E5=BC=8F=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/home/index.vue | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/src/views/ems/dzjk/home/index.vue b/src/views/ems/dzjk/home/index.vue index 403ffbe..86a89da 100644 --- a/src/views/ems/dzjk/home/index.vue +++ b/src/views/ems/dzjk/home/index.vue @@ -79,7 +79,7 @@ import intervalUpdate from "@/mixins/ems/intervalUpdate"; export default { name: "DzjkSbjkHome", components: { WeekChart, ActiveChart, AlarmTable, ClInfo }, - mixins: [getQuerySiteId,intervalUpdate], + mixins: [getQuerySiteId, intervalUpdate], data() { return { loading: false, @@ -110,6 +110,14 @@ export default { title: "今日放电量(kWh)", attr: "dayDisChargedCap", }, + { + title: "总充电量(kWh)", + attr: "totalChargedCap", + }, + { + title: "总放电量(kWh)", + attr: "totalDischargedCap", + }, { title: "总收入", attr: "todo", @@ -118,15 +126,6 @@ export default { title: "当日实时收入", attr: "todo", }, - { - title: "总充电量(MWh)", - attr: "totalChargedCap", - }, - { - title: "总放电量(MWh)", - attr: "totalDischargedCap", - }, - ], info: {}, //基本信息 runningInfo: {}, //总累计运行数据+报警表格 @@ -164,7 +163,7 @@ export default { this.loading = false; }); // 一分钟循环一次总累计运行数据 - this.updateInterval(this.getRunningInfo) + this.updateInterval(this.getRunningInfo); }, }, }; @@ -181,7 +180,9 @@ export default { .sjgl-data { text-align: center; &:nth-child(1), - &:nth-child(2) { + &:nth-child(2), + &:nth-child(3), + &:nth-child(4) { margin-bottom: 25px; } .sjgl-title { From 7497c1d1b93fd2c466c87e6d4378ae5fe80adebf 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, 28 Sep 2025 14:31:24 +0800 Subject: [PATCH 15/40] =?UTF-8?q?=E5=91=8A=E8=AD=A6=E9=A1=B5=E9=9D=A2?= =?UTF-8?q?=E5=85=88=E7=94=9F=E6=88=90=E5=91=8A=E8=AD=A6=E5=86=8D=E8=B7=B3?= =?UTF-8?q?=E8=BD=AC,=E6=9B=B4=E6=96=B0=E7=94=B5=E8=A1=A8=E8=BF=94?= =?UTF-8?q?=E5=9B=9E=E5=80=BC,=E6=9B=B4=E6=96=B0=E7=99=BB=E9=99=86?= =?UTF-8?q?=E3=80=81=E6=B3=A8=E5=86=8C=E9=A1=B5=E9=9D=A2=E8=A1=A8=E6=A0=BC?= =?UTF-8?q?=E5=B7=A6=E8=BE=B9=E8=B7=9D=E7=A6=BB?= 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/gzgj/index.vue | 11 ++- src/views/ems/dzjk/sbjk/db/index.vue | 141 +++++++++++++++++++++------ src/views/login.vue | 2 +- src/views/register.vue | 2 +- 5 files changed, 131 insertions(+), 33 deletions(-) diff --git a/src/api/ems/dzjk.js b/src/api/ems/dzjk.js index 2662ffa..5de26bb 100644 --- a/src/api/ems/dzjk.js +++ b/src/api/ems/dzjk.js @@ -100,6 +100,14 @@ export function getAlarmDetailList({status,siteId, deviceId, alarmLevel, alarmSt }) } +// 告警生成工单 +export function createTicketNo(data) { + return request({ + url: `/ems/siteAlarm/createTicketNo`, + method: 'post', + data + }) +} // 概率统计 //获取概率统计 电量指标接口 export function getElectricData({siteId,startDate,endDate}) { diff --git a/src/views/ems/dzjk/gzgj/index.vue b/src/views/ems/dzjk/gzgj/index.vue index d600f42..899e04a 100644 --- a/src/views/ems/dzjk/gzgj/index.vue +++ b/src/views/ems/dzjk/gzgj/index.vue @@ -90,7 +90,7 @@ > @@ -113,7 +113,7 @@ + \ No newline at end of file From d3558f5ee496424362a20fd1bc03fa00a8f2574d 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, 28 Sep 2025 15:52:17 +0800 Subject: [PATCH 19/40] =?UTF-8?q?=E6=B6=B2=E5=86=B7=E9=A1=B5=E9=9D=A2?= =?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/yl/index.vue | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-) diff --git a/src/views/ems/dzjk/sbjk/yl/index.vue b/src/views/ems/dzjk/sbjk/yl/index.vue index d6a8765..a387bc0 100644 --- a/src/views/ems/dzjk/sbjk/yl/index.vue +++ b/src/views/ems/dzjk/sbjk/yl/index.vue @@ -4,7 +4,7 @@
{{index+1}}#{{item.deviceName}} @@ -93,15 +93,4 @@ export default { } } } -.yl-warn-item-container{ - background-color: #FFF1F0; - .header{ - .header-title{ - background-color: #FC6B69; - } - .header-values{ - color: #FC6B69; - } - } -} From 66e2a3daab1d3f3a5b5c4d47f8e68e72c3977d34 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, 28 Sep 2025 16:18:34 +0800 Subject: [PATCH 20/40] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E7=94=B5=E8=A1=A8?= =?UTF-8?q?=E7=82=B9=E4=BD=8D=E5=90=8D=E7=A7=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/ems/dzjk/sbjk/db/index.vue | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/views/ems/dzjk/sbjk/db/index.vue b/src/views/ems/dzjk/sbjk/db/index.vue index a8206c6..20419b3 100644 --- a/src/views/ems/dzjk/sbjk/db/index.vue +++ b/src/views/ems/dzjk/sbjk/db/index.vue @@ -86,22 +86,22 @@ export default { { name:'正向有功电能', attr:'forwardActive', - pointName:'当前正向总有功电能' + pointName:'正向有功电能' }, { name:'反向有功电能', attr:'reverseActive', - pointName:'当前反向总有功电能' + pointName:'反向有功电能' }, { name:'正向无功电能', attr:'forwardReactive', - pointName:'当前正向总无功电能' + pointName:'正向无功电能' }, { name:'反向无功电能', attr:'reverseReactive', - pointName:'当前反向总无功电能' + pointName:'反向无功电能' }, { name:'有功功率', From 28a6e525d8cfd0c6057a01b7952860d04217273e 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, 28 Sep 2025 16:56:11 +0800 Subject: [PATCH 21/40] =?UTF-8?q?=E7=BC=96=E8=BE=91=E5=B7=A5=E5=8D=95?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E6=96=B0=E5=A2=9EticketNo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/ems/ticket/AddTicket.vue | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/views/ems/ticket/AddTicket.vue b/src/views/ems/ticket/AddTicket.vue index c055201..de7efce 100644 --- a/src/views/ems/ticket/AddTicket.vue +++ b/src/views/ems/ticket/AddTicket.vue @@ -159,7 +159,7 @@ export default { this.$refs.addTempForm.validate(valid => { if (!valid) return this.loading+=1 - const {title='',content='',status='',userId='',workUserId='',id='',expectedCompleteTime=''} = this.formData; + const {title='',content='',status='',userId='',workUserId='',id='',expectedCompleteTime='',ticketNo=''} = this.formData; if(this.mode === 'add'){ addTicket({title,content,status,userId,workUserId,expectedCompleteTime}).then(response => { if(response.code === 200){ @@ -172,7 +172,7 @@ export default { this.loading-=1 }) }else{ - updateTicket({title,content,status,userId,workUserId,id,expectedCompleteTime}).then(response => { + updateTicket({title,content,status,userId,workUserId,id,expectedCompleteTime,ticketNo}).then(response => { if(response.code === 200){ //新增成功 // 关闭弹窗 更新表格 From 887af476bac3268409c4a726a51dad71334c5ecd 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, 29 Sep 2025 09:29:34 +0800 Subject: [PATCH 22/40] =?UTF-8?q?=E5=B7=A5=E5=8D=95=E7=8A=B6=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/store/modules/ems.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/store/modules/ems.js b/src/store/modules/ems.js index 2bc171c..31b33ba 100644 --- a/src/store/modules/ems.js +++ b/src/store/modules/ems.js @@ -11,7 +11,7 @@ const ems = { alarmLevelOptions:{'A':'提示','B':'一般','C':'严重','D':'紧急'},//告警等级 alarmStatusOptions:{'0':'待处理','1':'已处理','2':'处理中'},//告警状态 deviceTypeOptions:{'TCP':'TCP','RTU':'RTU'},//设备类型 - ticketStatusOptions:{0:'待处理', 1:'已处理', 2:'处理中'},//工单处理状态 + ticketStatusOptions:{1:'待处理', 2:'处理中', 3:'已处理'},//工单处理状态 strategyStatusOptions:{'0':'未启用', '1':'已运行', '2':'已暂停', '3':'禁用', '4':'删除'},//策略状态 chargeStatusOptions:{'1':'充电','2':'待机'},//冲放状态 deviceCategoryOptions:{'PCS':'PCS','STACK':'电池堆','CLUSTER':'电池簇','COOLING':'液冷','BATTERY':'单体电池','AMMETER':'电表'},//设备类别 From cceca2af4f321ad9209e644a9d1f36797ff34689 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, 9 Oct 2025 17:38:26 +0800 Subject: [PATCH 23/40] =?UTF-8?q?=E7=94=B5=E4=BB=B7=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/ems/powerTariff.js | 42 +++ src/views/ems/powerTariff/AddPowerTariff.vue | 281 +++++++++++++++++++ src/views/ems/powerTariff/index.vue | 173 ++++++++++++ 3 files changed, 496 insertions(+) create mode 100644 src/api/ems/powerTariff.js create mode 100644 src/views/ems/powerTariff/AddPowerTariff.vue create mode 100644 src/views/ems/powerTariff/index.vue diff --git a/src/api/ems/powerTariff.js b/src/api/ems/powerTariff.js new file mode 100644 index 0000000..6a00ad3 --- /dev/null +++ b/src/api/ems/powerTariff.js @@ -0,0 +1,42 @@ +import request from '@/utils/request' +// 新增 +export function addPriceConfig(data) { + return request({ + url: '/ems/energyPriceConfig', + method: 'post', + data + }) +} + +//修改 +export function editPriceConfig(data) { + return request({ + url: '/ems/energyPriceConfig', + method: 'put', + data + }) +} + +//删除 +export function energyPriceConfig(id) { + return request({ + url: `/ems/energyPriceConfig/${id}`, + method: 'DELETE', + }) +} +//列表 +export function detailPriceConfig(data) { + return request({ + url: `/ems/energyPriceConfig/todo`, + method: 'get', + data + }) +} + +//列表 +export function listPriceConfig({startTime,endTime,pageSize,pageNum}) { + return request({ + url: `/ems/energyPriceConfig/list?startTime=${startTime}&endTime=${endTime}&pageNum=${pageNum}&pageSize=${pageSize}`, + method: 'get', + }) +} \ No newline at end of file diff --git a/src/views/ems/powerTariff/AddPowerTariff.vue b/src/views/ems/powerTariff/AddPowerTariff.vue new file mode 100644 index 0000000..5c3def0 --- /dev/null +++ b/src/views/ems/powerTariff/AddPowerTariff.vue @@ -0,0 +1,281 @@ +//选择年月 配置尖峰平谷对应的电价 配置24小时选择对应的尖峰平谷 + + + + \ No newline at end of file diff --git a/src/views/ems/powerTariff/index.vue b/src/views/ems/powerTariff/index.vue new file mode 100644 index 0000000..49a5104 --- /dev/null +++ b/src/views/ems/powerTariff/index.vue @@ -0,0 +1,173 @@ + + + + + From ad95debdac005f496e17ac9567a038165e23d1e1 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, 10 Oct 2025 10:49:42 +0800 Subject: [PATCH 24/40] =?UTF-8?q?=E7=94=B5=E4=BB=B7=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/ems/powerTariff.js | 10 ++--- src/views/ems/powerTariff/AddPowerTariff.vue | 6 +-- src/views/ems/powerTariff/index.vue | 40 +++++++++----------- src/views/ems/site/sblb/index.vue | 4 +- 4 files changed, 27 insertions(+), 33 deletions(-) diff --git a/src/api/ems/powerTariff.js b/src/api/ems/powerTariff.js index 6a00ad3..ff058fe 100644 --- a/src/api/ems/powerTariff.js +++ b/src/api/ems/powerTariff.js @@ -24,12 +24,11 @@ export function energyPriceConfig(id) { method: 'DELETE', }) } -//列表 -export function detailPriceConfig(data) { +//详情 +export function detailPriceConfig(id) { return request({ - url: `/ems/energyPriceConfig/todo`, + url: `/ems/energyPriceConfig/${id}`, method: 'get', - data }) } @@ -39,4 +38,5 @@ export function listPriceConfig({startTime,endTime,pageSize,pageNum}) { url: `/ems/energyPriceConfig/list?startTime=${startTime}&endTime=${endTime}&pageNum=${pageNum}&pageSize=${pageSize}`, method: 'get', }) -} \ No newline at end of file +} + diff --git a/src/views/ems/powerTariff/AddPowerTariff.vue b/src/views/ems/powerTariff/AddPowerTariff.vue index 5c3def0..9e44c0d 100644 --- a/src/views/ems/powerTariff/AddPowerTariff.vue +++ b/src/views/ems/powerTariff/AddPowerTariff.vue @@ -142,14 +142,14 @@ export default { this.mode='edit' //获取详情 初始化hoursOptions this.loading = true - detailPriceConfig({id}).then(response => { + detailPriceConfig(id).then(response => { const data = response?.data || {} this.hoursOptions = data?.range || [] this.powerDate=data?.year && data?.month ? data.year +'-'+data.month : '' this.priceTypeOptions.forEach(item=>{ - item.price = data[item.id] || '' + item.price = data[item.id] }) - }) + }).finally(()=>this.loading = false) }else { this.mode='add' } diff --git a/src/views/ems/powerTariff/index.vue b/src/views/ems/powerTariff/index.vue index 49a5104..a9dbd65 100644 --- a/src/views/ems/powerTariff/index.vue +++ b/src/views/ems/powerTariff/index.vue @@ -11,12 +11,12 @@ format="yyyy年" value-format="yyyy" :picker-options="pickerOptions" + @change="changeDefaultYear" > - 搜索 - 新增电价配置 + 新增电价配置
@@ -29,9 +29,10 @@ >
{{item.month}}月电价时段划分 - - - +
+ 编辑 + 删除 +
@@ -71,25 +72,20 @@ export default { return time.getFullYear() >= new Date().getFullYear()+1; }, }, - priceTypeOptions:[{ - id:'peak', - name:'尖', - },{ - id:'high', - name:'峰', - },{ - id:'flat', - name:'平', - },{ - id:'valley', - name:'谷', - }], + priceTypeOptions:{ + 'peak':'尖', + 'high':'峰', + 'flat':'平', + 'valley':'谷' + }, } }, methods:{ + changeDefaultYear(){ + this.getData(); + }, getData(){ this.loading=true; - console.log('this.defaultYear=====',this.defaultYear) const date = new Date(this.defaultYear).getFullYear() const startTime = date+'-01',endTime = date+'-12' listPriceConfig({startTime,endTime,pageNum:1,pageSize:20}).then(response => { @@ -109,7 +105,7 @@ export default { beforeClose: (action, instance, done) => { if (action === 'confirm') { instance.confirmButtonLoading = true; - energyPriceConfig({id:row.id}).then(response => { + energyPriceConfig(row.id).then(response => { response.code === 200 && done(); }).finally(() => { instance.confirmButtonLoading = false; @@ -140,14 +136,12 @@ export default { \ No newline at end of file + diff --git a/src/views/ems/dzjk/sbjk/dtdc/ChartDetail.vue b/src/views/ems/dzjk/sbjk/dtdc/ChartDetail.vue index 27871a3..409859d 100644 --- a/src/views/ems/dzjk/sbjk/dtdc/ChartDetail.vue +++ b/src/views/ems/dzjk/sbjk/dtdc/ChartDetail.vue @@ -10,13 +10,17 @@ class="ems-dialog chart-detail-dialog" :before-close="handleColsed" > - +
- - + +
-
+
@@ -28,7 +32,7 @@ import resize from "@/mixins/ems/resize"; import { getSingleBatteryData } from "@/api/ems/dzjk"; import DateRangeSelect from "@/components/Ems/DateRangeSelect/index.vue"; export default { - components: {DateRangeSelect}, + components: { DateRangeSelect }, mixins: [resize], data() { return { @@ -48,9 +52,9 @@ export default { }, methods: { // 更新时间范围 重置图表 - updateDate(data){ - this.dateRange=data || [] - this.getData() + updateDate(data) { + this.dateRange = data || []; + this.getData(); }, handleColsed(done) { if (!this.chart) { @@ -94,7 +98,7 @@ export default { this.$nextTick(() => { !this.chart && (this.chart = echarts.init(document.querySelector("#lineChart"))); - this.$refs.dateRangeSelect.init() + this.$refs.dateRangeSelect.init(); }); }, setOption(data) { @@ -148,7 +152,6 @@ export default { }, ]; } - this.chart && this.chart.setOption({ color: ["#FFBD00", "#3C81FF", "#05AEA3", "#F86F70"], @@ -186,10 +189,10 @@ export default { }; + diff --git a/src/views/ems/site/sblb/PointTable.vue b/src/views/ems/site/sblb/PointTable.vue index 232d95f..7a4ce1f 100644 --- a/src/views/ems/site/sblb/PointTable.vue +++ b/src/views/ems/site/sblb/PointTable.vue @@ -1,6 +1,7 @@ \ No newline at end of file + From fef1704cbdaf15660a8212a8efbcc0cb037f7cda 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, 13 Oct 2025 17:01:13 +0800 Subject: [PATCH 28/40] =?UTF-8?q?=E5=91=8A=E8=AD=A6=E7=BA=A2=E7=82=B9?= =?UTF-8?q?=E6=A0=87=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/store/modules/ems.js | 16 ++++++++- src/views/ems/dzjk/gzgj/index.vue | 2 +- src/views/ems/dzjk/index.vue | 41 +++++++++++++++++------- src/views/ems/dzjk/sbjk/index.vue | 5 --- src/views/ems/site/powerTariff/index.vue | 2 +- 5 files changed, 47 insertions(+), 19 deletions(-) diff --git a/src/store/modules/ems.js b/src/store/modules/ems.js index 31b33ba..b80f590 100644 --- a/src/store/modules/ems.js +++ b/src/store/modules/ems.js @@ -1,5 +1,7 @@ +import {getAlarmDetailList} from'@/api/ems/dzjk' const ems = { state: { + dzjkAlarmLighting:false,//单站监控 告警统计红点标志 zdList:[], workStatusOptions:{'0':'正常','1':'异常','2':'停止'},//工作状态 deviceStatusOptions:{'0':'在线','1':'离线','2':'维修中'},//设备状态 @@ -19,8 +21,20 @@ const ems = { mutations: { SET_ZD_LIST(state, list) { state.zdList = list || [] - } + }, + SET_DZJK_ALARM_LIGHTING(state, status) { + state.dzjkAlarmLighting = status + }, }, + actions: { + //查询站点的所有待处理0的告警 存在展示红点标志 + getSiteAlarmNum({state,commit},siteId){ + console.log('页面进入单站监控或切换站点ID或在告警统计页面调用了告警list接口',siteId) + getAlarmDetailList({status:0,siteId,pageSize:10,pageNum:1,deviceId:'',alarmLevel:'',alarmStartTime:'',alarmEndTime:''}).then(response=>{ + commit('SET_DZJK_ALARM_LIGHTING',!!response?.total || false) + }) + } + } } export default ems diff --git a/src/views/ems/dzjk/gzgj/index.vue b/src/views/ems/dzjk/gzgj/index.vue index 899e04a..bfff9d3 100644 --- a/src/views/ems/dzjk/gzgj/index.vue +++ b/src/views/ems/dzjk/gzgj/index.vue @@ -179,7 +179,6 @@ export default { // 搜索 onSearch(){ this.pageNum =1//每次搜索从1开始搜索 - const [alarmStartTime='',alarmEndTime='']=(this.dateRange || []) this.getData() }, // 重置 @@ -199,6 +198,7 @@ export default { }, // 获取数据 getData(){ + this.$store.dispatch('getSiteAlarmNum',this.siteId) this.loading=true const {deviceId,alarmLevel} = this.search const {siteId,pageNum,pageSize,activeBtn} =this diff --git a/src/views/ems/dzjk/index.vue b/src/views/ems/dzjk/index.vue index 92e3eb3..0986c66 100644 --- a/src/views/ems/dzjk/index.vue +++ b/src/views/ems/dzjk/index.vue @@ -11,10 +11,10 @@ active-text-color="#ffffff" mode="horizontal" > - - - {{item.meta.title}} - + + + {{item.meta.title}} +
@@ -30,6 +30,7 @@ import { dzjk } from '@/router/ems' const childrenRoute = dzjk[0].children[0].children//获取到单站监控下面的字路由 console.log('childrenRoute',childrenRoute) import ZdSelect from '@/components/Ems/ZdSelect/index.vue' +import {mapState} from "vuex"; export default { components:{ZdSelect}, data(){ @@ -38,14 +39,21 @@ export default { activeMenu:'' } }, + computed:{ + ...mapState({ + dzjkAlarmLighting:state=>state.ems.dzjkAlarmLighting + }) + }, methods:{ submitSite(id){ - if(id != this.$route.query.siteId){ - console.log('单站监控选择了其他的站点id=',id,'并更新页面地址参数') + if(id !== this.$route.query.siteId){ + // console.log('单站监控选择了其他的站点id=',id,'并更新页面地址参数') this.$router.push({query:{...this.$route.query,siteId:id}}) }else{ - console.log('单站监控选择了相同的其他的站点id=',id,'页面地址不发生改变') + // console.log('单站监控选择了相同的其他的站点id=',id,'页面地址不发生改变') } + //获取告警列表数据 + this.$store.dispatch('getSiteAlarmNum',id) } }, beforeRouteLeave(to,from, next){ @@ -54,10 +62,6 @@ export default { this.$store.commit('SET_ZD_LIST',[]) next() }, - mounted() { - console.log('单站监控一级页面路由',this.$route) - } - } @@ -65,4 +69,19 @@ export default { .dzjk-ems-content-container{ margin-top:0; } + .lighting{ + position: relative; + z-index: 1; + &::after{ + content:""; + display: block; + background-color: red; + height: 10px; + width: 10px; + border-radius: 100%; + position: absolute; + right: -2px; + top: -2px; + } + } diff --git a/src/views/ems/dzjk/sbjk/index.vue b/src/views/ems/dzjk/sbjk/index.vue index a6bf13a..1ef3731 100644 --- a/src/views/ems/dzjk/sbjk/index.vue +++ b/src/views/ems/dzjk/sbjk/index.vue @@ -25,7 +25,6 @@ diff --git a/src/views/ems/site/powerTariff/index.vue b/src/views/ems/site/powerTariff/index.vue index 3344caa..89710d2 100644 --- a/src/views/ems/site/powerTariff/index.vue +++ b/src/views/ems/site/powerTariff/index.vue @@ -72,7 +72,7 @@ export default { return { loading:false, pageNum:1, - pageSize:10, + pageSize:40, searchLoading:false, siteId:'', siteList:[], From fb0eda456512544559c793c8bdb2327090fa8b01 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, 15 Oct 2025 14:26:06 +0800 Subject: [PATCH 29/40] =?UTF-8?q?=E5=8D=95=E7=AB=99=E7=9B=91=E6=8E=A7-?= =?UTF-8?q?=E8=AE=BE=E5=A4=87=E7=9B=91=E6=8E=A7-=E5=8A=A8=E6=80=81?= =?UTF-8?q?=E4=B8=89=E7=BA=A7=E8=8F=9C=E5=8D=95,=E7=82=B9=E4=BD=8D?= =?UTF-8?q?=E6=B8=85=E5=8D=95=E6=8E=92=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/ems/dzjk.js | 8 ++- src/api/ems/site.js | 4 +- src/router/ems.js | 14 +++--- src/store/modules/ems.js | 15 +++++- src/views/ems/dzjk/sbjk/index.vue | 68 ++++++++++++++++++-------- src/views/ems/site/sblb/PointTable.vue | 30 ++++++------ 6 files changed, 91 insertions(+), 48 deletions(-) diff --git a/src/api/ems/dzjk.js b/src/api/ems/dzjk.js index 7b56570..ad1eee0 100644 --- a/src/api/ems/dzjk.js +++ b/src/api/ems/dzjk.js @@ -14,7 +14,13 @@ export function getSevenChargeData({siteId,startDate,endDate}) { method: 'get' }) } - +// 获取站点包含的设备种类 用来判断单站监控设备监控的菜单栏展示 +export function getSiteAllDeviceCategory(siteId) { + return request({ + url: `/ems/siteConfig/getSiteAllDeviceCategory?siteId=${siteId}`, + method: 'get' + }) +} //获取pcs、实时运行头部的设备信息 export function getRunningHeadInfo(siteId) { return request({ diff --git a/src/api/ems/site.js b/src/api/ems/site.js index ea68371..a94155b 100644 --- a/src/api/ems/site.js +++ b/src/api/ems/site.js @@ -64,9 +64,9 @@ export function getDeviceList(siteId) { } //获取设备点位table -export function getDevicePointList({siteId,deviceId,deviceCategory,pageNum,pageSize,dataPointName='',sortMethod,dataPoint,lower,upper}) { +export function getDevicePointList({siteId,deviceId,deviceCategory,pageNum,pageSize,dataPointName='',sortMethod,sortData,dataPoint,lower,upper}) { return request({ - url: `/ems/siteConfig/getDevicePointList?siteId=${siteId}&deviceId=${deviceId}&pageNum=${pageNum}&pageSize=${pageSize}&deviceCategory=${deviceCategory}&dataPointName=${dataPointName}&dataPoint=${dataPoint}&lower=${lower}&upper=${upper}&pageNum=${pageNum}&sortMethod=${sortMethod}`, + url: `/ems/siteConfig/getDevicePointList?siteId=${siteId}&deviceId=${deviceId}&pageNum=${pageNum}&pageSize=${pageSize}&deviceCategory=${deviceCategory}&dataPointName=${dataPointName}&dataPoint=${dataPoint}&lower=${lower}&upper=${upper}&pageNum=${pageNum}&sortMethod=${sortMethod}&sortData=${sortData}`, method: 'get', }) } \ No newline at end of file diff --git a/src/router/ems.js b/src/router/ems.js index b07a0e6..e00873a 100644 --- a/src/router/ems.js +++ b/src/router/ems.js @@ -42,43 +42,43 @@ export const dzjk=[ path: 'ssyx', component: () => import('@/views/ems/dzjk/sbjk/ssyx/index.vue'), name: 'DzjkSbjkSsyx', - meta: { title: '实时运行',breadcrumb: false,activeMenu: '/dzjk',activeSecondMenuName:'DzjkSbjk'}, + meta: { title: '实时运行',breadcrumb: false,activeMenu: '/dzjk',activeSecondMenuName:'DzjkSbjk',categoryName:'SSYX'}, }, { path: 'pcs', component: () => import('@/views/ems/dzjk/sbjk/pcs/index.vue'), name: 'DzjkSbjkPcs', - meta: { title: 'PCS',breadcrumb: false,activeMenu: '/dzjk',activeSecondMenuName:'DzjkSbjk'}, + meta: { title: 'PCS',breadcrumb: false,activeMenu: '/dzjk',activeSecondMenuName:'DzjkSbjk',categoryName:'PCS'}, }, { path: 'bmszl', component: () => import('@/views/ems/dzjk/sbjk/bmszl/index.vue'), name: 'DzjkSbjkBmszl', - meta: { title: 'BMS总览',breadcrumb: false,activeMenu: '/dzjk',activeSecondMenuName:'DzjkSbjk'}, + meta: { title: 'BMS总览',breadcrumb: false,activeMenu: '/dzjk',activeSecondMenuName:'DzjkSbjk', categoryName:'STACK'}, }, { path: 'bmsdcc', component: () => import('@/views/ems/dzjk/sbjk/bmsdcc/index.vue'), name: 'DzjkSbjkBmsdcc', - meta: { title: 'BMS电池簇',breadcrumb: false,activeMenu: '/dzjk',activeSecondMenuName:'DzjkSbjk'}, + meta: { title: 'BMS电池簇',breadcrumb: false,activeMenu: '/dzjk',activeSecondMenuName:'DzjkSbjk',categoryName:'CLUSTER'}, }, { path: 'dtdc', component: () => import('@/views/ems/dzjk/sbjk/dtdc/index.vue'), name: 'DzjkSbjkDtdc', - meta: { title: '单体电池',breadcrumb: false,activeMenu: '/dzjk',activeSecondMenuName:'DzjkSbjk'}, + meta: { title: '单体电池',breadcrumb: false,activeMenu: '/dzjk',activeSecondMenuName:'DzjkSbjk',categoryName:'BATTERY'}, }, { path: 'db', component: () => import('@/views/ems/dzjk/sbjk/db/index.vue'), name: 'DzjkSbjkDb', - meta: { title: '电表',breadcrumb: false,activeMenu: '/dzjk',activeSecondMenuName:'DzjkSbjk'}, + meta: { title: '电表',breadcrumb: false,activeMenu: '/dzjk',activeSecondMenuName:'DzjkSbjk',categoryName:'AMMETER'}, }, { path: 'yl', component: () => import('@/views/ems/dzjk/sbjk/yl/index.vue'), name: 'DzjkSbjkYl', - meta: { title: '液冷',breadcrumb: false,activeMenu: '/dzjk',activeSecondMenuName:'DzjkSbjk'}, + meta: { title: '液冷',breadcrumb: false,activeMenu: '/dzjk',activeSecondMenuName:'DzjkSbjk',categoryName:'COOLING'}, } ] }, diff --git a/src/store/modules/ems.js b/src/store/modules/ems.js index b80f590..00678be 100644 --- a/src/store/modules/ems.js +++ b/src/store/modules/ems.js @@ -1,8 +1,9 @@ -import {getAlarmDetailList} from'@/api/ems/dzjk' +import {getAlarmDetailList,getSiteAllDeviceCategory} from'@/api/ems/dzjk' const ems = { state: { dzjkAlarmLighting:false,//单站监控 告警统计红点标志 zdList:[], + zdDeviceCategoryOptions:{},//站点各个站点包含的设备种类 {021_DDS_01:["BATTERY","CLUSTER","STACK", "DH", "AMMETER", "PCS", "XF"],021_DDS_02:[]...} workStatusOptions:{'0':'正常','1':'异常','2':'停止'},//工作状态 deviceStatusOptions:{'0':'在线','1':'离线','2':'维修中'},//设备状态 gridStatusOptions:{'0':'并网','1':'未并网'},//并网状态 @@ -25,15 +26,25 @@ const ems = { SET_DZJK_ALARM_LIGHTING(state, status) { state.dzjkAlarmLighting = status }, + SET_ZD_DEVICE_CATEGORY_OPTIONS(state,{siteId,data}){ + state.zdDeviceCategoryOptions = Object.assign({}, state.zdDeviceCategoryOptions, {[siteId]:data}) + } }, actions: { //查询站点的所有待处理0的告警 存在展示红点标志 getSiteAlarmNum({state,commit},siteId){ - console.log('页面进入单站监控或切换站点ID或在告警统计页面调用了告警list接口',siteId) getAlarmDetailList({status:0,siteId,pageSize:10,pageNum:1,deviceId:'',alarmLevel:'',alarmStartTime:'',alarmEndTime:''}).then(response=>{ commit('SET_DZJK_ALARM_LIGHTING',!!response?.total || false) }) + }, + getSiteDeviceCategory({state,commit},siteId){ + getSiteAllDeviceCategory(siteId).then(response=>{ + let data = response?.data || []; + data.unshift('SSYX'); + commit('SET_ZD_DEVICE_CATEGORY_OPTIONS',{siteId,data}) + }) } + } } diff --git a/src/views/ems/dzjk/sbjk/index.vue b/src/views/ems/dzjk/sbjk/index.vue index 1ef3731..14082d8 100644 --- a/src/views/ems/dzjk/sbjk/index.vue +++ b/src/views/ems/dzjk/sbjk/index.vue @@ -1,38 +1,66 @@ diff --git a/src/views/ems/site/sblb/PointTable.vue b/src/views/ems/site/sblb/PointTable.vue index 7a4ce1f..42640e3 100644 --- a/src/views/ems/site/sblb/PointTable.vue +++ b/src/views/ems/site/sblb/PointTable.vue @@ -58,8 +58,8 @@ max-height="400px" stripe style="width: 100%" - :default-sort="{ order: 'descending' }" - @sort-change="changeSort" + :default-sort="defaultSort" + @sort-change="handleSortChange" > @@ -84,7 +84,7 @@ > - + @@ -124,8 +124,8 @@ export default { this.pageNum = 1; this.totalSize = 0; this.form = { - valueSortMethod: "desc", //升序不传或者asc、降序desc) sortMethod: "desc", //升序不传或者asc、降序desc) + sortData:this.defaultSort.prop, dataPointName: "", //点位名称 dataPoint: "", //点位名称 lower: "", // @@ -137,10 +137,12 @@ export default { }, data() { return { + // 默认排序 + defaultSort: { prop: "updateTime", order: "descending" }, show: false, loading: false, form: { - valueSortMethod: "desc", //最新值升序不传或者asc、降序desc) + sortData: "updateTime", //最新值升序不传或者asc、降序desc) sortMethod: "desc", //升序不传或者asc、降序desc) dataPointName: "", //点位名称 dataPoint: "", //点位名称 @@ -163,15 +165,11 @@ export default { pointName && this.$refs.pointChart.showChart({ pointName, deviceName, deviceId }); }, - changeSort(c) { - console.log("切换排序方式", c); - if (c.prop === "updateTime" && c.order) { - this.form.sortMethod = c.order === "descending" ? "desc" : "asc"; - this.getData(); - } else if (c.prop === "pointValue" && c.order) { - this.form.valueSortMethod = c.order === "descending" ? "desc" : "asc"; - this.getData(); - } + handleSortChange(column) { + this.form.sortData = column.prop + this.form.sortMethod = column.order === "descending" ? "desc" : "asc"; + console.log("切换排序方式", column, this.form); + this.getData(); }, search() { this.pageNum = 1; @@ -194,7 +192,7 @@ export default { pageNum, pageSize, form: { - valueSortMethod, + sortData, sortMethod, dataPointName, dataPoint, @@ -208,7 +206,7 @@ export default { deviceCategory, pageNum, pageSize, - valueSortMethod, + sortData, sortMethod, dataPointName, dataPoint, From f4e6821484d1149f60d4835e2f7be8c66137d17c 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, 16 Oct 2025 16:10:29 +0800 Subject: [PATCH 30/40] =?UTF-8?q?=E7=BB=BC=E5=90=88=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E7=9B=B8=E5=85=B3=E6=8E=A5=E5=8F=A3=E4=B8=8D=E5=86=8D=E4=BD=BF?= =?UTF-8?q?=E7=94=A8=E4=B8=AD=E6=96=87categoryName=E7=BB=9F=E4=B8=80?= =?UTF-8?q?=E4=BD=BF=E7=94=A8deviceCategory?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/ems/site.js | 12 +++- src/router/ems.js | 14 ++-- src/views/ems/dzjk/sbjk/PointChart.vue | 24 +++---- src/views/ems/dzjk/sbjk/bmsdcc/index.vue | 15 ++-- src/views/ems/dzjk/sbjk/bmszl/index.vue | 19 +++-- src/views/ems/dzjk/sbjk/db/index.vue | 7 +- src/views/ems/dzjk/sbjk/dtdc/index.vue | 2 +- src/views/ems/dzjk/sbjk/index.vue | 6 +- src/views/ems/dzjk/sbjk/pcs/index.vue | 14 ++-- src/views/ems/dzjk/sbjk/yl/index.vue | 7 +- src/views/ems/search/index.vue | 30 +++----- src/views/ems/site/sblb/AddDevice.vue | 90 +++++++++++------------- src/views/ems/site/sblb/PointTable.vue | 29 +++++--- src/views/ems/ticket/AddTicket.vue | 2 +- 14 files changed, 130 insertions(+), 141 deletions(-) diff --git a/src/api/ems/site.js b/src/api/ems/site.js index a94155b..7b0abac 100644 --- a/src/api/ems/site.js +++ b/src/api/ems/site.js @@ -54,7 +54,13 @@ export function deleteService(id) { method: 'delete', }) } - +// 获取上级设备id列表 +export function getParentDeviceId({siteId,deviceCategory}) { + return request({ + url: `/ems/siteConfig/getParentDeviceId?siteId=${siteId}&deviceCategory=${deviceCategory}`, + method: 'get', + }) +} //获取所有设备 export function getDeviceList(siteId) { return request({ @@ -64,9 +70,9 @@ export function getDeviceList(siteId) { } //获取设备点位table -export function getDevicePointList({siteId,deviceId,deviceCategory,pageNum,pageSize,dataPointName='',sortMethod,sortData,dataPoint,lower,upper}) { +export function getDevicePointList({siteId,deviceId,deviceCategory,parentDeviceId,pageNum,pageSize,dataPointName='',sortMethod,sortData,dataPoint,lower,upper}) { return request({ - url: `/ems/siteConfig/getDevicePointList?siteId=${siteId}&deviceId=${deviceId}&pageNum=${pageNum}&pageSize=${pageSize}&deviceCategory=${deviceCategory}&dataPointName=${dataPointName}&dataPoint=${dataPoint}&lower=${lower}&upper=${upper}&pageNum=${pageNum}&sortMethod=${sortMethod}&sortData=${sortData}`, + url: `/ems/siteConfig/getDevicePointList?siteId=${siteId}&deviceId=${deviceId}&pageNum=${pageNum}&pageSize=${pageSize}&deviceCategory=${deviceCategory}&dataPointName=${dataPointName}&parentDeviceId=${parentDeviceId}&dataPoint=${dataPoint}&lower=${lower}&upper=${upper}&pageNum=${pageNum}&sortMethod=${sortMethod}&sortData=${sortData}`, method: 'get', }) } \ No newline at end of file diff --git a/src/router/ems.js b/src/router/ems.js index e00873a..361c7ac 100644 --- a/src/router/ems.js +++ b/src/router/ems.js @@ -42,43 +42,43 @@ export const dzjk=[ path: 'ssyx', component: () => import('@/views/ems/dzjk/sbjk/ssyx/index.vue'), name: 'DzjkSbjkSsyx', - meta: { title: '实时运行',breadcrumb: false,activeMenu: '/dzjk',activeSecondMenuName:'DzjkSbjk',categoryName:'SSYX'}, + meta: { title: '实时运行',breadcrumb: false,activeMenu: '/dzjk',activeSecondMenuName:'DzjkSbjk',deviceCategory:'SSYX'}, }, { path: 'pcs', component: () => import('@/views/ems/dzjk/sbjk/pcs/index.vue'), name: 'DzjkSbjkPcs', - meta: { title: 'PCS',breadcrumb: false,activeMenu: '/dzjk',activeSecondMenuName:'DzjkSbjk',categoryName:'PCS'}, + meta: { title: 'PCS',breadcrumb: false,activeMenu: '/dzjk',activeSecondMenuName:'DzjkSbjk',deviceCategory:'PCS'}, }, { path: 'bmszl', component: () => import('@/views/ems/dzjk/sbjk/bmszl/index.vue'), name: 'DzjkSbjkBmszl', - meta: { title: 'BMS总览',breadcrumb: false,activeMenu: '/dzjk',activeSecondMenuName:'DzjkSbjk', categoryName:'STACK'}, + meta: { title: 'BMS总览',breadcrumb: false,activeMenu: '/dzjk',activeSecondMenuName:'DzjkSbjk', deviceCategory:'STACK'}, }, { path: 'bmsdcc', component: () => import('@/views/ems/dzjk/sbjk/bmsdcc/index.vue'), name: 'DzjkSbjkBmsdcc', - meta: { title: 'BMS电池簇',breadcrumb: false,activeMenu: '/dzjk',activeSecondMenuName:'DzjkSbjk',categoryName:'CLUSTER'}, + meta: { title: 'BMS电池簇',breadcrumb: false,activeMenu: '/dzjk',activeSecondMenuName:'DzjkSbjk',deviceCategory:'CLUSTER'}, }, { path: 'dtdc', component: () => import('@/views/ems/dzjk/sbjk/dtdc/index.vue'), name: 'DzjkSbjkDtdc', - meta: { title: '单体电池',breadcrumb: false,activeMenu: '/dzjk',activeSecondMenuName:'DzjkSbjk',categoryName:'BATTERY'}, + meta: { title: '单体电池',breadcrumb: false,activeMenu: '/dzjk',activeSecondMenuName:'DzjkSbjk',deviceCategory:'BATTERY'}, }, { path: 'db', component: () => import('@/views/ems/dzjk/sbjk/db/index.vue'), name: 'DzjkSbjkDb', - meta: { title: '电表',breadcrumb: false,activeMenu: '/dzjk',activeSecondMenuName:'DzjkSbjk',categoryName:'AMMETER'}, + meta: { title: '电表',breadcrumb: false,activeMenu: '/dzjk',activeSecondMenuName:'DzjkSbjk',deviceCategory:'AMMETER'}, }, { path: 'yl', component: () => import('@/views/ems/dzjk/sbjk/yl/index.vue'), name: 'DzjkSbjkYl', - meta: { title: '液冷',breadcrumb: false,activeMenu: '/dzjk',activeSecondMenuName:'DzjkSbjk',categoryName:'COOLING'}, + meta: { title: '液冷',breadcrumb: false,activeMenu: '/dzjk',activeSecondMenuName:'DzjkSbjk',deviceCategory:'COOLING'}, } ] }, diff --git a/src/views/ems/dzjk/sbjk/PointChart.vue b/src/views/ems/dzjk/sbjk/PointChart.vue index ee8d929..383565b 100644 --- a/src/views/ems/dzjk/sbjk/PointChart.vue +++ b/src/views/ems/dzjk/sbjk/PointChart.vue @@ -10,7 +10,7 @@ append-to-body width="1000px" class="ems-dialog" - :before-close="handleColsed" + :before-close="handleClosed" > - + {{baseInfo[item.attr] | formatNumber}} @@ -30,7 +30,7 @@
-
当前SOC : {{baseInfo.currentSoc}}%
+
当前SOC : {{baseInfo.currentSoc}}%
- + {{tempDataItem.name}}:{{item[tempDataItem.attr]}} @@ -140,9 +140,8 @@ export default { }; }, methods: { - showChart(pointName,categoryName,deviceId){ - console.log('点击查询图表',pointName,categoryName,deviceId) - pointName && this.$refs.pointChart.showChart({pointName,categoryName,deviceId}) + showChart(pointName,deviceId){ + pointName && this.$refs.pointChart.showChart({pointName,deviceCategory:'AMMETER',deviceId}) }, updateData(){ this.loading = true; diff --git a/src/views/ems/dzjk/sbjk/dtdc/index.vue b/src/views/ems/dzjk/sbjk/dtdc/index.vue index c2e3967..3353df4 100644 --- a/src/views/ems/dzjk/sbjk/dtdc/index.vue +++ b/src/views/ems/dzjk/sbjk/dtdc/index.vue @@ -174,7 +174,7 @@ export default { dataType && this.$refs.pointChart.showChart({ pointName: dataType, - categoryName: "单体电池", + deviceCategory:'BATTERY', deviceId: clusterDeviceId, child: [deviceId], }); diff --git a/src/views/ems/dzjk/sbjk/index.vue b/src/views/ems/dzjk/sbjk/index.vue index 14082d8..b283908 100644 --- a/src/views/ems/dzjk/sbjk/index.vue +++ b/src/views/ems/dzjk/sbjk/index.vue @@ -38,10 +38,10 @@ export default { return this.zdDeviceCategoryOptions[this.siteId] || [] }, categoryRouter(){ - const routeData =this.childrenRoute.filter(item=>this.locationSiteCategory.includes(item.meta.categoryName)) + const routeData =this.childrenRoute.filter(item=>this.locationSiteCategory.includes(item.meta.deviceCategory)) if(this.siteId && routeData.length > 0 && this.locationSiteCategory && this.locationSiteCategory.length >1){ - const locationPageCategoryName = this.$route.meta?.categoryName || '' - if(!routeData.some(item=> item.meta.categoryName===locationPageCategoryName)){ + const locationPageDeviceCategory = this.$route.meta?.deviceCategory || '' + if(!routeData.some(item=> item.meta.deviceCategory===locationPageDeviceCategory)){ this.$router.replace({path:'/dzjk/sbjk/ssyx',query:this.$route.query}) } } diff --git a/src/views/ems/dzjk/sbjk/pcs/index.vue b/src/views/ems/dzjk/sbjk/pcs/index.vue index fb92639..2af43ea 100644 --- a/src/views/ems/dzjk/sbjk/pcs/index.vue +++ b/src/views/ems/dzjk/sbjk/pcs/index.vue @@ -100,7 +100,7 @@ {{ pcsItem[item.attr] | formatNumber }} @@ -136,7 +136,7 @@ > {{ item.dcPower }}kW @@ -148,7 +148,7 @@ > {{ item.dcVoltage }}V @@ -160,7 +160,7 @@ > {{ item.dcCurrent }}A @@ -169,7 +169,6 @@
-
@@ -270,10 +269,9 @@ export default { }; }, methods: { - showChart(pointName, categoryName, deviceId) { - console.log("点击查询图表", pointName, categoryName, deviceId); + showChart(pointName, deviceId,isBranch=false) { pointName && - this.$refs.pointChart.showChart({ pointName, categoryName, deviceId }); + this.$refs.pointChart.showChart({ pointName,deviceCategory:isBranch ? 'BRANCH' : 'PCS', deviceId }); }, //6个方块数据 getRunningHeadData() { diff --git a/src/views/ems/dzjk/sbjk/yl/index.vue b/src/views/ems/dzjk/sbjk/yl/index.vue index a387bc0..fb3332a 100644 --- a/src/views/ems/dzjk/sbjk/yl/index.vue +++ b/src/views/ems/dzjk/sbjk/yl/index.vue @@ -11,7 +11,7 @@
- + {{tempDataItem.title}}:{{item[tempDataItem.attr]}} @@ -48,9 +48,8 @@ export default { } }, methods:{ - showChart(pointName,deviceName,deviceId){ - console.log('点击查询图表',pointName,deviceName,deviceId) - pointName && this.$refs.pointChart.showChart({pointName,deviceName,deviceId}) + showChart(pointName,deviceId){ + pointName && this.$refs.pointChart.showChart({pointName,deviceCategory:'COOLING',deviceId}) }, updateData(){ this.loading = true diff --git a/src/views/ems/search/index.vue b/src/views/ems/search/index.vue index f6be9f3..494445f 100644 --- a/src/views/ems/search/index.vue +++ b/src/views/ems/search/index.vue @@ -22,16 +22,16 @@ - + - {{ key }} + {{ item.name }} @@ -65,13 +65,6 @@ @select="handleSelect" > - - - - - - - 生成图表 @@ -118,7 +111,7 @@ export default { components: { DateTimeSelect }, computed: { isDtdc() { - return this.form.categoryName === "单体电池"; + return this.form.deviceCategory === "BATTERY"; }, }, watch: { @@ -140,7 +133,6 @@ export default { this.$refs.dateTimeSelect.init(); this.getDate(); }); - // this.submitForm() }, }, }, @@ -154,7 +146,7 @@ export default { dataRange: [], //时间选择范围 child: [], siteIds: "", //当前选中的站点id 默认选中第一个站点 - categoryName: "", //设备 + deviceCategory: "", //设备 pointName: "", //点位 dataUnit: 1, //横坐标 }, @@ -294,7 +286,7 @@ export default { }, querySearchAsync(query, cb) { console.log("查询数据", query); - if (!this.form.siteIds || !this.form.categoryName) { + if (!this.form.siteIds || !this.form.deviceCategory) { this.$message({ type: "warning", message: "请先选择站点和设备", @@ -303,7 +295,7 @@ export default { } pointFuzzyQuery({ siteIds: [this.form.siteIds], - categoryName: this.form.categoryName, + deviceCategory: this.form.deviceCategory, pointName: query, }).then((response) => { const data = response?.data || []; @@ -342,7 +334,7 @@ export default { const { siteIds, dataUnit, - categoryName, + deviceCategory, pointName, dataRange: [start = "", end = ""], child, @@ -374,7 +366,7 @@ export default { getPointValueList({ siteIds: [siteIds], dataUnit, - categoryName, + deviceCategory, pointName, startDate, endDate, diff --git a/src/views/ems/site/sblb/AddDevice.vue b/src/views/ems/site/sblb/AddDevice.vue index 9b09a2b..6f46b86 100644 --- a/src/views/ems/site/sblb/AddDevice.vue +++ b/src/views/ems/site/sblb/AddDevice.vue @@ -1,13 +1,13 @@ diff --git a/src/views/ems/site/sblb/index.vue b/src/views/ems/site/sblb/index.vue index e0f25a9..284e1da 100644 --- a/src/views/ems/site/sblb/index.vue +++ b/src/views/ems/site/sblb/index.vue @@ -37,12 +37,12 @@ label="设备名称"> + prop="categoryName" + label="设备类别"> + label="在线状态"> @@ -251,14 +251,19 @@ export default { //获取站点列表 getZdList(){ this.searchLoading=true - getAllSites().then(response => { + return getAllSites().then(response => { this.siteList = response?.data || [] + if(this.siteList.length>0) this.siteId = this.siteList[0].siteId }).finally(() => {this.searchLoading=false}) } }, mounted() { - this.onReset() - this.getZdList() + this.loading=true + this.siteId='' + this.pageNum =1//每次搜索从1开始搜索 + this.getZdList().then(()=>{ + this.getData() + }) } } diff --git a/src/views/login.vue b/src/views/login.vue index 6f65055..e3d79fe 100644 --- a/src/views/login.vue +++ b/src/views/login.vue @@ -85,7 +85,7 @@ @@ -265,6 +265,7 @@ export default { } } .el-login-footer { + z-index:2; height: 40px; line-height: 40px; position: fixed; diff --git a/src/views/register.vue b/src/views/register.vue index 8e0d3a1..f96446c 100644 --- a/src/views/register.vue +++ b/src/views/register.vue @@ -95,7 +95,7 @@ @@ -276,6 +276,7 @@ export default { } } .el-register-footer { + z-index:2; height: 40px; line-height: 40px; position: fixed; From 4b8380a6a9cb278416cb94de78ab47c0091ac40b 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, 21 Oct 2025 17:04:23 +0800 Subject: [PATCH 34/40] =?UTF-8?q?=E6=A0=B7=E5=BC=8F=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/login.vue | 1 + src/views/register.vue | 1 + 2 files changed, 2 insertions(+) diff --git a/src/views/login.vue b/src/views/login.vue index e3d79fe..c962b67 100644 --- a/src/views/login.vue +++ b/src/views/login.vue @@ -265,6 +265,7 @@ export default { } } .el-login-footer { + margin-left: -180px; z-index:2; height: 40px; line-height: 40px; diff --git a/src/views/register.vue b/src/views/register.vue index f96446c..57e55ee 100644 --- a/src/views/register.vue +++ b/src/views/register.vue @@ -276,6 +276,7 @@ export default { } } .el-register-footer { + margin-left: -180px; z-index:2; height: 40px; line-height: 40px; From 11269efa2da5255162c2feecfb411d2424cb48ee 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, 22 Oct 2025 09:44:41 +0800 Subject: [PATCH 35/40] =?UTF-8?q?=E5=8D=95=E4=BD=93=E7=94=B5=E6=B1=A0?= =?UTF-8?q?=E7=BB=BC=E5=90=88=E6=9F=A5=E8=AF=A2=E6=95=B0=E6=8D=AE=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/ems/dzjk/sbjk/bmszl/index.vue | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/views/ems/dzjk/sbjk/bmszl/index.vue b/src/views/ems/dzjk/sbjk/bmszl/index.vue index 75f75ae..c7eea7d 100644 --- a/src/views/ems/dzjk/sbjk/bmszl/index.vue +++ b/src/views/ems/dzjk/sbjk/bmszl/index.vue @@ -20,7 +20,7 @@
- + {{baseInfo[item.attr] | formatNumber}} @@ -30,7 +30,7 @@
-
当前SOC : {{baseInfo.stackSoc}}%
+
当前SOC : {{baseInfo.stackSoc}}%
Date: Wed, 22 Oct 2025 17:16:29 +0800 Subject: [PATCH 36/40] =?UTF-8?q?=E7=94=B5=E6=B1=A0=E5=A0=86=E7=BB=BC?= =?UTF-8?q?=E5=90=88=E6=9F=A5=E8=AF=A2=E6=95=B0=E6=8D=AE=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/ems/dzjk/sbjk/bmszl/index.vue | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/views/ems/dzjk/sbjk/bmszl/index.vue b/src/views/ems/dzjk/sbjk/bmszl/index.vue index c7eea7d..2970454 100644 --- a/src/views/ems/dzjk/sbjk/bmszl/index.vue +++ b/src/views/ems/dzjk/sbjk/bmszl/index.vue @@ -47,26 +47,26 @@ label="簇电压" >
Date: Sun, 26 Oct 2025 22:44:04 +0800 Subject: [PATCH 37/40] =?UTF-8?q?=E8=AE=BE=E5=A4=87=E4=BF=9D=E6=8A=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/store/modules/ems.js | 2 + src/views/ems/site/sbbh/AddDevice.vue | 584 ++++++++++++++++++++++++++ src/views/ems/site/sbbh/index.vue | 225 ++++++++++ 3 files changed, 811 insertions(+) create mode 100644 src/views/ems/site/sbbh/AddDevice.vue create mode 100644 src/views/ems/site/sbbh/index.vue diff --git a/src/store/modules/ems.js b/src/store/modules/ems.js index 00678be..a72f0fa 100644 --- a/src/store/modules/ems.js +++ b/src/store/modules/ems.js @@ -18,6 +18,8 @@ const ems = { strategyStatusOptions:{'0':'未启用', '1':'已运行', '2':'已暂停', '3':'禁用', '4':'删除'},//策略状态 chargeStatusOptions:{'1':'充电','2':'待机'},//冲放状态 deviceCategoryOptions:{'PCS':'PCS','STACK':'电池堆','CLUSTER':'电池簇','COOLING':'液冷','BATTERY':'单体电池','AMMETER':'电表'},//设备类别 + comparisonOperatorOptions:{'>':'>','<':'<','=':'=','>=':'>=','<=':'<='}, + relationWithPoint:{'||':'||','&&':'&&'} }, mutations: { SET_ZD_LIST(state, list) { diff --git a/src/views/ems/site/sbbh/AddDevice.vue b/src/views/ems/site/sbbh/AddDevice.vue new file mode 100644 index 0000000..9e5e1ea --- /dev/null +++ b/src/views/ems/site/sbbh/AddDevice.vue @@ -0,0 +1,584 @@ + + + diff --git a/src/views/ems/site/sbbh/index.vue b/src/views/ems/site/sbbh/index.vue new file mode 100644 index 0000000..dbf428f --- /dev/null +++ b/src/views/ems/site/sbbh/index.vue @@ -0,0 +1,225 @@ + + + + + From 567ddf85a51abe39c49b36ec8100da300ecd02c3 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, 28 Oct 2025 18:15:10 +0800 Subject: [PATCH 38/40] =?UTF-8?q?=E8=AE=BE=E5=A4=87=E4=BF=9D=E6=8A=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/ems/site.js | 9 ++ src/views/ems/site/sbbh/AddDevice.vue | 168 ++++++++++++++++++-------- 2 files changed, 129 insertions(+), 48 deletions(-) diff --git a/src/api/ems/site.js b/src/api/ems/site.js index a3e2375..25f69b9 100644 --- a/src/api/ems/site.js +++ b/src/api/ems/site.js @@ -75,4 +75,13 @@ export function getDevicePointList({siteId,deviceId,deviceCategory,parentId,page url: `/ems/siteConfig/getDevicePointList?siteId=${siteId}&deviceId=${deviceId}&pageNum=${pageNum}&pageSize=${pageSize}&deviceCategory=${deviceCategory}&dataPointName=${dataPointName}&parentId=${parentId}&dataPoint=${dataPoint}&lower=${lower}&upper=${upper}&pageNum=${pageNum}&sortMethod=${sortMethod}&sortData=${sortData}`, method: 'get', }) +} + + +//获取设备类型下面的所有设备列表 +export function getDeviceListBySiteAndCategory({siteId, deviceCategory}) { + return request({ + url: `/ems/siteConfig/getDeviceListBySiteAndCategory?siteId=${siteId}&deviceCategory=${deviceCategory}`, + method: 'get', + }) } \ No newline at end of file diff --git a/src/views/ems/site/sbbh/AddDevice.vue b/src/views/ems/site/sbbh/AddDevice.vue index 9e5e1ea..f9bf21d 100644 --- a/src/views/ems/site/sbbh/AddDevice.vue +++ b/src/views/ems/site/sbbh/AddDevice.vue @@ -40,6 +40,17 @@ >
+ + + +
- - - +
- - - +
(item.point = "")); - this.protectionPlan.forEach((item) => (item.point = "")); + // 获取设备类别-不区分站点 + getDeviceCategoryList() { + this.loading += 1; + getAllDeviceCategory() + .then((response) => { + const data = (response?.data || []).filter(item => ['PCS','STACK'].includes(item.code)); + this.childOptions=[] + data.forEach((item) => { + this.childOptions.push({ + value: item.code, + label: item.name, + children:[] + }) + }) + console.log('获取设备类型',data,this.childOptions) + }) + .finally(() => { + this.loading -= 1; + }); }, + //获取设备列表-区分站点 + getDeviceList(deviceCategory){ + this.$nextTick(()=>{ + getDeviceListBySiteAndCategory({siteId:this.formData.siteId,deviceCategory}).then((response) => { + const data = response?.data || [] + console.log('设置设备列表',this.childOptions) + this.childOptions.find(item=>item.value === deviceCategory).children=data.map(item => { + return { + label: item.deviceName, + value: item.id, + } + }) + }) + }) + }, + //更新站点下面的设备列表 + updateSiteDeviceList(){ + this.childOptions.forEach(item => { + item.children = [] + }) + this.getDeviceList('PCS') + this.getDeviceList('STACK') + }, + //选中设备类型、设备 + handleChange([deviceCategory,deviceId],type,index){ + this[type][index].deviceId = deviceId; + this[type][index].deviceCategory = deviceCategory; + this[type][index].categoryName = this.childOptions.find(i=>i.value === deviceCategory).label; + console.log('设置选中设备类型、设备',this[type][index]) + }, + //获取站点列表 getZdList() { this.loading += 1; @@ -451,17 +508,29 @@ export default { this.loading -= 1; }); }, - // 获取设备类别 - getDeviceCategoryList() { - this.loading += 1; - getAllDeviceCategory() - .then((response) => { - this.deviceCategoryList = response?.data || []; - }) - .finally(() => { - this.loading -= 1; - }); + // 切换站点 + // 重新获取设备列表 + // 清空选中的设备、点位信息 + changeType() { + //获取当前站点下的pcs和bms + this.updateSiteDeviceList() + this.protectionSettings.forEach((item) => { + item.point = "" + item.pointName = "" + item.deviceId='' + item.categoryName='' + item.deviceCategory='' + }); + this.protectionPlan.forEach((item) => { + item.point = "" + item.pointName = "" + item.deviceId='' + item.categoryName='' + item.deviceCategory='' + }); }, + + saveDialog() { this.$refs.addTempForm.validate((valid) => { if (!valid) return; @@ -535,6 +604,9 @@ export default { faultDelaySeconds: "", //故障延时 releaseDelaySeconds: "", //释放延时 }; + for(let key in this.formData) { + this.formData[key] = key === 'isAlert' ? 0 : key === 'faultLevel' ? 1 : '' + } this.$refs.addTempForm.resetFields(); this.dialogTableVisible = false; }, From 1280b7196cdf740b4a89a6e40126f884ffad42e9 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, 31 Oct 2025 21:34:52 +0800 Subject: [PATCH 39/40] =?UTF-8?q?=E8=AE=BE=E5=A4=87=E4=BF=9D=E6=8A=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/ems/site.js | 43 +++ src/views/ems/site/sbbh/AddDevice.vue | 426 ++++++++++++++++---------- src/views/ems/site/sbbh/index.vue | 114 ++++--- 3 files changed, 385 insertions(+), 198 deletions(-) diff --git a/src/api/ems/site.js b/src/api/ems/site.js index 25f69b9..930ef83 100644 --- a/src/api/ems/site.js +++ b/src/api/ems/site.js @@ -84,4 +84,47 @@ export function getDeviceListBySiteAndCategory({siteId, deviceCategory}) { url: `/ems/siteConfig/getDeviceListBySiteAndCategory?siteId=${siteId}&deviceCategory=${deviceCategory}`, method: 'get', }) +} + +//新增设备保护 +export function addProtectPlan(data) { + return request({ + url: `/ems/protectPlan`, + method: 'post', + data + }) +} + +//修改设备保护 +export function updateProtectPlan(data) { + return request({ + url: `/ems/protectPlan`, + method: 'put', + data + }) +} + +//删除设备保护 +export function deleteProtectPlan(id) { + return request({ + url: `/ems/protectPlan/${id}`, + method: 'delete', + }) +} + +//设备保护详情 +export function getProtectPlan(id) { + return request({ + url: `/ems/protectPlan/${id}`, + method: 'get', + }) +} + +//设备保护详情列表 +//http://localhost:8089/ems/protectPlan/list?pageSize=10&pageNum=1&faultName=总压&siteId=021_DDS_01 +export function protectPlanList({siteId, faultName,pageSize,pageNum}) { + return request({ + url: `/ems/protectPlan/list?siteId=${siteId}&faultName=${faultName}&pageSize=${pageSize}&pageNum=${pageNum}`, + method: 'get', + }) } \ No newline at end of file diff --git a/src/views/ems/site/sbbh/AddDevice.vue b/src/views/ems/site/sbbh/AddDevice.vue index f9bf21d..ff48ccc 100644 --- a/src/views/ems/site/sbbh/AddDevice.vue +++ b/src/views/ems/site/sbbh/AddDevice.vue @@ -59,7 +59,7 @@ > - + 等级1 等级2 等级3 @@ -69,13 +69,14 @@
保护前提:
- 延时: - + + +
@@ -109,8 +110,8 @@
@@ -159,7 +160,7 @@
- +
@@ -185,13 +186,14 @@
保护方案:
- 延时: - + + +
@@ -246,7 +248,7 @@
@@ -269,24 +271,13 @@ import { mapState } from "vuex"; import { getAllSites } from "@/api/ems/zddt"; import { validText } from "@/utils/validate"; import { - getDeviceDetailInfo, - updateDevice, - addDevice, - getParentDeviceId, + updateProtectPlan, + addProtectPlan, + getProtectPlan, getDeviceListBySiteAndCategory } from "@/api/ems/site"; import { getAllDeviceCategory, pointFuzzyQuery } from "@/api/ems/search"; export default { - props: { - mode: { - type: String, - default: "add", - }, - id: { - type: String | Number, - required: false, - }, - }, data() { const validateText = (rule, value, callback) => { if (value !== "" && !validText(value)) { @@ -295,14 +286,8 @@ export default { callback(); } }; - const validateDeviceId = (rule, value, callback) => { - if (value !== "" && !/^[a-zA-Z0-9]+$/.test(value)) { - callback(new Error("只能输入英文和数字!")); - } else { - callback(); - } - }; return { + mode:'', loading: 0, childOptions:[], protectionSettings: [], @@ -337,6 +322,14 @@ export default { { required: true, message: "请输入设备描述", trigger: "blur" }, { validator: validateText, trigger: "blur" }, ], + faultDelaySeconds: [ + { required: true, message: "请输入保护前提延时", trigger: "blur" }, + { validator: validateText, trigger: "blur" }, + ], + releaseDelaySeconds: [ + { required: true, message: "请输入保护方案延时", trigger: "blur" }, + { validator: validateText, trigger: "blur" }, + ], }, }; }, @@ -350,73 +343,81 @@ export default { relationWithPoint: (state) => state?.ems?.relationWithPoint || {}, }), }, - watch: { - dialogTableVisible: { - handler(newVal) { - //打开弹窗 - if (newVal) { - this.getDeviceCategoryList(); - this.getZdList(); - } - }, - immediate: true, - }, - id: { - handler(newVal) { - if ((newVal || newVal === 0) && this.mode !== "add") { - this.loading += 1; - // getDeviceDetailInfo(newVal) - // .then((response) => { - // this.formData = JSON.parse(JSON.stringify(response?.data || {})); - // if ( - // this.dccDeviceCategoryList.includes( - // this.formData.deviceCategory - // ) - // ) { - // this.getParentDeviceList(true); - // } - // }) - // .finally(() => { - // this.loading -= 1; - // }); - } - }, - immediate: true, - }, - }, methods: { + open(id,siteId){ + this.dialogTableVisible=true + this.getZdList(); + this.getDeviceCategoryList().then(()=>{ + if(id && siteId) { + this.getDeviceList('PCS',siteId) + this.getDeviceList('STACK',siteId) + } + }); + if(id){ + this.formData.id = id + this.mode = 'edit' + getProtectPlan(id).then(response => { + const data = response?.data || {} + this.formData = { + id, + siteId: data?.siteId || '', //站点ID + faultName: data?.faultName || '', //设备保护名称 + isAlert: data?.isAlert || 0, //是否告警 + faultLevel: data?.faultLevel || 1, //告警等级 + faultDelaySeconds: data?.faultDelaySeconds || "", //故障延时 + releaseDelaySeconds: data?.releaseDelaySeconds ||"", //释放延时 + description: data?.description ||'',//方案描述 + } + const plan =(JSON.parse(data?.protectionPlan || [])).map(item=>{ + return Object.assign({},item,{ + deviceId:[item.deviceCategory || '',item.deviceId || ''], + }) + }) + const settings =(JSON.parse(data?.protectionSettings || [])).map(item=>{ + return Object.assign({},item,{ + deviceId:[item.deviceCategory || '',item.deviceId || ''], + }) + }) + this.$nextTick(()=>{ + this.protectionPlan.splice(0,0,...plan) + this.protectionSettings.splice(0,0,...settings) + }) + console.log('获取设备保护详情并初始化',this.formData,this.protectionPlan,this.protectionSettings) + }) + }else{ + this.mode = 'add' + } + }, // 新增设备保护前提、设备保护方案 addRow(type) { - if (type === "protectionSettings") { - this.protectionSettings.push({ - deviceId:'',//设备ID - deviceCategory: "",//设备类型 英文 - categoryName:'',//设备类型名称 中文 - point: "",//点位 英文 - pointName:"",//点位 中文 - faultValue: "",//故障值 - releaseValue: "",//释放值 - faultOperator: "",//故障值比较关系 - releaseOperator: "",//释放值比较关系 - relationNext: "",//与下一个点位的关系 - }); - } else { - this.protectionPlan.push({ - deviceId:"", - deviceCategory: "",//设备类型 英文 - categoryName:'',//设备类型名称 中文 - point: "", - pointName:"", - value: "",//设置值 - }); + const item = type === 'protectionSettings' ? { + deviceId:[],//设备ID + deviceCategory: "",//设备类型 英文 + categoryName:'',//设备类型名称 中文 + point: "",//点位 英文 + pointName:"",//点位 中文 + faultValue: "",//故障值 + releaseValue: "",//释放值 + faultOperator: "",//故障值比较关系 + releaseOperator: "",//释放值比较关系 + relationNext: "",//与下一个点位的关系 + } : { + deviceId:[], + deviceCategory: "",//设备类型 英文 + categoryName:'',//设备类型名称 中文 + point: "", + pointName:"", + value: "",//设置值 } + // this.$set(this[type], this[type].length, item); + this[type].splice(this[type].length,0,item) + console.log('新增设备保护前提、方案',type,this[type]) }, // 删除设备保护前提、设备保护方案 deleteRow(index, type) { this[type].splice(index, 1); }, - // 设备保护前提、设备保护方案点位选择 querySearchAsync(query, cb, index, type) { console.log("查询数据", query, index); @@ -442,24 +443,36 @@ export default { }, // 点位选择 handleSelect(data, index, type) { - this[type][index].point = data.value; - this[type][index].pointName = data.value; + console.log('选择点位',data,index,type) + // this.$set(this[type], index, Object.assign({},this[type][index],{ + // point:data.value, + // pointName:data.value, + // })); + let line = Object.assign({},this[type][index],{ + point:data.value, + pointName:data.value, + }) + this[type].splice(index,1,line); + console.log('选择点位配置完成',this[type][index]) }, // 获取设备类别-不区分站点 getDeviceCategoryList() { this.loading += 1; - getAllDeviceCategory() + return getAllDeviceCategory() .then((response) => { const data = (response?.data || []).filter(item => ['PCS','STACK'].includes(item.code)); - this.childOptions=[] + // this.childOptions=[] + this.$set(this,'childOptions',[]) + let arr =[] data.forEach((item) => { - this.childOptions.push({ + arr.push({ value: item.code, label: item.name, children:[] }) }) + this.childOptions.splice(0,0,...arr) console.log('获取设备类型',data,this.childOptions) }) .finally(() => { @@ -467,34 +480,48 @@ export default { }); }, //获取设备列表-区分站点 - getDeviceList(deviceCategory){ + getDeviceList(deviceCategory,siteId){ this.$nextTick(()=>{ - getDeviceListBySiteAndCategory({siteId:this.formData.siteId,deviceCategory}).then((response) => { - const data = response?.data || [] - console.log('设置设备列表',this.childOptions) - this.childOptions.find(item=>item.value === deviceCategory).children=data.map(item => { + getDeviceListBySiteAndCategory({siteId:siteId || this.formData.siteId,deviceCategory}).then((response) => { + const data = (response?.data || []).map(item => { return { label: item.deviceName, value: item.id, } }) + const index = this.childOptions.findIndex(item=>item.value === deviceCategory) + if(index>-1){ + const length = this.childOptions[index].children.length + this.childOptions[index].children.splice(0,length,...data) + } }) }) }, //更新站点下面的设备列表 updateSiteDeviceList(){ this.childOptions.forEach(item => { - item.children = [] + const length = item.children.length + item.children.splice(0,length) }) this.getDeviceList('PCS') this.getDeviceList('STACK') }, //选中设备类型、设备 - handleChange([deviceCategory,deviceId],type,index){ - this[type][index].deviceId = deviceId; - this[type][index].deviceCategory = deviceCategory; - this[type][index].categoryName = this.childOptions.find(i=>i.value === deviceCategory).label; - console.log('设置选中设备类型、设备',this[type][index]) + handleChange(data,type,index){ + const deviceCategory = data[0],deviceId=data[1] + console.log('设置选中设备类型、设备',deviceCategory,deviceId,type,index) + const item = Object.assign({},this[type][index],{ + deviceId:data, + deviceCategory, + categoryName : this.childOptions.find(i=>i.value === deviceCategory).label, + pointName:'', + point:'' + }) + this.$nextTick(()=>{ + // this.$set(this[type], index, item); + this[type].splice(index,1,item); + }) + console.log('设置选中设备类型、设备配置完成',this[type][index]) }, //获取站点列表 @@ -514,27 +541,64 @@ export default { changeType() { //获取当前站点下的pcs和bms this.updateSiteDeviceList() - this.protectionSettings.forEach((item) => { - item.point = "" - item.pointName = "" - item.deviceId='' - item.categoryName='' - item.deviceCategory='' - }); - this.protectionPlan.forEach((item) => { - item.point = "" - item.pointName = "" - item.deviceId='' - item.categoryName='' - item.deviceCategory='' - }); + if(this.protectionSettings.length>0){ + const list =this.protectionSettings + list.forEach((item) => { + item.point = "" + item.pointName = "" + item.deviceId=[] + item.categoryName='' + item.deviceCategory='' + }); + // this.$set(this,'protectionSettings',list) + this.$nextTick(()=>{ + this.protectionSettings.splice(0,this.protectionSettings.length,...list) + }) + } + if(this.protectionPlan.length>0){ + const list =this.protectionPlan + list.forEach((item) => { + item.point = "" + item.pointName = "" + item.deviceId=[] + item.categoryName='' + item.deviceCategory='' + }); + // this.$set(this,'protectionPlan',list) + this.$nextTick(()=>{ + this.protectionPlan.splice(0,this.protectionPlan.length,...list) + }) + } }, saveDialog() { + function getToastMsg(name,type,index){ + return { + protectionSettings:{ + deviceId:`请选择保护前提第${index}行的设备`,//设备ID + deviceCategory: `请选择保护前提第${index}行的设备类型`,//设备类型 英文 + categoryName:`请选择保护前提第${index}行的设备类型`,//设备类型名称 中文 + point: `请选择保护前提第${index}行的点位`,//点位 英文 + pointName:`请选择保护前提第${index}行的点位`,//点位 中文 + faultValue: `请输入保护前提第${index}行的故障值`,//故障值 + releaseValue: `请输入保护前提第${index}行的释放值`,//释放值 + faultOperator: `请选择保护前提第${index}行的故障值比较关系`,//故障值比较关系 + releaseOperator: `请选择保护前提第${index}行的释放值比较关系`,//释放值比较关系 + relationNext: `请选择保护前提第${index}行与下一个点位的关系`,//与下一个点位的关系 + }, + protectionPlan :{ + deviceId:`请选择保护方案第${index}行的设备`, + deviceCategory: `请选择保护方案第${index}行的设备类型`,//设备类型 英文 + categoryName:`请选择保护方案第${index}行的设备类型`,//设备类型名称 中文 + point: `请选择保护方案第${index}行的点位`, + pointName:`请选择保护方案第${index}行的点位`, + value: `请输入保护方案第${index}行的故障值`,//设置值 + } + }[type][name] + } this.$refs.addTempForm.validate((valid) => { if (!valid) return; - this.loading += 1; const { id = "", //设备唯一标识 siteId = "", //站点ID @@ -543,18 +607,79 @@ export default { faultLevel = 1, //告警等级 faultDelaySeconds = "", //故障延时 releaseDelaySeconds = "", //释放延时 + description="",//方案描述 } = this.formData; - if (this.mode === "add") { - addDevice({ - siteId, - faultName, - isAlert, - faultLevel, - faultDelaySeconds, - releaseDelaySeconds, - protectionSettings, - protectionPlan, + const {protectionSettings,protectionPlan} = this + let protectionSettingsValidateStatus= true , protectionPlanValidateStatus= true + for(let i = 0;i{ + return Object.assign({},item,{ + deviceId:item.deviceId[1], }) + }) + const plan = protectionPlan.map(item=>{ + return Object.assign({},item,{ + deviceId:item.deviceId[1], + }) + }) + this.loading += 1; + const params= { + siteId, + faultName, + isAlert, + faultLevel, + faultDelaySeconds, + releaseDelaySeconds, + description, + protectionSettings:JSON.stringify(settings), + protectionPlan:JSON.stringify(plan), + } + if (this.mode === "add") { + addProtectPlan(params) .then((response) => { if (response.code === 200) { //新增成功 @@ -567,17 +692,8 @@ export default { this.loading -= 1; }); } else { - updateDevice({ - id, - siteId, - faultName, - isAlert, - faultLevel, - faultDelaySeconds, - releaseDelaySeconds, - protectionSettings, - protectionPlan, - }) + params.id = id + updateProtectPlan(params) .then((response) => { if (response.code === 200) { //新增成功 @@ -595,19 +711,13 @@ export default { closeDialog() { this.$emit("clear"); // 清空所有数据 - this.formData = { - id: "", //设备唯一标识 - siteId: "", //站点ID - faultName: "", //设备保护名称 - isAlert: 0, //是否告警 - faultLevel: 1, //告警等级 - faultDelaySeconds: "", //故障延时 - releaseDelaySeconds: "", //释放延时 - }; for(let key in this.formData) { this.formData[key] = key === 'isAlert' ? 0 : key === 'faultLevel' ? 1 : '' } this.$refs.addTempForm.resetFields(); + this.$set(this,'protectionSettings',[]) + this.$set(this,'protectionPlan',[]) + this.$set(this,'childOptions',[]) this.dialogTableVisible = false; }, }, diff --git a/src/views/ems/site/sbbh/index.vue b/src/views/ems/site/sbbh/index.vue index dbf428f..1ed331c 100644 --- a/src/views/ems/site/sbbh/index.vue +++ b/src/views/ems/site/sbbh/index.vue @@ -7,11 +7,10 @@ + + + - - + 搜索 + 重置 - - - - + + + + + + + + + + + + + + + + + + + + +