From 6a2688caf4744eb4efe34781410910157feca55e Mon Sep 17 00:00:00 2001 From: liub Date: Mon, 1 Dec 2025 16:24:22 +0800 Subject: [PATCH] =?UTF-8?q?102=E7=9C=9F=E6=9C=BA=E6=B5=8B=E8=AF=95?= =?UTF-8?q?=E5=AE=8C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../BottomSlideMenuPlus.vue | 2 +- pages/102/HBY102.vue | 157 +++++++++++++---- pages/common/addBLE/addEquip.vue | 166 +++++++++++++----- utils/BleHelper.js | 4 +- utils/BleReceive.js | 2 +- utils/request.js | 2 +- 6 files changed, 253 insertions(+), 80 deletions(-) diff --git a/components/BottomSlideMenuPlus/BottomSlideMenuPlus.vue b/components/BottomSlideMenuPlus/BottomSlideMenuPlus.vue index ffe890d..22ffa0e 100644 --- a/components/BottomSlideMenuPlus/BottomSlideMenuPlus.vue +++ b/components/BottomSlideMenuPlus/BottomSlideMenuPlus.vue @@ -26,7 +26,7 @@ - diff --git a/pages/102/HBY102.vue b/pages/102/HBY102.vue index 6b0816d..ff9220c 100644 --- a/pages/102/HBY102.vue +++ b/pages/102/HBY102.vue @@ -16,7 +16,7 @@ - {{formData.sta_charge?dic.sta_charge[formData.sta_charge]:"" }} + {{formData.sta_charge?dic.sta_charge[formData.sta_charge+'']:"未充电" }} 设备状态 @@ -46,10 +46,10 @@ --> - + 闯入报警! - {{getWarDevice(formData.sta_sosadd)}} + {{item.name}} @@ -114,6 +114,7 @@ {{item.name}} + {{Distance}} @@ -160,6 +161,10 @@ + + + + @@ -218,9 +223,31 @@ show: false, showHeader: true, menuItems: [{ - text: '强光', - icon: '/static/images/6155/DeviceDetail/qiang.png' - }], + text: '2M', + value:'status_2M', + icon: '' + }, + { + text: '4M', + value:'status_4M', + icon: '' + }, + { + text: '7M', + value:'status_7M', + icon: '' + }, + { + text: '10M', + value:'status_10M', + icon: '' + }, + { + text: '关闭', + value:'status_off', + icon: '' + } + ], activeIndex: -1, bgColor: '#2a2a2a', itemBgColor: '#3a3a3a', @@ -254,12 +281,13 @@ statu: '', sta_address: '', bleStatu: false, - + sta_charge:'', sta_LedType: '', sta_RadarType: '', sta_Online: '', warnTime: '', sta_sosadd: "", + sta_sosName:'', sta_IntrusTime: '' }, @@ -349,10 +377,7 @@ showConfirm: false }, groupDevices: [], - audioData: { - packetCtn: 0, - hexs: [] - } + warnDevices:[] } }, @@ -429,7 +454,28 @@ this.Status.pageHide = false; }, computed: { - + Distance:function(){ + let f=this.Status.BottomMenu.menuItems.find((item,index)=>{ + + return item.value===this.formData.sta_RadarType; + + + }); + if(f){ + return f.text; + } + return '关闭'; + }, + activeIndex:function(){ + let active=4; + let f=this.Status.BottomMenu.menuItems.find((item,index)=>{ + + if(item.value===this.formData.sta_RadarType){ + active=index; + } + }); + return active; + } }, methods: { @@ -441,7 +487,8 @@ if (item.group == 'sta_RadarType') { - this.toggleRedar(item, index); + // this.toggleRedar(item, index); + this.showRedarSetting(item,index); return; } @@ -507,6 +554,25 @@ } + }, + showRedarSetting(){ + this.Status.BottomMenu.show=true; + this.Status.BottomMenu.showBtn=false; + + this.Status.BottomMenu.title="感应距离设置"; + + this.Status.BottomMenu.textAlign="center"; + + this.Status.BottomMenu.showMask=true; + this.Status.BottomMenu.activeIndex=this.activeIndex; + }, + btnClick(item,index){ + this.Status.BottomMenu.show=false; + console.log("选中的项:"+index+",值:"+JSON.stringify(item)); + this.toggleRedar(item,index); + }, + closeActionSheet(){ + this.Status.BottomMenu.show=false; }, toggleRedar(item, index) { //雷达启停 let f = this.getDevice(); @@ -521,7 +587,7 @@ deviceId: '12345' } // #endif - let val = item.key; + let val = item.value; if (this.formData.sta_RadarType === val) { val = 'status_off'; } @@ -533,7 +599,9 @@ ble.sendString(f.deviceId, json, f.writeServiceId, f.wirteCharactId, 30) .then(res => { + debugger; this.formData.sta_RadarType = val; + this.Status.BottomMenu.activeIndex=index; these.setBleFormData(); resolve(); }) @@ -750,33 +818,58 @@ console.log("json=", json) - let keys = Object.keys(json); + + + let active=-1; + let f=this.Status.BottomMenu.menuItems.find((item,index)=>{ + + if(item.value===json.sta_RadarType){ + active=index; + } + }); + this.Status.BottomMenu.activeIndex=active; + let msg = []; + if (json.sta_PowerPercent <= 20 && (json.sta_charge===0 || json.sta_charge==='0')) { + msg.push("设备电量低"); + } + + if(json.sta_sosadd_off){//某个设备解除报警 + this.warnDevices.filter((d,index)=>{ + if(d.mac===json.sta_sosadd_off){ + this.warnDevices.splice(index,1); + } + }); + } + + + let keys = Object.keys(json); + keys.forEach(key => { if (key in this.formData) { // console.log("key=",key+",value=",json[key]); this.formData[key] = json[key]; } }); + - let msg = []; - if (this.formData.sta_PowerPercent <= 20) { - msg.push("设备电量低"); - } - if (json.sta_sosadd_off == this.formData.sta_sosadd) { - this.formData.sta_sosadd = ""; - let name=this.getWarDevice(json.sta_sosadd_off); - msg.push('"' + name + '"取消报警'); - } - - if (this.formData.sta_sosadd !== "") { - console.log("查询设备中"); - this.searchDevice(this.formData.sta_sosadd).catch(ex => {}).then(dev => { + if (json.sta_sosadd) {//某个设备闯入报警 + console.log("查询设备中",json.sta_sosadd); + this.searchDevice(json.sta_sosadd).catch(ex => {}).then(dev => { console.log("dev=", dev); + let d=this.warnDevices.find(v=>{return v.mac===json.sta_sosadd}); + let deviceName=""; if (dev) { + // this.formData.sta_sosName=dev.deviceName; msg.push('"' + dev.deviceName + '"闯入报警中'); + deviceName=dev.deviceName; + } else { msg.push('闯入报警中'); + // this.formData.sta_sosName=""; + } + if(!d){ + this.warnDevices.push({mac:json.sta_sosadd,name:deviceName}); } this.showMsg(msg.join(',')); }); @@ -805,6 +898,7 @@ }, getWarDevice(macStr) { + console.log("macStr=",macStr); if (macStr) { if (!macStr.includes(':')) { @@ -834,13 +928,13 @@ let f = this.groupDevices.find(v => { return v.deviceMac === macStr; }); - console.log("111111111"); + // console.log("111111111"); if (f) { console.log("找到设备", f); resolve(f); return; } - console.log("111111111"); + // console.log("111111111"); if (macStr == this.device.deviceMac) { console.log("当前设备", this.device); resolve(this.device); @@ -1058,9 +1152,6 @@ buttonText: '确定', okCallback: null }); - }, - btnClick() { - } } } diff --git a/pages/common/addBLE/addEquip.vue b/pages/common/addBLE/addEquip.vue index f91c2be..31992f0 100644 --- a/pages/common/addBLE/addEquip.vue +++ b/pages/common/addBLE/addEquip.vue @@ -52,8 +52,9 @@ 刷新 - + + { @@ -262,7 +325,7 @@ }, pagePath); - + //搜索到新设备的回调 (Always active) ble.addDeviceFound((arr) => { @@ -283,7 +346,9 @@ let f = these.EquipMents.find((v, index) => { if (v.deviceId == device.deviceId) { - console.log(`更新设备信号: ${device.name || device.deviceId}, RSSI: ${device.RSSI}`); + console.log( + `更新设备信号: ${device.name || device.deviceId}, RSSI: ${device.RSSI}` + ); these.$set(these.EquipMents[index], 'RSSI', device.RSSI); return true; } @@ -294,9 +359,11 @@ console.log("+++ 发现新设备,准备添加到列表:", JSON.stringify(device)); if (these.device && these.device.bluetoothName && device.name) { - if (these.device.bluetoothName === device.name || (device.name && device.name.indexOf(these - .device.bluetoothName) > -1) || (device.name && this.device.bluetoothName.indexOf( - device.name) > -1)) { + if (these.device.bluetoothName === device.name || (device.name && device.name + .indexOf(these + .device.bluetoothName) > -1) || (device.name && this.device + .bluetoothName.indexOf( + device.name) > -1)) { device.isTarget = true; } } @@ -308,8 +375,8 @@ } }, pagePath); } - - let startValidDevice=()=>{ + + let startValidDevice = () => { if (these.device) { console.log("进入配对模式,启用连接恢复和验证逻辑。"); //蓝牙连接已恢复的回调 @@ -330,17 +397,17 @@ showLoading(these, { text: '蓝牙连接已恢复,正在验证设备' }); - + setTimeout(() => { these.DeviceVerdict(res.deviceId); }, 0); } else { hideLoading(these); } - - + + }, pagePath); - + //收到设备的消息回调 ble.addReceiveCallback((receivData, f, path, arr) => { console.log("000000"); @@ -353,17 +420,17 @@ clearInterval(this.Status.intval); this.Status.intval = null; this.Status.time = null; - + showLoading(these, { text: '正在验证设备' }); - + setTimeout(() => { these.DeviceVerdict(f.deviceId); }, 0); } - - + + }, pagePath); } } @@ -373,10 +440,10 @@ eventChannel.on('detailData', function(rec) { console.log("接收到父页面的参数:", rec); these.device = rec.data; - if(rec.data.bluetoothName){ - these.search=rec.data.bluetoothName.replace('JQZM-',''); + if (rec.data.bluetoothName) { + these.search = rec.data.bluetoothName.replace('JQZM-', ''); } - + startValidDevice(); these.refreshBleList(); }); @@ -392,9 +459,9 @@ return new Promise((resolve) => { if (uni.getSystemInfoSync().platform !== 'android') { - return resolve(true); + return resolve(true); } - + plus.android.requestPermissions( ['android.permission.ACCESS_FINE_LOCATION'], (result) => { @@ -428,14 +495,17 @@ }); }, async refreshBleList() { - + const systemInfo = uni.getSystemInfoSync(); + if (systemInfo.uniPlatform == 'web') { + return; + } const hasPermission = await this.checkAndRequestLocationPermission(); if (!hasPermission) { console.log("缺少定位权限,已中止蓝牙扫描。"); return; } - - + + if (!ble) { ble = bleTool.getBleTool(); if (!ble) { @@ -443,9 +513,9 @@ return; } } - + ble.StopSearch().finally(() => { - + let disconnectPromises = []; if (ble.data && ble.data.LinkedList) { ble.data.LinkedList.forEach(device => { @@ -453,17 +523,17 @@ disconnectPromises.push(ble.disconnectDevice(device.deviceId)); }); } - + Promise.allSettled(disconnectPromises).finally(() => { - + these.EquipMents = []; these.PairEquip = []; - + ble.StartSearch().then(result => { console.log("Fresh scan started successfully."); }).catch(err => { console.error("Failed to start fresh scan:", err); - if (err.code === 10001) { + if (err.code === 10001) { these.showOpenSetting(); } else { uni.showModal({ @@ -820,6 +890,7 @@ position: absolute; top: 240rpx; left: 0rpx; + /* border: 1px solid #BBE600; */ } @@ -840,18 +911,20 @@ align-content: center; align-items: center; justify-content: space-between; - margin-bottom:30rpx; + margin-bottom: 30rpx; } .list { min-height: 120rpx; - + } .searchList { width: 100%; - height: calc(100% - 260rpx); + height: calc(100% - 300rpx); overflow-y: scroll; + box-sizing: border-box; + /* border: 1px solid red; */ } .list .item { @@ -1021,12 +1094,21 @@ filter: none !important; -webkit-filter: none !important; } + - .uni-mt-5 { - background-color: #000000; - } - .uni-easyinput__content { - background-color: #121212 !important; + .uni-input{ + background-color: #121212; + width:100%; + height: 60rpx; + color: #ffffffde; + border:1rpx solid #cbcbcbde; + border-radius: 8rpx; + font-size: 26rpx; + text-indent: 8rpx; + font-family: "PingFang SC"; + line-height: 60rpx; + caret-color:#BBE600; + font-weight: 200; } \ No newline at end of file diff --git a/utils/BleHelper.js b/utils/BleHelper.js index a03532b..04faebb 100644 --- a/utils/BleHelper.js +++ b/utils/BleHelper.js @@ -685,7 +685,7 @@ class BleHelper { uni.onBLECharacteristicValueChange((receive) => { //订阅消息 - // console.log("收到订阅消息", receive); + // console.log("收到订阅消息", receive); let f = this.data.LinkedList.find((v) => { return v.deviceId == receive.deviceId; }) @@ -1714,7 +1714,7 @@ class BleHelper { let buffer = new ArrayBuffer(bufferSize); let dataView = new DataView(buffer); for (let i = 0; i < array.length; i++) { - dataView.setUint8(i, array); + dataView.setUint8(i, array[i]); } return this.sendData(deviceid, buffer, writeServiceId, wirteCharactId, ms); diff --git a/utils/BleReceive.js b/utils/BleReceive.js index 45ef6f7..5a04479 100644 --- a/utils/BleReceive.js +++ b/utils/BleReceive.js @@ -569,7 +569,7 @@ class BleReceive { try { - console.log("str=",receive.str); + // console.log("str=",receive.str); receiveData = JSON.parse(receive.str); let recCnt = recArr.find(v => { diff --git a/utils/request.js b/utils/request.js index 6faf71e..a25cc90 100644 --- a/utils/request.js +++ b/utils/request.js @@ -1,5 +1,5 @@ import config from '../config/index.js'; -export const env = 'development'; //production development //开发of线上 改这里就行 +export const env = 'production'; //production development //开发of线上 改这里就行 const BASE = config[env]; const request = (options) => { console.log("options" + JSON.stringify(options), BASE.BASE_URL)