浇花器

This commit is contained in:
3321822538@qq.com 2025-04-18 13:42:53 +08:00
parent 3570f4d736
commit 08a9c27934
4 changed files with 366 additions and 269 deletions

View File

@ -21,7 +21,7 @@ const install = (Vue, vm) => {
// });
Vue.prototype.$u.http.setConfig({
baseUrl: 'https://yxd.ccttiot.com/prod-api',
// baseUrl: 'http://192.168.0.107:8081',
// baseUrl: 'http://192.168.0.101:8081',
loadingText: '努力加载中~',
loadingTime: 800,
// 设置自定义头部content-type

View File

@ -1,266 +1,316 @@
<template>
<view>
<u-navbar :is-back="true" title='添加设备' title-color="#000" :border-bottom="false" :background="bgc"
id="navbar">
<u-navbar :is-back="true" title='添加设备' title-color="#000" :border-bottom="false" :background="bgc" id="navbar">
</u-navbar>
<!-- 有搜索到设备 -->
<view class="you" v-if="flags">
<view class="topone">
<image src="https://api.ccttiot.com/smartmeter/img/static/ubrPcpGQEXTadkBa1gKh" mode=""></image> 扫描到以下设备点击添加
</view>
<view class="toptwo">
如未找到想添加的设备点击重新搜索
</view>
<view class="list">
<view class="list_item" v-for="(item,index) in jiaohuaqi" :key="index">
<image src="https://api.ccttiot.com/smartmeter/img/static/ufPWKlVzDbHNflX0jUIv" mode=""></image>
<view class="cen">
<view class="name">
丁丁浇花器
<view class="page">
<!-- 有搜索到设备 -->
<view class="you" v-if="flags">
<view class="topone">
<image src="https://api.ccttiot.com/smartmeter/img/static/ubrPcpGQEXTadkBa1gKh" mode=""></image>
扫描到以下设备点击添加
</view>
<view class="toptwo">
如未找到想添加的设备点击重新搜索
</view>
<view class="list">
<view class="list_item" v-for="(item,index) in jiaohuaqi" :key="index">
<image :src="item.modelPicture" mode=""></image>
<view class="cen">
<view class="name" style="color: #ccc;" v-if="item.userId && item.userId != userid">
{{item.modelName == undefined ? '' : item.modelName}}
</view>
<view class="name" v-else>
{{item.modelName == undefined ? '' : item.modelName}}
</view>
<view class="devmac">
MAC{{item.mac == undefined ? item.name.slice(-12) : item.mac}}
</view>
</view>
<view class="devmac">
MAC{{item}}
<view class="add" @click="btnadd(item)" v-if="item.userId == undefined">
添加
</view>
<view class="add" style="color: #ccc;border: 1px solid #ccc;" v-else>
已添加
</view>
</view>
<view class="add" @click="btnadd(item)">
添加
</view>
</view>
</view>
</view>
<!-- 未搜索到设备 -->
<view class="wei" v-else>
<image src="https://api.ccttiot.com/smartmeter/img/static/uQ4g6A27FGtF34ebOtea" mode=""></image>
<view class="sbname">
搜索附近的设备失败
<!-- 未搜索到设备 -->
<view class="wei" v-else>
<image src="https://api.ccttiot.com/smartmeter/img/static/uQ4g6A27FGtF34ebOtea" mode=""></image>
<view class="sbname">
搜索附近的设备失败
</view>
<view class="sbwz">
搜索失败点击重新搜索注意打开蓝牙
</view>
</view>
<view class="sbwz">
搜索失败点击重新搜索注意打开蓝牙
<!-- 点击搜索 -->
<view class="btnss" @click="btnss" v-if="flag">
重新搜索
</view>
<view class="btnss" v-else>
重新搜索
</view>
</view>
<!-- 点击搜索 -->
<view class="btnss" @click="btnss" v-if="flag">
重新搜索
</view>
<view class="btnss" v-else>
重新搜索
</view>
</view>
</template>
<script>
var xBlufi = require("@/components/blufi/xBlufi.js");
var xBlufi = require("@/components/blufi/xBlufi.js");
export default {
data() {
return {
bgc: {
backgroundColor: "#fff",
},
active:1,
flag:true,
devicesList:[],
deviceId:'',
name:'',
mac:'',
flags:true,
userid:'',
arr:'',
jiaohuaqi:[]
}
},
//
onShareAppMessage: function() {
return {
title: '绿小能',
path: '/pages/index/index'
}
},
//
onShareTimeline: function() {
return {
title: '绿小能',
query: '',
path: '/pages/index/index'
}
},
onLoad() {
},
onShow() {
this.getinfo()
this.btnss()
},
methods:{
//
getinfo() {
this.$u.get(`/appVerify/profile`).then((res) => {
if (res.code == 200) {
this.userid = res.data.userId
}else if(res.code == 401){
uni.showModal({
title: '提示',
content: '您还未登录,是否前去登录?',
success: function (res) {
if (res.confirm) {
uni.navigateTo({
url:'/pages/login/login'
})
} else if (res.cancel) {
}
}
})
}
})
data() {
return {
bgc: {
backgroundColor: "#fff",
},
//
btnadd(e){
console.log(e,'0101');
let mac = e.slice(-12)
let data = {
mac:mac,
userId:this.userid,
pre:e.slice(0,5)
active: 1,
flag: true,
devicesList: [],
deviceId: '',
name: '',
mac: '',
flags: true,
userid: '',
arr: '',
jiaohuaqi: [],
getpre:[]
}
},
//
onShareAppMessage: function() {
return {
title: '绿小能',
path: '/pages/index/index'
}
},
//
onShareTimeline: function() {
return {
title: '绿小能',
query: '',
path: '/pages/index/index'
}
},
onLoad() {
},
onShow() {
this.getmodel()
this.getinfo()
this.btnss()
},
methods: {
//
getinfo() {
this.$u.get(`/appVerify/profile`).then((res) => {
if (res.code == 200) {
this.userid = res.data.userId
} else if (res.code == 401) {
uni.showModal({
title: '提示',
content: '您还未登录,是否前去登录?',
success: function(res) {
if (res.confirm) {
uni.navigateTo({
url: '/pages/login/login'
})
} else if (res.cancel) {
}
}
})
}
console.log(data);
this.$u.post(`/app/bandDevice`,data).then((res) => {
if (res.code == 200) {
uni.showToast({
title: '添加成功',
icon: 'success',
duration: 3000
})
},
//
btnadd(e) {
console.log(e, '0101');
let mac = e.slice(-12)
let data = {
mac: mac,
userId: this.userid,
pre: e.slice(0, 5)
}
console.log(data);
this.$u.post(`/app/bandDevice`, data).then((res) => {
if (res.code == 200) {
uni.showToast({
title: '添加成功',
icon: 'success',
duration: 3000
})
setTimeout(() => {
uni.navigateBack()
}, 2000)
} else {
uni.showToast({
title: res.msg,
icon: 'none',
duration: 3000
})
}
})
},
getmodel() {
this.$u.get(`/app/getAllModelList`).then(res => {
if (res.code == 200) {
this.getpre = res.data;
}
});
},
getpipei(pre) {
// undefined
return this.getpre.find(item => item.pre == pre) || {
modelName: '未知型号',
picture: ''
};
},
btnss() {
uni.showLoading({
title: '搜索中...',
mask: true
});
this.jiaohuaqi = [];
this.flag = false;
const that = this;
xBlufi.listenDeviceMsgEvent(true, that.funListenDeviceMsgEvent);
xBlufi.notifyStartDiscoverBle({ 'isStart': true });
setTimeout(() => {
xBlufi.notifyStartDiscoverBle({ 'isStart': false });
if (that.devicesList.length > 0) {
const data = { mac: that.arr };
this.$u.post(`/app/getExistListByMacs`, data).then(res => {
if (res.code == 200) {
// MAC
const macMap = new Map(res.data.map(item => [item.mac, item]));
that.devicesList.forEach(val => {
const mac = val.name.slice(-12);
if (macMap.has(mac)) {
that.jiaohuaqi.push(macMap.get(mac));
console.log(that.jiaohuaqi,'1111');
} else {
const pre = val.name.slice(0, 5);
const matched = that.getpipei(pre);
that.jiaohuaqi.push({
name: mac,
modelName: matched.modelName,
modelPicture: matched.picture
});
console.log(that.jiaohuaqi,'2222');
}
});
uni.hideLoading();
} else {
uni.hideLoading();
}
});
} else {
uni.hideLoading();
}
that.flag = true;
}, 3000);
},
//
funListenDeviceMsgEvent: function(options) {
switch (options.type) {
case xBlufi.XBLUFI_TYPE.TYPE_STATUS_CONNECTED:
if (!options.result) {
}
break
case xBlufi.XBLUFI_TYPE.TYPE_GET_DEVICE_LISTS:
if (options.result) {
let devicesarr = []
this.devicesList = options.data
options.data.forEach(item => {
devicesarr.push(item.name.slice(-12))
})
setTimeout(()=>{
uni.navigateBack()
},2000)
}else{
this.arr = devicesarr.join(',')
}
break
case xBlufi.XBLUFI_TYPE.TYPE_CONNECTED:
console.log("连接回调:" + JSON.stringify(options))
if (options.result) {
{
xBlufi.notifyInitBleEsp32({
deviceId: this.deviceId
})
this.deviceIds = options.data.deviceId
this.name = this.name
}
} else {
}
break
case xBlufi.XBLUFI_TYPE.TYPE_RECIEVE_CUSTON_DATA:
break;
case xBlufi.XBLUFI_TYPE.TYPE_GET_DEVICE_LISTS_START:
if (!options.result) {
uni.showToast({
title: res.msg,
title: '蓝牙未开启',
icon: 'none',
duration: 3000
})
this.flags = false
return
} else {
}
})
},
btnss(){
uni.showLoading({
title: '搜索中...'
})
this.jiaohuaqi = []
this.flag = false
let that = this
xBlufi.listenDeviceMsgEvent(true, that.funListenDeviceMsgEvent)
xBlufi.notifyStartDiscoverBle({
'isStart': true
})
setTimeout(() => {
xBlufi.notifyStartDiscoverBle({
'isStart': false
})
if (that.devicesList.length > 0) {
// that.flags = true
this.$u.get(`/app/device/isBand/${this.arr}`).then(res =>{
if(res.code == 200){
res.data.forEach(item =>{
if(item.isBand == false){
that.devicesList.forEach(val =>{
if(val.name.slice(-12) == item.mac){
that.jiaohuaqi.push(val.name)
console.log(that.jiaohuaqi);
}
})
}
})
}
})
}else{
// that.flags = false
}
uni.hideLoading()
that.flag = true
}, 3000)
},
//
funListenDeviceMsgEvent: function(options) {
switch (options.type) {
case xBlufi.XBLUFI_TYPE.TYPE_STATUS_CONNECTED:
if (!options.result) {
}
break
case xBlufi.XBLUFI_TYPE.TYPE_GET_DEVICE_LISTS:
if (options.result) {
let devicesarr = []
this.devicesList = options.data
options.data.forEach(item =>{
devicesarr.push(item.name.slice(-12))
})
this.arr = devicesarr.join(',')
}
break
case xBlufi.XBLUFI_TYPE.TYPE_CONNECTED:
console.log("连接回调:" + JSON.stringify(options))
if (options.result) {
{
xBlufi.notifyInitBleEsp32({
deviceId: this.deviceId
})
this.deviceIds = options.data.deviceId
this.name = this.name
}
}else{
}
break
case xBlufi.XBLUFI_TYPE.TYPE_RECIEVE_CUSTON_DATA:
break;
case xBlufi.XBLUFI_TYPE.TYPE_GET_DEVICE_LISTS_START:
if (!options.result) {
uni.showToast({
title: '蓝牙未开启',
icon: 'none',
duration: 3000
})
this.flags = false
return
} else {
}
break
}
},
}
break
}
},
}
}
</script>
<style lang="less">
/deep/ .u-title{
/deep/ .u-title {
margin-bottom: 22rpx;
}
/deep/ .uicon-nav-back{
/deep/ .uicon-nav-back {
margin-bottom: 22rpx;
}
.wei{
.page {
padding-bottom: 300rpx;
box-sizing: border-box;
}
.wei {
text-align: center;
image{
image {
width: 380rpx;
height: 394rpx;
}
.sbname{
.sbname {
font-size: 40rpx;
color: #3D3D3D;
margin-top: 80rpx;
width: 100%;
text-align: center;
}
.sbwz{
.sbwz {
font-size: 28rpx;
color: #737B80;
margin-top: 24rpx;
@ -268,7 +318,8 @@
text-align: center;
}
}
.btnss{
.btnss {
width: 512rpx;
height: 92rpx;
background: #48893B;
@ -284,12 +335,14 @@
transform: translateX(-50%);
bottom: 106rpx;
}
.list{
.list {
width: 100%;
border-radius: 20rpx;
margin: auto;
margin-top: 72rpx;
.list_item{
.list_item {
margin-top: 18rpx;
display: flex;
justify-content: space-between;
@ -298,25 +351,29 @@
height: 152rpx;
background: #FFFFFF;
border-radius: 20rpx;
box-shadow: 0rpx 10rpx 64rpx 0rpx rgba(0,0,0,0.08);
box-shadow: 0rpx 10rpx 64rpx 0rpx rgba(0, 0, 0, 0.08);
padding: 18rpx 30rpx;
box-sizing: border-box;
image{
width: 96rpx;
image {
width: 94rpx;
height: 94rpx;
}
.cen{
.name{
.cen {
.name {
font-size: 32rpx;
color: #50565A;
}
.devmac{
.devmac {
font-size: 24rpx;
color: #BDBCBC;
margin-top: 6rpx;
}
}
.add{
.add {
width: 108rpx;
height: 60rpx;
background: #FFFFFF;
@ -330,22 +387,26 @@
}
}
}
page{
page {
width: 100%;
padding: 20rpx 64rpx;
box-sizing: border-box;
background-color: #fff;
}
.topone{
.topone {
font-size: 36rpx;
color: #3D3D3D;
display: flex;
image{
image {
width: 48rpx;
height: 48rpx;
}
}
.toptwo{
.toptwo {
font-size: 28rpx;
color: #737B7F;
margin-top: 14rpx;
@ -353,5 +414,4 @@
padding-left: 48rpx;
box-sizing: border-box;
}
</style>

View File

@ -23,10 +23,11 @@
<image src="https://api.ccttiot.com/smartmeter/img/static/uiTIUYnR3ClrmqOTyF8F" mode=""></image>
</view>
</view>
<view class="wifi" style="margin-top: 24rpx;" @click="gjconfirm">
<view class="wifi" style="margin-top: 24rpx;" @click="gjconfirm" >
<view class="">固件更新</view>
<view class="flex">
<!-- <image src="https://api.ccttiot.com/smartmeter/img/static/uiTIUYnR3ClrmqOTyF8F" mode=""></image> -->
<view class="flex" style="color: red;font-size: 20rpx;" v-if=" ver != null && ver != version">
<!-- <image src="https://api.ccttiot.com/smartmeter/img/static/uiTIUYnR3ClrmqOTyF8F" mode=""></image> -->
<text style="display: inline-block;width: 10rpx;height: 10rpx;border-radius: 50%;background-color: red;margin-right: 10rpx;"></text>可更新
</view>
</view>
<!-- 息屏选择器 -->
@ -72,7 +73,6 @@
切记在蓝牙范围内以防升级失败
</view>
</view>
</view>
</template>
@ -84,7 +84,6 @@
xpshow: false,
gjshow: false,
xptxt: '',
gjtxt: 'v2.1.2',
nameflag: false,
xplist: [{
value: '1',
@ -119,7 +118,8 @@
intervalId: null,
progress:0,
shengjiflag:false,
xctime:'--'
xctime:'--',
version:''
}
},
//
@ -140,16 +140,18 @@
onLoad(option) {
xBlufi.listenDeviceMsgEvent(true, this.funListenDeviceMsgEvent)
this.deviceid = option.deviceid
if(option.xctime){
if(option.xctime != '--'){
if(option.xctime != '--' && option.ver){
this.ver = option.ver
this.ver = 'V' + option.ver.slice(3)
this.xctime = option.xctime
console.log(11);
}else{
this.ver = 1
this.ver = 'V1'
this.xctime = option.xctime
console.log(22);
}
}else{
this.ver = null
}
this.getshebxq()
@ -207,18 +209,11 @@
xpconfirm(e) {
this.xptxt = e[0].label
},
getbanben(){
this.$u.get(`/app/model/${this.user.modelId}`).then(res => {
if (res.code == 200) {
this.file = res.data.asDeviceVersion.file
console.log(this.file)
// this.file = 'https://wc.chuangtewl.com/download/water_flower.bin'
}
})
},
getbanbens(){
this.$u.get(`/app/model/${this.user.modelId}`).then(res => {
if (res.code == 200) {
this.version = res.data.version
console.log(this.ver,'当前蓝牙版本号',this.version,'最新蓝牙版本号');
this.file = res.data.asDeviceVersion.file
console.log(this.file)
// this.file = 'https://wc.chuangtewl.com/download/water_flower.bin'
@ -237,8 +232,7 @@
},
//
gjconfirm(e) {
// this.gjtxt = e[0].label
// if(this.ver != ''){
if(this.ver != null && this.ver != this.version){
if(this.file == '' || this.file == null){
uni.showToast({
title: '暂无新版本',
@ -257,13 +251,13 @@
this.shengjiflag = true
this.startProgress()
}
// }else{
// uni.showToast({
// title: '',
// icon: 'none',
// duration: 2000
// })
// }
}else{
uni.showToast({
title: '已是最新版本',
icon: 'none',
duration: 2000
})
}
},
//
btnqx() {

View File

@ -894,12 +894,55 @@
break
case xBlufi.XBLUFI_TYPE.TYPE_RECIEVE_CUSTON_DATA:
console.log("1收到设备发来的自定义数据结果", options.data,options.data.length)
this.datalist = options.data.slice(0, -1) + ";"
this.vardataflag = 3
if(this.pre == 'WATER'){
this.getchuli()
if (options.data.indexOf("prom:") !== -1) {
console.log('固件升级中')
var indexOld = options.data.substring(options.data.indexOf('prom:'))
console.log("indexOld", indexOld);
var load_num = indexOld.substring(
indexOld.indexOf("prom:") + 5,
indexOld.indexOf("@")
)
this.progress = Number(load_num);
console.log("load_num", load_num);
console.log("升级进度:", this.progress)
if (this.progress === 6000) {
console.log('固件成功')
this.progress = 100
uni.showToast({
title: '固件升级成功',
icon: 'success',
duration: 2000
})
setTimeout(()=>{
this.shengjiflag = false
uni.reLaunch({
url:'/pages/index/index'
})
},2000)
}
if (this.progress === 9000) {
console.log('固件升级失败')
this.progress = 99
uni.showToast({
title: '固件升级失败',
icon: 'none',
duration: 2000
})
setTimeout(()=>{
this.shengjiflag = false
uni.reLaunch({
url:'/pages/index/index'
})
},1000)
}
}else{
this.getcsbshuju()
this.datalist = options.data.slice(0, -1) + ";"
this.vardataflag = 3
if(this.pre == 'WATER'){
this.getchuli()
}else{
this.getcsbshuju()
}
}
break
case xBlufi.XBLUFI_TYPE.TYPE_GET_DEVICE_LISTS_START: