// pages/addBlueButton/addBlueButton.js
|
|
const WXAPI = require('../../utils/request')
|
|
import ICINLocker from "../../utils/ICINPakage/ICINLocker"
|
|
var util = require('../../utils/util');
|
|
import moment from "../../utils/moment"
|
|
const app = getApp();
|
|
const CurentTime=moment().format("YYYY-MM-DD HH:mm:ss")
|
|
const CurentTime1=moment().add(60, "years").format("YYYY-MM-DD HH:mm:ss");
|
|
Page({
|
|
|
|
/**
|
|
* 页面的初始数据
|
|
*/
|
|
data: {
|
|
show:true,
|
|
deviceList:[],
|
|
personList:[],
|
|
timer:null,
|
|
blueKeyId:"",
|
|
personli:{},
|
|
selectName:'',
|
|
signKey:'',
|
|
starttime:"",
|
|
minDate:"",
|
|
minDate1:"",
|
|
endtime:"",
|
|
datetimerange:[CurentTime, CurentTime1],
|
|
minDate: CurentTime,
|
|
minDate1: CurentTime,
|
|
endtime: CurentTime1,
|
|
starttime: CurentTime,
|
|
},
|
|
|
|
/**
|
|
* 生命周期函数--监听页面加载
|
|
*/
|
|
onLoad: function (options) {
|
|
// let timer=setInterval(()=>{
|
|
this.linkBlue()
|
|
// },5000)
|
|
var deviceinfo=wx.getStorageSync('deviceinfo')
|
|
// var personli=wx.getStorageSync('personli')
|
|
this.getSiteTenant(deviceinfo.roomId)
|
|
this.setData({
|
|
deviceinfo,
|
|
// personli,
|
|
// timer
|
|
})
|
|
},
|
|
bindDateChange: function (e) {
|
|
var str = e.detail.value + " 00:00:00"
|
|
this.data.datetimerange[0] = str
|
|
this.setData({
|
|
starttime: str,
|
|
minDate1: str
|
|
})
|
|
},
|
|
bindDateChange1: function (e) {
|
|
var str = e.detail.value + " 23:59:59"
|
|
this.data.datetimerange[1] = str
|
|
this.setData({
|
|
endtime: str
|
|
})
|
|
},
|
|
btntest1(e){
|
|
var personli=e.currentTarget.dataset.personli
|
|
this.setData({
|
|
personli:personli
|
|
})
|
|
if (app.globalData.zgBlueStatus) {
|
|
this.addUser()
|
|
} else {
|
|
this.goBlue()
|
|
}
|
|
},
|
|
setDeviceKeyId(){
|
|
var info=JSON.parse(this.data.personli.info)
|
|
var cgInfo=wx.getStorageSync('cgInfo')
|
|
var comm=this.stringToHex(this.data.selectName)
|
|
var keyId="0o01weit9ti9ti"
|
|
var password="3030000000000000000000000000000000000000"
|
|
var infoKeyId=info.keyId?info.keyId:info.userPassword
|
|
ICINLocker.connect(this.data.deviceId,true).then((res) => {
|
|
if (res.status == 0) {
|
|
console.log(res,'蓝牙扣连接')
|
|
ICINLocker.readBluetoothBuckle(cgInfo.lockerId, comm, callback2 => {
|
|
if(callback2.status==0){
|
|
console.log(infoKeyId, this.data.selectName, keyId, password, "", this.data.signKey, comm,'--------蓝牙扣')
|
|
ICINLocker.registeBluetoothBuckle(infoKeyId, this.data.selectName, keyId, password, "", this.data.signKey, comm, callback3 => {
|
|
if(callback3.status==0){
|
|
wx.hideLoading()
|
|
ICINLocker.disConnect(this.data.deviceId).then(res=>{
|
|
console.log(res)
|
|
wx.removeStorageSync("connectedDeviceId");
|
|
})
|
|
this.setData({
|
|
show:false
|
|
})
|
|
wx.showToast({
|
|
title: '添加成功',
|
|
duration:2000,
|
|
icon:"none"
|
|
})
|
|
}else{
|
|
ICINLocker.disConnect(this.data.deviceId).then(res=>{
|
|
console.log(res)
|
|
wx.removeStorageSync("connectedDeviceId");
|
|
})
|
|
wx.hideLoading()
|
|
this.setData({
|
|
show:false
|
|
})
|
|
wx.showToast({
|
|
title: '添加成功',
|
|
duration:2000,
|
|
icon:"none"
|
|
})
|
|
}
|
|
})
|
|
}else{
|
|
ICINLocker.disConnect(this.data.deviceId).then(res=>{
|
|
console.log(res)
|
|
wx.removeStorageSync("connectedDeviceId");
|
|
})
|
|
wx.hideLoading()
|
|
wx.showToast({
|
|
title: '读取失败',
|
|
duration:2000,
|
|
icon:"none"
|
|
})
|
|
}
|
|
});
|
|
}
|
|
})
|
|
},
|
|
stringToHex(str){
|
|
var val="";
|
|
for(var i = 0; i < str.length; i++){
|
|
if(val == "")
|
|
val = str.charCodeAt(i).toString(16);
|
|
else
|
|
val += str.charCodeAt(i).toString(16);
|
|
}
|
|
return val;
|
|
},
|
|
addUser(){
|
|
console.log("添加蓝牙扣用户")
|
|
wx.showLoading({
|
|
title: '添加中'
|
|
})
|
|
var that=this
|
|
var cgInfo=wx.getStorageSync('cgInfo')
|
|
var personli=this.data.personli
|
|
var info=JSON.parse(personli.info)
|
|
console.log("添加蓝牙扣用户",personli,cgInfo)
|
|
var infoKeyId=info.keyId?info.keyId:info.userPassword
|
|
ICINLocker.getUserSignKey(cgInfo.lockerId, cgInfo.superId, infoKeyId, cgInfo.superId,cgInfo.authKey,"01",
|
|
(callback) => {
|
|
console.log(callback,'callbackcallbackcallbackcallback')
|
|
if (callback.status == '00') {
|
|
ICINLocker.getCommonKey(cgInfo.lockerId, infoKeyId, infoKeyId, callback.userSignKey, (callback1) => {
|
|
if (callback1.status == '00') {
|
|
var startTime=parseInt(moment(this.data.datetimerange[0]).format("X")).toString(16).toUpperCase()
|
|
var endTime=parseInt(moment(this.data.datetimerange[1]).format("X")).toString(16).toUpperCase()
|
|
console.log(cgInfo.lockerId, infoKeyId, this.data.blueKeyId, "0o01weit9ti9ti", "00", callback.userSignKey, "", callback1.commonKey, startTime, endTime)
|
|
ICINLocker.addUserToLock(cgInfo.lockerId, infoKeyId, this.data.blueKeyId, "0o01weit9ti9ti", "00", callback.userSignKey, "", callback1.commonKey, startTime, endTime, (callback2) => {
|
|
console.log(callback2)
|
|
if(callback2.status=='00'){
|
|
this.setData({
|
|
signKey:callback.userSignKey
|
|
})
|
|
wx.closeBLEConnection({
|
|
deviceId:app.globalData.blueDeviceId,
|
|
success (res) {
|
|
app.globalData.zgBlueStatus=false
|
|
that.setDeviceKeyId()
|
|
}
|
|
})
|
|
var str = {
|
|
username: personli.name,
|
|
deviceNum:this.data.deviceinfo.deviceNum,
|
|
imei:this.data.deviceinfo.imei,
|
|
iotId:infoKeyId,
|
|
manufactureId:this.data.deviceinfo.manufactureId,
|
|
userPassword: info.userPassword,
|
|
roomName:this.data.deviceinfo.roomName,
|
|
password: "0o01weit9ti9ti",
|
|
passwordStartTime: moment(this.data.datetimerange[0]).format("X"),
|
|
passwordEndTime: moment(this.data.datetimerange[1]).format("X"),
|
|
operateMode: 26,
|
|
order: 6326
|
|
};
|
|
var dataCerti={
|
|
cardId: personli.cardId,
|
|
content: JSON.stringify(str),
|
|
type: 36,
|
|
startTime: moment(this.data.datetimerange[0]).format("X"),
|
|
endTime: moment(this.data.datetimerange[1]).format("X"),
|
|
}
|
|
console.log(dataCerti,"蓝牙扣添加蓝牙扣用户凭证")
|
|
WXAPI.addCertificates(dataCerti).then(res=>{
|
|
if(res.code==200){
|
|
var dataPasswod = {
|
|
lockerId: this.data.deviceinfo.deviceNum,
|
|
imei: this.data.deviceinfo.imei,
|
|
lockerUserId: infoKeyId,
|
|
keyId: infoKeyId,
|
|
role: 0,
|
|
order: 6226,
|
|
action: 1,
|
|
roomName:this.data.deviceinfo.roomName,
|
|
cardName:'蓝牙扣'+personli.name,
|
|
type: 1,
|
|
result: 1
|
|
}
|
|
WXAPI.ZGduserOperation(dataPasswod).then(res6 => {
|
|
console.log(res6,"上报添加蓝牙扣用户")
|
|
})
|
|
}
|
|
})
|
|
// ICINLocker.disConnect(app.globalData.blueDeviceId).then(res=>{
|
|
// if(res.status=='00'){
|
|
// app.globalData.zgBlueStatus=false
|
|
// that.setDeviceKeyId()
|
|
// }
|
|
// })
|
|
}
|
|
})
|
|
}
|
|
})
|
|
}
|
|
})
|
|
},
|
|
linkBlue(){
|
|
var that=this;
|
|
ICINLocker.searchDevices().then(res=>{
|
|
if (res.status == 0) {
|
|
this.setData({
|
|
deviceList:res.deviceList
|
|
})
|
|
}
|
|
}).catch((res) => {
|
|
if (res.status == 1) {
|
|
if (res.statusReason.errCode == 10001) {
|
|
wx.showToast({
|
|
title: '请检查手机蓝牙和定位功能是否打开?',
|
|
duration: 2000,
|
|
icon: 'none'
|
|
})
|
|
} else {
|
|
if (!app.globalData.zgBlueStatus && that.data.bluestatus) {
|
|
that.linkBlue()
|
|
}
|
|
}
|
|
}
|
|
})
|
|
},
|
|
searchBlueButton(e) {
|
|
var that = this
|
|
var cgInfo=wx.getStorageSync('cgInfo')
|
|
var comm=this.stringToHex(e.currentTarget.dataset.select.name)
|
|
var deviceId=e.currentTarget.dataset.select.deviceId
|
|
var keyId="0o01weit9ti9ti"
|
|
var password="3030000000000000000000000000000000000000"
|
|
// app.globalData.blueDeviceId = e.currentTarget.dataset.select.name
|
|
var blueKeyId=e.currentTarget.dataset.select.name
|
|
if(this.data.datetimerange[0]==''||this.data.datetimerange[1]==''){
|
|
wx.showToast({
|
|
title: '请选择开始结束时间',
|
|
duration:2000,
|
|
icon:"none"
|
|
})
|
|
}else{
|
|
this.setData({
|
|
bleStatus: '蓝牙已连接',
|
|
deviceId: deviceId,
|
|
blueKeyId:blueKeyId,
|
|
show:false,
|
|
selectName:e.currentTarget.dataset.select.name
|
|
})
|
|
app.globalData.zgBlueStatus = false
|
|
}
|
|
},
|
|
// 获取入住人员
|
|
getSiteTenant(roomId) {
|
|
var data2 = {
|
|
q: JSON.stringify({
|
|
id: roomId
|
|
}),
|
|
orderBy: "createTime",
|
|
orderType: 'desc'
|
|
}
|
|
WXAPI.getSiteTenant(data2).then(res1 => {
|
|
if (res1.data.list.length > 0) {
|
|
this.setData({
|
|
personList: res1.data.list,
|
|
roomId: roomId
|
|
})
|
|
} else {
|
|
this.setData({
|
|
personList: []
|
|
})
|
|
wx.showToast({
|
|
title: "还未下发人员,请先下发人员",
|
|
duration: 2000,
|
|
icon: 'none'
|
|
})
|
|
}
|
|
})
|
|
},
|
|
goBlue() {
|
|
var that = this
|
|
wx.showLoading({
|
|
title: '连接中',
|
|
})
|
|
var deviceinfo=wx.getStorageSync('deviceinfo')
|
|
ICINLocker.scanDevices(deviceinfo.deviceNum,false).then((res) => {
|
|
if (res.status == 0) {
|
|
var deviceId = res.deviceId
|
|
//成功找到蓝牙情况下进行锁连接
|
|
app.globalData.blueDeviceId = res.deviceId
|
|
ICINLocker.connect(res.deviceId,false).then(res1 => {
|
|
if (res1.status == "0") {
|
|
console.log(res1)
|
|
that.addUser()
|
|
wx.showToast({
|
|
title: '连接成功',
|
|
icon: "none",
|
|
duration: 2000
|
|
})
|
|
app.globalData.zgBlueStatus = true
|
|
that.setData({
|
|
bleStatus: '蓝牙已连接',
|
|
})
|
|
} else {
|
|
wx.hideLoading()
|
|
var msg = ''
|
|
switch (res1.errCode) {
|
|
case 10001:
|
|
msg = '调用失败,请打开蓝牙!';
|
|
break;
|
|
}
|
|
wx.showToast({
|
|
title: msg,
|
|
duration: 2000,
|
|
icon: 'none'
|
|
})
|
|
//此处处理返回值不为成功(0)的情况
|
|
}
|
|
}).catch((res) => {
|
|
wx.hideLoading()
|
|
// 此处处理未能连接成功问题
|
|
})
|
|
}
|
|
})
|
|
.catch((res) => {
|
|
//此处处理未能连接到蓝牙的问题
|
|
if (res.status == 1) {
|
|
if (res.statusReason.errCode == 10001) {
|
|
wx.hideLoading()
|
|
wx.showToast({
|
|
title: '请检查手机蓝牙和定位功能是否打开?',
|
|
duration: 2000,
|
|
icon: 'none'
|
|
})
|
|
} else {
|
|
if (!app.globalData.zgBlueStatus && that.data.bluestatus) {
|
|
that.goBlue()
|
|
} else {
|
|
wx.hideLoading()
|
|
}
|
|
}
|
|
}
|
|
})
|
|
},
|
|
|
|
/**
|
|
* 生命周期函数--监听页面初次渲染完成
|
|
*/
|
|
onReady: function () {
|
|
|
|
},
|
|
|
|
/**
|
|
* 生命周期函数--监听页面显示
|
|
*/
|
|
onShow: function () {
|
|
|
|
},
|
|
|
|
/**
|
|
* 生命周期函数--监听页面隐藏
|
|
*/
|
|
onHide: function () {
|
|
|
|
},
|
|
|
|
/**
|
|
* 生命周期函数--监听页面卸载
|
|
*/
|
|
onUnload: function () {
|
|
|
|
},
|
|
|
|
/**
|
|
* 页面相关事件处理函数--监听用户下拉动作
|
|
*/
|
|
onPullDownRefresh: function () {
|
|
|
|
},
|
|
|
|
/**
|
|
* 页面上拉触底事件的处理函数
|
|
*/
|
|
onReachBottom: function () {
|
|
|
|
},
|
|
|
|
/**
|
|
* 用户点击右上角分享
|
|
*/
|
|
onShareAppMessage: function () {
|
|
|
|
}
|
|
})
|