// pages/Bluetooth1/Bluetooth1.js var util = require('../../utils/util'); var md5 = require('../../utils/md5.js'); import { BLE } from "../../utils/btls/ble"; const app = getApp(); const WXAPI = require('../../utils/request') const emitter = app.globalData.emitter // ArrayBuffer转16进度字符串示例 function ab2hex(buffer) { var hexArr = Array.prototype.map.call( new Uint8Array(buffer), function (bit) { return ('00' + bit.toString(16)).slice(-2) } ) return hexArr.join(','); } var bleall = require('../../utils/bleall'); import moment from "../../utils/moment" Page({ /** * 页面的初始数据 */ data: { deviceInfo: { roomId: '', }, dataTree: [], selectKey: '', //选中的节点id dataList: [], array: [], show: false, deviceNum: '', type: '1', cgInfo: '', lockStatus: "", userInfo: '', show1: false, actions: [{ name: '静音', color: '#ee0a24' }, { name: '低音', color: '#333' }, { name: '高音', color: '#333' }, ], volume: '', adminuserinfo: { enterpriseId: '' } }, /** * 生命周期函数--监听页面加载 */ onLoad: function (options) { var adminuserinfo = wx.getStorageSync('userInfo') this.setData({ deviceNum: options.deviceNum, selectindex: options.selectindex, adminuserinfo: adminuserinfo }) var data = { q: JSON.stringify({ deviceNum: options.deviceNum, // lockType:1, types:[1,21], }) } WXAPI.getDeviceItems(data).then(res => { if (res.data.list.length == 0) { wx.showToast({ title: '该智能锁未加入平台,请先加入平台', }) wx.navigateBack({ delta: 0, }) this.setData({ deviceInfo: '' }) } else { app.globalData.deviceNum = res.data.list[0].deviceNum this.setData({ deviceInfo: res.data.list[0] }) } }) this.getRoom() }, unbindRoom() { wx.showModal({ title: '是否确认重置锁', success: (result) => { if(result.confirm){ var data = [{ siteId: this.data.deviceInfo.roomId, deviceId: this.data.deviceInfo.id, }, ] WXAPI.unbindDeviceSite(data).then(res => { if (res.success) { var deviceInfo = this.data.deviceInfo deviceInfo['roomId'] = '' deviceInfo['roomName'] = '' this.setData({ deviceInfo }) wx.showToast({ title: '解绑成功', duration: 2000, icon: 'none' }) } else { wx.showToast({ title: '解绑失败', duration: 2000, icon: 'none' }) } }) } } }) }, // 设置音量 setVoice() { }, // 蓝牙开锁 openTheDoor(e) { if (e) { this.setData({ current: e.currentTarget.dataset.current }) } var that = this let userTelephone = '18270949468' let userPassword = '202108' let pwd = '2021110309' let openLockType = 2 var timestamp = moment().format("x") bleall.openLock(userTelephone, userPassword, pwd, openLockType, timestamp, function (data) { if (data) { wx.showToast({ title: '开锁成功', duration: 2000, icon: "none" }) } else { wx.showToast({ title: '开锁失败', duration: 2000, icon: "none" }) } }) }, // 重置门锁 resetLock(e) { wx.showModal({ title: '是否确认重置锁', success: (result) => { if (result.confirm) { if (e) { this.setData({ current: e.currentTarget.dataset.current }) } var data = { managerTelephone: '18070949468', managerPassword: '202108' } var timestamp = moment().format("x") bleall.startFp_26(data.managerTelephone, data.managerPassword, timestamp, function (data) { if (data) { wx.showToast({ title: '重置成功', duration: 2000, icon: "none" }) var data2 = { q: JSON.stringify({ id: this.data.deviceInfo.roomId }) } WXAPI.getSiteTenant(data2).then(res2 => { console.log(res2, 'res22222') if (res2.success) { var ids = [] res2.data.list.map(li => { var obj = { siteId: this.data.deviceInfo.roomId, cardId: li.cardId, } ids.push(obj) }) WXAPI.unbindCard(ids).then(res3 => { if (res3.success) { wx.showToast({ title: '退租成功', duration: 2000, icon: 'none' }) } else { wx.showToast({ title: '退租失败', duration: 2000, icon: 'none' }) } }) } else { wx.showToast({ title: '退租失败', duration: 2000, icon: 'none' }) } }) } else { wx.showToast({ title: '重置失败', duration: 2000, icon: "none" }) } }) }else{ } }, fail: (res) => { }, }) }, // 获取房间 getRoom() { var _this = this WXAPI.getTree('').then(res => { var newArr = util.uniqueArray(res.data, "id"); this.list = newArr var setting = { data: { simpleData: { idKey: 'id', pIdKey: 'pid' }, key: { children: 'children' } } } var dataList = this.transformTozTreeFormat(setting, newArr) this.setData({ dataList: dataList }) }) }, transformTozTreeFormat(setting, sNodes) { var i, l, key = setting.data.simpleData.idKey, parentKey = setting.data.simpleData.pIdKey, childKey = setting.data.key.children if (!key || key == "" || !sNodes) return []; var r = []; var tmpMap = []; for (i = 0, l = sNodes.length; i < l; i++) { tmpMap[sNodes[i][key]] = sNodes[i]; } for (i = 0, l = sNodes.length; i < l; i++) { if (tmpMap[sNodes[i][parentKey]] && sNodes[i][key] != sNodes[i][parentKey]) { if (!tmpMap[sNodes[i][parentKey]][childKey]) tmpMap[sNodes[i][parentKey]][childKey] = []; tmpMap[sNodes[i][parentKey]][childKey].push(sNodes[i]); } else { r.push(sNodes[i]); } } return r; }, bindroom() { this.setData({ show: true }); }, handleSelect(e) { var _this = this if (e.detail.tips) { wx.showToast({ title: '请选择房间', icon: 'none' }) } else { wx.showModal({ title: '', content: '是否绑定', success(res) { if (res.confirm) { _this.setData({ selectKey: e.detail.item.id, show: false }) var data = { pageNum: 1, pageSize: 1, q: JSON.stringify({ roomIds: [e.detail.item.id], // deviceNum:_this.data.deviceInfo.deviceNum, // lockType:1, types:[1,21], }) } WXAPI.getDeviceItems(data).then(res => { if (res.data.list.length == 0) { var data2 = [{ siteId: e.detail.item.id, deviceId: _this.data.deviceInfo.id, }] WXAPI.bindDeviceSite(data2).then(res2 => { if (res2.success) { _this.data.deviceInfo['roomId'] = e.detail.item.id var deviceInfo = _this.data.deviceInfo deviceInfo['roomId'] = e.detail.item.id deviceInfo['roomName'] = e.detail.item.name _this.setData({ deviceInfo }) wx.showToast({ title: '绑定房间成功', icon: 'none' }) // _this.addAdmin() } else { wx.showToast({ title: '绑定房间失败', icon: 'none' }) } }) } else { wx.showToast({ title: '该房间已绑定', icon: 'none' }) } }) } else if (res.cancel) { _this.setData({ selectKey: e.detail.item.id, show: false }) } } }) } }, addAdmin(e) { wx.showModal({ title: '是否确认初始化管理员', success: (result) => { if (result.confirm) { if (e) { this.setData({ current: e.currentTarget.dataset.current }) } var _this = this var data = { deviceNum: this.data.deviceNum, managerTelephone: '18270949468', managerPassword: '680000', newPassword: '202108', key: '1234567890' } var timestamp = moment().format("x") bleall.startFp_23(data.deviceNum, data.managerTelephone, data.managerPassword, data.newPassword, data.key, timestamp, function (data) { console.log(data) if (data.success) { var data1 = { managerTelephone: "18270949468", managerPassword: '202108', userTelephone: '18270949468', userPassword: '202108', password: '2021110309', startTime: "20210813010101", endTime: "20680813010101" } bleall.startFp1_63(data1.managerTelephone, data1.managerPassword, data1.userTelephone, data1 .userPassword, data1.password, data1.startTime, data1.endTime, 4, timestamp, function (res) { if (res.success) { bleall.startFp1_63(data1.managerTelephone, data1.managerPassword, data1.userTelephone, data1 .userPassword, data1.password, data1.startTime, data1.endTime, 7, timestamp, function (res1) { console.log(res1) if (res1.success) { var data2 = { code: "ble/registerManager", data: { deviceNum: _this.data.deviceInfo.deviceNum, imei: _this.data.deviceInfo.imei, order: 6101, telephone: '18270949468', originPassword: "680000", newPassword: "202108", key: '1234567890', status:1, timestamp: timestamp } } WXAPI.sendCommand(data2).then(res2 => { console.log(res2) if (res2.success) { } }) wx.showToast({ title: '初始化管理员成功', duration: 2000, icon: "none" }) } if (res1.data == "蓝牙功能暂不支持") { wx.showLoading({ title: '重连中', mask: true }) _this.startconnect() } }) } }) } if (data.data == "蓝牙功能暂不支持") { wx.showLoading({ title: '重连中', mask: true }) _this.startconnect() } }) } } }) }, startconnect() { wx.showLoading({ title: "连接中", mask: true }) const ble = new BLE(this.data.deviceNum, emitter) app.globalData.ble = ble this.watchBLE() app.globalData.ble.init() // } }, watchBLE() { var that = this if (app.globalData.ble) { app.globalData.ble.listen(res => { if (res.type == 'connect') { if (res.data == "未打开适配器") { wx.hideLoading() wx.showModal({ title: "提示", content: "请检查手机蓝牙和定位功能是否打开?", showCancel: false, confirmText: "确定", success(res) { } }); } else { if (res.data == '蓝牙已连接') { app.globalData.bleStatus = res.data if (this.data.current == "0") { this.openTheDoor() } else if (this.data.current == "1") { this.addAdmin() } else if (this.data.current == "2") { this.resetLock() } } } } }) } }, /** * 生命周期函数--监听页面初次渲染完成 */ onReady: function () { }, /** * 生命周期函数--监听页面显示 */ onShow: function () { }, /** * 生命周期函数--监听页面隐藏 */ onHide: function () { }, /** * 生命周期函数--监听页面卸载 */ onUnload: function () { }, /** * 页面相关事件处理函数--监听用户下拉动作 */ onPullDownRefresh: function () { }, /** * 页面上拉触底事件的处理函数 */ onReachBottom: function () { }, /** * 用户点击右上角分享 */ onShareAppMessage: function () { } })