This commit is contained in:
Iruka 2024-12-02 15:23:49 +08:00
parent 0e05e64ca5
commit 3576d9e17e
4 changed files with 461 additions and 106 deletions

View File

@ -1,6 +1,6 @@
VITE_ENV = 'development'
#VITE_BASE_API = 'http://39.105.121.219'
VITE_BASE_API = 'http://127.0.0.1'
VITE_BASE_API = 'http://192.168.0.239'
#VITE_BASE_API = 'http://api.jsyzhineng.com'
VITE_APP_BASE_API = '/dev-api'
VITE_BASE_MQTT = '39.105.121.219:8083/mqtt'

View File

@ -0,0 +1,193 @@
<!-- <template>
<el-dialog :title="title" v-model="open" width="400px" style="max-height: 700px;top:20%;">
<el-descriptions title="" column="1" border label-width="180">
<el-descriptions-item v-for="item in items" :label="item.title" align="center">
{{ item.value }}{{ item.unit }}
</el-descriptions-item>
</el-descriptions>
</el-dialog>
</template> -->
<template>
<u-popup :show="open" mode="center" @close="close">
<view style="border: 1px solid red;">
<view v-for="item in items">
<text>{{ item.title }}</text>
<text>{{ item.value }}{{ item.unit }}</text>
<!-- <u-text type="primary" text="主色1"></u-text> -->
</view>
</view>
</u-popup>
</template>
<script>
export default {
name: "ADC",
components: {},
props: {
// land: {
// type: Object,
// default: {},
// required: true
// },
},
data() {
return {
title: "设备ADC",
open: false,
items: [],
}
},
created() {},
mounted() {},
methods: {
/**
* 显示方法
* @param type 1基站 2阀门
* @param row
* @param data
*/
async show(type, row, data = {}) {
this.items = [];
if (type == 1) {
this.title = `基站ADC【${row.deviceCode}`;
this.items.push({
title: "软/硬件版本",
value: `${row?.softVer} / ${row?.deviceVersion}`,
unit: null
});
this.items.push({
title: "充电状态",
value: data?.adc?.charging ? '充电中' : '未充电',
unit: null
});
this.items.push({
title: "电池ADC",
value: data?.thingData?.adcProperty?.b,
unit: "V"
});
this.items.push({
title: "电池",
value: data?.b,
unit: "%"
});
this.items.push({
title: "433信号强度",
value: data?.thingData?.ls.value,
unit: null
});
this.items.push({
title: "433ADC",
value: data?.thingData?.adcProperty?.l,
unit: "V"
});
this.items.push({
title: "4G信号强度",
value: data?.rssi,
unit: null
});
this.items.push({
title: "4G供电ADC",
value: data?.thingData?.adcProperty?.g,
unit: "V"
});
this.items.push({
title: "MCU",
value: data?.thingData?.adcProperty?.mcu,
unit: "V"
});
this.items.push({
title: "充电电流ADC",
value: data?.thingData?.adcProperty?.cc,
unit: "mA"
});
this.items.push({
title: "充电电压ADC",
value: data?.thingData?.adcProperty?.ps,
unit: "V"
});
this.items.push({
title: "数据上报时间",
value: data?.date,
unit: null
});
}
if (type == 2) {
this.title = `阀门ADC【${row.showName}`;
this.items.push({
title: "阀门",
value: row.device?.deviceCode,
unit: null
});
this.items.push({
title: "软/硬件版本",
value: `${row.device?.softVer} / ${row.device?.deviceVersion}`,
unit: null
});
this.items.push({
title: "充电状态",
value: data?.adc?.charging ? '充电中' : '未充电',
unit: null
});
this.items.push({
title: "电池ADC",
value: data?.thingData?.adcProperty?.b,
unit: "V"
});
this.items.push({
title: "电池",
value: data?.adc?.b,
unit: "%"
});
this.items.push({
title: "温度ADC",
value: data?.adc?.t,
unit: "℃"
});
this.items.push({
title: "压力ADC",
value: data?.adc?.p.toString(),
unit: null
});
let angel = "";
switch (row.device.deviceTypeKey) {
case "butterflyValve":
break;
case "valve":
case "fiveValve":
angel = data?.thingData?.va?.value;
break;
}
this.items.push({
title: "角度",
value: angel,
unit: null
});
this.items.push({
title: "MCU",
value: data?.thingData?.adcProperty?.mcu,
unit: null
});
this.items.push({
title: "充电电流ADC",
value: data?.thingData?.adcProperty?.cc,
unit: "mA"
});
this.items.push({
title: "充电电压ADC",
value: data?.thingData?.adcProperty?.ps,
unit: "V"
});
this.items.push({
title: "数据上报时间",
value: data?.date,
unit: null
});
}
this.open = true;
},
close() {
this.open = false;
}
}
}
</script>

View File

@ -0,0 +1,191 @@
<!-- <template>
<el-dialog :title="title" v-model="open" width="400px" style="max-height: 700px;top:20%;">
<el-descriptions title="" column="1" border label-width="180">
<el-descriptions-item v-for="item in items" :label="item.title" align="center">
{{ item.value }}{{ item.unit }}
</el-descriptions-item>
</el-descriptions>
</el-dialog>
</template> -->
<template>
<up-popup :show="open" mode="center" @close="close" @open="open">
<view v-for="item in items">
<text>{{ item.title }}</text>
<text>{{ item.value }}{{ item.unit }}</text>
<!-- <up-text type="primary" text="主色"></up-text> -->
</view>
</up-popup>
</template>
<script>
export default {
name: "DeviceMp",
components: {},
props: {
// land: {
// type: Object,
// default: {},
// required: true
// },
},
data() {
return {
title: "设备ADC",
open: false,
items: [],
}
},
created() {},
mounted() {},
methods: {
/**
* 显示方法
* @param type 1基站 2阀门
* @param row
* @param data
*/
async show(type, row, data = {}) {
this.items = [];
if (type == 1) {
this.title = `基站ADC【${row.deviceCode}`;
this.items.push({
title: "软/硬件版本",
value: `${row?.softVer} / ${row?.deviceVersion}`,
unit: null
});
this.items.push({
title: "充电状态",
value: data?.adc?.charging ? '充电中' : '未充电',
unit: null
});
this.items.push({
title: "电池ADC",
value: data?.thingData?.adcProperty?.b,
unit: "V"
});
this.items.push({
title: "电池",
value: data?.b,
unit: "%"
});
this.items.push({
title: "433信号强度",
value: data?.thingData?.ls.value,
unit: null
});
this.items.push({
title: "433ADC",
value: data?.thingData?.adcProperty?.l,
unit: "V"
});
this.items.push({
title: "4G信号强度",
value: data?.rssi,
unit: null
});
this.items.push({
title: "4G供电ADC",
value: data?.thingData?.adcProperty?.g,
unit: "V"
});
this.items.push({
title: "MCU",
value: data?.thingData?.adcProperty?.mcu,
unit: "V"
});
this.items.push({
title: "充电电流ADC",
value: data?.thingData?.adcProperty?.cc,
unit: "mA"
});
this.items.push({
title: "充电电压ADC",
value: data?.thingData?.adcProperty?.ps,
unit: "V"
});
this.items.push({
title: "数据上报时间",
value: data?.date,
unit: null
});
}
if (type == 2) {
this.title = `阀门ADC【${row.showName}`;
this.items.push({
title: "阀门",
value: row.device?.deviceCode,
unit: null
});
this.items.push({
title: "软/硬件版本",
value: `${row.device?.softVer} / ${row.device?.deviceVersion}`,
unit: null
});
this.items.push({
title: "充电状态",
value: data?.adc?.charging ? '充电中' : '未充电',
unit: null
});
this.items.push({
title: "电池ADC",
value: data?.thingData?.adcProperty?.b,
unit: "V"
});
this.items.push({
title: "电池",
value: data?.adc?.b,
unit: "%"
});
this.items.push({
title: "温度ADC",
value: data?.adc?.t,
unit: "℃"
});
this.items.push({
title: "压力ADC",
value: data?.adc?.p.toString(),
unit: null
});
let angel = "";
switch (row.device.deviceTypeKey) {
case "butterflyValve":
break;
case "valve":
case "fiveValve":
angel = data?.thingData?.va?.value;
break;
}
this.items.push({
title: "角度",
value: angel,
unit: null
});
this.items.push({
title: "MCU",
value: data?.thingData?.adcProperty?.mcu,
unit: null
});
this.items.push({
title: "充电电流ADC",
value: data?.thingData?.adcProperty?.cc,
unit: "mA"
});
this.items.push({
title: "充电电压ADC",
value: data?.thingData?.adcProperty?.ps,
unit: "V"
});
this.items.push({
title: "数据上报时间",
value: data?.date,
unit: null
});
}
this.open = true;
},
close() {
this.open = false;
}
}
}
</script>

View File

@ -38,28 +38,52 @@
</view>
</view>
<view class="content-section">
<!-- 统计吸顶效果 -->
<view class="grey-box ceiling" :style="[isSticky ? '':'opacity: 0;']">
<view class="grey-box normal">
<u-grid :border="false" col="4">
<u-grid-item :class="stateScreen.all" @click="valveStateScreen('all')">
<u-grid-item :class="dc.screenKey == 'all' ? 'click':''" @click="valveStateScreen('all')">
<view class="iconfont icon-threshold"></view>
<u-badge numberType="overflow" type="success" max="999" :value="dc.screen.all" />
<text class="text">总设备</text>
</u-grid-item>
<u-grid-item :class="dc.screenKey == 'online' ? 'click':''" @click="valveStateScreen('online')">
<view class="iconfont icon-jizhan"></view>
<u-badge numberType="overflow" type="success" max="999" :value="dc.screen.online" />
<text class="text">在线设备</text>
</u-grid-item>
<u-grid-item :class="dc.screenKey == 'error' ? 'click':''" @click="valveStateScreen('error')">
<view class="iconfont icon-guzhang"></view>
<u-badge numberType="overflow" type="success" max="999" :value="dc.screen.error" />
<text class="text">异常设备</text>
</u-grid-item>
<u-grid-item @click="openDialog('mp')">
<view class="iconfont icon-shangqing"></view>
<u-badge numberType="overflow" type="success" max="999" />
<text class="text">土壤墒情</text>
</u-grid-item>
</u-grid>
</view>
<!-- 统计吸顶效果 -->
<view class="grey-box ceiling" :style="[isSticky ? '':'display: none;','opacity: 0;']">
<u-grid :border="false" col="4">
<u-grid-item :class="dc.screenKey == 'all' ? 'click':''" @click="valveStateScreen('all')">
<view class="flex">
<view class="iconfont icon-threshold"></view>
<u-badge numberType="overflow" type="success" max="999" :value="dc.screen.all" />
</view>
</u-grid-item>
<u-grid-item :class="stateScreen.online" @click="valveStateScreen('online')">
<u-grid-item :class="dc.screenKey == 'online' ? 'click':''" @click="valveStateScreen('online')">
<view class="flex">
<view class="iconfont icon-jizhan"></view>
<u-badge numberType="overflow" type="success" max="999" :value="dc.screen.online" />
</view>
</u-grid-item>
<u-grid-item :class="stateScreen.error" @click="valveStateScreen('error')">
<u-grid-item :class="dc.screenKey == 'error' ? 'click':''" @click="valveStateScreen('error')">
<view class="flex">
<view class="iconfont icon-guzhang"></view>
<u-badge numberType="overflow" type="success" max="999" :value="dc.screen.error" />
</view>
</u-grid-item>
<u-grid-item @click="showDeviceMap">
<u-grid-item @click="openDialog('mp')">
<view class="flex">
<view class="iconfont icon-shangqing"></view>
<u-badge numberType="overflow" type="success" max="999" />
@ -67,81 +91,6 @@
</u-grid-item>
</u-grid>
</view>
<view class="grey-box normal">
<u-grid :border="false" col="4">
<u-grid-item :class="stateScreen.all" @click="valveStateScreen('all')">
<view class="iconfont icon-threshold"></view>
<u-badge numberType="overflow" type="success" max="999" :value="dc.screen.all" />
<text class="text">总设备</text>
</u-grid-item>
<u-grid-item :class="stateScreen.online" @click="valveStateScreen('online')">
<view class="iconfont icon-jizhan"></view>
<u-badge numberType="overflow" type="success" max="999" :value="dc.screen.online" />
<text class="text">在线设备</text>
</u-grid-item>
<u-grid-item :class="stateScreen.error" @click="valveStateScreen('error')">
<view class="iconfont icon-guzhang"></view>
<u-badge numberType="overflow" type="success" max="999" :value="dc.screen.error" />
<text class="text">异常设备</text>
</u-grid-item>
<u-grid-item @click="showDeviceMap">
<view class="iconfont icon-shangqing"></view>
<u-badge numberType="overflow" type="success" max="999" />
<text class="text">土壤墒情</text>
</u-grid-item>
</u-grid>
</view>
<!-- <view :class="[ isSticky ?'ceiling':'normal','grey-box']" :style="[isSticky ? 'position: sticky;':'']">
<u-grid :border="false" col="4" v-if="isSticky">
<u-grid-item :class="dc.screenKey == 'all' ? 'click':''" @click="valveStateScreen('all')">
<view class="flex">
<view class="iconfont icon-threshold"></view>
<u-badge numberType="overflow" type="success" max="999" :value="dc.screen.all" />
</view>
</u-grid-item>
<u-grid-item :class="dc.screenKey == 'online' ? 'click':''" @click="valveStateScreen('online')">
<view class="flex">
<view class="iconfont icon-jizhan"></view>
<u-badge numberType="overflow" type="success" max="999" :value="dc.screen.online" />
</view>
</u-grid-item>
<u-grid-item :class="dc.screenKey == 'error' ? 'click':''" @click="valveStateScreen('error')">
<view class="flex">
<view class="iconfont icon-guzhang"></view>
<u-badge numberType="overflow" type="success" max="999" :value="dc.screen.error" />
</view>
</u-grid-item>
<u-grid-item @click="showDeviceMap">
<view class="flex">
<view class="iconfont icon-shangqing"></view>
<u-badge numberType="overflow" type="success" max="999"
:value="dc.others.deviceMp.length" />
</view>
</u-grid-item>
</u-grid>
<u-grid :border="false" col="4" v-else>
<u-grid-item :class="dc.screenKey == 'all' ? 'click':''" @click="valveStateScreen('all')">
<view class="iconfont icon-threshold"></view>
<u-badge numberType="overflow" type="success" max="999" :value="dc.screen.all" />
<text class="text">总设备</text>
</u-grid-item>
<u-grid-item :class="dc.screenKey == 'online' ? 'click':''" @click="valveStateScreen('online')">
<view class="iconfont icon-jizhan"></view>
<u-badge numberType="overflow" type="success" max="999" :value="dc.screen.online" />
<text class="text">在线设备</text>
</u-grid-item>
<u-grid-item :class="dc.screenKey == 'error' ? 'click':''" @click="valveStateScreen('error')">
<view class="iconfont icon-guzhang"></view>
<u-badge numberType="overflow" type="success" max="999" :value="dc.screen.error" />
<text class="text">异常设备</text>
</u-grid-item>
<u-grid-item @click="showDeviceMap">
<view class="iconfont icon-shangqing"></view>
<u-badge numberType="overflow" type="success" max="999" :value="dc.others.deviceMp.length" />
<text class="text">土壤墒情</text>
</u-grid-item>
</u-grid>
</view> -->
<!-- 列表 -->
<view class="grey-box" style="border-radius: 0 0 15px 15px;">
<!-- 基站 -->
@ -170,7 +119,7 @@
<view class="u-collapse-content">
<u-row v-for="item in dc.stations">
<u-col span="3">
<view class="fixed">
<view class="fixed" @click="stationLeftClickCode(item)">
<text
:class="[dc.dataObj[item.deviceCode]?.online ? 'font-green':'font-red']"></text>
<view>{{ item.deviceCode }}</view>
@ -541,14 +490,13 @@
</view>
</view>
<!-- 弹窗 -->
<view>
<!-- 地块选择 -->
<custom-select-land ref="landRef" :data="ijs.companys" :defaultSelect="ijs.land" @getLand="getLand"
@select="landChange" />
<!-- 角度 -->
<custom-angle-slider ref="refAngleSlider" mode="bottom" @close="" @confirm="swiperConfirm" />
</view>
<!-- 地块选择 -->
<custom-select-land ref="landRef" :data="ijs.companys" :defaultSelect="ijs.land" @getLand="getLand"
@select="landChange" />
<!-- 角度 -->
<custom-angle-slider ref="refAngleSlider" mode="bottom" @close="" @confirm="swiperConfirm" />
<!-- 墒情 -->
<custom-index-adc ref="adcRef" />
</template>
@ -615,8 +563,8 @@
uni.$off("open-angle-slider");
},
onPageScroll(e) { //
console.log(e.scrollTop); //
if (e.scrollTop >= 80) {
// console.log(e.scrollTop); //
if (e.scrollTop >= 75) {
this.isSticky = true;
} else {
this.isSticky = false;
@ -643,8 +591,38 @@
this.$refs.landRef.addLand(e, res.data);
});
},
//
//
toQRCode() {},
// adc
stationLeftClickCode(item) {
this.$refs.adcRef.show(1, item, this.dc.dataObj[item.deviceCode]);
},
//
async openDialog(key, row = null) {
switch (key) {
// case "mp": //
// this.$refs.mpRef.show(this.land);
// break;
// case "wh": //
// this.$refs.wateringHistoryRef.show(this.land, row);
// break;
// case "log": //
// this.$refs.deviceLogRef.show(this.land, row);
// break;
case "adc": //adc
this.$refs.adcRef.show(2, row, this.dc.dataObj[row.dataKey]);
break;
case "chart": //线
this.$refs.adcChartRef.show(row);
break;
case "wo":
this.$refs.woRemarkRef.show(row);
break;
}
},
//
handleKeyup(e) {
@ -861,17 +839,10 @@
opacity: 1;
}
}
.grey-box.ceiling {
animation: opacity 1s ease-in-out forwards;
// transition: transform 1s;
// transform: translateY(-100%);
// opacity: 0;
// transition: opacity 1s;
animation: opacity 0.3s ease-in-out forwards;
border-radius: 0;
padding-bottom: 0px;
margin: 0;
@ -880,10 +851,10 @@
position: fixed;
width: 100%;
/* #ifdef H5 */
top: 44px;
top: 40px;
/* #endif */
/* #ifdef APP-PLUS */
top: 44px;
top: 67px;
/* #endif */
@ -931,7 +902,7 @@
padding: 10px 5px;
.u-grid {
margin-bottom: 10px;
margin-bottom: 5px;
.u-grid-item {
margin: auto 5px;