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

290 lines
8.2 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>
<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="index-container">
<view class="item-container" v-for="item in dataList">
<view style="display: flex; align-items: center; justify-content: space-between;">
<view class="flex-text" style="margin: 15px;">
<view class="flex-text-one" style="color: black;">{{ item.wo.showName }}</view>
<view>{{ item.device.deviceCode }}</view>
<view style="margin-left: 10px;">
<u-tag text="在线" type="success" plain v-if="dc.dataObj[item.device.deviceCode]?.online" />
<u-tag text="离线" type="error" plain v-else />
</view>
</view>
<view style="margin-right: 5px;">
<u-button type="success" text="刷新" icon="reload"
:loading="dc.dataObj[item.device.deviceCode]?.refresh"
@click="dc.refreshDeviceItem(item.device.deviceCode, item.device)" />
</view>
</view>
<u-gap height="1" bgColor="#D2D2D2"></u-gap>
<view style="display: flex;justify-content: space-between;align-items: center;">
<uni-row class="data">
<uni-col :span="12">
<view class="flex-text global-font-size-1">
<view class="flex-text-one">电量:</view>
<view>{{ dc.dataObj[item.device.deviceCode]?.adc.b || '-' }}%</view>
</view>
</uni-col>
<uni-col :span="12">
<view class="flex-text global-font-size-1">
<view class="flex-text-one">频段:</view>
<view>
{{ dataObj[item.device.deviceCode]?.lf || item.device.deviceExtendValve.rolaFrequency}}
</view>
</view>
</uni-col>
<uni-col :span="12">
<view class="flex-text global-font-size-1">
<view class="flex-text-one">软/硬件版本:</view>
<view>{{ dataObj[item.device.deviceCode]?.sv || item.device.softVer}} /
{{ dataObj[item.device.deviceCode]?.dv || item.device.deviceVersion }}
</view>
</view>
</uni-col>
<uni-col :span="12">
<view class="flex-text global-font-size-1">
<view class="flex-text-one">压力:</view>
<view>{{ dc.dataObj[item.device.deviceCode]?.adc.p || '-' }}</view>
</view>
</uni-col>
<uni-col :span="8">
<u-button type="success" @click="restart(item)" disabled>重启</u-button>
</uni-col>
<uni-col :span="8" v-hasPermi="['iot:dev-ops:vlf']">
<u-button type="success" @click="editRolaFrequency(item)">修改频段</u-button>
</uni-col>
<uni-col :span="8" v-hasPermi="['iot:dev-ops:gvc']">
<u-button type="success" @click="getConfig(item)">获取配置</u-button>
</uni-col>
<uni-col :span="8">
<u-button type="success" @click="" disabled>压力校准</u-button>
</uni-col>
<uni-col :span="8">
<u-button type="success" @click="" disabled>桥接</u-button>
</uni-col>
<uni-col :span="8">
<u-button type="success" @click="" disabled>删除桥接</u-button>
</uni-col>
</uni-row>
</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 * 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.rows);
this.mqttSubscribes(res.rows);
});
},
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) {
console.error("重启:", item);
},
// 修改频段
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) {
this.$showConfirm("获取配置").then(res => {
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}】?`;
this.$showConfirm(msg).then(res => {
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">
.index-container {
.list {
margin: 0px 10px;
}
.list-size {
display: flex;
padding: 5px 5px;
background: white;
justify-content: center;
}
.search {
background-color: white;
padding: 10px;
}
.item-container {
margin: 10px 10px;
background-color: white;
padding-bottom: 10px;
border-radius: 10px;
box-shadow: 1px 1px 2px 2px rgba(0, 0, 0, 0.05);
}
.flex-text {
display: flex;
align-items: center;
.flex-text-one {
color: #939393;
font-weight: bold;
}
}
.data {
margin: 10px 20px !important;
width: 100%;
.uni-col {
margin-bottom: 5px;
}
}
}
</style>