Merge remote-tracking branch 'origin/master'

master
魔神煜修罗皇 2 years ago
commit e9faa6d8ff
  1. 4219
      psdc-ui/package-lock.json
  2. 6
      psdc-ui/src/api/analyse/nhdb/nhdb.js
  3. 375
      psdc-ui/src/views/analyse/nhdb/index.vue
  4. 65
      psdc-ui/src/views/control/manual/index.vue

File diff suppressed because it is too large Load Diff

@ -0,0 +1,6 @@
import request from '@/utils/request'
/** 获取设备*/
export function getCelueList() {
return request.get('/analyse/nhdb/logs')
}

@ -5,13 +5,37 @@
<template #header>
<div class="card-header">
<img :src="imgSrc" alt="">
<span>{{item.sceneName}}</span>
<span>{{item.strategyName}}</span>
</div>
</template>
<div class="text item">
<el-form :inline="true" :model="item.data" label-width="110px">
<el-form-item v-for="items in item.data" :key="items.key" :label="items.label">
<el-input v-model="items.startTime" readonly/>
<el-form :inline="true" label-width="140px">
<el-form-item label="开始执行时间:">
<el-input v-model="item.startTime" readonly/>
</el-form-item>
<el-form-item label="结束执行时间:">
<el-input v-model="item.endTime" readonly/>
</el-form-item>
<el-form-item label="执行前室内温度:">
<el-input v-model="item.inFrontAvgtemp" readonly/>
</el-form-item>
<el-form-item label="执行后室内温度:">
<el-input v-model="item.inAfterAvgtemp" readonly/>
</el-form-item>
<el-form-item label="执行前室外温度:">
<el-input v-model="item.outFrontAvgtemp" readonly/>
</el-form-item>
<el-form-item label="执行后室外温度:">
<el-input v-model="item.outAfterAvgtemp" readonly/>
</el-form-item>
<el-form-item label="执行时长:">
<el-input v-model="item.runHours" readonly/>
</el-form-item>
<el-form-item label="单位时间用电:">
<el-input v-model="item.oneUseEnergy" readonly/>
</el-form-item>
<el-form-item label="总用电量:">
<el-input v-model="item.sceneUseEnergy" readonly/>
</el-form-item>
</el-form>
<!-- <div class="echart"></div>-->
@ -22,170 +46,190 @@
</template>
<script name="Index" setup>
import {ref,reactive} from 'vue'
import {getCelueList} from '@/api/analyse/nhdb/nhdb'
import {ref,reactive,onMounted} from 'vue'
const imgSrc = ref('../src/assets/images/策略icon.png')
const data = reactive({
celueInfoList:[
{
sceneName:'电磁锅炉供暖策略',
data:[
{
key: 1,
label:'开始执行时间',
startTime:'2023-06-08 15:00:00'
},
{
key: 2,
label:'结束执行时间',
startTime:'2023-06-08 18:00:00'
},
{
key: 3,
label:'执行前室内温度',
startTime:'20℃'
},
{
key: 4,
label:'执行前室外温度',
startTime:'14℃'
},
{
key: 5,
label:'执行后室内温度',
startTime:'29℃'
},
{
key: 6,
label:'执行后室外温度',
startTime:'15℃'
},
{
key: 7,
label:'执行时长',
startTime:'3h'
},
{},
{
key: 8,
label:'单位时间用电',
startTime:'5kWh'
},
{},
{
key: 9,
label:'总用电量',
startTime:'16kWh'
}
]
},
{
sceneName:'空气源热泵供暖策略',
data:[
{
key: 1,
label:'开始执行时间',
startTime:'2023-06-05 11:00:00'
},
{
key: 2,
label:'结束执行时间',
startTime:'2023-06-05 13:00:00'
},
{
key: 3,
label:'执行前室内温度',
startTime:'22℃'
},
{
key: 4,
label:'执行前室外温度',
startTime:'15℃'
},
{
key: 5,
label:'执行后室内温度',
startTime:'30℃'
},
{
key: 6,
label:'执行后室外温度',
startTime:'15℃'
},
{
key: 7,
label:'执行时长',
startTime:'2h'
},
{},
{
key: 8,
label:'单位时间用电',
startTime:'6kWh'
},
{},
{
key: 9,
label:'总用电量',
startTime:'12kWh'
}
]
},
{
sceneName:'空气源热泵供暖策略',
data:[
{
key: 1,
label:'开始执行时间',
startTime:'2023-06-05 11:00:00'
},
{
key: 2,
label:'结束执行时间',
startTime:'2023-06-05 13:00:00'
},
{
key: 3,
label:'执行前室内温度',
startTime:'22℃'
},
{
key: 4,
label:'执行前室外温度',
startTime:'15℃'
},
{
key: 5,
label:'执行后室内温度',
startTime:'30℃'
},
{
key: 6,
label:'执行后室外温度',
startTime:'15℃'
},
{
key: 7,
label:'执行时长',
startTime:'2h'
},
{},
{
key: 8,
label:'单位时间用电',
startTime:'6kWh'
},
{},
{
key: 9,
label:'总用电量',
startTime:'12kWh'
}
]
},
// {
// sceneName:'',
// data:[
// {
// key: 1,
// label:'',
// startTime:'2023-06-08 15:00:00'
// },
// {
// key: 2,
// label:'',
// startTime:'2023-06-08 18:00:00'
// },
// {
// key: 3,
// label:'',
// startTime:'20'
// },
// {
// key: 4,
// label:'',
// startTime:'14'
// },
// {
// key: 5,
// label:'',
// startTime:'29'
// },
// {
// key: 6,
// label:'',
// startTime:'15'
// },
// {
// key: 7,
// label:'',
// startTime:'3h'
// },
// {},
// {
// key: 8,
// label:'',
// startTime:'5kWh'
// },
// {},
// {
// key: 9,
// label:'',
// startTime:'16kWh'
// }
// ]
// },
// {
// sceneName:'',
// data:[
// {
// key: 1,
// label:'',
// startTime:'2023-06-05 11:00:00'
// },
// {
// key: 2,
// label:'',
// startTime:'2023-06-05 13:00:00'
// },
// {
// key: 3,
// label:'',
// startTime:'22'
// },
// {
// key: 4,
// label:'',
// startTime:'15'
// },
// {
// key: 5,
// label:'',
// startTime:'30'
// },
// {
// key: 6,
// label:'',
// startTime:'15'
// },
// {
// key: 7,
// label:'',
// startTime:'2h'
// },
// {},
// {
// key: 8,
// label:'',
// startTime:'6kWh'
// },
// {},
// {
// key: 9,
// label:'',
// startTime:'12kWh'
// }
// ]
// },
// {
// sceneName:'',
// data:[
// {
// key: 1,
// label:'',
// startTime:'2023-06-05 11:00:00'
// },
// {
// key: 2,
// label:'',
// startTime:'2023-06-05 13:00:00'
// },
// {
// key: 3,
// label:'',
// startTime:'22'
// },
// {
// key: 4,
// label:'',
// startTime:'15'
// },
// {
// key: 5,
// label:'',
// startTime:'30'
// },
// {
// key: 6,
// label:'',
// startTime:'15'
// },
// {
// key: 7,
// label:'',
// startTime:'2h'
// },
// {},
// {
// key: 8,
// label:'',
// startTime:'6kWh'
// },
// {},
// {
// key: 9,
// label:'',
// startTime:'12kWh'
// }
// ]
// },
]
})
onMounted(()=>{
getCelueListFun()
})
function getCelueListFun(){
getCelueList().then((res)=>{
for(let i = 0;i < res.data.length;i++){
res.data[i].inFrontAvgtemp = res.data[i].inFrontAvgtemp + ' ℃'
res.data[i].inAfterAvgtemp = res.data[i].inAfterAvgtemp + ' ℃'
res.data[i].outFrontAvgtemp = res.data[i].outFrontAvgtemp + ' ℃'
res.data[i].outAfterAvgtemp = res.data[i].outAfterAvgtemp + ' ℃'
res.data[i].runHours = res.data[i].runHours + ' h'
res.data[i].oneUseEnergy = res.data[i].oneUseEnergy + ' kWh'
res.data[i].sceneUseEnergy = res.data[i].sceneUseEnergy + ' kWh'
}
data.celueInfoList = res.data
})
}
</script>
<style scoped lang="scss">
@ -198,11 +242,16 @@ const data = reactive({
overflow-y: auto;
}
.box-card {
width: 720px;
width: 830px;
color: #fff;
border: none;
margin-right: 20px;
margin-bottom: 20px;
&:nth-child(odd){
margin-right: 20px;
}
&:nth-child(even){
margin-right: 0px;
}
.card-header{
display: flex;
align-items: center;

@ -64,16 +64,16 @@
<el-drawer v-model="drawerIshow">
<template #header><h4>策略导入</h4></template>
<template #default>
<el-radio v-for="(item,index) in celueList" :key="index" class="celueBox" v-model="radio" :label="item.sceneName" size="large" @change="selectCeLue(item)">
<span style="font-weight: bold; display: inline-block; margin-bottom: 20px;">{{ item.sceneName }}</span>
<el-radio v-for="(item,index) in celueList" :key="index" class="celueBox" v-model="radio" :label="item.strategyName" size="large" @change="selectCeLue(item)">
<span style="font-weight: bold; display: inline-block; margin-bottom: 20px;">{{ item.strategyName }}</span>
<el-timeline>
<el-timeline-item v-for="(items,index) in item.flow" :key="index" placement="top"
:timestamp="items.timestamp"
<el-timeline-item v-for="(items,index) in item.scenesList" :key="index" placement="top"
:timestamp="items.title"
:hollow="items.hollow"
:icon="items.icon"
:type="items.type"
>
{{items.step}}
{{items.sceneName}}{{items.sceneRemark}}
</el-timeline-item>
</el-timeline>
@ -347,13 +347,15 @@ const celueList = ref([
])
function getStrategyListFun(){
getStrategyList().then((res)=>{
// celueList.value = res.data
console.log('```````',res)
celueList.value = res.data
})
}
//
const SenceControlArr = ref([])
// const SenceControlArr = ref([])
let celueItem;
function selectCeLue(item){
console.log(item)
celueItem = item
// //
// //1
@ -388,28 +390,27 @@ function selectCeLue(item){
//icontype
function clearLastCelue(){
celueList.value.forEach((celue) => {
celue.flow.forEach((flow) => {
flow.icon = ''
flow.type = ''
celue.scenesList.forEach((scenesList) => {
scenesList.icon = ''
scenesList.type = ''
})
})
celueItem.flow.forEach((flow) => {
flow.icon = flow.icon || ''
flow.type = flow.type || ''
celueItem.scenesList.forEach((scenesList) => {
scenesList.icon = scenesList.icon || ''
scenesList.type = scenesList.type || ''
})
console.log('qqqqqq',celueItem)
}
// const getIcon = (item) => { return item.icon || '' }
// const getType = (item) => { return item.type || '' }
//
function confirmClick() {
if(SenceControlArr.value.length != 0){
if(celueItem == undefined){
ElMessage.warning('请先选择策略')
}else{
ElMessageBox.confirm(`确定执行 ${radio.value} ?`).then(() => {
// drawerIshow.value = false;
console.log('执行的策略:',celueItem.flow)
// console.log('',celueItem.commandList)
// console.log('',celueItem.scenesList)
const loading = ElLoading.service({
lock: true,
@ -418,38 +419,38 @@ function confirmClick() {
})
setTimeout(() => {
loading.close()
}, celueItem.flow.length * 1000)
}, celueItem.scenesList.length * 1000)
getSenceControl(SenceControlArr.value).then((res)=>{
getSenceControl(celueItem.commandList).then((res)=>{
if(res.code == 200){
clearLastCelue()
//
function setFlowItem(i) {
if (i >= celueItem.flow.length) {
return; //
if (i >= celueItem.scenesList.length) {
return; //
}
celueItem.flow[i].type = 'success';
celueItem.flow[i].icon = 'Check';
celueItem.scenesList[i].type = 'success';
celueItem.scenesList[i].icon = 'Check';
setTimeout(function() {
setFlowItem(i + 1); //
}, 1000); // 1
setFlowItem(i + 1); //
}, 1000);
}
setFlowItem(0); //
setFlowItem(0); //
setTimeout(()=>{
ElMessage.success('导入成功')
},celueItem.flow.length * 1000)
},celueItem.scenesList.length * 1000)
getControlLogListFun()
}else{
for(let i = 0;i < celueItem.flow.length;i++) {
for(let i = 0;i < celueItem.scenesList.length;i++) {
setTimeout(() => {
celueItem.flow[i].type = 'warning'
celueItem.flow[i].icon = 'Close'
},celueItem.flow.length * 1000)
celueItem.scenesList[i].type = 'warning'
celueItem.scenesList[i].icon = 'Close'
},celueItem.scenesList.length * 1000)
}
setTimeout(()=>{
ElMessage.warning('导入失败')
},celueItem.flow.length * 1000)
},celueItem.scenesList.length * 1000)
}
})

Loading…
Cancel
Save