Merge remote-tracking branch 'origin/master'

master
魔神煜修罗皇 2 years ago
commit a9b1c120ed
  1. 135
      psdc-ui/src/views/analyse/nhdb/index.vue
  2. 11
      psdc-ui/src/views/bigview/index.vue
  3. 145
      psdc-ui/src/views/control/manual/index.vue
  4. 9
      psdc-ui/src/views/emonitor/db/index.vue
  5. 9
      psdc-ui/src/views/emonitor/drgl/index.vue
  6. 9
      psdc-ui/src/views/emonitor/frdl/index.vue
  7. 9
      psdc-ui/src/views/emonitor/kqyrb/index.vue
  8. 9
      psdc-ui/src/views/emonitor/xrgl/index.vue
  9. 10
      psdc-ui/src/views/system/device/index.vue

@ -1,20 +1,23 @@
<template> <template>
<div class="app-container home"> <div class="app-container home">
<el-card class="box-card" v-for="item in data.celueInfoList"> <div class="overflow">
<template #header> <el-card class="box-card" v-for="item in data.celueInfoList">
<div class="card-header"> <template #header>
<img :src="imgSrc" alt=""> <div class="card-header">
<span>{{item.sceneName}}</span> <img :src="imgSrc" alt="">
<span>{{item.sceneName}}</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-item>
</el-form>
<!-- <div class="echart"></div>-->
</div> </div>
</template> </el-card>
<div class="text item"> </div>
<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-item>
</el-form>
</div>
</el-card>
</div> </div>
</template> </template>
@ -39,34 +42,36 @@ const data = reactive({
}, },
{ {
key: 3, key: 3,
label:'执行时长', label:'执行前室内温度',
startTime:'3h' startTime:'20℃'
}, },
{ {
key: 4, key: 4,
label:'单位时间用电', label:'执行前室外温度',
startTime:'5kWh' startTime:'14℃'
}, },
{ {
key: 5, key: 5,
label:'执行室内温度', label:'执行室内温度',
startTime:'20℃' startTime:'29℃'
}, },
{ {
key: 6, key: 6,
label:'执行室外温度', label:'执行室外温度',
startTime:'14℃' startTime:'15℃'
}, },
{ {
key: 7, key: 7,
label:'执行后室内温度', label:'执行时长',
startTime:'29℃' startTime:'3h'
}, },
{},
{ {
key: 8, key: 8,
label:'执行后室外温度', label:'单位时间用电',
startTime:'15℃' startTime:'5kWh'
}, },
{},
{ {
key: 9, key: 9,
label:'总用电量', label:'总用电量',
@ -89,34 +94,36 @@ const data = reactive({
}, },
{ {
key: 3, key: 3,
label:'执行时长', label:'执行前室内温度',
startTime:'2h' startTime:'22℃'
}, },
{ {
key: 4, key: 4,
label:'单位时间用电', label:'执行前室外温度',
startTime:'6kWh' startTime:'15℃'
}, },
{ {
key: 5, key: 5,
label:'执行室内温度', label:'执行室内温度',
startTime:'22℃' startTime:'30℃'
}, },
{ {
key: 6, key: 6,
label:'执行室外温度', label:'执行室外温度',
startTime:'15℃' startTime:'15℃'
}, },
{ {
key: 7, key: 7,
label:'执行后室内温度', label:'执行时长',
startTime:'30℃' startTime:'2h'
}, },
{},
{ {
key: 8, key: 8,
label:'执行后室外温度', label:'单位时间用电',
startTime:'15℃' startTime:'6kWh'
}, },
{},
{ {
key: 9, key: 9,
label:'总用电量', label:'总用电量',
@ -125,52 +132,54 @@ const data = reactive({
] ]
}, },
{ {
sceneName:'电磁锅炉水蓄热策略', sceneName:'空气源热泵供暖策略',
data:[ data:[
{ {
key: 1, key: 1,
label:'开始执行时间', label:'开始执行时间',
startTime:'2023-06-05 08:00:00' startTime:'2023-06-05 11:00:00'
}, },
{ {
key: 2, key: 2,
label:'结束执行时间', label:'结束执行时间',
startTime:'2023-06-05 12:00:00' startTime:'2023-06-05 13:00:00'
}, },
{ {
key: 3, key: 3,
label:'执行时长', label:'执行前室内温度',
startTime:'4h' startTime:'22℃'
}, },
{ {
key: 4, key: 4,
label:'单位时间用电', label:'执行前室外温度',
startTime:'5kWh' startTime:'15℃'
}, },
{ {
key: 5, key: 5,
label:'执行室内温度', label:'执行室内温度',
startTime:'16℃' startTime:'30℃'
}, },
{ {
key: 6, key: 6,
label:'执行室外温度', label:'执行室外温度',
startTime:'13℃' startTime:'15℃'
}, },
{ {
key: 7, key: 7,
label:'执行后室内温度', label:'执行时长',
startTime:'26℃' startTime:'2h'
}, },
{},
{ {
key: 8, key: 8,
label:'执行后室外温度', label:'单位时间用电',
startTime:'16℃' startTime:'6kWh'
}, },
{},
{ {
key: 9, key: 9,
label:'总用电量', label:'总用电量',
startTime:'20kWh' startTime:'12kWh'
} }
] ]
}, },
@ -180,10 +189,13 @@ const data = reactive({
</script> </script>
<style scoped lang="scss"> <style scoped lang="scss">
.home{ .overflow{
display: flex; display: flex;
justify-content: flex-start; justify-content: flex-start;
flex-wrap: wrap; flex-wrap: wrap;
width: 100%;
max-height: 835px;
overflow-y: auto;
} }
.box-card { .box-card {
width: 720px; width: 720px;
@ -204,9 +216,15 @@ const data = reactive({
font-size: 14px; font-size: 14px;
} }
.item { .item {
margin-bottom: 18px; //margin-bottom: 18px;
} }
} }
.echart{
width: 50px;
height: 100px;
display: inline-flex;
vertical-align: middle;
}
::v-deep .el-card__header{ ::v-deep .el-card__header{
padding: 0px 0px 0px 10px !important; padding: 0px 0px 0px 10px !important;
background-color: #374590; background-color: #374590;
@ -227,5 +245,12 @@ const data = reactive({
::v-deep .el-form .el-form-item__label{ ::v-deep .el-form .el-form-item__label{
color: #d3d3d3 !important; color: #d3d3d3 !important;
} }
::v-deep .el-form-item--default{
margin-bottom: 0px;
}
::v-deep .el-card{
background-color: #2F3D8A;
height: 260px;
}
</style> </style>

@ -835,7 +835,16 @@ function dqglChartFun(){
symbol: "none", // symbol: "none", //
itemStyle: { //线 itemStyle: { //线
color: '#128dff', color: '#128dff',
} },
areaStyle: {
normal: {
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
{offset: 0, color: "#128dff"},
{offset: 0.5, color: "rgba(18,141,252,.2)"},
{offset: 1, color: "rgba(18,141,252,.0)"}
])
}
}, //线
} }
] ]
}; };

@ -67,7 +67,12 @@
<el-radio v-for="(item,index) in celueList" :key="index" class="celueBox" v-model="radio" :label="item.sceneName" size="large" @change="selectCeLue(item)"> <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> <span style="font-weight: bold; display: inline-block; margin-bottom: 20px;">{{ item.sceneName }}</span>
<el-timeline> <el-timeline>
<el-timeline-item v-for="(items,index) in item.flow" :key="index" :timestamp="items.timestamp" :hollow="items.hollow" :type="items.type" placement="top"> <el-timeline-item v-for="(items,index) in item.flow" :key="index" placement="top"
:timestamp="items.timestamp"
:hollow="items.hollow"
:icon="items.icon"
:type="items.type"
>
{{items.step}} {{items.step}}
</el-timeline-item> </el-timeline-item>
</el-timeline> </el-timeline>
@ -107,7 +112,7 @@
<script setup name="Index"> <script setup name="Index">
import { Download } from '@element-plus/icons-vue' //element import { Download } from '@element-plus/icons-vue' //element
import { ref,reactive,onMounted } from 'vue' import { ref,reactive,onMounted } from 'vue'
import { ElMessageBox,ElMessage } from 'element-plus' import { ElMessageBox,ElMessage, ElLoading} from 'element-plus'
import { getDevice,getControlLogList,getStrategyList,getStartAndStop,getSetTemperature,getSenceControl,getControlDeviceList } from '@/api/control/manual' import { getDevice,getControlLogList,getStrategyList,getStartAndStop,getSetTemperature,getSenceControl,getControlDeviceList } from '@/api/control/manual'
onMounted(()=>{ onMounted(()=>{
@ -213,20 +218,20 @@ const celueList = ref([
{ {
timestamp:'第一步', timestamp:'第一步',
step:'开启断路器,锅炉循环泵供电。', step:'开启断路器,锅炉循环泵供电。',
hollow: false,
type: '', type: '',
icon:'',
}, },
{ {
timestamp:'第二步', timestamp:'第二步',
step:'开启断路器,电磁锅炉供电,在控制界面可启停和调节锅炉出水温度。锅炉启动时会自动开启锅炉循环泵。', step:'开启断路器,电磁锅炉供电,在控制界面可启停和调节锅炉出水温度。锅炉启动时会自动开启锅炉循环泵。',
hollow: true,
type: '', type: '',
icon:''
}, },
{ {
timestamp:'第三步', timestamp:'第三步',
step:'当中间水箱温度达到实验要求时,开启断路器,启动热网循环泵。', step:'当中间水箱温度达到实验要求时,开启断路器,启动热网循环泵。',
hollow: false,
type: '', type: '',
icon:''
} }
] ]
}, },
@ -236,17 +241,20 @@ const celueList = ref([
{ {
timestamp:'第一步', timestamp:'第一步',
step:'开启空气源热泵循环泵断路器,空气源热泵循环泵供电。', step:'开启空气源热泵循环泵断路器,空气源热泵循环泵供电。',
hollow: false, type: '',
icon:''
}, },
{ {
timestamp:'第二步', timestamp:'第二步',
step:'开启空气源热泵断路器,空气源热泵供电,在控制界面可启停和调节空气源热泵出水温度。锅炉启动时会自动开启空气源热泵循环泵。', step:'开启空气源热泵断路器,空气源热泵供电,在控制界面可启停和调节空气源热泵出水温度。锅炉启动时会自动开启空气源热泵循环泵。',
hollow: true, type: '',
icon:''
}, },
{ {
timestamp:'第三步', timestamp:'第三步',
step:'当中间水箱温度达到实验要求时,开启热网循环泵断路器和风机盘管断路器断路器,启动热网循环泵和风机盘管,通过风机盘管控制界面可进行设置控制。', step:'当中间水箱温度达到实验要求时,开启热网循环泵断路器和风机盘管断路器断路器,启动热网循环泵和风机盘管,通过风机盘管控制界面可进行设置控制。',
hollow: false, type: '',
icon:''
} }
] ]
}, },
@ -256,22 +264,26 @@ const celueList = ref([
{ {
timestamp:'第一步', timestamp:'第一步',
step:'开启锅炉蓄热循环泵断路器,锅炉蓄热循环泵供电。', step:'开启锅炉蓄热循环泵断路器,锅炉蓄热循环泵供电。',
hollow: false, type: '',
icon:''
}, },
{ {
timestamp:'第二步', timestamp:'第二步',
step:'开启电磁锅炉电箱中的电磁锅炉断路器,电磁锅炉供电。', step:'开启电磁锅炉电箱中的电磁锅炉断路器,电磁锅炉供电。',
hollow: true, type: '',
icon:''
}, },
{ {
timestamp:'第三步', timestamp:'第三步',
step:'在控制界面进行锅炉启动和出水温度设置,锅炉启动会自动启动相应循环水泵。', step:'在控制界面进行锅炉启动和出水温度设置,锅炉启动会自动启动相应循环水泵。',
hollow: true, type: '',
icon:''
}, },
{ {
timestamp:'第四步', timestamp:'第四步',
step:'蓄热完成后关闭电磁锅炉及水泵。', step:'蓄热完成后关闭电磁锅炉及水泵。',
hollow: false, type: '',
icon:''
} }
] ]
}, },
@ -281,22 +293,26 @@ const celueList = ref([
{ {
timestamp:'第一步', timestamp:'第一步',
step:'开启空气源热泵蓄热循环泵断路器,蓄热循环水泵供电。', step:'开启空气源热泵蓄热循环泵断路器,蓄热循环水泵供电。',
hollow: false, type: '',
icon:''
}, },
{ {
timestamp:'第二步', timestamp:'第二步',
step:'开启空气源热泵电箱中的空气源热泵断路器,空气源热泵供电。', step:'开启空气源热泵电箱中的空气源热泵断路器,空气源热泵供电。',
hollow: true, type: '',
icon:''
}, },
{ {
timestamp:'第三步', timestamp:'第三步',
step:'在控制界面进行空气源热泵启动和出水温度设置,空气源启动会自动启动相应循环水泵。', step:'在控制界面进行空气源热泵启动和出水温度设置,空气源启动会自动启动相应循环水泵。',
hollow: true, type: '',
icon:''
}, },
{ {
timestamp:'第四步', timestamp:'第四步',
step:'蓄热完成后关闭空气源热泵及水泵。', step:'蓄热完成后关闭空气源热泵及水泵。',
hollow: false, type: '',
icon:''
} }
] ]
}, },
@ -306,7 +322,8 @@ const celueList = ref([
{ {
timestamp:'第一步', timestamp:'第一步',
step:'开启热网循环泵断路器,热网循环泵开启。', step:'开启热网循环泵断路器,热网循环泵开启。',
hollow: false, type: '',
icon:''
} }
] ]
}, },
@ -316,12 +333,14 @@ const celueList = ref([
{ {
timestamp:'第一步', timestamp:'第一步',
step:'开启发热电缆断路器,为发热电缆系统供电。', step:'开启发热电缆断路器,为发热电缆系统供电。',
hollow: false, type: '',
icon:''
}, },
{ {
timestamp:'第二步', timestamp:'第二步',
step:'调节控制界面,进行发热电缆启停和温度设定。', step:'调节控制界面,进行发热电缆启停和温度设定。',
hollow: false, type: '',
icon:''
} }
] ]
}, },
@ -333,12 +352,9 @@ function getStrategyListFun(){
} }
// //
const SenceControlArr = ref([]) const SenceControlArr = ref([])
let celueItem;
function selectCeLue(item){ function selectCeLue(item){
console.log(item) celueItem = item
// for(let i = 0;i < item.flow.length;i++){
// item.flow[i].type = 'primary'
// }
// // // //
// //1 // //1
// let dataArr = []; // let dataArr = [];
@ -368,17 +384,77 @@ function selectCeLue(item){
// // console.log(JSON.stringify(dataArr, null, 4)); // // console.log(JSON.stringify(dataArr, null, 4));
// SenceControlArr.value = JSON.stringify(dataArr, null, 4) // SenceControlArr.value = JSON.stringify(dataArr, null, 4)
} }
//icontype
function clearLastCelue(){
celueList.value.forEach((celue) => {
celue.flow.forEach((flow) => {
flow.icon = ''
flow.type = ''
})
})
celueItem.flow.forEach((flow) => {
flow.icon = flow.icon || ''
flow.type = flow.type || ''
})
console.log('qqqqqq',celueItem)
}
// const getIcon = (item) => { return item.icon || '' }
// const getType = (item) => { return item.type || '' }
// //
function confirmClick() { function confirmClick() {
ElMessageBox.confirm(`确定执行 ${radio.value} ?`).then(() => { if(SenceControlArr.value.length != 0){
drawerIshow.value = false; ElMessage.warning('请先选择策略')
getSenceControl(SenceControlArr.value).then((res)=>{ }else{
if(res.code == 200){ ElMessageBox.confirm(`确定执行 ${radio.value} ?`).then(() => {
ElMessage.success('策略导入成功') // drawerIshow.value = false;
getControlLogListFun() console.log('执行的策略:',celueItem.flow)
}
const loading = ElLoading.service({
lock: true,
text: '策略执行中,请稍等',
background: 'rgba(0, 0, 0, 0.7)',
})
setTimeout(() => {
loading.close()
}, celueItem.flow.length * 1000)
getSenceControl(SenceControlArr.value).then((res)=>{
if(res.code == 200){
clearLastCelue()
//
function setFlowItem(i) {
if (i >= celueItem.flow.length) {
return; //
}
celueItem.flow[i].type = 'success';
celueItem.flow[i].icon = 'Check';
setTimeout(function() {
setFlowItem(i + 1); //
}, 1000); // 1
}
setFlowItem(0); //
setTimeout(()=>{
ElMessage.success('导入成功')
},celueItem.flow.length * 1000)
getControlLogListFun()
}else{
for(let i = 0;i < celueItem.flow.length;i++) {
setTimeout(() => {
celueItem.flow[i].type = 'warning'
celueItem.flow[i].icon = 'Close'
},celueItem.flow.length * 1000)
}
setTimeout(()=>{
ElMessage.warning('导入失败')
},celueItem.flow.length * 1000)
}
})
}) })
}) }
} }
/** 控制设备启停*/ /** 控制设备启停*/
@ -641,6 +717,11 @@ function getSetTemperatureFun(item){
} }
::v-deep .el-radio{ ::v-deep .el-radio{
display: inline-block; display: inline-block;
transition: all .1s;
&:hover{
box-shadow: 1px 1px 10px rgba(0,0,0,.3);
transform: scale(1.005);
}
} }
::v-deep .el-drawer__body{ ::v-deep .el-drawer__body{
overflow-x: hidden; overflow-x: hidden;

@ -336,6 +336,15 @@ export default {
itemStyle:{ itemStyle:{
color:'#2F8EE0' color:'#2F8EE0'
}, },
areaStyle: {
normal: {
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
{offset: 0, color: "#128dff"},
{offset: 0.5, color: "rgba(18,141,252,.2)"},
{offset: 1, color: "rgba(18,141,252,.0)"}
])
}
}, //线
symbol: "none", // symbol: "none", //
markPoint: { markPoint: {
itemStyle: { itemStyle: {

@ -741,6 +741,15 @@ export default {
{type: "min", name: "最小值"} {type: "min", name: "最小值"}
] ]
}, },
areaStyle: {
normal: {
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
{offset: 0, color: "#128dff"},
{offset: 0.5, color: "rgba(18,141,252,.2)"},
{offset: 1, color: "rgba(18,141,252,.0)"}
])
}
}, //线
}, },
], ],
}); });

@ -726,6 +726,15 @@ export default {
{type: "min", name: "最小值"} {type: "min", name: "最小值"}
] ]
}, },
areaStyle: {
normal: {
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
{offset: 0, color: "#128dff"},
{offset: 0.5, color: "rgba(18,141,252,.2)"},
{offset: 1, color: "rgba(18,141,252,.0)"}
])
}
}, //线
}, },
], ],
}); });

@ -738,6 +738,15 @@ export default {
{type: "min", name: "最小值"} {type: "min", name: "最小值"}
] ]
}, },
areaStyle: {
normal: {
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
{offset: 0, color: "#128dff"},
{offset: 0.5, color: "rgba(18,141,252,.2)"},
{offset: 1, color: "rgba(18,141,252,.0)"}
])
}
}, //线
}, },
], ],
}); });

@ -430,6 +430,15 @@ export default {
{type: "min", name: "最小值"} {type: "min", name: "最小值"}
] ]
}, },
areaStyle: {
normal: {
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
{offset: 0, color: "#128dff"},
{offset: 0.5, color: "rgba(18,141,252,.2)"},
{offset: 1, color: "rgba(18,141,252,.0)"}
])
}
}, //线
}, },
], ],
}); });

@ -45,11 +45,11 @@
<el-table-column label="设备位置" align="center" prop="deviceAddress"/> <el-table-column label="设备位置" align="center" prop="deviceAddress"/>
<el-table-column label="设备状态" align="center" prop="devStatus"/> <el-table-column label="设备状态" align="center" prop="devStatus"/>
<el-table-column label="设备Sn" align="center" prop="deviceSn"/> <el-table-column label="设备Sn" align="center" prop="deviceSn"/>
<el-table-column label="当前功率" align="center" prop="totp"/> <el-table-column label="当前功率(kW)" align="center" prop="totp"/>
<el-table-column label="总用电量" align="center" prop="totWh"/> <el-table-column label="总用电量(kWh)" align="center" prop="totWh"/>
<el-table-column label="温度" align="center" prop="temp"/> <el-table-column label="温度(℃)" align="center" prop="temp"/>
<el-table-column label="进水温度" align="center" prop="tempIn"/> <el-table-column label="进水温度(℃)" align="center" prop="tempIn"/>
<el-table-column label="出水温度" align="center" prop="tempOut"/> <el-table-column label="出水温度(℃)" align="center" prop="tempOut"/>
<el-table-column label="操作" align="center" prop="handle" width="380"> <el-table-column label="操作" align="center" prop="handle" width="380">
<template v-slot="scope" style="display: flex"> <template v-slot="scope" style="display: flex">
<el-upload <el-upload

Loading…
Cancel
Save