wszhyWx/src/views/page/sensorSet.vue
2023-10-05 11:59:23 +08:00

261 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="formula irrigateSet sensorSet">
<set-params></set-params>
<div class="page-content ">
<div class="table-title">
<img src="../../assets/image/sensor.png" alt=""> 传感器配置界面
</div>
<div class="sensor-view">
<div class="left scroll">
<div @click="toIndex(index)" :class="active == index ? 'active' : ''" v-for="item, index in 6"
:key="index">
<div>
{{ index + 1 }}#传感器通道
</div>
</div>
</div>
<div class="right">
<div class="right-top">
<div class="right-sel">
<div @click="changeOpen()">
<div v-if="openList.indexOf(active) == -1" class="no-sel"></div>
<div v-else class="sel"></div>
有效性
</div>
</div>
<div class="input-sel">
<div class="title">专感器类型</div>
<el-dropdown @command="handleCommand">
<div class="el-dropdown-link">
<input v-model="sensorType" type="text" class="input-input" placeholder="选择传感器类型">
<div class="arrow"><img src="../../assets/image/arrow.png" alt=""></div>
</div>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item v-for="item, index in typeList" :key="index" :command="item.value">{{
item.label }}</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</div>
<!-- <div class="right-sel">
<div @click="sel2 = !sel2">
<div v-if="!sel2" class="no-sel"></div>
<div v-else class="sel"></div>
通讯类传感器
</div>
<div @click="sel3 = !sel3">
<div v-if="!sel3" class="no-sel"></div>
<div v-else class="sel"></div>
模拟量传感器
</div>
</div> -->
</div>
<div class="right-bottom">
<div>
<div class="input-main">
<div>标定低点AD值</div>
<input @blur="blurChange(numberList[active] + 1, $event)" v-model="inputData[numberList[active] + 1]"
@input="change(numberList[active] + 1, $event)"
type="number" placeholder="0.0">
</div>
<div class="input-main">
<div>标定低点数据</div>
<input @blur="blurChange(numberList[active] + 2, $event)" v-model="inputData[numberList[active] + 2]"
@input="change(numberList[active] + 2, $event)"
type="number" placeholder="0.0">
</div>
</div>
<div>
<div class="input-main">
<div>标定高点AD值</div>
<input @blur="blurChange(numberList[active] + 3, $event)" v-model="inputData[numberList[active] + 3]"
@input="change(numberList[active] + 3, $event)"
type="number" placeholder="0.0">
</div>
<div class="input-main">
<div>标定高点数据</div>
<input @blur="blurChange(numberList[active] + 4, $event)" v-model="inputData[numberList[active] + 4]"
@input="change(numberList[active] + 4 , $event)"
type="number" placeholder="0.0">
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</template>
<script>
import setParams from '../../components/setParams.vue';
export default {
components: {
setParams
},
data() {
return {
active: 0,
sel1: true,
sel2: false,
sel3: false,
numberList: [273, 278, 283, 288, 293, 298],
inputData: [],
sensorType:'',//当前传感器类型
openList: [],//当前有效的传感器
typeList:this.$store.state.typeList
}
},
watch:{
'active'(newVal,oldVal){
this.getSensorType()
},
},
mounted() {
this.dataInit()
//input获取焦点后全选
let inputList = document.querySelectorAll('input');
for (let index = 0; index < inputList.length; index++) {
inputList[index].onfocus = this.selectValue;//input放入焦点全选文本
}
},
methods: {
//类型选择
handleCommand(command){
this.typeList.forEach((el,index)=>{
if(el.value==command){
this.sensorType=el.label
}
})
var dataNum = {
target: {
value:command,
},
};
this.change(this.numberList[this.active], dataNum);
},
getSensorType(){
this.typeList.forEach((el,index)=>{
if(el.value==this.inputData[this.numberList[this.active]]){
this.sensorType=el.label
}
})
},
toIndex(index) {
this.active = index
},
padString(str, length) {
return str.padStart(length, '0');
},
changeOpen() {
var inputData = this.inputData
var list1 = this.padString(inputData['272'].toString(2), 6)
var listData = list1.split('')
if (Number(listData[listData.length - 1 - this.active])) {
listData[listData.length - 1 - this.active] = '0'
this.openList.splice(this.openList.indexOf(this.active), 1)
} else {
listData[listData.length - 1 - this.active] = '1'
this.openList.push(this.active)
}
var listNew = listData.join("");
var dataNum = {
target: {
value: parseInt(listNew, 2),
},
};
this.change('272', dataNum);
},
getData272() {
var inputData = this.inputData
var list1 = this.padString(inputData['272'].toString(2), 6)
var number = 6
this.openList = []
for (var i = 0; i < number; i++) {
console.log(Number(list1[list1.length - 1 - i]));
if (Number(list1[list1.length - 1 - i])) {
this.openList.push(i)
}
}
},
dataInit() {
var store = this.$store.state
var data = {
equipmentId: store.equipmentList[store.equipmentIndex - 1].deviceId,
pattern: 272, //需要根据文档填写 //6目标ph-数值
regNum: 31,//从pattern取多少个数据
};
this.api.postReg(data).then((res) => {
if (res.data.code == 200) {
this.inputData = res.data.data;
this.getData272()
this.getSensorType()
} else {
this.$message.error(res.data.msg);
}
});
},
//全选文本
selectValue(e) {
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(this.timer){
this.timer && clearInterval(this.timer);
this.changeData(data);
}
},
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) {
this.api.postWriteFs(data).then((res) => {
if (res.data.code == 200) {
this.$message({
message: res.data.msg,
type: "success",
});
this.dataInit();
} else {
this.$message.error("请求出错");
}
this.timer=null
});
},
},
}
</script>
<style lang="scss"></style>