|
@@ -49,18 +49,18 @@
|
|
|
</div>
|
|
|
</div>
|
|
|
|
|
|
- <div class="air-control air-control-padding" v-if="navType == 'all'">
|
|
|
+ <div class="floor-control floor-control-padding" v-if="navType == 'all'">
|
|
|
<div class="control-box">
|
|
|
<div class="temp-slider" id="slideFloorId">
|
|
|
<div class="slider-bar" id="barFloorId">
|
|
|
<div class="bar-temp">{{ realTemp ? realTemp + "℃" : "--" }}</div>
|
|
|
<div class="bar-circle" id="handFloorId"></div>
|
|
|
</div>
|
|
|
- <div class="temp-left" style="width: 22px">
|
|
|
- {{ floorHeatingData.minTempSet }}
|
|
|
+ <div class="temp-left" id="tempLeftId">
|
|
|
+ {{ heatingData.minTempSet }}
|
|
|
</div>
|
|
|
- <div class="temp-right" style="width: 22px">
|
|
|
- {{ floorHeatingData.maxTempSet }}
|
|
|
+ <div class="temp-right">
|
|
|
+ {{ heatingData.maxTempSet }}
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
@@ -78,7 +78,6 @@
|
|
|
</div>
|
|
|
<Switch
|
|
|
active-color="$elActiveColor"
|
|
|
- :disabled="!userIsControl"
|
|
|
v-model="item.switch"
|
|
|
:loading="item.loading"
|
|
|
size="14px"
|
|
@@ -138,10 +137,6 @@ export default defineComponent({
|
|
|
type: String,
|
|
|
default: () => "",
|
|
|
},
|
|
|
- controlMode: {
|
|
|
- type: Number,
|
|
|
- default: () => 0,
|
|
|
- },
|
|
|
spaceId: {
|
|
|
type: String,
|
|
|
default: () => "",
|
|
@@ -154,10 +149,6 @@ export default defineComponent({
|
|
|
type: Boolean,
|
|
|
default: () => false,
|
|
|
},
|
|
|
- showLight: {
|
|
|
- type: Boolean,
|
|
|
- default: () => false,
|
|
|
- },
|
|
|
seviceEquipmentList: {
|
|
|
// 是否走服务定制的设备
|
|
|
type: Array,
|
|
@@ -167,68 +158,46 @@ export default defineComponent({
|
|
|
components: { Switch },
|
|
|
setup(props, contx) {
|
|
|
const floorHeatingList: any = [];
|
|
|
- let floorHeatingData: any = {};
|
|
|
- let lightsStatusTimer: any = null;
|
|
|
+ let heatingData: any = {};
|
|
|
+ let floorHeathingStatus: any = null;
|
|
|
const timeOut: any = null;
|
|
|
- const initData: any = [];
|
|
|
- let lightParams: any = [];
|
|
|
- let heatingData: any = {
|
|
|
- minTempSet: 16,
|
|
|
- maxTempSet: 35,
|
|
|
- };
|
|
|
const proxyData = reactive({
|
|
|
seviceEquipmentList: props.seviceEquipmentList,
|
|
|
- showLight: props.showLight,
|
|
|
- spaceId: props.spaceId,
|
|
|
- controlMode: props.controlMode,
|
|
|
- userIsControl: props.userIsControl,
|
|
|
forceOverTimeFlag: props.forceOverTimeFlag,
|
|
|
- setStatus: false,
|
|
|
- lightParams: lightParams,
|
|
|
+ spaceId: props.spaceId,
|
|
|
heatingData: heatingData,
|
|
|
- heatingTemp: 35,
|
|
|
isOpen: false,
|
|
|
parseImgUrl: parseImgUrl,
|
|
|
- allowSvg: "down_Arrow.svg",
|
|
|
timeOut: timeOut,
|
|
|
- lightIcon: "arrow-down",
|
|
|
- loadMore: false,
|
|
|
- loadingLight: false,
|
|
|
loadingFlag: false,
|
|
|
- initData: initData,
|
|
|
floorHeatingList: floorHeatingList,
|
|
|
- floorHeatingData: floorHeatingData,
|
|
|
- lightsStatusTimer: lightsStatusTimer,
|
|
|
- startCheckLightsTime: 0,
|
|
|
- lightColorImg: parseImgUrl("page-officehome", "lightColorControl.svg"),
|
|
|
- lightImg: parseImgUrl("page-officehome", "lamp_close.png"),
|
|
|
- lampSw: false, // 主灯开关
|
|
|
+ floorHeathingStatus: floorHeathingStatus,
|
|
|
swiperIinit: false,
|
|
|
part: 1,
|
|
|
realTemp: 0,
|
|
|
navType: "all",
|
|
|
runStatus: 0,
|
|
|
+ lightColorImg: parseImgUrl("page-officehome", "lightColorControl.svg"),
|
|
|
showFloorHeating(floorHeatingItem: any) {
|
|
|
let item: any = floorHeatingItem;
|
|
|
if (!item.switch) {
|
|
|
Toast("请先开启地暖,才可温度调节!");
|
|
|
return;
|
|
|
}
|
|
|
- item.minTempSet = proxyData.floorHeatingData.minTempSet;
|
|
|
- item.maxTempSet = proxyData.floorHeatingData.maxTempSet;
|
|
|
+ item.minTempSet = proxyData.heatingData.minTempSet;
|
|
|
+ item.maxTempSet = proxyData.heatingData.maxTempSet;
|
|
|
contx.emit("showFloorHeating", item);
|
|
|
},
|
|
|
- // 改变空调状态(main)
|
|
|
+ // 改变地暖态(main)
|
|
|
changeZongAir(text: any) {
|
|
|
- if (text == "temp" && !proxyData.runStatus) {
|
|
|
+ if (text == "temp" && !proxyData.heatingData.runStatus) {
|
|
|
return;
|
|
|
}
|
|
|
- proxyData.runStatus = proxyData.isOpen ? 1 : 0;
|
|
|
let data: any = [];
|
|
|
proxyData.floorHeatingList.map((item: any) => {
|
|
|
let code: any = text == "temp" ? item.tempSetCode : item.switchCode;
|
|
|
let value: any =
|
|
|
- text == "temp" ? proxyData.realTemp : proxyData.runStatus;
|
|
|
+ text == "temp" ? proxyData.realTemp : proxyData.isOpen ? 1 : 0;
|
|
|
let obj: any = {
|
|
|
id: item.id, //类型:String 必有字段 备注:设备id
|
|
|
code: code, //类型:String 必有字段 备注:编码 EquipSwtichSet
|
|
@@ -239,10 +208,10 @@ export default defineComponent({
|
|
|
if (!proxyData.loadingFlag) {
|
|
|
// 调整设备状态
|
|
|
proxyData.loadingFlag = false;
|
|
|
- // proxyData.setSpaceCondtioners(data);
|
|
|
+ proxyData.setSpaceCondtioners(data);
|
|
|
}
|
|
|
},
|
|
|
- // 改变空调状态(child)
|
|
|
+ // 改变地暖态(child)
|
|
|
changeChildZongAir(text: any, item: any) {
|
|
|
let runStatus: any = item.switch ? 1 : 0;
|
|
|
let data: any = [];
|
|
@@ -260,7 +229,7 @@ export default defineComponent({
|
|
|
if (!item.loading) {
|
|
|
// 调整设备状态
|
|
|
item.loading = false;
|
|
|
- // proxyData.setSpaceCondtioners(data, item);
|
|
|
+ proxyData.setSpaceCondtioners(data, item);
|
|
|
}
|
|
|
},
|
|
|
// 改变设备状态
|
|
@@ -297,35 +266,48 @@ export default defineComponent({
|
|
|
// 子设备导航切换
|
|
|
checkNav(type: any = "all") {
|
|
|
proxyData.navType = type;
|
|
|
+ proxyData.swiperIinit = false;
|
|
|
+ proxyData.sliderInit();
|
|
|
},
|
|
|
getEleWidth(ele: any) {
|
|
|
- // debugger;
|
|
|
if (ele) {
|
|
|
return ele.getBoundingClientRect().width;
|
|
|
} else {
|
|
|
return 1;
|
|
|
}
|
|
|
},
|
|
|
+ sliderPading: 32,
|
|
|
+ // 初始化滑动
|
|
|
+ sliderInit() {
|
|
|
+ nextTick(() => {
|
|
|
+ if (proxyData.navType == "all" && !proxyData.swiperIinit) {
|
|
|
+ proxyData.endBoxSwiper();
|
|
|
+ }
|
|
|
+ if (proxyData.navType == "all") {
|
|
|
+ proxyData.setBarNowPerstion();
|
|
|
+ }
|
|
|
+ });
|
|
|
+ },
|
|
|
// 滑动
|
|
|
endBoxSwiper() {
|
|
|
proxyData.swiperIinit = true;
|
|
|
let handBox: any = document.querySelector("#handFloorId");
|
|
|
let barBox: any = document.querySelector("#barFloorId");
|
|
|
let sliderBox: any = document.querySelector("#slideFloorId");
|
|
|
- let sliderPadingL: any = 24;
|
|
|
- let sliderPadingR: any = 24;
|
|
|
let isMove: any = false;
|
|
|
let barLeft: any = 0;
|
|
|
let sliderWidth: any = proxyData.getEleWidth(sliderBox);
|
|
|
let barWidth: any = proxyData.getEleWidth(barBox);
|
|
|
+ let tempLeftBox: any = document.querySelector("#tempLeftId");
|
|
|
+ let sliderPadingL: any = proxyData.getEleWidth(tempLeftBox);
|
|
|
+ let sliderPadingR: any = sliderPadingL;
|
|
|
if (sliderWidth > 1) {
|
|
|
sliderWidth = sliderWidth - sliderPadingR - sliderPadingL - barWidth;
|
|
|
}
|
|
|
let tempPart =
|
|
|
- (proxyData.floorHeatingData.maxTempSet -
|
|
|
- proxyData.floorHeatingData.minTempSet) /
|
|
|
+ (proxyData.heatingData.maxTempSet -
|
|
|
+ proxyData.heatingData.minTempSet) /
|
|
|
sliderWidth;
|
|
|
- console.log("tempPart==", tempPart);
|
|
|
let part: any = tempPart;
|
|
|
proxyData.part = part;
|
|
|
if (!handBox) {
|
|
@@ -351,7 +333,7 @@ export default defineComponent({
|
|
|
barBox.style.left = left + "px";
|
|
|
proxyData.realTemp =
|
|
|
(left - sliderPadingL) * part +
|
|
|
- proxyData.floorHeatingData.minTempSet;
|
|
|
+ proxyData.heatingData.minTempSet;
|
|
|
proxyData.realTemp = Math.round(proxyData.realTemp);
|
|
|
}
|
|
|
},
|
|
@@ -367,7 +349,7 @@ export default defineComponent({
|
|
|
barBox.style.left = left + "px";
|
|
|
proxyData.realTemp =
|
|
|
(left - sliderPadingL) * part +
|
|
|
- proxyData.floorHeatingData.minTempSet;
|
|
|
+ proxyData.heatingData.minTempSet;
|
|
|
proxyData.realTemp = Math.round(proxyData.realTemp);
|
|
|
}
|
|
|
},
|
|
@@ -375,33 +357,35 @@ export default defineComponent({
|
|
|
},
|
|
|
// 设置温度条的位置
|
|
|
setBarNowPerstion() {
|
|
|
- proxyData.realTemp =
|
|
|
- proxyData.heatingData && proxyData.heatingData.tempSet
|
|
|
- ? proxyData.heatingData.tempSet
|
|
|
- : 0;
|
|
|
+ proxyData.realTemp = proxyData.heatingData.tempSet
|
|
|
+ ? proxyData.heatingData.tempSet
|
|
|
+ : 0;
|
|
|
+
|
|
|
let barBox: any = document.querySelector("#barFloorId");
|
|
|
if (!barBox) {
|
|
|
return;
|
|
|
}
|
|
|
let sliderBox: any = document.querySelector("#slideFloorId");
|
|
|
+ let tempLeftBox: any = document.querySelector("#tempLeftId");
|
|
|
+ let sliderPading: any = proxyData.getEleWidth(tempLeftBox);
|
|
|
if (
|
|
|
- proxyData.realTemp !== 0 &&
|
|
|
- proxyData.heatingTemp >= proxyData.heatingData.minTempSet &&
|
|
|
- proxyData.heatingTemp <= proxyData.heatingData.maxTempSet
|
|
|
+ proxyData.realTemp >= proxyData.heatingData.minTempSet &&
|
|
|
+ proxyData.realTemp <= proxyData.heatingData.maxTempSet
|
|
|
) {
|
|
|
// 正常温度范围
|
|
|
let left: any =
|
|
|
(proxyData.realTemp - proxyData.heatingData.minTempSet) /
|
|
|
proxyData.part;
|
|
|
- left = Math.floor(left) + 24;
|
|
|
+ left = Math.floor(left) + sliderPading;
|
|
|
+
|
|
|
if (barBox) {
|
|
|
barBox.style.left = left + "px";
|
|
|
}
|
|
|
} else {
|
|
|
if (!proxyData.realTemp) {
|
|
|
- barBox.style.left = 24 + "px";
|
|
|
+ barBox.style.left = sliderPading + "px";
|
|
|
} else if (proxyData.realTemp < proxyData.heatingData.minTempSet) {
|
|
|
- barBox.style.left = 24 + "px";
|
|
|
+ barBox.style.left = sliderPading + "px";
|
|
|
} else if (proxyData.realTemp > proxyData.heatingData.maxTempSet) {
|
|
|
let sliderWidth: any = sliderBox.offsetWidth;
|
|
|
let barWidth: any = barBox.offsetWidth;
|
|
@@ -409,74 +393,36 @@ export default defineComponent({
|
|
|
}
|
|
|
}
|
|
|
},
|
|
|
- // 点击展示所有的登录
|
|
|
- showAll() {
|
|
|
- proxyData.loadMore = !proxyData.loadMore;
|
|
|
- console.log("proxyData.loadMore==", proxyData.loadMore);
|
|
|
- if (proxyData.loadMore) {
|
|
|
- proxyData.lightIcon = "arrow-up";
|
|
|
+ // 格式化地暖数据状态
|
|
|
+ formateDataStatus() {
|
|
|
+ if (proxyData.heatingData.runStatus) {
|
|
|
+ proxyData.isOpen = true;
|
|
|
} else {
|
|
|
- proxyData.lightIcon = "arrow-down";
|
|
|
- }
|
|
|
- },
|
|
|
- // 点击展示调色和调温弹窗
|
|
|
- showLightColorCtrol(item: any, e: any = null) {
|
|
|
- console.log(item);
|
|
|
- if (item.switch) {
|
|
|
- contx.emit("showLightColorCtrol", item);
|
|
|
- }
|
|
|
- },
|
|
|
- // 检查设备是否执行空间服务时间
|
|
|
- checkDeviceIsExeSpaceTime(deviceAll: any = []) {
|
|
|
- // debugger
|
|
|
- if (proxyData.controlMode !== 1) {
|
|
|
- return true;
|
|
|
- }
|
|
|
- let seviceEquipmentList: any = proxyData.seviceEquipmentList;
|
|
|
- let flag: any = false;
|
|
|
- for (let i = 0; i < seviceEquipmentList.length; i++) {
|
|
|
- for (let j = 0; j < deviceAll.length; j++) {
|
|
|
- if (
|
|
|
- seviceEquipmentList[i].id == deviceAll[j].id &&
|
|
|
- seviceEquipmentList[i].isExeSpaceTime
|
|
|
- ) {
|
|
|
- flag = true;
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
- if (flag) {
|
|
|
- break;
|
|
|
- }
|
|
|
+ proxyData.isOpen = false;
|
|
|
}
|
|
|
- return flag;
|
|
|
+ proxyData.floorHeatingList.map((item: any) => {
|
|
|
+ item.switch = item.runStatus ? true : false;
|
|
|
+ });
|
|
|
},
|
|
|
- // 获取灯的状态
|
|
|
+ // 获取地暖的状态
|
|
|
getFloorHeatingList() {
|
|
|
let str: any = setQueryConfig({ spaceId: proxyData.spaceId });
|
|
|
- // let str: any = setQueryConfig({
|
|
|
- // spaceId: "Sp1101080259308f5ed92e964bc1b029038dea962de4",
|
|
|
- // });
|
|
|
querySapceFloorHeating(str)
|
|
|
.then((res) => {
|
|
|
const resData: any = res;
|
|
|
- const data: any = res?.data ?? {};
|
|
|
- proxyData.floorHeatingData = data;
|
|
|
- if (proxyData.floorHeatingData.runStatus) {
|
|
|
- proxyData.isOpen = true;
|
|
|
- } else {
|
|
|
- proxyData.isOpen = false;
|
|
|
- }
|
|
|
+ const data: any = resData ? resData.data : {};
|
|
|
+ proxyData.heatingData = data;
|
|
|
if (data.equipList && data.equipList.length) {
|
|
|
- proxyData.floorHeatingList = data.equipList;
|
|
|
+ proxyData.floorHeatingList = data.equipList || [];
|
|
|
}
|
|
|
- proxyData.startLightsStatusTimer();
|
|
|
- nextTick(() => {
|
|
|
- proxyData.endBoxSwiper();
|
|
|
- proxyData.setBarNowPerstion();
|
|
|
- });
|
|
|
+ proxyData.formateDataStatus();
|
|
|
+ setTimeout(() => {
|
|
|
+ proxyData.sliderInit();
|
|
|
+ }, 500);
|
|
|
+ proxyData.startfloorHeathingStatus();
|
|
|
})
|
|
|
.catch(() => {
|
|
|
- proxyData.startLightsStatusTimer();
|
|
|
+ proxyData.startfloorHeathingStatus();
|
|
|
});
|
|
|
},
|
|
|
loadingTimer: 0,
|
|
@@ -494,48 +440,35 @@ export default defineComponent({
|
|
|
}, 1000);
|
|
|
},
|
|
|
// 灯灯接口清除定时器
|
|
|
- clearLightStatusTimer() {
|
|
|
- clearTimeout(proxyData.lightsStatusTimer);
|
|
|
- proxyData.lightsStatusTimer = null;
|
|
|
+ clearFloorHeathingTimer() {
|
|
|
+ clearTimeout(proxyData.floorHeathingStatus);
|
|
|
+ proxyData.floorHeathingStatus = null;
|
|
|
},
|
|
|
// 定时刷新接口
|
|
|
- startLightsStatusTimer(timerLen: any = 15000) {
|
|
|
- proxyData.clearLightStatusTimer();
|
|
|
- proxyData.lightsStatusTimer = setTimeout(() => {
|
|
|
- proxyData.clearLightStatusTimer();
|
|
|
+ startfloorHeathingStatus(timerLen: any = 15000) {
|
|
|
+ proxyData.clearFloorHeathingTimer();
|
|
|
+ proxyData.floorHeathingStatus = setTimeout(() => {
|
|
|
+ proxyData.clearFloorHeathingTimer();
|
|
|
proxyData.getFloorHeatingList();
|
|
|
}, timerLen);
|
|
|
},
|
|
|
});
|
|
|
- const isShowChildLight: any = computed(() => {
|
|
|
- return (
|
|
|
- proxyData.floorHeatingList.length &&
|
|
|
- proxyData.floorHeatingList.length > 1
|
|
|
- );
|
|
|
- });
|
|
|
- // onDeactivated(()=>{
|
|
|
- // destroyWatch()
|
|
|
- // })
|
|
|
watch(
|
|
|
[() => props, () => props.spaceId],
|
|
|
(newProps: any, oldProps: any) => {
|
|
|
- // debugger
|
|
|
if (newProps[0]) {
|
|
|
- proxyData.showLight = newProps[0].showLight;
|
|
|
- proxyData.userIsControl = newProps[0].userIsControl;
|
|
|
- proxyData.controlMode = newProps[0].controlMode;
|
|
|
proxyData.forceOverTimeFlag = newProps[0].forceOverTimeFlag;
|
|
|
proxyData.seviceEquipmentList = newProps[0].seviceEquipmentList;
|
|
|
}
|
|
|
|
|
|
if (newProps[1] && oldProps[1] && newProps[1] != oldProps[1]) {
|
|
|
// 空间id改变的重新获取值调用接口
|
|
|
- console.log("灯模块的spaceId变化了");
|
|
|
+ console.log("地暖的spaceId变化了");
|
|
|
// 清除原始数据
|
|
|
- proxyData.clearLightStatusTimer();
|
|
|
- proxyData.loadMore = false;
|
|
|
+ proxyData.clearFloorHeathingTimer();
|
|
|
proxyData.floorHeatingList = [];
|
|
|
proxyData.spaceId = newProps[1];
|
|
|
+ proxyData.clearFloorHeathingTimer();
|
|
|
proxyData.getFloorHeatingList();
|
|
|
}
|
|
|
},
|
|
@@ -546,15 +479,14 @@ export default defineComponent({
|
|
|
);
|
|
|
onBeforeUnmount(() => {
|
|
|
console.log("灯的组件销毁了--");
|
|
|
- proxyData.clearLightStatusTimer();
|
|
|
+ proxyData.clearFloorHeathingTimer();
|
|
|
});
|
|
|
|
|
|
onMounted(() => {
|
|
|
- // proxyData.clearLightStatusTimer();
|
|
|
+ // proxyData.clearFloorHeathingTimer();
|
|
|
proxyData.getFloorHeatingList();
|
|
|
});
|
|
|
return {
|
|
|
- isShowChildLight,
|
|
|
...toRefs(proxyData),
|
|
|
};
|
|
|
},
|
|
@@ -654,7 +586,7 @@ export default defineComponent({
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-.air-control {
|
|
|
+.floor-control {
|
|
|
padding: 10px;
|
|
|
border-top: 1px solid #e8ecf0;
|
|
|
.control-box {
|
|
@@ -722,20 +654,10 @@ export default defineComponent({
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- .temp-text {
|
|
|
- height: 20px;
|
|
|
- line-height: 20px;
|
|
|
- font-family: "Montserrat";
|
|
|
- font-style: normal;
|
|
|
- font-weight: 500;
|
|
|
- font-size: 11px;
|
|
|
- color: #c4c4c4;
|
|
|
- padding: 0 5px;
|
|
|
- }
|
|
|
.temp-slider {
|
|
|
position: relative;
|
|
|
display: flex;
|
|
|
- height: 22px;
|
|
|
+ height: 28px;
|
|
|
flex: 1;
|
|
|
padding: 0 32px;
|
|
|
background: linear-gradient(
|
|
@@ -750,13 +672,13 @@ export default defineComponent({
|
|
|
.temp-left,
|
|
|
.temp-right {
|
|
|
position: absolute;
|
|
|
+ width: 32px;
|
|
|
top: 50%;
|
|
|
transform: translateY(-50%);
|
|
|
font-family: "Persagy";
|
|
|
font-style: normal;
|
|
|
font-weight: 400;
|
|
|
font-size: 12px;
|
|
|
- line-height: 22px;
|
|
|
text-align: right;
|
|
|
color: #626c78;
|
|
|
}
|
|
@@ -767,6 +689,7 @@ export default defineComponent({
|
|
|
.temp-right {
|
|
|
right: 0px;
|
|
|
padding-right: 8px;
|
|
|
+ text-align: left;
|
|
|
}
|
|
|
|
|
|
.slider-bar {
|
|
@@ -809,7 +732,7 @@ export default defineComponent({
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-.air-control-padding {
|
|
|
+.floor-control-padding {
|
|
|
padding: 30px 20px;
|
|
|
// padding-top: 40px;
|
|
|
}
|