jsy-app/pages/dev-ops/valve.vue
2025-02-22 19:36:28 +08:00

228 lines
6.8 KiB
Vue
Raw Permalink 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>
<z-paging ref="paging" @query="queryList" v-model="dataList" :auto-show-system-loading="true"
empty-view-text="抱歉,暂时还没有相关数据!">
<template #top>
<custom-nav-bar :left="true" title="阀门"></custom-nav-bar>
</template>
<view class="card" v-for="item in dataList">
<view class="cards-title">
<view>
<view style="font-size: 15px;"><em
style="font-weight: bold;">{{ item.wo.showName }}</em>{{ item.device.deviceCode }}</view>
<uni-tag class="bg-green" :circle="true" text="在线"
v-if="dc.dataObj[item.device.deviceCode]?.online" />
<uni-tag class="bg-red" :circle="true" text="离线" v-else />
</view>
<view class="right">
<u-button type="success" size="mini" text="刷新"
:loading="dc.dataObj[item.device.deviceCode]?.refresh"
@click="dc.refreshDeviceItem(item.device.deviceCode, item.device)" />
</view>
</view>
<view class="cards-content">
<view class="txt-list">
<view class="list2">
<view style="width: 60%;">
<text>电量:</text>
{{ dc.dataObj[item.device.deviceCode]?.adc.b || '-' }}%
</view>
<view style="width: 40%;">
<text>频段:</text>{{ dataObj[item.device.deviceCode]?.lf || item.device.deviceExtendValve.rolaFrequency}}
</view>
<view style="width: 60%;">
<text>软/硬件版本:</text>
{{ dataObj[item.device.deviceCode]?.sv || item.device.softVer}} /
{{ dataObj[item.device.deviceCode]?.dv || item.device.deviceVersion }}
</view>
<view style="width: 40%;">
<text>压力:</text>{{ dc.dataObj[item.device.deviceCode]?.adc.p || '-' }}
</view>
</view>
</view>
<view class="btn-grid">
<u-button type="primary" @click="restart(item)">重启</u-button>
<u-button type="primary" @click="editRolaFrequency(item)">修改频段</u-button>
<u-button type="primary" @click="getConfig(item)">获取配置</u-button>
<!-- <u-button type="primary" @click="" disabled>压力校准</u-button>
<u-button type="primary" @click="" disabled>桥接</u-button>
<u-button type="primary" @click="" disabled>删除桥接</u-button> -->
</view>
</view>
</view>
</z-paging>
<!-- 修改频段 -->
<custom-popup ref="refFrequency" :title="rolaFrequency.item?.deviceCode" :footer="true"
@confirm="editRolaFrequencyHandler">
<view class="jz-info" style="width: 80vw;height:150px;padding: 10px;">
<uni-forms ref="baseForm" style="padding-top: 10px;">
<uni-forms-item label="原频段" required>
<uni-data-select v-model="rolaFrequency.old" :localdata="rolaFrequency.range" :clear="false" />
</uni-forms-item>
<uni-forms-item label="新频段" required>
<uni-data-select v-model="rolaFrequency.new" :localdata="rolaFrequency.range" :clear="false" />
</uni-forms-item>
</uni-forms>
</view>
</custom-popup>
</template>
<script>
import plugins from "@/plugins";
import * as DevOpsApi from "@/api/dev-ops/index.js"
export default {
data() {
return {
station: null,
queryParams: {
landId: null, //地块id
stationId: null, //基站id
},
dataList: [],
dc: getApp().dc, // 设备控制公共代码
dataObj: {},
topics: [],
rolaFrequency: {
item: null,
old: null,
new: null,
range: [],
},
}
},
onLoad(par) {
if (par.station) {
this.station = JSON.parse(par.station)
this.queryParams = {
landId: this.station.landId,
stationId: this.station.id,
}
} else {
this.queryParams = {
landId: -1,
stationId: -1,
}
}
// 频段
let list = [];
for (let i = 410; i < 491; i++) {
let lfObj = {
value: i,
text: i.toString()
}
list.push(lfObj);
}
this.rolaFrequency.range = list;
const that = this;
getApp().on("mqtt", "mqtt_devOps_valve", function(e) {
if (e.type == "state") {
// that.mqttConnected = e.connected;
} else if (e.type == "msg") {
if (e.topic.includes("jsy/iot/deviceConfig/2/") || e.topic.includes(
"jsy/iot/deviceConfig/13/")) {
const arr = e.topic.split("/");
const deviceCode = arr[4];
let obj = that.dataObj[deviceCode] || {};
if (e.data.type == "gvc") {
obj = Object.assign(obj, {
dv: e.data.data.dv,
sv: e.data.data.sv,
lf: e.data.data.lf,
})
}
if (e.data.type == "vlf" && e.data.res == 1) {
obj = Object.assign(obj, {
lf: e.data.data,
})
}
that.dataObj[deviceCode] = obj;
}
}
});
},
onShow() {},
mounted() {},
onUnload() {
getApp().mqttUnsubscribes(this.topics);
getApp().off("mqtt", "mqtt_devOps_valve")
},
methods: {
queryList(pageNo, pageSize) {
DevOpsApi.getStationValvelist(this.queryParams.landId, this.queryParams.stationId).then(res => {
this.$refs.paging.completeByTotal(res.data.valve);
this.mqttSubscribes(res.data.valve);
});
},
mqttSubscribes(rows) {
if (rows && rows.length) {
let topic = [];
rows.forEach(item => {
topic.push(
`jsy/iot/deviceConfig/${item.device.deviceTypeId}/${item.device.deviceCode}`); //获取配置
});
this.topics = topic;
getApp().mqttSubscribes(this.topics);
}
},
// 重启
restart(item) {
plugins.modal.confirm(`重启"${item.device.deviceCode}"`).then(() => {
DevOpsApi.resetStationDevice(item.device.deviceCode).then(res => {
plugins.modal.msg(res.msg)
})
}).catch(() => {});
},
// 修改频段
editRolaFrequency(item) {
this.$refs.refFrequency.show();
this.rolaFrequency.item = item.device;
this.rolaFrequency.old = item.device.deviceExtendValve.rolaFrequency;
this.rolaFrequency.new = item.device.deviceExtendValve.rolaFrequency;
},
// 获取配置
getConfig(item) {
plugins.modal.confirm("获取配置").then(() => {
DevOpsApi.gvc(item.device.deviceCode).then(res => {
plugins.modal.msg(res.msg)
})
}).catch(() => {});
},
// 关闭弹出层
close() {
for (var key in this.pop) {
this.pop[key] = false;
}
},
editRolaFrequencyHandler(e) {
if (!e) {
return;
}
// if (this.rolaFrequency.item.rolaFrequency == this.rolaFrequency.rolaFrequency) {
// plugins.modal.msg("新旧频段不能相同!")
// return;
// }
let msg = `您确定要修改【${this.rolaFrequency.item.deviceCode}】的频段为【${this.rolaFrequency.new}】?`;
plugins.modal.confirm(msg).then(() => {
DevOpsApi.vlf({
stationCode: this.station.deviceCode,
deviceCode: this.rolaFrequency.item.deviceCode,
oldFrequency: this.rolaFrequency.old,
newFrequency: this.rolaFrequency.new
}).then(res => {
plugins.modal.msg(res.msg)
})
}).catch(() => {
this.pop.rolaFrequency = true;
});
},
}
}
</script>
<style lang="scss">
</style>