// 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 () {
|
|
|
|
}
|
|
})
|