You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

552 lines
15 KiB

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