11
This commit is contained in:
		
							parent
							
								
									d8b37a2a3f
								
							
						
					
					
						commit
						8c39f40a65
					
				| 
						 | 
				
			
			@ -9,11 +9,14 @@
 | 
			
		|||
		<view class="dblist" v-for="(item, index) in devicesLists" :key="index">
 | 
			
		||||
			<view class="cen">
 | 
			
		||||
				<view class="name">
 | 
			
		||||
				    <view class="">
 | 
			
		||||
				    	状态:<text v-if="item.flags == true" style="color: red;">已录入</text> <text v-else style="color:seagreen;">未录入</text>
 | 
			
		||||
				    </view>
 | 
			
		||||
					<view class="">
 | 
			
		||||
						状态:<text v-if="item.flags == true" style="color: red;">已录入</text> <text v-else
 | 
			
		||||
							style="color:seagreen;">未录入</text>
 | 
			
		||||
					</view>
 | 
			
		||||
					<view class="" style="display: flex;">
 | 
			
		||||
						SN码: <input style="width: 200rpx;background-color: #ccc;padding: 5rpx;box-sizing: border-box;text-align: center;" v-model="item.sn" placeholder="输入SN"/>
 | 
			
		||||
						SN码: <input
 | 
			
		||||
							style="width: 200rpx;background-color: #ccc;padding: 5rpx;box-sizing: border-box;text-align: center;"
 | 
			
		||||
							v-model="item.sn" placeholder="输入SN" />
 | 
			
		||||
					</view>
 | 
			
		||||
				</view>
 | 
			
		||||
				<view class="mac">
 | 
			
		||||
| 
						 | 
				
			
			@ -28,8 +31,8 @@
 | 
			
		|||
				</view>
 | 
			
		||||
			</view>
 | 
			
		||||
			<view class="rt">
 | 
			
		||||
				<!-- <text style="margin-bottom: 10rpx;" :id="item.deviceId" @tap="createBLEConnections(item)">扫码</text> -->
 | 
			
		||||
				<text  @click="scanQRCode(item)" style="margin-bottom: 10rpx;">扫码</text>
 | 
			
		||||
				<text style="margin-bottom: 10rpx;" :id="item.deviceId" @click="createBLEConnections(item)">开关</text>
 | 
			
		||||
				<text @click="scanQRCode(item)" style="margin-bottom: 10rpx;">扫码</text>
 | 
			
		||||
				<text :id="item.deviceId" @click="createBLEConnection(item)">录入</text>
 | 
			
		||||
			</view>
 | 
			
		||||
		</view>
 | 
			
		||||
| 
						 | 
				
			
			@ -96,9 +99,12 @@
 | 
			
		|||
				arrname: '',
 | 
			
		||||
				valuexh: '',
 | 
			
		||||
				deviceId: '',
 | 
			
		||||
				arrs: [],
 | 
			
		||||
				sn:'输入SN',
 | 
			
		||||
				snname:''
 | 
			
		||||
				arrs: '',
 | 
			
		||||
				sn: '输入SN',
 | 
			
		||||
				snname: '',
 | 
			
		||||
				qrResult:'',
 | 
			
		||||
				name:'',
 | 
			
		||||
				ver_data:null
 | 
			
		||||
			}
 | 
			
		||||
		},
 | 
			
		||||
		onLoad(option) {
 | 
			
		||||
| 
						 | 
				
			
			@ -135,7 +141,7 @@
 | 
			
		|||
		},
 | 
			
		||||
		methods: {
 | 
			
		||||
			// 扫码sn
 | 
			
		||||
			scanQRCode(item){
 | 
			
		||||
			scanQRCode(item) {
 | 
			
		||||
				this.snname = item.name
 | 
			
		||||
				uni.scanCode({
 | 
			
		||||
					onlyFromCamera: true,
 | 
			
		||||
| 
						 | 
				
			
			@ -149,7 +155,7 @@
 | 
			
		|||
						let sceneValue = res.result
 | 
			
		||||
						let decodedValue = decodeURIComponent(sceneValue)
 | 
			
		||||
						let id = getQueryParam(decodedValue, 's')
 | 
			
		||||
                        this.storeId = id
 | 
			
		||||
						this.storeId = id
 | 
			
		||||
						this.devicesLists.forEach(item => {
 | 
			
		||||
							if (item.name == this.snname) {
 | 
			
		||||
								item.sn = id
 | 
			
		||||
| 
						 | 
				
			
			@ -202,23 +208,44 @@
 | 
			
		|||
			},
 | 
			
		||||
			funListenDeviceMsgEvent: function(options) {
 | 
			
		||||
				switch (options.type) {
 | 
			
		||||
					case xBlufi.XBLUFI_TYPE.TYPE_RECIEVE_MY_DATA:
 | 
			
		||||
						let loadPercent = options.data;
 | 
			
		||||
						let loadText = '文件读取中'
 | 
			
		||||
						// console.log("文件读取中", options.data)
 | 
			
		||||
						break;
 | 
			
		||||
					case xBlufi.XBLUFI_TYPE.TYPE_RECIEVE_CUSTON_DATA:
 | 
			
		||||
						this.ver_data = this.parseCustomData(options.data)
 | 
			
		||||
						console.log("1收到设备发来的自定义数据结果:", this.ver_data)
 | 
			
		||||
						break;
 | 
			
		||||
					case xBlufi.XBLUFI_TYPE.TYPE_GET_DEVICE_LISTS:
 | 
			
		||||
						if (options.result) {
 | 
			
		||||
							this.devicesList = options.data
 | 
			
		||||
							this.devicesList.forEach(device => {
 | 
			
		||||
								const mac = device.name.substring(5)
 | 
			
		||||
								if (device.name == this.qrResult) {
 | 
			
		||||
									this.deviceId = device.deviceId
 | 
			
		||||
									this.name = device.name
 | 
			
		||||
									this.mac = device.name.slice(5, 17)
 | 
			
		||||
								}
 | 
			
		||||
							})
 | 
			
		||||
						}
 | 
			
		||||
						break;
 | 
			
		||||
 | 
			
		||||
					case xBlufi.XBLUFI_TYPE.TYPE_CONNECTED:
 | 
			
		||||
						console.log("连接回调:" + JSON.stringify(options));
 | 
			
		||||
						// console.log("连接回调:" + JSON.stringify(options))
 | 
			
		||||
						if (options.result) {
 | 
			
		||||
							{
 | 
			
		||||
							setTimeout(()=>{
 | 
			
		||||
								this.bluetoothflag = false
 | 
			
		||||
							},3000)
 | 
			
		||||
							uni.hideLoading(); {
 | 
			
		||||
								console.log("连接回调options.data.deviceId:" + options.data.deviceId,
 | 
			
		||||
									"连接回调options.data.name:" + options.data.name);
 | 
			
		||||
									"连接回调options.data.name:" + options.data.name)
 | 
			
		||||
							}
 | 
			
		||||
						} else {
 | 
			
		||||
							this.shibaiflag = true
 | 
			
		||||
							this.bluetoothflag = false
 | 
			
		||||
							uni.hideLoading()
 | 
			
		||||
						}
 | 
			
		||||
 | 
			
		||||
						break;
 | 
			
		||||
 | 
			
		||||
					case xBlufi.XBLUFI_TYPE.TYPE_GET_DEVICE_LISTS_START:
 | 
			
		||||
						if (!options.result) {
 | 
			
		||||
							this.mengcflag = false
 | 
			
		||||
| 
						 | 
				
			
			@ -231,11 +258,8 @@
 | 
			
		|||
							});
 | 
			
		||||
						} else {
 | 
			
		||||
							this.searching = true
 | 
			
		||||
 | 
			
		||||
						}
 | 
			
		||||
 | 
			
		||||
						break;
 | 
			
		||||
 | 
			
		||||
					case xBlufi.XBLUFI_TYPE.TYPE_GET_DEVICE_LISTS_STOP:
 | 
			
		||||
						if (options.result) {
 | 
			
		||||
							let uniqueDevicesList = Array.from(new Set(this.devicesList));
 | 
			
		||||
| 
						 | 
				
			
			@ -248,20 +272,16 @@
 | 
			
		|||
								return newDevice;
 | 
			
		||||
							})
 | 
			
		||||
							let devicesarr = options.data
 | 
			
		||||
 | 
			
		||||
							this.devicesList.forEach(device => {
 | 
			
		||||
								if (device.name.substring(0, 4) == "CTKG" || device.name.substring(0, 4) ==
 | 
			
		||||
									"CTPO") {
 | 
			
		||||
								if (device.name.substring(0, 4) == "CTKG" || device.name.substring(0, 4) == "CTPO") {
 | 
			
		||||
									this.devicesList.push(device);
 | 
			
		||||
									let uniqueDevicesList = Array.from(new Set(this.devicesList));
 | 
			
		||||
									this.devicesLists = uniqueDevicesList.filter(device => {
 | 
			
		||||
										const deviceId = device.name.substring(5);
 | 
			
		||||
										// return !this.lurulist.includes(deviceId);
 | 
			
		||||
										return deviceId
 | 
			
		||||
									})
 | 
			
		||||
								}
 | 
			
		||||
							})
 | 
			
		||||
 | 
			
		||||
							// console.log('蓝牙停止搜索ok')
 | 
			
		||||
							console.log(this.devicesLists, '蓝牙停止');
 | 
			
		||||
							this.mengcflag = false
 | 
			
		||||
| 
						 | 
				
			
			@ -269,10 +289,11 @@
 | 
			
		|||
							if (this.devicesLists.length == 0) {
 | 
			
		||||
								this.titleflag = true
 | 
			
		||||
							} else {
 | 
			
		||||
								let arr = []
 | 
			
		||||
								this.devicesLists.forEach(item => {
 | 
			
		||||
									this.arrs.push(item.name.slice(5))
 | 
			
		||||
									arr.push(item.name.slice(5))
 | 
			
		||||
								})
 | 
			
		||||
								this.arrs = this.arrs.join(',')
 | 
			
		||||
								this.arrs = arr.join(',')
 | 
			
		||||
								this.$u.get(`/app/device/getExistMac/${this.arrs}`).then(res => {
 | 
			
		||||
									if (res.code == 200) {
 | 
			
		||||
										const existingDevices = new Set(res.data); // 将 res.data 转换为 Set,以提高查找效率  
 | 
			
		||||
| 
						 | 
				
			
			@ -282,11 +303,12 @@
 | 
			
		|||
											return {
 | 
			
		||||
												...device,
 | 
			
		||||
												flags, // 直接使用 flags 变量  
 | 
			
		||||
												sn:'',
 | 
			
		||||
												sn: '',
 | 
			
		||||
											}
 | 
			
		||||
										})
 | 
			
		||||
									}
 | 
			
		||||
								})
 | 
			
		||||
								console.log(this.devicesLists,'0202');
 | 
			
		||||
							}
 | 
			
		||||
						} else {
 | 
			
		||||
							//蓝牙停止搜索失败
 | 
			
		||||
| 
						 | 
				
			
			@ -295,31 +317,73 @@
 | 
			
		|||
							console.log('蓝牙停止搜索失败');
 | 
			
		||||
						}
 | 
			
		||||
						this.searching = false
 | 
			
		||||
						break;
 | 
			
		||||
						break
 | 
			
		||||
				}
 | 
			
		||||
			},
 | 
			
		||||
            
 | 
			
		||||
			//         createBLEConnections(e) {
 | 
			
		||||
			//         	xBlufi.notifyStartDiscoverBle({
 | 
			
		||||
			//         		'isStart': false
 | 
			
		||||
			//         	});
 | 
			
		||||
			//         	console.log(e, '蓝牙信息101010') 
 | 
			
		||||
			//         	const deviceId = e.deviceId
 | 
			
		||||
			//         	this.Bluetoothmac = e.localName.substring(5) //从第七位开始截取 只取后面的mac号
 | 
			
		||||
			//         	this.mac = e.localName.substring(5)
 | 
			
		||||
			//         	let name = e.name;
 | 
			
		||||
			//         	xBlufi.notifyConnectBle({
 | 
			
		||||
			//         		isStart: true,
 | 
			
		||||
			//         		deviceId: e.deviceId,
 | 
			
		||||
			//         		name:e.name
 | 
			
		||||
			//         	})
 | 
			
		||||
			// // 发送响铃
 | 
			
		||||
			// xBlufi.notifySendCustomData({
 | 
			
		||||
			// 	customData: "BEEP2@" 
 | 
			
		||||
			// })
 | 
			
		||||
 | 
			
		||||
			//         	let that = this
 | 
			
		||||
			//         },
 | 
			
		||||
			// 发送开关
 | 
			
		||||
			createBLEConnections(e) {
 | 
			
		||||
				uni.showLoading({
 | 
			
		||||
					title: '执行中...'
 | 
			
		||||
				})
 | 
			
		||||
				this.arrs = ''
 | 
			
		||||
				this.qrResult = e.name //拿到所点击的mac号
 | 
			
		||||
				if (this.ver_data == null) { //判断是否有连接蓝牙
 | 
			
		||||
					xBlufi.initXBlufi(1)
 | 
			
		||||
					xBlufi.listenDeviceMsgEvent(true, this.funListenDeviceMsgEvent)
 | 
			
		||||
					xBlufi.notifyStartDiscoverBle({
 | 
			
		||||
						'isStart': true
 | 
			
		||||
					})
 | 
			
		||||
					// 停止蓝牙搜索  
 | 
			
		||||
					setTimeout(() => {
 | 
			
		||||
						xBlufi.notifyStartDiscoverBle({
 | 
			
		||||
							'isStart': false
 | 
			
		||||
						})
 | 
			
		||||
						xBlufi.notifyConnectBle({
 | 
			
		||||
							isStart: true,
 | 
			
		||||
							deviceId: this.deviceId,
 | 
			
		||||
							name: this.name
 | 
			
		||||
						})
 | 
			
		||||
						xBlufi.notifyInitBleEsp32({
 | 
			
		||||
							deviceId: this.deviceId
 | 
			
		||||
						})
 | 
			
		||||
					}, 1000)
 | 
			
		||||
				}else{ //有连接则发送命令
 | 
			
		||||
					let that = this //改变this指向
 | 
			
		||||
					uni.getNetworkType({
 | 
			
		||||
						success(res) {
 | 
			
		||||
							if (res.networkType !== 'none') {
 | 
			
		||||
								uni.getConnectedBluetoothDevices({
 | 
			
		||||
									success(res) {
 | 
			
		||||
										setTimeout(() => { //一秒后发送开启命令
 | 
			
		||||
											xBlufi.notifySendCustomData({
 | 
			
		||||
												customData: 'open'
 | 
			
		||||
											})
 | 
			
		||||
											setTimeout(()=>{ //发送开启命令两秒后发送关闭命令
 | 
			
		||||
												xBlufi.notifySendCustomData({
 | 
			
		||||
													customData: 'close'
 | 
			
		||||
												})
 | 
			
		||||
												setTimeout(()=>{ //发送关闭命令后一秒后断开连接
 | 
			
		||||
													uni.hideLoading()
 | 
			
		||||
													that.ver_data = null
 | 
			
		||||
													xBlufi.listenDeviceMsgEvent(false, that.funListenDeviceMsgEvent);
 | 
			
		||||
													wx.closeBLEConnection({
 | 
			
		||||
														deviceId: that.deviceId,
 | 
			
		||||
													})
 | 
			
		||||
													// console.log('guanbi');
 | 
			
		||||
												},1000)
 | 
			
		||||
											},2000)
 | 
			
		||||
										}, 1000)
 | 
			
		||||
									},
 | 
			
		||||
									fail(err) {
 | 
			
		||||
										console.error('获取已连接蓝牙设备信息失败:', err)
 | 
			
		||||
									}
 | 
			
		||||
								})
 | 
			
		||||
							}
 | 
			
		||||
						}
 | 
			
		||||
					})
 | 
			
		||||
				}
 | 
			
		||||
			},
 | 
			
		||||
			// 请求已经录入设备的mac
 | 
			
		||||
			getluru() {
 | 
			
		||||
				// this.$u.get(`/app/device/listAllMac`).then(res => {
 | 
			
		||||
| 
						 | 
				
			
			@ -342,9 +406,35 @@
 | 
			
		|||
				// }
 | 
			
		||||
				// })
 | 
			
		||||
			},
 | 
			
		||||
			parseCustomData(data) {
 | 
			
		||||
				const dataArray = data.split('@');
 | 
			
		||||
				const parsedData = {};
 | 
			
		||||
				const prefixMap = {
 | 
			
		||||
					'V': 'voltage',
 | 
			
		||||
					'S': 'switchState',
 | 
			
		||||
					'A': 'current',
 | 
			
		||||
					'P': 'power',
 | 
			
		||||
					'M': 'remainingPower',
 | 
			
		||||
					'T': 'setMode',
 | 
			
		||||
					'W': 'temperature'
 | 
			
		||||
				};
 | 
			
		||||
				// 遍历数组并解析每个字段  
 | 
			
		||||
				for (let i = 0; i < dataArray.length; i++) {
 | 
			
		||||
					const field = dataArray[i];
 | 
			
		||||
					for (const prefix in prefixMap) {
 | 
			
		||||
						if (field.startsWith(prefix)) {
 | 
			
		||||
							const value = field.substring(1);
 | 
			
		||||
							const propertyName = prefixMap[prefix];
 | 
			
		||||
							parsedData[propertyName] = isNaN(parseFloat(value)) ? value : parseFloat(value);
 | 
			
		||||
							break;
 | 
			
		||||
						}
 | 
			
		||||
					}
 | 
			
		||||
				}
 | 
			
		||||
				return parsedData;
 | 
			
		||||
			},
 | 
			
		||||
			//4、建立连接
 | 
			
		||||
			createBLEConnection(e) {
 | 
			
		||||
				this.deviceId = e.name
 | 
			
		||||
				// this.deviceId = e.name
 | 
			
		||||
				this.mengcflag = true
 | 
			
		||||
				uni.showLoading({
 | 
			
		||||
					title: '录入中...'
 | 
			
		||||
| 
						 | 
				
			
			@ -548,7 +638,6 @@
 | 
			
		|||
 | 
			
		||||
		.rt {
 | 
			
		||||
			margin-top: 32rpx;
 | 
			
		||||
			padding-top: 50rpx;
 | 
			
		||||
			box-sizing: border-box;
 | 
			
		||||
 | 
			
		||||
			text {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -230,7 +230,6 @@
 | 
			
		|||
		<view v-if="btnmsk"
 | 
			
		||||
			style="width: 100%;height: 100vh;position: fixed;top: 0;left: 0;background-color: #000;opacity: .1;z-index: 999;">
 | 
			
		||||
		</view>
 | 
			
		||||
 | 
			
		||||
	</view>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -297,28 +296,6 @@
 | 
			
		|||
				this.opflag = true
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			// xBlufi.initXBlufi(1);
 | 
			
		||||
			// xBlufi.listenDeviceMsgEvent(true, this.funListenDeviceMsgEvent);
 | 
			
		||||
			// xBlufi.notifyStartDiscoverBle({
 | 
			
		||||
			// 	'isStart': true
 | 
			
		||||
			// })
 | 
			
		||||
 | 
			
		||||
			// 停止蓝牙搜索  
 | 
			
		||||
			// setTimeout(() => {
 | 
			
		||||
			// 	xBlufi.notifyStartDiscoverBle({
 | 
			
		||||
			// 		'isStart': false
 | 
			
		||||
			// 	});
 | 
			
		||||
 | 
			
		||||
			// 	xBlufi.notifyConnectBle({
 | 
			
		||||
			// 		isStart: true,
 | 
			
		||||
			// 		deviceId: this.deviceId,
 | 
			
		||||
			// 		name: this.name
 | 
			
		||||
			// 	})
 | 
			
		||||
			// 	xBlufi.notifyInitBleEsp32({
 | 
			
		||||
			// 		deviceId: this.deviceId
 | 
			
		||||
			// 	});
 | 
			
		||||
			// }, 2000)
 | 
			
		||||
 | 
			
		||||
		},
 | 
			
		||||
		// 分享到好友(会话)
 | 
			
		||||
		onShareAppMessage: function() {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue
	
	Block a user