wszhyWx/src/views/wufang/waterPump.vue
2024-01-12 17:14:28 +08:00

294 lines
10 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<div class="waterPump">
<div class="table-title">
<img src="../../assets/img/waterPump.png" alt=""> 加热水泵
</div>
<div class="title-tips">
<div class="input-btn">
<div class="btn btn-tips" @click="changeOpen(0)" :class="openIndex == 0 ? 'blue' : 'green'">
{{ openIndex == 0 ? '无效' : '有效' }}
</div>
</div>
</div>
<div class="flex-view">
<div class="input-btn">
<div class="btn" @click="changeOpen(1)" :class="openIndex == 1 ? 'blue' : 'green'">
<img src="../../assets/image/irrigateSet2.png" alt="" />自动运行
</div>
<div class="btn" @click="changeOpen(2)" :class="openIndex == 2 ? 'blue' : 'green'">
<img src="../../assets/image/irrigateSet3.png" alt="" />手动打开
</div>
<div class="btn" @click="changeOpen(3)" :class="openIndex == 3 ? 'blue' : 'green'">
<img src="../../assets/image/irrigateSet1.png" alt="" />手动关闭
</div>
</div>
</div>
<div class="flex-view border-none">
<div class="input-main border-right">
<span>室内1#平均温度白天时段高于</span>
<input @blur="blurChangeCount('21521', $event)" v-model="inputData['21521']"
@input="changeCountData('21521', $event)" type="text" value="60" placeholder="60" />
<span>启动</span>
</div>
<div class="input-main">
<span>滞回带</span>
<input @blur="blurChange10('21522', $event)" v-model="inputData['21522']"
@input="changeCount10('21522', $event)" type="text" value="60" placeholder="60" />
<span></span>
</div>
</div>
<div class="flex-view border-none">
<div class="input-main">
<span>室内1#平均温度夜间时段低于</span>
<input @blur="blurChangeCount('21523', $event)" v-model="inputData['21523']"
@input="changeCountData('21523', $event)" type="text" value="60" placeholder="60" />
<span>启动</span>
</div>
</div>
<div class="flex-view border-none">
<div class="input-main">
<span>室内1#平均温度夜间时段高于</span>
<input @blur="blurChangeCount('21524', $event)" v-model="inputData['21524']"
@input="changeCountData('21524', $event)" type="text" value="60" placeholder="60" />
<span>停止</span>
</div>
</div>
<div class="flex-view border-none">
<div class="input-main">
<span style="width: 231px; display: inline-block;">打开或关闭输出通道</span>
<input @blur="blurChange('21525', $event)" v-model="inputData['21525']"
@input="change('21525', $event)" type="text" value="60" placeholder="60" />
</div>
</div>
</div>
</template>
<script>
export default {
data() {
return {
openIndex: 1,
inputData: {},
}
},
//如果接口还未调通 跳转到页面后 监听到数据变化就触发数据读取
watch: {
"$store.state.ControlData"(newVal) {
this.dataInit();
},
},
// 当前页面关闭前将数据存入vuex
beforeDestroy() {
var store = this.$store.state;
this.inputData['21520']= this.openIndex
store.ControlData = this.inputData;
},
mounted() {
var store = this.$store.state;
// this.dataInit();
if(store.ControlData){
this.dataInit();
}
//input获取焦点后全选
let inputList = document.querySelectorAll('input');
for (let index = 0; index < inputList.length; index++) {
inputList[index].onfocus = this.selectValue;//input放入焦点全选文本
}
},
methods: {
padString(str, length) {
return str.padStart(length, '0');
},
changeOpen(index) {
this.openIndex = index
var dataNum = {
target: {
value: this.openIndex,
},
};
this.changeBtn(21520, dataNum);
},
//失去焦点 计算公式 x/10
blurChange10(code, el) {
var store = this.$store.state
var data = {
equipmentId: store.equipmentList[store.equipmentIndex - 1].deviceId,
regAddress: code,
num: el.target.value * 10,
}; //避免开启多个计时器
if (store.nowInput != el.target.value) {
this.changeData(data);
}
// if (this.timer) {
// this.timer && clearInterval(this.timer);
// this.changeData(data);
// }
},
//反向计算 计算公式 x/10
changeCount10(code, el) {
var data = el.target.value * 10
var sendData = {
target: {
value: data
}
}
this.change(code, sendData)
},
//失去焦点
blurChangeCount(code, el) {
var store = this.$store.state
var data = {
equipmentId: store.equipmentList[store.equipmentIndex - 1].deviceId,
regAddress: code,
num: (el.target.value * 10) + 400,
}; //避免开启多个计时器
if (store.nowInput != el.target.value) {
this.changeData(data);
}
// if (this.timer) {
// this.timer && clearInterval(this.timer);
// this.changeData(data);
// }
},
changeCountData(code, el) {
var data = (el.target.value * 10) + 400
var sendData = {
target: {
value: data
}
}
this.change(code, sendData)
},
countData(data) {
if (data) {
return (data - 400) / 10
} else {
return 0
}
},
// 计算展示值 计算公式 x/10
countData10(data) {
if (data) {
return data / 10
} else {
return 0
}
},
dataInit() {
var store = this.$store.state
this.inputData = store.ControlData
this.openIndex = this.inputData['21520']
// this.inputData['21521'] = this.countData(this.inputData['21521'])
// this.inputData['21522'] = this.countData10(this.inputData['21522'])
// this.inputData['21523'] = this.countData(this.inputData['21523'])
// this.inputData['21524'] = this.countData(this.inputData['21524'])
// var data = {
// deviceId: store.equipmentList[store.equipmentIndex - 1].deviceId,
// };
// this.api.readControl_fiveControl(data).then(res => {
// if(res.data.code==200){
// }
// })
},
//全选文本
selectValue(e) {
var store = this.$store.state
store.nowInput=e.target.value
e.currentTarget.select();
},
//失去焦点
blurChange(code, el) {
var store = this.$store.state
var data = {
equipmentId: store.equipmentList[store.equipmentIndex - 1].deviceId,
regAddress: code,
num: el.target.value,
}; //避免开启多个计时器
if (store.nowInput != el.target.value) {
this.changeData(data);
}
// if (this.timer) {
// this.timer && clearInterval(this.timer);
// this.changeData(data);
// }
},
changeBtn(code, el) {
var store = this.$store.state
var data = {
equipmentId: store.equipmentList[store.equipmentIndex - 1].deviceId,
regAddress: code,
num: el.target.value,
};
this.delayTimerBtn(0, data);
},
//切换btn的限制 写入停止后j*100毫秒调取函数
delayTimerBtn(i, data) {
const that = this;
//整体接口
let j = this.$store.state.lateSendBtn;
//避免开启多个计时器
this.timer && clearInterval(this.timer);
this.timer = setInterval(() => {
++i;
if (i == j) {
that.changeData(data);
clearInterval(this.timer);
}
}, 100);
},
change(code, el) {
var store = this.$store.state
var data = {
equipmentId: store.equipmentList[store.equipmentIndex - 1].deviceId,
regAddress: code,
num: el.target.value,
};
this.delayTimer(0, data);
},
//限制 写入停止后j*100毫秒调取函数
delayTimer(i, data) {
// const that = this;
// //整体接口
// let j = this.$store.state.lateSend;
// //避免开启多个计时器
// this.timer && clearInterval(this.timer);
// this.timer = setInterval(() => {
// ++i;
// if (i == j) {
// that.changeData(data);
// clearInterval(this.timer);
// }
// }, 100);
},
changeData(data) {
var store = this.$store.state
this.api.postControlWrite(data).then((res) => {
if (res.data.code == 200) {
this.$message({
message: res.data.msg,
type: "success",
});
store.nowInput=''
// this.dataInit();
} else {
this.inputData[data.regAddress]=store.nowInput
this.$message.error(res.data.msg);
}
this.timer = null
});
},
},
}
</script>
<style lang="scss"></style>