develop_cloud #1

Merged
dashixiong merged 234 commits from develop_cloud into main-cloud 2026-02-11 02:06:04 +00:00
97 changed files with 9363 additions and 30 deletions
Showing only changes of commit d203ca541a - Show all commits

View File

@ -7,6 +7,13 @@ export function getDzjkHomeView(siteId) {
method: 'get'
})
}
//站点首页 冲放曲线
export function getSevenChargeData({siteId,startDate,endDate}) {
return request({
url: `/ems/siteMap/getSevenChargeData?siteId=${siteId}&startDate=${startDate}&endDate=${endDate}`,
method: 'get'
})
}
//获取pcs、实时运行头部的设备信息
export function getRunningHeadInfo(siteId) {
@ -86,9 +93,9 @@ export function getAmmeterDataList(siteId) {
}
// 故障告警
export function getAlarmDetailList({siteId, deviceType, alarmLevel, alarmStartTime, alarmEndTime,pageSize,pageNum}) {
export function getAlarmDetailList({siteId, deviceId, alarmLevel, alarmStartTime, alarmEndTime,pageSize,pageNum}) {
return request({
url: `/ems/siteAlarm/getAlarmDetailList?siteId=${siteId}&deviceType=${deviceType}&alarmLevel=${alarmLevel}&alarmStartTime=${alarmStartTime}&alarmEndTime=${alarmEndTime}&pageSize=${pageSize}&pageNum=${pageNum}`,
url: `/ems/siteAlarm/getAlarmDetailList?siteId=${siteId}&deviceId=${deviceId}&alarmLevel=${alarmLevel}&alarmStartTime=${alarmStartTime}&alarmEndTime=${alarmEndTime}&pageSize=${pageSize}&pageNum=${pageNum}`,
method: 'get'
})
}

View File

@ -56,19 +56,20 @@ export default {
this.resetDate()
this.$emit('updateDate',this.dateRange)
},
//
//
search(){
this.$emit('updateDate',this.dateRange)
},
timeLine(type){
//baseTime,maxTime
let baseTime = new Date(this.dateRange[type === 'before' ? 0 : 1]).getTime(),maxTime = new Date(this.defaultDateRange[1]).getTime()
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]
this.dateRange = [start,end]
this.$emit('updateDate',this.dateRange)
},
}
@ -79,6 +80,9 @@ export default {
.time-range{
display: flex;
::v-deep {
.el-range-editor--medium .el-range__icon, .el-range-editor--medium .el-range__close-icon{
line-height: 22px;
}
.el-range-editor--medium.el-input__inner{
height: 30px;
}
@ -89,6 +93,6 @@ export default {
padding:3px 10px;
}
}
}
</style>
</style>

View File

@ -1,23 +1,5 @@
import Layout from "@/layout/index.vue";
//todo delete 删除动态路由页面的定义 接口会传递进来
// const ems = [
// {
// path: '',
// component: Layout,
// redirect: 'noRedirect',
// children: [
// {
// path: 'zddt',
// component: () => import('@/views/ems/zddt/index'),
// name: 'zddt',
// meta: { title: '站点地图', icon: 'guide' }
// }
// ]
// }
// ]
// export default ems
//单站监控
// todo 本地设置了 hidden:true,不会显示在侧边栏,需要在系统管理、菜单管理中手动添加菜单后才会展示在侧边栏
export const dzjk=[

View File

@ -1,7 +1,5 @@
import Vue from 'vue'
import Router from 'vue-router'
// todo delete
import ems from './ems'//EMS管理系统routers引用
import {dzjk} from '@/router/ems'
Vue.use(Router)
@ -92,7 +90,6 @@ export const constantRoutes = [
]
},
// EMS管理系统routers
// ...ems
...dzjk
]

View File

@ -40,7 +40,6 @@ export default {
this.$refs.tomePowerChart.changeSiteId()
})
},
//在编辑、删除模板后更新时间配置、echart的数据todo
updateTimeSetting(){
this.$refs.timeSetting.init()
this.$refs.tomePowerChart.init()

View File

@ -4,8 +4,8 @@
<!-- 搜索栏-->
<el-form :inline="true" class="select-container">
<el-form-item label="设备清单">
<el-select v-model="search.deviceType" clearable placeholder="请选择" :loading="loading" loading-text="正在加载数据">
<el-option :label="value" :value="key" v-for="(value,key) in $store.state.ems.deviceTypeOptions" :key="key+'deviceTypeOptions'"></el-option>
<el-select v-model="search.deviceId" clearable placeholder="请选择" :loading="loading" loading-text="正在加载数据">
<el-option :label="item.deviceName" :value="item.deviceId" v-for="(item,key) in deviceOptions" :key="key+'deviceIdOptions'"></el-option>
</el-select>
</el-form-item>
<el-form-item label="告警等级">
@ -114,6 +114,7 @@
<script>
import {getAlarmDetailList} from'@/api/ems/dzjk'
import {getDeviceList} from'@/api/ems/site'
import getQuerySiteId from "@/mixins/ems/getQuerySiteId";
import { formatDate } from '@/filters/ems'
export default {
@ -126,6 +127,7 @@ export default {
{name:'今日告警',id:'today'},
{name:'历史告警',id:'history'},
],
deviceOptions:[],//设备列表
pickerOptions:{
disabledDate(time) {
return time.getTime() > Date.now();
@ -134,7 +136,7 @@ export default {
defaultDateRange:[],//默认展示的时间
dateRange:[],//alarmStartTime,alarmEndTime
activeBtn:'today',
search:{deviceType:'',alarmLevel:''},
search:{deviceId:'',alarmLevel:''},
// 表格、分页
tableData:[],
pageSize:10,//分页栏当前每个数据总数
@ -186,7 +188,7 @@ export default {
},
// 重置
onReset(){
this.search={deviceType:'',alarmLevel:''}
this.search={deviceId:'',alarmLevel:''}
this.dateRange=[]
this.pageNum =1//每次搜索从1开始搜索
this.getData()
@ -213,7 +215,7 @@ export default {
// 获取数据
getData(){
this.loading=true
const {deviceType,alarmLevel} = this.search
const {deviceId,alarmLevel} = this.search
const {siteId,pageNum,pageSize,activeBtn} =this
const [alarmStartTime='',alarmEndTime='']=(this.dateRange || [])
let start='',end = '',now =new Date()
@ -230,12 +232,18 @@ export default {
// end.setDate(end.getDate() - 1);
}
}
getAlarmDetailList({deviceType,alarmLevel,siteId,pageSize,pageNum,alarmStartTime:formatDate(start),alarmEndTime:formatDate(end)}).then(response => {
getAlarmDetailList({deviceId,alarmLevel,siteId,pageSize,pageNum,alarmStartTime:formatDate(start),alarmEndTime:formatDate(end)}).then(response => {
this.tableData=response?.rows || [];
this.totalSize = response?.total || 0
}).finally(() => {this.loading=false})
},
getDeviceOptions(){
getDeviceList(this.siteId).then(response => {
this.deviceOptions = JSON.parse(JSON.stringify(response?.data || []))
})
},
init(){
this.getDeviceOptions()
this.onReset()
},
},

View File

@ -12,7 +12,7 @@
<script>
import * as echarts from 'echarts'
import resize from '@/mixins/ems/resize'
import DateRangeSelect from '@/components/Ems/DateRangeSelect.vue'
import DateRangeSelect from '@/components/Ems/DateRangeSelect/index.vue'
import {getPcsNameList, getPowerData} from '@/api/ems/dzjk'
export default {

View File

@ -12,8 +12,8 @@
<script>
import * as echarts from 'echarts'
import resize from '@/mixins/ems/resize'
import DateRangeSelect from '@/components/Ems/DateRangeSelect.vue'
// import {getPcsNameList, getPowerData} from '@/api/ems/dzjk'
import DateRangeSelect from '@/components/Ems/DateRangeSelect/index.vue'
import {getSevenChargeData} from '@/api/ems/dzjk'
export default {
mixins: [resize],
components: {DateRangeSelect},
@ -45,11 +45,10 @@ export default {
getWeekKData(){
this.showLoading()
const {siteId,timeRange}=this
//todo delete
this.hideLoading()
// todo({siteId,startDate:timeRange[0],endDate:timeRange[1]}).then(response => {
// this.setOption(response?.data || [])
// }).finally(()=>this.hideLoading())
getSevenChargeData({siteId,startDate:timeRange[0],endDate:timeRange[1]}).then(response => {
this.setOption(response?.data || [])
}).finally(()=>this.hideLoading())
},
init(siteId){
//初始化 清空数据
@ -57,7 +56,6 @@ export default {
this.timeRange=[]
this.deviceId=''
this.$refs.dateRangeSelect.init()
this.getWeekKData()
},
initChart() {
this.chart = echarts.init(document.querySelector('#weekChart'))

View File

@ -1,6 +1,6 @@
<template>
<div v-loading="loading">
<el-row style="background:#fff;" class="row-container">
<el-row style="background:#fff;" class="row-container" :gutter="15">
<el-col v-if="tableData.length>0" :xs="24" :sm="24" :lg="24">
<alarm-table :tableData="tableData"/>
</el-col>
@ -37,7 +37,7 @@
<span class="card-title">策略信息</span>
</div>
<div style="box-sizing: border-box; height: 250px;padding:20px 15px;" >
</div>
</el-card>
</el-col>
@ -48,7 +48,7 @@
<active-chart ref="activeChart"/>
</el-col>
</el-row>
</div>
</template>
@ -177,5 +177,5 @@ export default {
}
}
}
</style>
</style>

View File

@ -64,5 +64,10 @@ export default {
<style scoped lang="scss">
@media only screen and (min-width: 1200px) {
.single-square-box-container {
min-width: 16.6666666667%;
width: fit-content;
}
}
</style>

View File

@ -62,7 +62,7 @@
</template>
</el-table-column>
<el-table-column
prop="maxVoltage"
prop="maxCellVoltageId"
label="电池号码">
</el-table-column>
<el-table-column
@ -73,7 +73,7 @@
</template>
</el-table-column>
<el-table-column
prop="maxVoltage"
prop="minCellVoltageId"
label="电池号码">
</el-table-column>
<el-table-column
@ -83,7 +83,7 @@
</template>
</el-table-column>
<el-table-column
prop="maxVoltage"
prop="maxCellTempId"
label="电池号码">
</el-table-column>
<el-table-column
@ -94,7 +94,7 @@
</template>
</el-table-column>
<el-table-column
prop="maxVoltage"
prop="minCellTempId"
label="电池号码">
</el-table-column>

View File

@ -13,7 +13,7 @@
<div>数据更新时间{{pcsItem.dataUpdateTime}}</div>
</div>
<div class="pcs-btns">
<el-badge :value="0" class="item">
<el-badge :value="pcsItem.alarmNum || 0" class="item">
<i class="el-icon-message-solid" style="font-size: 26px;color: #fff;display: block;"></i>
</el-badge>
</div>
@ -92,11 +92,8 @@ export default {
if (action === 'confirm') {
instance.confirmButtonLoading = true;
setTimeout(() => {
// todo 调用接口如果关机成功 调用done方法 否则不关闭弹窗
done();
// setTimeout(() => {
instance.confirmButtonLoading = false;
// }, 300);
}, 3000);
} else {
done();
@ -123,11 +120,8 @@ export default {
if (action === 'confirm') {
instance.confirmButtonLoading = true;
setTimeout(() => {
// todo 调用接口如果关机成功 调用done方法 否则不关闭弹窗
done();
// setTimeout(() => {
instance.confirmButtonLoading = false;
// }, 300);
}, 3000);
} else {
done();

View File

@ -57,7 +57,7 @@ export default {
top: '10',
},
grid: {
left: "15%"
containLabel: true
},
tooltip: {
trigger: 'axis',

View File

@ -61,7 +61,7 @@ export default {
}
},
grid: {
left: "15%"
containLabel: true
},
textStyle:{
color:"#333333",

View File

@ -62,7 +62,7 @@ export default {
}
},
grid: {
left: "15%"
containLabel: true
},
textStyle:{
color:"#333333",

View File

@ -58,7 +58,7 @@ export default {
}
},
grid: {
left: "15%"
containLabel: true
},
textStyle:{
color:"#333333",

View File

@ -1,7 +1,6 @@
<template>
<div v-loading="loading">
<!-- todo 判断条件是否需要更新-->
<div class="yl-item-container" :class="{'yl-warn-item-container':item.workMode !== '0'}" v-for="(item,index) in list" :key="index+'ylLise'">
<div class="header">
<div class="header-title">{{item.systemName}}</div>

View File

@ -23,8 +23,8 @@
<!-- bmspcs 下级和上级在一列 -->
<div class="row-lists pcs-row-lists" v-if="showPcsAndBms">
<div class="item-square">
<div class="row-lists-title" v-if="showPcs">PCS</div>
<div class="row-lists-title" v-if="showBms">BMS</div>
<div class="row-lists-title" v-if="showPcs">PCS({{pcs.length}})</div>
<div class="row-lists-title" v-if="showBms">BMS({{bms.length}})</div>
</div>
<!-- 上下级块 class区分-->
<div class="item-square pcs-has-children-item-square" :class="{'no-bms-list':!showBms}" v-for="(item,index) in pcsHasChildren" :key="index+'pcsHasChildren'">
@ -92,7 +92,7 @@
<!-- 电表-->
<div class="row-lists" v-if="showDb">
<div class="item-square">
<div class="row-lists-title" style="width:100%;">电表</div>
<div class="row-lists-title" style="width:100%;">电表({{db.length}})</div>
</div>
<div class="item-square">
<!-- 左边的下级 下级有多个-->
@ -115,7 +115,7 @@
<!--冷却-->
<div class="row-lists" v-if="showLq">
<div class="item-square">
<div class="row-lists-title" style="width:100%;">冷却</div>
<div class="row-lists-title" style="width:100%;">冷却({{lq.length}})</div>
</div>
<div class="item-square">
<div class="item-lists">

View File

@ -33,13 +33,11 @@
<el-option :label="item" :value="item" v-for="(item,index) in deviceCategoryList" :key="index+'deviceCategoryList'"></el-option>
</el-select>
</el-form-item>
<!-- todo 只有电池簇展示-->
<el-form-item label="上级设备" prop="parentId" v-if="formData.deviceCategory === dccDeviceCategory">
<el-select v-model="formData.parentId" :placeholder="parentDeviceList.length === 0 && !formData.siteId ? '请先选择站点' : '请选择'" :style="{width: '100%'}">
<el-option :label="item.deviceName" :value="item.id" v-for="(item,index) in parentDeviceList" :key="index+'parentDeviceList'" ></el-option>
</el-select>
</el-form-item>
<!--todo tcp设备才展示ip地址端口号-->
<el-form-item label="TCP设备的ip地址" prop="ipAddress" v-if="formData.deviceType === 'TCP'">
<el-input v-model="formData.ipAddress" placeholder="请输入" clearable :style="{width: '100%'}">
</el-input>