develop_cloud #1

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

View File

@ -54,6 +54,7 @@ export default {
//重置 设置时间范围为初始化时间段
reset(){
this.resetDate()
this.$emit('reset')
this.$emit('updateDate',this.dateRange)
},
// 搜索

View File

@ -1,31 +1,32 @@
<template>
<div v-loading="loading">
<template v-for="(item,index) in list">
<el-card
v-for="(item,index) in list"
:key="index+'dbList'"
shadow="always"
class="sbjk-card-container"
class="sbjk-card-container list"
:class="{
'warning-card-container':item.ammeterLoadData.emsCommunicationStatus && item.ammeterLoadData.emsCommunicationStatus !== '0',
'running-card-container':item.ammeterLoadData.emsCommunicationStatus === '0'
'warning-card-container':item.emsCommunicationStatus && item.emsCommunicationStatus !== '0',
'running-card-container':item.emsCommunicationStatus === '0'
}"
>
<div slot="header">
<span class="large-title">{{ item.ammeterLoadData.deviceName }}</span>
<span class="large-title">{{ item.deviceName }}</span>
<div class="info">
<div>
{{
$store.state.ems.communicationStatusOptions[
item.ammeterLoadData.emsCommunicationStatus
item.emsCommunicationStatus
]
}}
</div>
<div>数据更新时间{{ item.ammeterLoadData.dataUpdateTime }}</div>
<div>数据更新时间{{ item.dataUpdateTime }}</div>
</div>
</div>
<el-table
class="common-table"
:data="item.ammeterLoadData.loadDataDetailInfo"
@cell-click="(row,col)=>{handlerCell(item.ammeterLoadData.deviceId,row,col)}"
:data="item.loadDataDetailInfo"
@cell-click="(row,col)=>{handlerCell(item,row,col)}"
stripe
style="width: 100%"
>
@ -37,42 +38,7 @@
<el-table-column prop="valleyKwh" label="/kWh"> </el-table-column>
</el-table>
</el-card>
<el-card
shadow="always"
class="sbjk-card-container"
style="margin-top: 20px"
:class="{
'warning-card-container':item.ammeterMeteData.emsCommunicationStatus && item.ammeterMeteData.emsCommunicationStatus !== '0',
'running-card-container':item.ammeterMeteData.emsCommunicationStatus === '0'
}"
>
<div slot="header">
<span class="large-title">{{ item.ammeterMeteData.deviceName }}</span>
<div class="info">
<div>
{{
$store.state.ems.communicationStatusOptions[
item.ammeterMeteData.emsCommunicationStatus
]
}}
</div>
<div>数据更新时间:{{ item.ammeterMeteData.dataUpdateTime }}</div>
</div>
</div>
<el-table
class="common-table"
:data="item.ammeterMeteData.meteDataDetailInfo"
@cell-click="(row,col)=>{handlerCellCN(item.ammeterMeteData.deviceId,row,col)}"
stripe
style="width: 100%"
>
<el-table-column prop="category" label="类别"> </el-table-column>
<el-table-column prop="activePower" label="有功功率"> </el-table-column>
<el-table-column prop="reactivePower" label="无功功率">
</el-table-column>
</el-table>
</el-card>
</template>
<el-empty v-show="list.length<=0" :image-size="200"></el-empty>
<point-chart ref="pointChart" :site-id="siteId"/>
</div>
</template>
@ -93,18 +59,11 @@ export default {
};
},
methods: {
handlerCell(id,row,column){
handlerCell({deviceId,deviceName},row,column){
if(column.label !== '类别'){
const arr = row.category.split('')
arr.splice(6,0,column.label[0])
this.showChart(arr.join(''),'电表',id)
}
},
handlerCellCN(id,row,column){
if(column.label !== '类别'){
const arr = row.category.split('')
arr.splice(2,arr.length-2,column.label)
this.showChart(arr.join(''),'电表',id)
this.showChart(arr.join(''),deviceName,deviceId)
}
},
showChart(pointName,categoryName,deviceId){
@ -115,9 +74,7 @@ export default {
this.loading = true;
getAmmeterDataList(this.siteId)
.then((response) => {
// todo check
const data = response?.data || []
this.list = Array.isArray(data) ? data : [data]
this.list = response?.data || []
})
.finally(() => {
this.loading = false;
@ -134,6 +91,9 @@ export default {
<style scoped lang="scss">
.sbjk-card-container {
&.list:not(:last-child){
margin-bottom: 25px;
}
::v-deep {
.el-table__row td{
&:not(:first-child){

View File

@ -1,18 +1,20 @@
<template>
<div v-loading="loading">
<div class="yl-item-container" :class="{'yl-warn-item-container':item.workMode !== '0','yl-normal-item-container':item.workMode === '0'}" v-for="(item,index) in list" :key="index+'ylLise'">
<div class="header">
<div class="header-title">{{item.systemName}}</div>
<div>工作模式<span class="header-values">{{$store.state.ems.workModeOptions[item.workMode]}}</span></div>
<div>当前温度<span class="header-values">{{item.currentTemperature}}&#8451;</span></div>
<el-card
v-for="(item,index) in list"
:key="index+'ylLise'"
class="sbjk-card-container running-card-container common-card-container-body-no-padding common-card-container-no-title-bg"
shadow="always">
<div slot="header">
<span class="large-title">{{index+1}}#{{item.deviceName}}</span>
</div>
<div class="content">
<el-row>
<el-col v-for="(tempDataItem,tempDataIndex) in tempData" :key="tempDataIndex+'ylTempData'" :span="8">{{tempDataItem.title}}{{item[tempDataItem.attr]}}&#8451;</el-col>
</el-row>
</div>
</div>
<el-row>
<el-col v-for="(tempDataItem,tempDataIndex) in tempData" :key="tempDataIndex+'ylTempData'" :span="8">
{{tempDataItem.title}}{{item[tempDataItem.attr]}}<span v-html="tempDataItem.unit"></span>
</el-col>
</el-row>
</el-card>
<el-empty v-show="list.length<=0" :image-size="200"></el-empty>
</div>
</template>
@ -30,13 +32,13 @@ export default {
loading:false,
list:[],
tempData:[
{title:'制热开启点',attr:'heatingStartPoint'},
{title:'制冷开启点',attr:'coolingStartPoint'},
{title:'高温告警点',attr:'highTempAlarmPoint'},
{title:'制热停止点',attr:'heatingStopPoint'},
{title:'制冷停止点',attr:'coolingStopPoint'},
{title:'低温告警点',attr:'lowTempAlarmPoint'},
{title:'供水温度',attr:'gsTemp',unit:'&#8451;'},
{title:'回水温度',attr:'hsTemp',unit:'&#8451;'},
{title:'供水压力',attr:'gsPressure',unit:'bar'},
{title:'回水压力',attr:'hsPressure',unit:'bar'},
{title:'冷源水温度',attr:'lysTemp',unit:'&#8451;'},
{title:'VB01 开度',attr:'vb01Kd',unit:'%'},
{title:'VB02 开度',attr:'vb02Kd',unit:'%'},
]
}
},
@ -59,48 +61,26 @@ export default {
</script>
<style scoped lang="scss">
.yl-item-container{
border-radius: 5px;
.sbjk-card-container{
&:not(:last-child){
margin-bottom: 25px;
}
.header{
line-height: 40px;
.el-row{
background-color: #ffffff;
border:1px solid #eeeeee;
font-size: 14px;
>div{
display: inline-block;
margin-right: 40px;
}
.header-title{
border-radius: 5px 0 5px 0;
color:#ffffff;
width: 120px;
height: 40px;
font-size: 16px;
line-height: 16px;
color: #333333;
.el-col{
padding:12px 0;
text-align: center;
position: relative;
}
.header-values{
font-weight: 500;
.el-col{
border-bottom: 1px solid #eeeeee;
}
}
.content{
padding:25px;
.el-row{
background-color: #ffffff;
border:1px solid #eeeeee;
line-height: 14px;
color: #333333;
font-size: 12px;
.el-col{
padding:10px 0;
text-align: center;
}
.el-col:nth-child(-n+3){
border-bottom: 1px solid #eeeeee;
}
.el-col:not(:nth-child(3n)){
border-right: 1px solid #eeeeee;
}
.el-col:not(:nth-child(3n)){
border-right: 1px solid #eeeeee;
}
}
}
@ -115,16 +95,4 @@ export default {
}
}
}
.yl-normal-item-container{
background-color: #EBF6F6;
.header{
.header-title{
background-color: #05AEA3;
}
.header-values{
color: #05AEA3;
}
}
}
</style>

View File

@ -3,7 +3,7 @@
<el-card shadow="always" class="common-card-container time-range-card" style="margin-top:20px">
<div slot="header" class="time-range-header">
<span class="card-title">功率曲线</span>
<date-range-select ref="dateRangeSelect" @updateDate="updateDate"/>
<date-range-select ref="dateRangeSelect" @reset="resetTime" @updateDate="updateDate"/>
</div>
<div class="card-main" v-loading="loading">
<div id="glqxEchart" style="height: 310px;"></div>
@ -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

View File

@ -13,7 +13,7 @@
width="800px"
>
<el-form :inline="true">
<el-form :inline="true" label-width="85px">
<el-form-item label="点位名称">
<el-input v-model="form.dataPointName" clearable placeholder="请输入点位名称" style="width: 150px"></el-input>
</el-form-item>