Browse Source

fix:冷热源对接接口

temp
zhaohy 3 months ago
parent
commit
1051e09a7c
  1. 10
      hx-ai-intelligent/src/api/coldAndHeatSources.ts
  2. 565
      hx-ai-intelligent/src/view/equipmentControl/coldAndHeatSources/index.vue
  3. 111
      hx-ai-intelligent/src/view/equipmentControl/coldAndHeatSources/position.ts
  4. 6
      hx-ai-intelligent/src/view/equipmentControl/image/coldAndHeatSources/arrow.svg
  5. BIN
      hx-ai-intelligent/src/view/equipmentControl/image/coldAndHeatSources/sensor.png
  6. 10
      hx-ai-intelligent/src/view/equipmentControl/planToAdd/index.vue
  7. 4
      lib/component/tree/tree-api.vue

10
hx-ai-intelligent/src/api/coldAndHeatSources.ts

@ -0,0 +1,10 @@
import { BASE_URL } from './index';
export enum coldAndHeatSourcesApi {
getUserWaterPumpState = `${BASE_URL}/api/tempSysCtrl/getUserWaterPumpState`, // 用户水泵查询最新状态
getLandWaterPumpState = `${BASE_URL}/api/tempSysCtrl/getLandWaterPumpState`, // 地源水泵查询最新状态
getLandHeatPumpState = `${BASE_URL}/api/tempSysCtrl/getLandHeatPumpState`, //螺旋式地源热泵 - 查询最新状态
getEnergyTankState = `${BASE_URL}/api/tempSysCtrl/getEnergyTankState`, //冷热水双蓄储能罐 - 查询最新状态
getCoolPumpState = `${BASE_URL}/api/tempSysCtrl/getCoolPumpState`, //释冷泵 - 查询最新状态
getAirHeatPumpState = `${BASE_URL}/api/tempSysCtrl/getAirHeatPumpState`, //空气源热泵 - 查询最新状态
}

565
hx-ai-intelligent/src/view/equipmentControl/coldAndHeatSources/index.vue

@ -17,16 +17,40 @@
{{ item.deviceInfoName }} {{ item.deviceInfoName }}
</div> </div>
<div style="width: 100%; height: 20px"> <div style="width: 100%; height: 20px">
模式: <span style="color: #fff">{{ item.type }}</span> 模式: <span style="color: #fff">{{ item.autoStatus.label }}</span>
</div> </div>
<div style="width: 100%; height: 20px"> <div style="width: 100%; height: 20px">
设定温度: <span style="color: #fff">{{ item.number }}</span> 设定温度: <span style="color: #fff">{{ item.temp }} {{ item.tempUnit }}</span>
</div> </div>
<img <img
style="position: absolute; width: 135px; height: 130px; left: -20px; top: 40px" style="position: absolute; width: 135px; height: 130px; left: -20px; top: 40px"
:src="item.url" /> :src="item.url" />
</div> </div>
</template> </template>
<!-- 空气源 - 传感器 -->
<template v-for="(item, index) in airSourceSensor" :key="index">
<div
style="
width: 135px;
height: 200px;
position: relative;
font-size: 12px;
position: absolute;
color: #ffff80;
z-index: 2;
"
:style="{ left: item.style.mLeft, bottom: item.style.mBottom }">
<div style="width: 100%; height: 20px">
出水温度: <span style="color: #fff">{{ item.temp }} {{ item.tempUnit }}</span>
</div>
<div style="width: 100%; height: 20px">
流量: <span style="color: #fff">{{ item.traffic }} {{ item.trafficUnit }}</span>
</div>
<img
style="position: absolute; width: 28px; height: 28px; left: -20px; top: 40px"
:src="item.url" />
</div>
</template>
<!-- 水泵 --> <!-- 水泵 -->
<div <div
style=" style="
@ -37,7 +61,7 @@
bottom: 50%; bottom: 50%;
position: absolute; position: absolute;
"> ">
<a-switch <!-- <a-switch
:checked="selectAllCheckbox === 1 ? true : false" :checked="selectAllCheckbox === 1 ? true : false"
size="small" size="small"
:disabled="true" :disabled="true"
@ -46,10 +70,34 @@
'blue-background': selectAllCheckbox === 1 ? true : false, 'blue-background': selectAllCheckbox === 1 ? true : false,
'grey-background': selectAllCheckbox === 1 ? false : true, 'grey-background': selectAllCheckbox === 1 ? false : true,
}" }"
@change="toggleAllSelection" /> @change="toggleAllSelection" /> -->
<img style="display: flex; width: 111px; height: 100px" :src="waterPumpSrc" /> <img style="display: flex; width: 111px; height: 100px" :src="waterPumpSrc" />
<div style="width: 100%; height: 20px; color: rgb(128, 255, 255)"> 水泵 </div> <div style="width: 100%; height: 20px; color: rgb(128, 255, 255)"> 水泵 </div>
</div> </div>
<!-- 水泵 传感器 -->
<template v-for="(item, index) in waterSensor" :key="index">
<div
style="
width: 135px;
height: 200px;
position: relative;
font-size: 12px;
position: absolute;
color: #ffff80;
z-index: 2;
"
:style="{ left: item.style.mLeft, bottom: item.style.mBottom }">
<div style="width: 100%; height: 20px">
温度: <span style="color: #fff">{{ item.temp }} {{ item.tempUnit }}</span>
</div>
<div style="width: 100%; height: 20px">
流量: <span style="color: #fff">{{ item.traffic }} {{ item.trafficUnit }}</span>
</div>
<img
style="position: absolute; width: 28px; height: 28px; left: -20px; top: 40px"
:src="item.url" />
</div>
</template>
<!-- 螺杆式地源热泵 --> <!-- 螺杆式地源热泵 -->
<template v-for="(item, index) in screwGeothermalHeatPump" :key="index"> <template v-for="(item, index) in screwGeothermalHeatPump" :key="index">
<div <div
@ -70,10 +118,10 @@
{{ item.deviceInfoName }} {{ item.deviceInfoName }}
</div> </div>
<div style="width: 100%; height: 20px"> <div style="width: 100%; height: 20px">
模式: <span style="color: #fff">{{ item.type }}</span> 模式: <span style="color: #fff">{{ item.autoStatus.label }}</span>
</div> </div>
<div style="width: 100%; height: 20px"> <div style="width: 100%; height: 20px">
设定温度: <span style="color: #fff">{{ item.number }}</span> 设定温度: <span style="color: #fff">{{ item.temp }} {{ item.tempUnit }}</span>
</div> </div>
</div> </div>
</template> </template>
@ -90,15 +138,17 @@
z-index: 2; z-index: 2;
" "
:style="{ left: item.style.mLeft, bottom: item.style.mBottom }"> :style="{ left: item.style.mLeft, bottom: item.style.mBottom }">
<div style="width: 100%; height: 20px; color: rgb(128, 255, 255)"> <div
style="
width: 100%;
height: 20px;
color: rgb(128, 255, 255);
position: absolute;
top: 40px;
left: 5px;
">
{{ item.deviceInfoName }} {{ item.deviceInfoName }}
</div> </div>
<div style="width: 100%; height: 20px">
出水温度: <span style="color: #fff">{{ item.number }}</span>
</div>
<div style="width: 100%; height: 20px">
流量: <span style="color: #fff">{{ item.lNumber }}</span>
</div>
<img <img
style="position: absolute; width: 117.42px; height: 106.31px; left: -20px; top: 60px" style="position: absolute; width: 117.42px; height: 106.31px; left: -20px; top: 60px"
:src="item.url" /> :src="item.url" />
@ -117,17 +167,14 @@
z-index: 2; z-index: 2;
" "
:style="{ left: item.style.mLeft, bottom: item.style.mBottom }"> :style="{ left: item.style.mLeft, bottom: item.style.mBottom }">
<div style="width: 100%; height: 20px; color: rgb(128, 255, 255)"> <div style="width: 100%; height: 20px; color: rgb(128, 255, 255); margin-top: 20px">
{{ item.deviceInfoName }} {{ item.deviceInfoName }}
</div> </div>
<div style="width: 100%; height: 20px"> <div style="width: 100%; height: 20px">
出水温度: <span style="color: #fff">{{ item.number }}</span> 出水温度: <span style="color: #fff">{{ item.temp }} {{ item.tempUnit }}</span>
</div>
<div style="width: 100%; height: 20px">
容量: <span style="color: #fff">{{ item.rNumber }}</span>
</div> </div>
<div style="width: 100%; height: 20px"> <div style="width: 100%; height: 20px">
: <span style="color: #fff">{{ item.lNumber }}</span> 容量: <span style="color: #fff">{{ item.vol }} {{ item.volUnit }}</span>
</div> </div>
<img <img
style="position: absolute; width: 110px; height: 110px; left: -20px; top: 80px" style="position: absolute; width: 110px; height: 110px; left: -20px; top: 80px"
@ -146,13 +193,13 @@
" "
:style="{ left: item.style.mLeft, bottom: item.style.mBottom }"> :style="{ left: item.style.mLeft, bottom: item.style.mBottom }">
<a-switch <a-switch
:checked="item.user === 1 ? true : false" :checked="item.switchStatus.value === 1 ? true : false"
size="small" size="small"
:disabled="true" :disabled="true"
style="position: absolute; left: 30px; bottom: 0px; z-index: 2" style="position: absolute; left: 30px; bottom: 0px; z-index: 2"
:class="{ :class="{
'blue-background': item.user === 1 ? true : false, 'blue-background': item.switchStatus.value === 1 ? true : false,
'grey-background': item.user === 1 ? false : true, 'grey-background': item.switchStatus.value === 1 ? false : true,
}" /> }" />
<img <img
style=" style="
@ -168,7 +215,7 @@
font-size: 12px; font-size: 12px;
position: absolute; position: absolute;
left: -40px; left: -40px;
top: 30px; top: 40px;
transform: rotateZ(-24deg); transform: rotateZ(-24deg);
" "
>{{ item.deviceInfoName }}</div >{{ item.deviceInfoName }}</div
@ -192,21 +239,43 @@
style="width: 226.19px; height: 176.19px; transform: rotateY(13deg)" style="width: 226.19px; height: 176.19px; transform: rotateY(13deg)"
:src="manifoldSrc" /> :src="manifoldSrc" />
</div> </div>
<!-- 集水器 传感器 -->
<template v-for="(item, index) in manifoldSensor" :key="index">
<div
style="
width: 135px;
height: 200px;
position: relative;
font-size: 12px;
position: absolute;
color: #ffff80;
z-index: 2;
"
:style="{ left: item.style.mLeft, bottom: item.style.mBottom }">
<div style="width: 100%; height: 20px">
回水温度: <span style="color: #fff">{{ item.temp }} {{ item.tempUnit }}</span>
</div>
<div style="width: 100%; height: 20px">
流量: <span style="color: #fff">{{ item.traffic }} {{ item.trafficUnit }}</span>
</div>
<img
style="
position: absolute;
width: 28px;
height: 28px;
left: -20px;
top: 40px;
transform: rotateX(-4deg) rotateY(180deg) rotateZ(1deg);
"
:src="item.url" />
</div>
</template>
<!-- 定压补水装置 --> <!-- 定压补水装置 -->
<template v-for="(item, index) in pressureWater" :key="index"> <template v-for="(item, index) in pressureWater" :key="index">
<div <div
style="width: 137px; height: 137px; position: relative; position: absolute; z-index: 2" style="width: 137px; height: 137px; position: relative; position: absolute; z-index: 2"
:style="{ left: item.style.mLeft, bottom: item.style.mBottom }"> :style="{ left: item.style.mLeft, bottom: item.style.mBottom }">
<img style="width: 137px; height: 127px; transform: rotateY(157deg)" :src="item.url" /> <img style="width: 137px; height: 127px; transform: rotateY(157deg)" :src="item.url" />
<a-switch
:checked="item.user === 1 ? true : false"
size="small"
:disabled="true"
style="position: absolute; left: 40px; bottom: 0px"
:class="{
'blue-background': item.user === 1 ? true : false,
'grey-background': item.user === 1 ? false : true,
}" />
<div <div
style=" style="
width: 100%; width: 100%;
@ -217,9 +286,6 @@
font-size: 12px; font-size: 12px;
"> ">
<div> {{ item.deviceInfoName }}</div> <div> {{ item.deviceInfoName }}</div>
<div style="width: 100%; height: 20px; color: #ffff80">
压差: <span style="color: #fff">{{ item.yc }}</span>
</div>
</div> </div>
</div> </div>
</template> </template>
@ -294,13 +360,13 @@
" "
:style="{ left: item.style.mLeft, bottom: item.style.mBottom }"> :style="{ left: item.style.mLeft, bottom: item.style.mBottom }">
<a-switch <a-switch
:checked="item.user === 1 ? true : false" :checked="item.switchStatus.value === 1 ? true : false"
size="small" size="small"
:disabled="true" :disabled="true"
style="position: absolute; left: 30px; bottom: 0px; z-index: 2" style="position: absolute; left: 30px; bottom: 0px; z-index: 2"
:class="{ :class="{
'blue-background': item.user === 1 ? true : false, 'blue-background': item.switchStatus.value === 1 ? true : false,
'grey-background': item.user === 1 ? false : true, 'grey-background': item.switchStatus.value === 1 ? false : true,
}" /> }" />
<img <img
style=" style="
@ -356,6 +422,30 @@
> >
<img style="width: 290.75px; height: 215.29px" :src="soilCouplerSrc" /> <img style="width: 290.75px; height: 215.29px" :src="soilCouplerSrc" />
</div> </div>
<!-- 土壤 传感器 -->
<template v-for="(item, index) in soilCouplerSensor" :key="index">
<div
style="
width: 135px;
height: 80px;
position: relative;
font-size: 12px;
position: absolute;
color: #ffff80;
z-index: 2;
"
:style="{ left: item.style.mLeft, bottom: item.style.mBottom }">
<div style="width: 100%; height: 20px">
供水温度: <span style="color: #fff">{{ item.temp }} {{ item.tempUnit }}</span>
</div>
<div style="width: 100%; height: 20px">
流量: <span style="color: #fff">{{ item.traffic }} {{ item.trafficUnit }}</span>
</div>
<img
style="position: absolute; width: 28px; height: 28px; left: -20px; top: 40px"
:src="item.url" />
</div>
</template>
<!-- 线 --> <!-- 线 -->
<template v-for="(item, index) in line" :key="index"> <template v-for="(item, index) in line" :key="index">
<div <div
@ -370,11 +460,27 @@
}"> }">
</div> </div>
</template> </template>
<!-- 箭头 -->
<template v-for="(item, index) in arrow" :key="index">
<div
style="width: 50px; height: 20px; position: absolute"
:style="{
left: item.style.mLeft,
bottom: item.style.mBottom,
transform: item.style.transform,
}">
<img style="width: 50px; height: 20px" :src="item.url" />
</div>
</template>
</div> </div>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import { ref, onMounted, onUnmounted } from 'vue'; import { ref, onMounted, onUnmounted } from 'vue';
import { http } from '/nerv-lib/util';
import { coldAndHeatSourcesApi } from '/@/api/coldAndHeatSources';
import { ventilating } from '/@/api/ventilatingSystem';
// //
import airSourceThermalCollapseSrc from '../image/coldAndHeatSources/airSourceThermalCollapse.png'; import airSourceThermalCollapseSrc from '../image/coldAndHeatSources/airSourceThermalCollapse.png';
import waterPumpSrc from '../image/coldAndHeatSources/waterPump.png'; import waterPumpSrc from '../image/coldAndHeatSources/waterPump.png';
@ -386,10 +492,24 @@
import softenedWaterTankSrc from '../image/coldAndHeatSources/softenedWaterTank.png'; import softenedWaterTankSrc from '../image/coldAndHeatSources/softenedWaterTank.png';
import waterProcessorSrc from '../image/coldAndHeatSources/waterProcessor.png'; import waterProcessorSrc from '../image/coldAndHeatSources/waterProcessor.png';
import soilCouplerSrc from '../image/coldAndHeatSources/soilCoupler.png'; import soilCouplerSrc from '../image/coldAndHeatSources/soilCoupler.png';
import sensorSrc from '../image/coldAndHeatSources/sensor.png';
import blueGif from '../image/coldAndHeatSources/blue.gif'; import blueGif from '../image/coldAndHeatSources/blue.gif';
import bluePng from '../image/coldAndHeatSources/blue.png'; import bluePng from '../image/coldAndHeatSources/blue.png';
import greenGif from '../image/coldAndHeatSources/green.gif'; import greenGif from '../image/coldAndHeatSources/green.gif';
import greenPng from '../image/coldAndHeatSources/green.png'; import greenPng from '../image/coldAndHeatSources/green.png';
import arrowSrc from '../image/coldAndHeatSources/arrow.svg';
//
import {
userWaterPumpPosition,
waterPumpPosition,
airSourceThermalCollapsePosition,
screwGeothermalHeatPumpPosition,
airSourceSensorPosition,
} from './position';
//
import { items } from '/@/store/item';
//
const state = items();
const line = ref([ const line = ref([
//线- //线-
{ {
@ -757,77 +877,13 @@
}, },
}, },
]); ]);
const airSourceThermalCollapse = ref([ const airSourceThermalCollapse = ref([]);
{
deviceInfoName: '1#空气源热泵',
type: '制热',
number: '40℃',
style: {
mLeft: '17%',
mBottom: '54%',
},
url: airSourceThermalCollapseSrc,
},
{
deviceInfoName: '2#空气源热泵',
type: '制热',
number: '40℃',
style: {
mLeft: '24%',
mBottom: '59%',
},
url: airSourceThermalCollapseSrc,
},
{
deviceInfoName: '3#空气源热泵',
type: '制热',
number: '40℃',
style: {
mLeft: '31%',
mBottom: '66%',
},
url: airSourceThermalCollapseSrc,
},
{
deviceInfoName: '4#空气源热泵',
type: '制热',
number: '40℃',
style: {
mLeft: '38%',
mBottom: '73%',
},
url: airSourceThermalCollapseSrc,
},
]);
// //
const screwGeothermalHeatPump = ref([ const screwGeothermalHeatPump = ref([]);
{
deviceInfoName: '1#螺杆式地源热泵',
type: '制热',
number: '40℃',
style: {
mLeft: '9.5%',
mBottom: '22.5%',
},
url: screwGeothermalHeatPumpSrc,
},
{
deviceInfoName: '2#螺杆式地源热泵',
type: '制热',
number: '40℃',
style: {
mLeft: '18.5%',
mBottom: '31.5%',
},
url: screwGeothermalHeatPumpSrc,
},
]);
// //
const diluteCoolingPump = ref([ const diluteCoolingPump = ref([
{ {
deviceInfoName: '稀冷泵', deviceInfoName: '稀冷泵',
number: '40℃',
lNumber: '139 m3/h',
style: { style: {
mLeft: '30%', mLeft: '30%',
mBottom: '29%', mBottom: '29%',
@ -836,101 +892,260 @@
}, },
]); ]);
// //
const coldWater = ref([ const coldWater = ref([]);
{
deviceInfoName: '冷热水双蓄储能罐',
number: '40℃',
lNumber: '139 m3/h',
rNumber: '135L',
style: {
mLeft: '36%',
mBottom: '39%',
},
url: coldWaterSrc,
},
]);
// //
const userWaterPump = ref([ const userWaterPump = ref([]);
{ //
deviceInfoName: '1#用户水泵', const waterPump = ref([]);
number: '40℃', //
user: 1, const pressureWater = ref([
style: {
mLeft: '50%',
mBottom: '55.5%',
},
url: waterPumpSrc,
},
{
deviceInfoName: '2#用户水泵',
number: '40℃',
user: 1,
style: {
mLeft: '55%',
mBottom: '51%',
},
url: waterPumpSrc,
},
{ {
deviceInfoName: '3#用户水泵', deviceInfoName: '定压补水装置',
number: '40℃', yc: '0.05 Bar',
user: 1, user: 1,
style: { style: {
mLeft: '59%', mLeft: '29.4%',
mBottom: '47%', mBottom: '8.4%',
}, },
url: waterPumpSrc, url: pressureWaterSrc,
}, },
]); ]);
// // -
const waterPump = ref([ const waterSensor = ref([]);
//
const manifoldSensor = ref([]);
//
const soilCouplerSensor = ref([]);
// -
const airSourceSensor = ref([]);
//
const arrow = ref([
{ {
deviceInfoName: '1#地源水泵', url: arrowSrc,
number: '40℃',
user: 1,
style: { style: {
mLeft: '65%', mLeft: '6%',
mBottom: '41%', mBottom: '42.5%',
transform: 'rotateZ(36deg)',
}, },
url: waterPumpSrc,
}, },
{ {
deviceInfoName: '2#地源水泵', url: arrowSrc,
number: '40℃',
user: 1,
style: { style: {
mLeft: '70%', mLeft: '25%',
mBottom: '36%', mBottom: '18%',
transform: 'rotateZ(36deg)',
}, },
url: waterPumpSrc,
}, },
{ {
deviceInfoName: '3#地源水泵', url: arrowSrc,
number: '40℃',
user: 1,
style: { style: {
mLeft: '75%', mLeft: '76%',
mBottom: '31%', mBottom: '13%',
transform: 'rotateZ(37deg)',
}, },
url: waterPumpSrc,
}, },
]);
//
const pressureWater = ref([
{ {
deviceInfoName: '定压补水装置', url: arrowSrc,
yc: '0.05 Bar',
user: 1,
style: { style: {
mLeft: '29.4%', mLeft: '78%',
mBottom: '8.4%', mBottom: '72%',
transform: 'rotateZ(149deg)',
}, },
url: pressureWaterSrc,
}, },
]); ]);
const selectAllCheckbox = ref(1);
onMounted(() => {}); //
onUnmounted(() => {}); const getUserWaterPump = () => {
http
.get(coldAndHeatSourcesApi.getUserWaterPumpState, {
projectId: state.projectId,
siteId: state.siteId,
floor: 1,
})
.then((res) => {
if (res.msg === 'success') {
res.data.forEach((item: any, index: any) => {
userWaterPump.value.push({
deviceInfoName: item.deviceInfoName,
...item.record,
url: waterPumpSrc,
style: userWaterPumpPosition[index].style,
});
});
}
});
};
//
const getLandWaterPumpState = () => {
http
.get(coldAndHeatSourcesApi.getLandWaterPumpState, {
projectId: state.projectId,
siteId: state.siteId,
floor: 1,
})
.then((res) => {
if (res.msg === 'success') {
res.data.forEach((item: any, index: any) => {
waterPump.value.push({
deviceInfoName: item.deviceInfoName,
...item.record,
url: waterPumpSrc,
style: waterPumpPosition[index].style,
});
});
}
});
};
//
const getAirHeatPumpState = () => {
http
.get(coldAndHeatSourcesApi.getAirHeatPumpState, {
projectId: state.projectId,
siteId: state.siteId,
floor: 1,
})
.then((res) => {
if (res.msg === 'success') {
res.data.forEach((item: any, index: any) => {
airSourceThermalCollapse.value.push({
deviceInfoName: item.deviceInfoName,
...item.record,
url: airSourceThermalCollapseSrc,
style: airSourceThermalCollapsePosition[index].style,
});
});
}
});
};
//
const getLandHeatPumpState = () => {
http
.get(coldAndHeatSourcesApi.getLandHeatPumpState, {
projectId: state.projectId,
siteId: state.siteId,
floor: 1,
})
.then((res) => {
if (res.msg === 'success') {
res.data.forEach((item: any, index: any) => {
screwGeothermalHeatPump.value.push({
deviceInfoName: item.deviceInfoName,
...item.record,
url: screwGeothermalHeatPumpSrc,
style: screwGeothermalHeatPumpPosition[index].style,
});
});
}
});
};
//
const getEnergyTankState = () => {
http
.get(coldAndHeatSourcesApi.getEnergyTankState, {
projectId: state.projectId,
siteId: state.siteId,
floor: 1,
})
.then((res) => {
if (res.msg === 'success') {
res.data.forEach((item: any) => {
coldWater.value.push({
deviceInfoName: item.deviceInfoName,
...item.record,
url: coldWaterSrc,
style: {
mLeft: '36%',
mBottom: '39%',
},
});
});
}
});
};
//
const getSensorData = () => {
waterSensor.value = [];
airSourceSensor.value = [];
manifoldSensor.value = [];
http
.get(ventilating.getSensorData, {
projectId: state.projectId,
siteId: state.siteId,
floor: 1,
})
.then((res) => {
if (res.msg === 'success') {
res.data.forEach((item: any, index: any) => {
if (index < 4) {
airSourceSensor.value.push({
deviceInfoName: item.deviceInfoName,
...item.record,
url: sensorSrc,
style: airSourceSensorPosition[index].style,
});
}
});
//
let data = res.data[Math.floor(Math.random() * res.data.length)];
waterSensor.value.push({
deviceInfoName: data.deviceInfoName,
...data.record,
url: sensorSrc,
style: {
mLeft: '9%',
mBottom: '27%',
},
});
// -
data = res.data[Math.floor(Math.random() * res.data.length)];
manifoldSensor.value.push({
deviceInfoName: data.deviceInfoName,
...data.record,
url: sensorSrc,
style: {
mLeft: '81%',
mBottom: '51%',
},
});
// -
data = res.data[Math.floor(Math.random() * res.data.length)];
soilCouplerSensor.value.push({
deviceInfoName: data.deviceInfoName,
...data.record,
url: sensorSrc,
style: {
mLeft: '79%',
mBottom: '13%',
},
});
}
});
};
//
const getData = () => {
//
getUserWaterPump();
//
getLandWaterPumpState();
//
getAirHeatPumpState();
//
getLandHeatPumpState();
//
getEnergyTankState();
//
getSensorData();
};
//
// const intervalId = setInterval(getList, 60000);
onMounted(() => {
getData();
});
onUnmounted(() => {
//
// clearInterval(intervalId);
});
</script> </script>
<style lang="less" scoped> <style lang="less" scoped>
.box-cold { .box-cold {

111
hx-ai-intelligent/src/view/equipmentControl/coldAndHeatSources/position.ts

@ -0,0 +1,111 @@
//用户水泵位置
export const userWaterPumpPosition = [
{
style: {
mLeft: '50%',
mBottom: '55.5%',
},
},
{
style: {
mLeft: '55%',
mBottom: '51%',
},
},
{
style: {
mLeft: '59%',
mBottom: '47%',
},
},
];
//地源水泵位置
export const waterPumpPosition = [
{
style: {
mLeft: '65%',
mBottom: '41%',
},
},
{
style: {
mLeft: '70%',
mBottom: '36%',
},
},
{
style: {
mLeft: '75%',
mBottom: '31%',
},
},
];
//空气源热泵
export const airSourceThermalCollapsePosition = [
{
style: {
mLeft: '17%',
mBottom: '54%',
},
},
{
style: {
mLeft: '24%',
mBottom: '59%',
},
},
{
style: {
mLeft: '31%',
mBottom: '66%',
},
},
{
style: {
mLeft: '38%',
mBottom: '73%',
},
},
];
//获取螺杆式地源热泵
export const screwGeothermalHeatPumpPosition = [
{
style: {
mLeft: '9.5%',
mBottom: '22.5%',
},
},
{
style: {
mLeft: '18.5%',
mBottom: '31.5%',
},
},
];
// 空气源 - 传感器
export const airSourceSensorPosition = [
{
style: {
mLeft: '26.5%',
mBottom: '34%',
},
},
{
style: {
mLeft: '32.5%',
mBottom: '39%',
},
},
{
style: {
mLeft: '38.5%',
mBottom: '44.5%',
},
},
{
style: {
mLeft: '47.5%',
mBottom: '52.5%',
},
},
];

6
hx-ai-intelligent/src/view/equipmentControl/image/coldAndHeatSources/arrow.svg

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<svg version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" width="50px" height="22px" xmlns="http://www.w3.org/2000/svg">
<g transform="matrix(1 0 0 1 -1191 -569 )">
<path d="M 49.73958333333333 7.581274382314695 C 49.91319444444444 7.752925877763329 50 7.972258344169916 50 8.239271781534459 L 50 13.732119635890768 C 50 13.999133073255308 49.91319444444444 14.2184655396619 49.73958333333333 14.390117035110533 C 49.56597222222222 14.561768530559167 49.34413580246914 14.647594278283485 49.074074074074076 14.647594278283485 L 12.962962962962962 14.647594278283485 L 12.962962962962962 21.055916775032507 C 12.962962962962962 21.456436931079324 12.779706790123457 21.732986562635453 12.413194444444445 21.88556566970091 C 12.046682098765434 22.038144776766362 11.709104938271606 21.99046380580841 11.400462962962964 21.742522756827046 L 0.28935185185185186 11.729518855656698 C 0.09645061728395089 11.538794971824878 0 11.31946250541829 0 11.071521456436932 C 0 10.804508019072387 0.09645061728395089 10.575639358474207 0.28935185185185186 10.384915474642392 L 11.400462962962964 0.2574772431729524 C 11.709104938271606 -0.009536194191596348 12.046682098765434 -0.06675335934114024 12.413194444444445 0.08582574772431828 C 12.779706790123457 0.2574772431729524 12.962962962962962 0.5340268747290853 12.962962962962962 0.9154746423927169 L 12.962962962962962 7.3237971391417425 L 49.074074074074076 7.3237971391417425 C 49.34413580246914 7.3237971391417425 49.56597222222222 7.409622886866061 49.73958333333333 7.581274382314695 Z " fill-rule="nonzero" fill="#ffff80" stroke="none" transform="matrix(1 0 0 1 1191 569 )" />
</g>
</svg>

BIN
hx-ai-intelligent/src/view/equipmentControl/image/coldAndHeatSources/sensor.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

10
hx-ai-intelligent/src/view/equipmentControl/planToAdd/index.vue

@ -9,10 +9,10 @@
<div <div
:style="{ :style="{
color: { color: {
'0': '#ccc',
'1': 'rgba(255, 165, 0, 1)', '1': 'rgba(255, 165, 0, 1)',
'2': 'rgb(57, 215, 187)', '2': 'rgb(57, 215, 187)',
'3': 'rgb(255, 0, 0)', '3': 'rgb(255, 0, 0)',
'4': '#ccc',
}[record.executeStatus.value], }[record.executeStatus.value],
}"> }">
{{ record.executeStatus.label }}</div {{ record.executeStatus.label }}</div
@ -36,7 +36,7 @@
import { NsMessage } from '/nerv-lib/component'; import { NsMessage } from '/nerv-lib/component';
import { getEnum } from '/@/api'; import { getEnum } from '/@/api';
import { http } from '/nerv-lib/util'; import { http } from '/nerv-lib/util';
import dayjs, { Dayjs } from 'dayjs';
// //
const orgId = ref(''); const orgId = ref('');
const projectId = ref(''); const projectId = ref('');
@ -46,6 +46,7 @@
projectId.value = results.projectId; projectId.value = results.projectId;
const mainRef = ref(null); const mainRef = ref(null);
const modalFormRef = ref(null); const modalFormRef = ref(null);
const addPlan = () => { const addPlan = () => {
if (mainRef.value.nsTableRef.treeElRef.selectedRow.node.planLib) { if (mainRef.value.nsTableRef.treeElRef.selectedRow.node.planLib) {
http http
@ -69,6 +70,10 @@
? record.startTime.substring(0, 10) + ' - ' + record.endTime.substring(0, 10) ? record.startTime.substring(0, 10) + ' - ' + record.endTime.substring(0, 10)
: '未配置时间'; : '未配置时间';
}; };
const disabledDate = (current: Dayjs) => {
// Can not select days before today and today
return current && current < dayjs().endOf('day');
};
const nsModalFormConfig = ref({ const nsModalFormConfig = ref({
api: planToAddApi.updPlan, api: planToAddApi.updPlan,
data: {}, data: {},
@ -92,6 +97,7 @@
componentProps: { componentProps: {
valueFormat: 'YYYY-MM-DD hh:mm:ss', valueFormat: 'YYYY-MM-DD hh:mm:ss',
placeholder: ['开始日期', '结束日期'], placeholder: ['开始日期', '结束日期'],
disabledDate: disabledDate,
}, },
rules: [ rules: [
{ {

4
lib/component/tree/tree-api.vue

@ -120,9 +120,9 @@
}) })
.then((res) => { .then((res) => {
treeData.value = transform(get(res, resultField)); treeData.value = transform(get(res, resultField));
//
selectedKeys.value = [];
if (formConfig.value.callList && formConfig.value.defaultSelection) { if (formConfig.value.callList && formConfig.value.defaultSelection) {
//
selectedKeys.value = [];
handleSelect([treeData.value[0].id], { handleSelect([treeData.value[0].id], {
selected: true, selected: true,
event: 'select', event: 'select',

Loading…
Cancel
Save