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.
 

3366 lines
104 KiB

// pages/roomDetail/roomDetail.js
const WXAPI = require('../../utils/request')
import ICINLocker from "../../utils/ICINPakage/ICINLocker"
var methods = require('../../utils/methods');
var util = require('../../utils/util');
const config = require('../../config')
const plugin = requirePlugin('myPlugin')
const util1 = require('../../utils/util1.js')
import IotTask from '../../utils/IotTask'
import {
BLE
} from "../../utils/btls/ble";
// import { clearInterval } from "timers";
const app = getApp();
var bleall = require('../../utils/bleall');
const emitter = app.globalData.emitter
import moment from "../../utils/moment"
const ADD_NFC_MODE=10
var basecode = ''
var isConnected = false
var connectedDeviceId = ''
var lockDevice = {
name: ''
}
var taskId = 0
var lockModel = ''
var lockMac = ''
var isSearch = false
var isLockLogin = false
var isInitReady = false
// 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(',');
}
Page({
/**
* 页面的初始数据
*/
data: {
isUnloked: false,
toSearch: true,
isSearch: false,
event: '',
wifiName: '', // wifi名称
wifiPwd: '', // wifi密码
show2: false, // 配网弹出层
passwordStatus:false,
addpassword:'',
showTwo:false,
showOne:false,
starttime:'',
endtime:'',
minDate: '',
minDate1: '',
info: "", //显示框
deviceinfo: {
rssi: 0,
battery: 0,
lockStatus: 0,
isOnline: 0,
event: '',
bleStatus: ''
},
index: 0,
fingerprintId: '',
openlock: '',
IssuingPersonnel: true,
backstatus: false,
cgInfo: '',
zgBlueStatus: false,
timer: '',
count: 0,
show: false,
actions: [{
name: '静音',
color: '#ee0a24'
},
{
name: '低音',
color: '#333'
},
{
name: '高音',
color: '#333'
},
],
volume: '',
bluestatus: app.globalData.backstatus,
show1: false,
TemporaryPassword: '',
phone: '',
userInfo: {
type: ''
},
authority: false,
showbuleKey:false,
deviceList:[],
userRole:'',
passwordList:[],
NfcList:[],
remotePasswordStatus:false
},
/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
var personinfo = wx.getStorageSync('info')
console.log(personinfo);
this.setData({
minDate: moment(personinfo.startTime).format('YYYY-MM-DD HH:mm:ss'),
minDate1: moment(personinfo.endTime).format('YYYY-MM-DD HH:mm:ss')
})
var userRole = wx.getStorageSync('userRole') || ''
this.setData({
userRole
})
app.globalData.zgBlueStatus = false
this.AddressPermissions()
let deviceinfo = wx.getStorageSync('deviceinfo')
if(deviceinfo.bluetoothMac){
let superAdmin = []
var superAdminIdlist = deviceinfo.bluetoothMac.slice(deviceinfo.bluetoothMac.length - 11, deviceinfo.bluetoothMac.length).split(":").join("")
for (let i = 0; i < superAdminIdlist.length; i++) {
if (superAdminIdlist[i] >= 0 && superAdminIdlist[i] <= 9) {
superAdmin.push(superAdminIdlist[i])
} else {
let adminid = superAdminIdlist.charCodeAt(i)
superAdmin.push(adminid)
}
}
let superAdminId = superAdmin.join('').slice(superAdmin.length - 8, superAdmin.length)
basecode = superAdminId
console.log(basecode, "basecode");
}
if(deviceinfo.manufactureId == 201||deviceinfo.manufactureId == 221){
var data3 = {
code: "zg/bleRegisterInfo",
signature:wx.getStorageSync('signature'),
cardId:deviceinfo.cardId,
data: {
lockerId: deviceinfo.deviceNum
}
}
WXAPI.sendCommandOne(data3).then(res1 => {
console.log(res1);
if (res1.success) {
wx.setStorageSync('cgInfo', res1.data)
this.setData({
cgInfo: res1.data
})
console.log(this.data.cgInfo);
} else {
}
})
}else{
}
this.getApartmentCardInfoMethods()
this.getPassWordMehods()
app.globalData.deviceNum = deviceinfo.deviceNum
console.log("169",this.data.minDate, this.data.minDate1);
if(deviceinfo.manufactureId == 101){
app.watch(this.getcartcount, 'backdata')
app.watch(this.fingerprintFun, 'fingerprintId')
app.watch(this.openlockfun, 'openlock')
}
},
// 获取合同信息
getApartmentCardInfoMethods(){
let deviceinfoList = wx.getStorageSync('deviceinfoList')
if(deviceinfoList[0].cardId){
let data={
signature:wx.getStorageSync('signature'),
id:deviceinfoList[0].cardId,
}
WXAPI.getApartmentCardInfo(data).then(res=>{
console.log("184",res);
if(res.success){
let leases = res.data.leases
if(leases.length>0){
let leasesObject = leases[leases.length-1]
let minDate = moment(leasesObject.signingTime).format('YYYY-MM-DD')
let minDate1 = moment(leasesObject.contractTime).format('YYYY-MM-DD')
this.setData({
minDate:minDate,
minDate1:minDate1
})
}else{
wx.showToast({
title: "还未签订合同",
duration: 2000,
icon: 'none'
})
}
}else{
wx.showToast({
title: "获取合同信息失败",
duration: 2000,
icon: 'none'
})
}
})
}else{
wx.showToast({
title: "还未有对应合同",
duration: 2000,
icon: 'none'
})
}
},
// // 同步平台任务
// synchroPlatformTask() {
// wx.showLoading({
// title: '同步平台任务中',
// icon: 'none',
// mask: true
// })
// const iotInstance = new IotTask(this.data.cgInfo.lockerId, this.iotCallBack)
// iotInstance.run()
// },
// iotCallBack(sendData) {
// let _this = this
// if (!sendData) return
// return new Promise((resolve, reject) => {
// console.log(_this.data.cgInfo.commonKey)
// ICINLocker.nbIotTransmit(sendData, _this.data.cgInfo.commonKey, (callback) => {
// console.log('发送数据' + new Date(), sendData)
// console.log('同步任务回调结果' + new Date(), callback)
// if (callback) {
// resolve(callback.nbIotResp)
// } else {
// reject('同步任务fail')
// }
// })
// })
// },
// // 添加远程密码
// addRemotePassword(){
// this.setData({
// showTwo:true,
// remotePasswordStatus:true
// })
// },
// 配网
changeshow2() {
this.setData({
show2: true
})
},
onClose2() {
this.setData({
show2: false
})
},
onChangewifi(e) {
this.setData({
wifiName: e.detail
})
},
onChangewifi1(e) {
this.setData({
wifiPwd: e.detail
})
},
configurationWifi() {
if(this.data.wifiName == '' || this.data.wifiPwd == '') {
return wx.showToast({
title: 'wifi名称和密码不能为空',
duration: 2000,
icon: "none"
})
}
let event = {
currentTarget: {
dataset: {
i: '3'
}
}
}
this.setData({
event: event.currentTarget.dataset.i
})
if(this.data.isSearch){
this.configurewifj()
}else{
this.btntest1(event)
}
},
// 前往密码列表
goPasswordList(){
wx.navigateTo({
url: '/pagesA/passwordList/passwordList',
})
},
// 交租跳转
payRentMethods(){
wx.navigateTo({
url: '/pages/rentDetail/rentDetail',
})
},
onCloseBlue(){
this.setData({
showbuleKey:false
})
},
onCloseTwo(){
this.setData({
showTwo:false,
remotePasswordStatus:false
})
},
onCloseOne(){
this.setData({
showOne:false
})
},
// 选择开始结束时间
bindDateChangeAdd(e){
var str = e.detail.value + " 00:00:00"
this.setData({
starttime: str
})
},
bindDateChangeAddTwo(e){
var str = e.detail.value + " 23:59:59"
this.setData({
endtime: str
})
},
addUser(){
var cgInfo=this.data.cgInfo
ICINLocker.getSignKey(cgInfo.lockerId, cgInfo.superId, cgInfo.superId,
(callback) => {
if (callback.status == '00') {
ICINLocker.getCommonKey(cgInfo.lockerId, cgInfo.superId, cgInfo.superId, callback.signKey, (callback1) => {
if (callback1.status == '00') {
ICINLocker.addUserToLock(cgInfo.lockerId, cgInfo.superId, "BLEKEY_8d82e5d527e1", "0o01weit9ti9ti", "00", callback.signKey, "", callback1.commonKey, "00000000", "FFFFFFFF", (callback) => {
console.log(callback)
})
}
})
}
})
},
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;
  },
linkBlue(){
wx.navigateTo({
url: '/pages/addBlueButton/addBlueButton',
})
},
searchBlueButton(e) {
var that = this
var cgInfo=this.data.cgInfo
var comm=this.stringToHex(e.currentTarget.dataset.select.name)
console.log(comm)
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
ICINLocker.connect(deviceId,true) // 此处 deviceId 存起来,当断开连接时使用
.then((res) => {
if (res.status == 0) {
clearInterval(that.data.timer)
this.setData({
bleStatus: '蓝牙已连接',
deviceId: deviceId
})
app.globalData.zgBlueStatus = true
wx.showToast({
title: '连接成功',
icon: "none",
duration: 2000
})
ICINLocker.readBluetoothBuckle(cgInfo.lockerId, comm, callback2 => {
if(callback2.status==0){
ICINLocker.registeBluetoothBuckle(cgInfo.superId, blueKeyId, keyId, password, "", cgInfo.authKey, comm, callback3 => {
if(callback3.status==0){
wx.hideLoading()
wx.showToast({
title: '添加成功',
duration:2000,
icon:"none"
})
}else{
wx.hideLoading()
wx.showToast({
title: '添加成功',
duration:2000,
icon:"none"
})
}
})
}else{
wx.hideLoading()
wx.showToast({
title: '读取失败',
duration:2000,
icon:"none"
})
}
});
} else {
wx.hideLoading()
var msg = ''
switch (res.errCode) {
case 10001:
msg = '调用失败,请打开蓝牙!';
break;
}
wx.showToast({
title: msg,
duration: 2000,
icon: 'none'
})
//此处处理返回值不为成功(0)的情况
}
}).catch((res) => {
wx.hideLoading()
console.log(res, '失败')
// 此处处理未能连接成功问题
})
},
onChange2(event) {
this.setData({
addpassword: event.detail
})
},
onChange(event) {
this.setData({
phone: event.detail
})
},
// 发送临时密码
sendMessage() {
var re = /^1\d{10}$/
if (re.test(this.data.phone)) {
var data = {
code: this.data.TemporaryPassword,
phone: this.data.phone,
device: this.data.deviceinfo.deviceNum,
name: this.data.deviceinfo.roomName
}
WXAPI.sendEmergence(data).then(res => {
if (res.success) {
this.setData({
show1: false
})
wx.showToast({
title: "发送成功",
duration: 2000,
icon: "none"
})
} else {
wx.showToast({
title: "发送失败",
duration: 2000,
icon: "none"
})
}
})
} else {
wx.showToast({
title: "请输入正确的手机号",
duration: 2000,
icon: "none"
})
}
},
// 获取临时密码
getTemporaryPassword() {
var data = {
code: "zg/getEmergence",
signature:wx.getStorageSync('signature'),
cardId:this.data.deviceinfo.cardId,
data: {
lockerId: this.data.deviceinfo.deviceNum
}
}
WXAPI.sendCommandOne(data).then(res => {
if (res.success) {
this.setData({
TemporaryPassword: res.data.data,
show1: true
})
} else {
wx.showToast({
title: "获取失败",
duration: 2000,
icon: "none"
})
}
})
},
// 关闭临时密码弹窗
onClose1() {
this.setData({
show1: false
});
},
// 关闭设置音量
onClose() {
this.setData({
show: false
});
},
processCardNumber(cardNo){
var str1=cardNo.substr(0,8)
var str2=cardNo.substr(8,8)
var num=str2.split("")
var status=num.every(item=> item==0)
console.log(status,num,'numnum',str1,str2)
if(status){
var bbb = str1.split("")
var a, b;
var aIndex = 0;
var bIndex = 1;
var arr = [];
bbb.forEach((str, index) => {
if (index % 2 === 0) {
a = str;
aIndex += 1
} else {
b = str
bIndex += 1
}
if (a&&b&&(bIndex-aIndex === 1)) {
arr.push(a+b)
}
});
console.log(arr)
return arr.join("")
}else{
var ll=str1+str2
return ll
}
},
sendNfc() {
var time3 = new Date(this.data.starttime)
var time4 = new Date(this.data.endtime)
var passwordStartTimecontrast = time3.getTime() / 1000
var passwordEndTimecontrast = time4.getTime() / 1000
if (passwordStartTimecontrast > passwordEndTimecontrast) {
wx.showToast({
title: '开始时间不能大于结束时间',
duration: 2000,
mask:true,
icon: 'none'
})
return
}
wx.showLoading({
title: '正在添加',
mask: true
})
var _this = this
var deviceinfo = this.data.deviceinfo
var info = JSON.parse(this.data.deviceinfo.info)
if (deviceinfo.manufactureId == 101) {
} else if (deviceinfo.manufactureId == 201||deviceinfo.manufactureId == 221) {
var cgInfo = this.data.cgInfo
var passwordStartTime = passwordStartTimecontrast
var passwordEndTime = passwordEndTimecontrast
var pzname='',cardName=''
if(pzname==""){
pzname=_this.data.deviceinfo.name+'-蓝牙-NFC'+(_this.data.NfcList.length+1)
cardName=_this.data.deviceinfo.name+'-蓝牙-NFC'+(_this.data.NfcList.length+1)
}else{
pzname=_this.data.deviceinfo.name+'-蓝牙-'+pzname
cardName=_this.data.deviceinfo.name+'-蓝牙-'+pzname
}
var dataPasswod = {
code: "zg/cardOperate",
cardId:deviceinfo.cardId,
data: {
lockerId: deviceinfo.deviceNum,
imei: deviceinfo.imei,
lockerUserId: info.userPassword,
keyId: info.userPassword,
action: 1,
taskStatus: 1,
order: 6210,
startTime: passwordStartTime,
endTime: passwordEndTime,
cardType: 50,
type: ADD_NFC_MODE,
roomName: this.data.deviceinfo.roomName,
cardName: cardName,
operateName:_this.data.deviceinfo.name
},
signature:wx.getStorageSync('signature'),
}
console.log(dataPasswod,'dataPasswod')
WXAPI.sendCommandOne(dataPasswod).then(res => {
console.log(res,'resres')
if (res.success) {
var pwdNo = res.data.index
var passwordIndex = res.data.index
var serialNumber=res.data.serialNumber
pwdNo = pwdNo.toString(16)
if (pwdNo.length < 2) {
pwdNo='0'+pwdNo
}
var startTime = passwordStartTime.toString(16).toUpperCase()
var endTime = passwordEndTime.toString(16).toUpperCase()
info.startTime=startTime
info.endTime=endTime
info.pwdNo = pwdNo
methods.bluetoothOperation_ZH(cgInfo,info,7).then(result=>{
if (result.status == '00') {
let carNoId=this.processCardNumber(result.cardNo)
var datacom = {
code: "zg/bleSendVoucherReply",
cardId:deviceinfo.cardId,
data: {
lockerId: deviceinfo.deviceNum,
serialNumber: serialNumber,
index: passwordIndex,
type: ADD_NFC_MODE,
cardNo: carNoId.toUpperCase(),
result: 1,
operateName:_this.data.deviceinfo.name
},
signature:wx.getStorageSync('signature'),
}
WXAPI.sendCommandOne(datacom).then(res2 => {
if (res2.success) {
var str = {
// cardId: this.personInfo.cardId,
pzname:pzname,
imei: _this.data.deviceinfo.imei,
password: carNoId.toUpperCase(),
blueCardNo:result.cardNo,
userTelephone: info.userTelephone,
operateMode: 10,
userPassword: info.userPassword,
passwordStartTime: passwordStartTime,
passwordEndTime: passwordEndTime,
is: false,
roomName:_this.data.deviceinfo.roomName,
}
var data = {
cardId: _this.data.deviceinfo.cardId,
content: JSON.stringify(str), //operateMode:NFC-10、把人员添加到凭证-1
deviceNum: _this.data.deviceinfo.deviceNum,
type: 3,
blueCardNo:result.cardNo,
imei: _this.data.deviceinfo.imei,
serial: serialNumber,
startTime: passwordStartTime,
endTime: passwordEndTime,
signature:wx.getStorageSync('signature'),
};
console.log(data, '添加凭证')
var datalist = {
cardId: _this.data.deviceinfo.cardId,
content: JSON.stringify(str), //operateMode:NFC-10、把人员添加到凭证-1
type: 13,
startTime: passwordStartTime,
endTime: passwordEndTime,
signature:wx.getStorageSync('signature'),
};
WXAPI.tsAddCertificate(datalist).then(res6 => {
console.log(datalist,'NFC',res6)
})
WXAPI.tsAddCertificate(data).then(res3 => {
if (res3.success) {
var updatedata = {
id: res3.data,
status:1,
signature:wx.getStorageSync('signature'),
};
WXAPI.editCertificate(updatedata).then((res2) => {
});
console.log(res3, '添加凭证成功')
_this.setData({
showOne: false
})
_this.getPassWordMehods()
wx.hideLoading()
wx.showToast({
title: '添加成功',
mask:true,
icon: 'none',
duration: 2000
})
} else {
wx.hideLoading()
wx.showToast({
title: '添加失败',
mask:true,
icon: 'none',
duration: 2000
})
}
})
}
})
} else {
wx.hideLoading()
wx.showToast({
title: '添加失败',
mask:true,
icon: 'none',
duration: 2000
})
var datacom = {
code: "zg/bleSendVoucherReply",
cardId:deviceinfo.cardId,
data: {
lockerId: deviceinfo.deviceNum,
serialNumber: serialNumber,
index: passwordIndex,
type: ADD_NFC_MODE,
result: 0
},
signature:wx.getStorageSync('signature'),
}
WXAPI.sendCommandOne(datacom).then(res2 => {
console.log(res2, '失败')
_this.setData({
showOne: false
})
})
}
})
} else {
wx.showToast({
title: res.msg,
duration: 2000,
mask:true,
icon: 'none'
})
}
})
}
},
// 选择设置音量
onSelect(event) {
var volume = '',
volume1 = ''
if (event.detail.name == '静音') {
volume = '00'
volume1 = 0
} else if (event.detail.name == '低音') {
volume = '01'
volume1 = 1
} else if (event.detail.name == '高音') {
volume = '02'
volume1 = 2
}
this.setData({
volume: volume
})
wx.showLoading({
title: "正在设置...",
});
if (this.data.deviceinfo.manufactureId == 201||this.data.deviceinfo.manufactureId == 221) {
this.setVolume(volume)
} else if (this.data.deviceinfo.manufactureId == 101) {
this.setVolume1(volume)
}
},
fingerprintFun() {
this.data.fingerprintId = app.globalData.fingerprintId
},
// 人员管理
personManger() {
wx.navigateTo({
url: '/pages/personManger/personManger',
})
},
openlockfun() {
var that = this
this.data.openlock = app.globalData.openlock
var userInfo=wx.getStorageSync('deviceinfo')
if (app.globalData.openlock == 1) {
var data = {
code: "ld/bleUnlockRecord",
signature:wx.getStorageSync('signature'),
cardId:this.data.deviceinfo.cardId,
data: {
deviceNum: this.data.deviceinfo.deviceNum,
userTelephone: "18270949468",
password: "2021",
roomId:that.data.deviceinfo.roomId,
roomName:that.data.deviceinfo.roomName,
cardName:userInfo.name,
}
}
console.log(data)
WXAPI.sendCommandOne(data).then(res => {
})
} else {
wx.showToast({
title: "开门失败,请重新开门",
duration: 2000,
icon: "none"
})
}
},
getcartcount(val) {
var that = this
let deviceNum = that.data.deviceinfo.deviceNum
if (app.globalData.backdata == 3 && this.data.backstatus) {
that.startFp_29(deviceNum, 0x02)
} else if (app.globalData.backdata == 2 && this.data.backstatus) {
that.startFp_29(deviceNum, 0x01)
} else if (app.globalData.backdata == 1 && this.data.backstatus) {
var data = {
managerTelephone: "18270949468",
managerPassword: "202108",
userTelephone: JSON.parse(that.data.deviceinfo.info).userTelephone,
userPassword: JSON.parse(that.data.deviceinfo.info).userPassword,
startTime: "20210813010101",
endTime: "20680813010101"
}
this.data.backstatus = false
that.startFp_63(data.managerTelephone, data.managerPassword, data.userTelephone, data.userPassword,
data.startTime, data.endTime, 16)
}
},
startFp_63(managerTelephone, managerPassword, userTelephone, userPassword, startTime, endTime, num) {
wx.showLoading({
title: "正在发送...",
});
setTimeout(() => {
wx.hideLoading()
}, 1000);
let cmd = 0x63
let mt = util.stringToUint8Array(managerTelephone)
let mp = util.stringToUint8Array(managerPassword)
let ut = util.stringToUint8Array(userTelephone)
let up = util.stringToUint8Array(userPassword)
let ust = util.time40ToBytes(startTime)
let uet = util.time40ToBytes(endTime)
let fst = util.time40ToBytes(startTime)
let fet = util.time40ToBytes(endTime)
let length = 1 + 11 + 6 + 11 + 6 + 5 + 5 + 4 + 2 + 10 + 5 + 5 + 1 + 2 + 1
let b = new Uint8Array(length)
b[0] = cmd
b.set(mt, 1)
b.set(mp, 12)
b.set(ut, 18)
b.set(up, 29)
b.set(ust, 35)
b.set(uet, 40)
//权限
b[45] = 0x46;
b[46] = 0x46;
b[47] = 0x46;
b[48] = 0x46;
//密码长度 uint16
b[49] = 0
b[50] = 0x0a
//密码数据
b[51] = this.data.fingerprintId
b[52] = 0xff
b[53] = 0xff
b[54] = 0xff
b[55] = 0xff
b[56] = 0xff
b[57] = 0xff
b[58] = 0xff
b[59] = 0xff
b[60] = 0xff
b.set(fst, 61)
b.set(fet, 66)
b[71] = 0xff;
b[72] = 0xff;
b[73] = 0xff;
b[74] = num; //添加指纹
app.globalData.ble.send(cmd, b)
},
delete_63(managerTelephone, managerPassword, userTelephone, userPassword, startTime, endTime, id) {
wx.showLoading({
title: "正在发送...",
});
setTimeout(() => {
wx.hideLoading()
}, 1000);
let cmd = 0x63
let mt = util.stringToUint8Array(managerTelephone)
let mp = util.stringToUint8Array(managerPassword)
let ut = util.stringToUint8Array(userTelephone)
let up = util.stringToUint8Array(userPassword)
let ust = util.time40ToBytes(startTime)
let uet = util.time40ToBytes(endTime)
let fst = util.time40ToBytes(startTime)
let fet = util.time40ToBytes(endTime)
let length = 1 + 11 + 6 + 11 + 6 + 5 + 5 + 4 + 2 + 10 + 5 + 5 + 1 + 2 + 1
let b = new Uint8Array(length)
b[0] = cmd
b.set(mt, 1)
b.set(mp, 12)
b.set(ut, 18)
b.set(up, 29)
b.set(ust, 35)
b.set(uet, 40)
//权限
b[45] = 0x46;
b[46] = 0x46;
b[47] = 0x46;
b[48] = 0x46;
//密码长度 uint16
b[49] = 0
b[50] = 0x0a
//密码数据
b[51] = id
b[52] = 0xff
b[53] = 0xff
b[54] = 0xff
b[55] = 0xff
b[56] = 0xff
b[57] = 0xff
b[58] = 0xff
b[59] = 0xff
b[60] = 0xff
b.set(fst, 61)
b.set(fet, 66)
b[71] = 0xff;
b[72] = 0xff;
b[73] = 0xff;
b[74] = 18; //删除指纹
app.globalData.ble.send(cmd, b)
},
startFp_29(deviceNum, status) {
wx.showLoading({
title: "正在发送...",
});
setTimeout(() => {
wx.hideLoading()
}, 1000);
let cmd = 0x29
let dn = util.stringToUint8ArrayWithPadding(deviceNum, 20, 0xff)
let length = 1 + 20 + 5 + 1 + 1
let b = new Uint8Array(length)
b[0] = cmd
b.set(dn, 1)
//send data=0x0036000008
b[21] = 0x00;
b[22] = 0x36;
b[23] = 0;
b[24] = 0;
b[25] = 0x08
b[26] = status //status: 0x03, 0x02, 0x01
b[27] = 0x01
app.globalData.ble.send(cmd, b)
},
// 设置密码
permissionsfun() {
wx.navigateTo({
url: "/pages/permissions/permissions"
})
},
// 跳转开锁记录页面
getlogList() {
wx.navigateTo({
url: "/pages/openLockLog/openLockLog?&roomId=" + this.data.deviceinfo.roomId+"&cardId="+this.data.deviceinfo.cardId
})
},
// zg蓝牙连接
openTheDoor() {
// if(this.data.deviceinfo.info){
// JSON.parse(this.data.deviceinfo.info)
// var deviceinfo = this.data.deviceinfo
var that = this
var userInfo = wx.getStorageSync('deviceinfo')
ICINLocker.getSignKey(this.data.cgInfo.lockerId, this.data.cgInfo.superId, this.data.cgInfo.superId, (callback) => {
console.log(callback)
if (callback.status == '00') {
var userSignKey = callback.signKey
ICINLocker.getCommonKey(this.data.cgInfo.lockerId, this.data.cgInfo.superId, this.data.cgInfo.superId, userSignKey, (callback) => {
console.log(callback)
var commonKey = callback.commonKey
ICINLocker.openTheDoor(this.data.cgInfo.lockerId, this.data.cgInfo.superId, userSignKey, this.data.cgInfo.superId, '', '01', commonKey, (callback) => {
// that.synchroPlatformTask()
var data = {
code: "zg/bleUnlockRecord",
signature:wx.getStorageSync('signature'),
cardId:this.data.deviceinfo.cardId,
data: {
lockerId: this.data.cgInfo.lockerId,
lockerUserId: this.data.cgInfo.superId,
roomId:this.data.deviceinfo.roomId,
roomName:this.data.deviceinfo.roomName,
cardName:userInfo.name,
operateName:this.data.deviceinfo.name
}
}
WXAPI.sendCommandOne(data).then(res => {
console.log(res)
})
})
})
}
});
// }else{
// wx.showToast({
// title: '请先下发人员',
// duration:2000,
// icon:'none'
// })
// }
},
// 退出登录
loginOut(){
console.log(1111)
wx.removeStorage({
key:"signature"
})
wx.redirectTo({
url:"/pages/login/login"
})
},
// 添加指纹
addFingerPrints() {
var userInfo = JSON.parse(this.data.deviceinfo.info)
ICINLocker.getCommonKey(this.data.cgInfo.lockerId, this.data.cgInfo.superId, this.data.cgInfo.superId, this.data.cgInfo.authKey, (callback) => {
ICINLocker.addFingerPrints(this.data.cgInfo.lockerId, this.data.cgInfo.superId, userInfo.userPassword, this.data.cgInfo.superId, '', this.data.cgInfo.authKey, '00000000', 'FFFFFFFF', '00', callback.commonKey, (callback) => {
console.log(callback)
})
})
},
changeLockUnlockState: function () {
var that = this
taskId = 101
that.initBluetooth()
},
// 蓝牙初始化
btntest1(e) {
var event = e.currentTarget.dataset.i
var that = this;
this.data.event = event
var deviceinfo = this.data.deviceinfo
this.setData({
remotePasswordStatus:false
})
if (deviceinfo.manufactureId == 201||deviceinfo.manufactureId == 221) {
if (app.globalData.zgBlueStatus) {
if (event == 0) {
this.openTheDoor()
} else if (event == 1) {
this.addPassword()
}else if (event == 3) {
this.addFingerPrints()
} else if (event == 6) {
this.setData({
show: true
})
}else if (event == 11) {
this.setData({
showOne: true
})
}else if (event == 12) {
this.goPasswordList()
}else if(event == 17){
this.synchronizationTime()
}
wx.hideLoading()
} else {
that.goBlue()
}
} else if (deviceinfo.manufactureId == 101) {
if (app.globalData.bleStatus == '蓝牙已连接') {
if (event == 0) {
this.btntest2()
} else if (event == 1) {
this.addPassword()
}else if (event == 3) {
this.btntest3()
} else if (event == 6) {
// this.setVoice()
this.setData({
show: true
})
} else if (event == 7) {
wx.showModal({
title: "常开设置",
cancelText: '关闭',
confirmText: '开启',
success: (res) => {
if (res.confirm) {
that.setOpen()
} else if (res.cancel) {
that.setOpen1()
}
}
})
}
} else {
this.startconnect()
}
}else if (deviceinfo.manufactureId == 1201 || deviceinfo.manufactureId == 1241) {
console.log("1202", this.data.isSearch, event);
if (this.data.isSearch) {
if (event == '0') {
this.LwjopenLock()
}else if(event == '3') {
this.configurewifj()
}else if(event == '12'){
this.goPasswordList()
}else if(event == '1'){
this.addPincode()
}else if(event == 71){
this.changeLockUnlockState()
}else if(event == 117){
this.syncClock()
}
} else {
this.searchDevicesMethods()
}
}
},
addPincode: function() {
var that = this
taskId = 51
that.initBluetooth()
},
configurewifj() {
var that = this
taskId = 121
that.initBluetooth()
},
searchDevicesMethods() {
var that = this;
wx.showLoading({
title: '正在搜索',
// mask: true
})
this.setData({
searchClick: false
})
wx.openBluetoothAdapter({
success: function (res) {
wx.startBluetoothDevicesDiscovery({
success: function (res) {
wx.getBluetoothDevices({
success: function (res) {
console.log("1128",res)
res.devices.map(it => {
var status = it.name.indexOf('WSL')
if (status != -1) {
if (it.RSSI != 127) {
if (it.advertisData != null) {
it.adData = util1.ab2hex(it.advertisData)
if (it.adData.length > 10) {
var macStr = it.adData.substring(4, 16).toUpperCase()
//console.log('macStr', macStr)
it.mac = macStr.substr(10, 2) + ':' + macStr.substr(8, 2) + ':' + macStr.substr(6, 2) + ':' + macStr.substr(4, 2) + ':' + macStr.substr(2, 2) + ':' + macStr.substr(0, 2)
if (it.adData.substring(1, 2) == '1') {
it.isLightOn = true
it.textColor = 'green'
} else {
it.isLightOn = false
it.textColor = 'black'
}
if (it.adData.substring(3, 4) == '1') {
it.textColor = 'pink'
it.isBind = true
} else {
it.isBind = false
}
}
} else {
it.textColor = 'black'
}
lockModel = util1.getLockModel(it.name)
it.lockType = util1.getLockType(lockModel)
if (it.name == that.data.deviceinfo.deviceNum) {
app.addDeviceWithDevName(it.name, it)
connectedDeviceId = it.deviceId
lockDevice = it
console.log(lockDevice, it, 'lockDevice,it')
app.globalData.isSearch = true
that.setData({
isSearch: true,
// lockDevice:it
})
// let iotLwj = new LwJ(it,isConnected,connectedDeviceId,isInitReady,it.lockModel)
// iotLwj.connectTo()
if (that.data.event == '0') {
// iotLwj.openLock(41)
that.LwjopenLock()
} else if (that.data.event == '3') {
console.log("1298wifi");
that.configurewifj()
}else if(that.data.event == '12'){
that.goPasswordList()
}else if(that.data.event == '71'){
that.changeLockUnlockState()
}else if(that.data.event == '117'){
that.syncClock()
}
wx.hideLoading({
success: (res) => {},
})
}
}
}
})
if (!that.data.isSearch && that.data.toSearch) {
that.searchDevicesMethods()
}
}
})
},
fail: function (res) {
wx.hideLoading({
success: (res) => {
wx.showToast({
title: res.errMsg,
duration: 2000,
icon: 'none'
})
},
})
}
})
},
fail: function (res) {
console.log('请打开蓝牙和定位功能')
wx.hideLoading({
success: (res) => {
wx.showToast({
title: '请打开蓝牙和定位功能',
duration: 2000,
icon: 'none'
})
},
})
}
})
},
LwjopenLock: function () {
var that = this
taskId = 41
that.initBluetooth()
},
initBluetooth: function () {
var that = this
wx.getConnectedBluetoothDevices({
services: [config.uuid.serviceUuid],
success: function (res) {
res.devices.map(function (it) {
if (it.deviceId == connectedDeviceId || it.name == lockDevice.name) {
isConnected = true
}
})
that.setData({
isConnected: isConnected
})
console.log('isConnected', isConnected)
if (isConnected) {
if (isInitReady) {
console.log(isInitReady, 'isInitReady', taskId)
setTimeout(() => {
that.doWork()
}, 500)
} else {
that.setupConnection()
}
} else {
that.connectTo()
}
},
})
},
doWork: function () {
console.log(taskId);
var that = this
switch (taskId) {
case 11: {
that.onBindLock()
break
}
case 12: {
that.onUnbindLock()
break
}
case 21: {
that.onQueryBindState()
break
}
case 22: {
that.onQueryBattery()
break
}
case 31: {
that.onQueryNbImei()
break
}
case 32: {
that.onLogin()
break
}
case 41: {
that.LwjonOpenLock()
break
}
case 42: {
that.onSyncClock()
break
}
case 51: {
that.onAddPincode()
break
}
case 52: {
that.onDelPincode()
break
}
case 61: {
if (lockModel > 70) {
that.onAddRfCard()
} else {
wx.showModal({
title: '提示',
content: '请刷卡!',
showCancel: false
})
}
break
}
case 62: {
that.onDelRfCard()
break
}
case 71: {
that.onAddFingerprint()
break
}
case 72: {
that.onDelFingerprint()
break
}
case 81: {
that.onChangeAdminPincode()
break
}
case 91: {
that.onQueryLockSlotState()
break
}
case 92: {
that.onQueryLockUnlockState()
break
}
case 101: {
that.onChangeLockUnlockState()
break
}
case 102: {
that.onChangeLockMutedState()
break
}
case 111: {
this.onChangeLockNbState()
}
case 121: {
this.onConfigurewifi()
break
}
case 9010: {
this.gotoperson()
break
}
default: {
}
}
},
onChangeLockUnlockState: function () {
var that = this
wx.showLoading({
title: that.data.isUnloked ? '退出常开模式' : '进入常开模式',
})
var bytes = plugin.setLockUnlockState(lockDevice.name, !that.data.isUnloked)
console.debug('bytes', bytes)
that.sendBytes(bytes)
},
onConfigurewifi() {
var that = this
var bytes = plugin.configureWifi(lockDevice.name, lockMac, that.data.wifiName, that.data.wifiPwd)
that.sendBytes(bytes)
this.setData({
show2: false
})
},
connectTo: function () {
var that = this
wx.showLoading({
title: '连接中',
})
wx.createBLEConnection({
deviceId: lockDevice.deviceId,
timeout: config.ble.connectTimeOut,
success: function (res) {
console.debug('connectTo', res)
isConnected = true
wx.hideLoading()
setTimeout(function () {
that.setupConnection()
}, 500)
},
fail: function (e) {
console.debug('connectTo', e)
wx.hideLoading()
switch (e.errCode) {
case 10003: {
wx.showModal({
title: '连接失败',
content: '是否重新连接?',
success: function (res) {
if (res.confirm) {
that.connectTo()
}
}
})
break
}
case 10012: {
wx.showModal({
title: '连接失败',
content: '蓝牙连接超时',
showCancel: false
})
break
}
case 10002: {
wx.showModal({
title: '连接失败',
content: '没有找到指定设备',
showCancel: false
})
break
}
}
}
})
},
setupConnection: function () {
var that = this
wx.showLoading({
title: '初始化连接中',
})
wx.getBLEDeviceServices({
deviceId: lockDevice.deviceId,
success: function (res) {
console.log('Services', res)
wx.getBLEDeviceCharacteristics({
deviceId: lockDevice.deviceId,
serviceId: config.uuid.serviceUuid.toUpperCase(),
success: function (res) {
console.log('Characteristics', res)
wx.showLoading({
title: '连接成功',
})
wx.onBLECharacteristicValueChange(function (res) {
var bytes = new Uint8Array(res.value)
console.log('bytes', bytes)
console.log(lockDevice.name, 'lockDevice.name1')
var data = plugin.parseBytes(lockDevice.name, basecode, bytes)
console.log('data', data)
switch (data.cmd) {
case 'reportLockBattery': {
if (data.data.battery < 10) {
wx.showModal({
title: '电量报警',
content: `门锁当前电量${data.data.battery}%!\n电量严重不足,请立即更换电池!`,
showCancel: false
})
} else if (data.data.battery < 30) {
wx.showModal({
title: '电量预警',
content: `门锁当前电量${data.data.battery}%!\n请及时更换电池!`,
showCancel: false
})
}
break
}
case 'reportRfCardResult': {
if (taskId == 61) {
wx.showModal({
title: '检测到新卡',
content: `是否添加此房卡,卡号:${data.data.cardId}`,
success: function (res) {
if (res.confirm) {
rfCardId = data.data.cardId
that.onAddRfCard()
}
}
})
} else {
if (lockModel > 70) {
if (data.data.isValid) {
wx.showModal({
title: '提示',
content: `房卡开锁成功,序号:${data.data.index}`,
showCancel: false
})
} else {
wx.showModal({
title: '提示',
content: `多次刷房卡开锁失败!`,
showCancel: false
})
}
} else {
if (data.data.isValid) {
wx.showModal({
title: '提示',
content: `房卡开锁成功,卡号:${data.data.cardId}`,
showCancel: false
})
} else {
wx.showModal({
title: '提示',
content: `房卡未授权,卡号:${data.data.cardId}`,
showCancel: false
})
}
}
}
break
}
case 'reportPincodeResult': {
if (lockModel > 70) {
if (data.data.isValid) {
wx.showModal({
title: '提示',
content: `密码开锁成功,序号:${data.data.index}`,
showCancel: false
})
} else {
wx.showModal({
title: '提示',
content: `多次密码开锁失败!`,
showCancel: false
})
}
} else {
if (data.data.isValid) {
wx.showModal({
title: '提示',
content: `密码:${data.data.pincode}开锁成功!`,
showCancel: false
})
} else {
wx.showModal({
title: '提示',
content: `密码:${data.data.pincode}未授权!`,
showCancel: false
})
}
}
break
}
case 'reportFingerprintResult': {
if (data.data.isValid) {
wx.showModal({
title: '提示',
content: `指纹开锁成功,序号:${data.data.index}`,
showCancel: false
})
} else {
wx.showModal({
title: '提示',
content: `多次指纹开锁失败!`,
showCancel: false
})
}
break
}
case 'queryLockState': {
wx.hideLoading()
if (data.code != 200) {
wx.showModal({
title: '提示',
content: '查询失败!',
showCancel: false,
success: function (res) {}
})
break
}
that.setData({
lock: {
mac: data.data.mac,
lockType: util1.getLockType(lockModel),
},
isBindLock: data.data.isBind
})
lockMac = data.data.mac
if (taskId > 0) {
if (data.data.isBind) {
wx.showModal({
title: data.data.mac,
content: '此设备已经硬件绑定!',
showCancel: false,
success: function (res) {}
})
} else {
wx.showModal({
title: data.data.mac,
content: '此设备硬件未绑定!',
showCancel: false,
success: function (res) {}
})
}
}
taskId = 0
break
}
case 'queryLockBattery': {
wx.hideLoading()
if (data.code != 200) {
wx.showModal({
title: '提示',
content: '查询失败!',
showCancel: false,
success: function (res) {}
})
break
}
taskId = 0
wx.showModal({
title: '提示',
content: `此门锁电量为${data.data.battery}%`,
showCancel: false,
success: function (res) {}
})
break
}
case 'queryNbImei': {
wx.hideLoading()
if (data.code != 200) {
wx.showModal({
title: '提示',
content: '查询失败!',
showCancel: false,
success: function (res) {}
})
break
}
taskId = 0
wx.showModal({
title: '提示',
content: `此NB设备IMEI为${data.data.imei}`,
showCancel: false,
success: function (res) {}
})
break
}
case 'setNbFun': {
wx.hideLoading()
if (data.code != 200) {
wx.showModal({
title: '提示',
content: '设置Nb功能失败!',
showCancel: false,
success: function (res) {}
})
break
}
taskId = 0
wx.showModal({
title: '提示',
content: that.data.isNbEnable ? 'NB功能已禁用' : 'NB功能已打开',
showCancel: false,
})
that.setData({
isNbEnable: !that.data.isNbEnable
})
break
}
case 'sendBindLock': {
wx.hideLoading()
if (data.code != 200) {
wx.showModal({
title: '提示',
content: '绑定失败!',
showCancel: false,
success: function (res) {}
})
break
}
taskId = 0
that.setData({
isBindLock: data.data.isBind
})
if (data.data.isBind) {
wx.showToast({
title: '绑定成功!',
})
} else {
wx.showToast({
title: '绑定失败!',
})
}
break
}
case 'sendUnbindLock': {
wx.hideLoading()
if (data.code != 200) {
wx.showModal({
title: '提示',
content: '解绑失败!',
showCancel: false,
success: function (res) {}
})
break
}
taskId = 0
that.setData({
isBindLock: data.data.isBind
})
if (data.data.isBind) {
wx.showToast({
title: '解绑失败!',
})
} else {
wx.showToast({
title: '解绑成功!',
})
}
break
}
case 'login1':
case 'sendOpenLockP1': {
if (data.code != 200) {
wx.hideLoading()
if (taskId == 41) {
wx.showModal({
title: '提示',
content: that.data.isJack ? '上电失败!' : '解锁失败!',
showCancel: false,
success: function (res) {}
})
} else if (taskId == 32) {
wx.showModal({
title: '提示',
content: '登录失败!',
showCancel: false,
success: function (res) {}
})
}
break
}
if (taskId == 41) {
console.log(lockDevice.name, 'lockDevice.name2')
var bytes = plugin.sendOpenLockP2(lockDevice.name, basecode, data.data.randomN)
console.debug('bytes', bytes)
that.sendBytes(bytes)
} else if (taskId == 32) {
console.log(lockDevice.name, 'lockDevice.name3')
var bytes = plugin.login2(lockDevice.name, basecode, data.data.randomN)
console.debug('bytes', bytes)
that.sendBytes(bytes)
}
break;
}
case 'login':
case 'sendOpenLockP2': {
wx.hideLoading()
if (data.code != 200) {
if (taskId == 41) {
wx.showModal({
title: '提示',
content: that.data.isJack ? '上电失败!' : '解锁失败!',
showCancel: false,
success: function (res) {}
})
} else if (taskId == 32) {
wx.showModal({
title: '提示',
content: '登录失败!',
showCancel: false,
success: function (res) {}
})
}
break
}
isLockLogin = true
if (taskId == 41) {
var data = {
code: "ble/bleUnlockRecord",
data: {
deviceNum: that.data.deviceinfo.deviceNum,
roomId: that.data.deviceinfo.roomId,
roomName: that.data.deviceinfo.roomName,
cardName: that.data.userInfo.username,
productId: that.data.deviceinfo.manufactureId,
userId: '29283991'
}
}
WXAPI.sendCommand(data).then(res => {
console.log(res)
})
wx.showToast({
title: that.data.isJack ? '上电成功!' : '解锁成功!',
})
} else if (taskId == 32) {
wx.showToast({
title: '登录成功!',
})
}
taskId = 0
break;
}
case 'syncClock': {
wx.hideLoading()
if (data.code != 200) {
wx.showModal({
title: '提示',
content: '同步时间失败!' + data.data.msg,
showCancel: false,
success: function (res) {}
})
break
}
taskId = 0
wx.showModal({
title: '提示',
content: '时间更新成功!',
showCancel: false
})
break;
}
case 'addPincode': {
wx.hideLoading()
if (data.code != 200) {
wx.showModal({
title: '提示',
content: '添加密码失败!' + data.data.msg,
showCancel: false,
success: function (res) {}
})
break
}
taskId = 0
that.setData({
isPincodeAdd: true
})
wx.showModal({
title: '提示',
content: `添加密码${pincode}成功!`,
showCancel: false
})
break
}
case 'delPincode': {
wx.hideLoading()
if (data.code != 200) {
wx.showModal({
title: '提示',
content: '删除密码失败!',
showCancel: false,
success: function (res) {}
})
break
}
taskId = 0
wx.showModal({
title: '提示',
content: `删除密码${pincode}成功!`,
showCancel: false,
})
that.setData({
isPincodeAdd: false
})
pincode = -1
pincodeIndex = -1
break
}
case 'addRfCard': {
wx.hideLoading()
if (data.code == 100) {
wx.showLoading({
title: data.data.msg,
})
break
} else if (data.code != 200) {
wx.showModal({
title: '提示',
content: '添加房卡失败!' + data.data.msg,
showCancel: false,
success: function (res) {}
})
break
}
taskId = 0
that.setData({
isRfCardAdd: true
})
if (lockModel > 70) {
wx.showModal({
title: '提示',
content: `添加房卡成功,序号${rfCardIndex}`,
showCancel: false
})
} else {
wx.showModal({
title: '提示',
content: `添加房卡成功,卡号${rfCardId}`,
showCancel: false
})
}
break
}
case 'delRfCard': {
wx.hideLoading()
if (data.code != 200) {
wx.showModal({
title: '提示',
content: '删除房卡失败!',
showCancel: false,
success: function (res) {}
})
break
}
taskId = 0
that.setData({
isRfCardAdd: false
})
if (lockModel > 70) {
wx.showModal({
title: '提示',
content: `删除房卡成功,序号${rfCardIndex}`,
showCancel: false,
})
} else {
wx.showModal({
title: '提示',
content: `删除房卡成功,卡号${rfCardId}`,
showCancel: false,
})
}
rfCardId = -1
rfCardIndex = -1
break
}
case 'addFingerprint': {
wx.hideLoading()
if (data.code == 100) {
wx.showLoading({
title: data.data.msg,
})
break
} else if (data.code != 200) {
wx.showModal({
title: '提示',
content: '添加指纹失败!' + data.data.msg,
showCancel: false,
success: function (res) {}
})
break
}
taskId = 0
that.setData({
isFingerprintAdd: true
})
wx.showModal({
title: '提示',
content: `添加指纹成功,序号${fingerprintIndex}`,
showCancel: false
})
break
}
case 'delFingerprint': {
wx.hideLoading()
if (data.code != 200) {
wx.showModal({
title: '提示',
content: '删除指纹失败!',
showCancel: false,
success: function (res) {}
})
break
}
taskId = 0
wx.showModal({
title: '提示',
content: `删除指纹成功,序号${fingerprintIndex}`,
showCancel: false,
})
that.setData({
isFingerprintAdd: false
})
fingerprintIndex = -1
break
}
case 'changeAdminPincode': {
wx.hideLoading()
if (data.code != 200) {
wx.showModal({
title: '提示',
content: '修改管理密码失败!',
showCancel: false,
success: function (res) {}
})
break
}
taskId = 0
wx.showToast({
title: '修改管理密码成功!',
})
}
case 'queryLockSlotState': {
wx.hideLoading()
if (data.code != 200) {
wx.showModal({
title: '提示',
content: '查询失败!',
showCancel: false,
success: function (res) {}
})
break
}
taskId = 0
wx.showModal({
title: '提示',
content: data.data.state == 0 ? '此门锁方舌关闭' : '此门锁方舌打开',
showCancel: false,
success: function (res) {}
})
break
}
case 'queryLockUnlockState': {
wx.hideLoading()
if (data.code != 200) {
wx.showModal({
title: '提示',
content: '查询失败!',
showCancel: false,
success: function (res) {}
})
break
}
taskId = 0
wx.showModal({
title: '提示',
content: data.data.state == 0 ? '此门锁已关闭' : '此门锁已打开',
showCancel: false,
success: function (res) {}
})
break
}
case 'setLockUnlockState': {
wx.hideLoading()
if (data.code != 200) {
wx.showModal({
title: '提示',
content: '设置常开指令失败!',
showCancel: false,
success: function (res) {}
})
break
}
taskId = 0
wx.showModal({
title: '提示',
content: data.data.state == 0 ? '常开模式已退出' : '常开模式已开启',
showCancel: false,
})
that.setData({
isUnloked: data.data.state == 1
})
break
}
case 'setLockMuteState': {
wx.hideLoading()
if (data.code != 200) {
wx.showModal({
title: '提示',
content: '设置静音指令失败!',
showCancel: false,
success: function (res) {}
})
break
}
taskId = 0
wx.showModal({
title: '提示',
content: data.data.state == 1 ? '静音模式已退出' : '静音模式已开启',
showCancel: false,
})
that.setData({
isMuted: data.data.state == 0
})
break
}
}
})
wx.notifyBLECharacteristicValueChange({
deviceId: lockDevice.deviceId,
serviceId: config.uuid.serviceUuid.toUpperCase(),
characteristicId: config.uuid.notifyUuid.toUpperCase(),
state: true,
success: function (res) {
console.log('setupNotify', res)
isInitReady = true
setTimeout(function () {
wx.hideLoading()
// that.onQueryBindState()
// if (taskId == '41' && that.data.event == '0') {
// that.doWork()
// }else if(taskId == '121' && that.data.event == '3') {
// that.doWork()
// }else if(taskId == '9010' && that.data.event == '8') {
// that.doWork()
// }
that.doWork()
}, 500)
},
})
},
})
},
})
},
synchronizationTime() {
var time = parseInt(new Date().getTime() / 1000)
ICINLocker.getSignKey(this.data.cgInfo.lockerId, this.data.cgInfo.superId, this.data.cgInfo.superId,
(callback) => {
var signKey = callback.signKey
ICINLocker.getCommonKey(this.data.cgInfo.lockerId, this.data.cgInfo.superId, this.data.cgInfo.superId, signKey, (callback1) => {
var _commonKey = callback1.commonKey
ICINLocker.updateTime(this.data.cgInfo.lockerId, this.data.cgInfo.superId, time, '', _commonKey, callback2 => {
if (callback2.status == '00') {
wx.showToast({
title: '同步时间成功',
duration: 2000,
icon: 'none'
})
this.setData({
showIP: false
})
} else {
wx.showToast({
title: '同步时间失败,错误码:' + callback2.status,
duration: 2000,
icon: 'none'
})
}
});
})
})
},
syncClock: function() {
var that = this
taskId = 42
that.initBluetooth()
},
onSyncClock: function() {
var that = this
wx.showLoading({
title: '同步时钟中',
})
console.log(lockDevice.name, basecode, util1.getLocalTime(8), '0000')
var bytes = plugin.syncClock(lockDevice.name, basecode, util1.getLocalTime(8))
console.debug('bytes', bytes)
that.sendBytes(bytes)
},
LwjonOpenLock: function () {
var that = this
wx.showLoading({
title: that.data.isJack ? '上电中' : '解锁中',
})
console.log(lockDevice.name, 'lockDevice.name0开锁中')
var bytes = plugin.sendOpenLockP1(lockDevice.name, basecode)
console.debug('bytes', bytes)
that.sendBytes(bytes)
},
sendBytes(bytes) {
console.log(lockDevice, config, bytes, 'sendBytes---')
setTimeout(function () {
wx.writeBLECharacteristicValue({
deviceId: lockDevice.deviceId,
serviceId: config.uuid.serviceUuid.toUpperCase(),
characteristicId: config.uuid.writeUuid.toUpperCase(),
value: bytes,
success: function (res) {
},
})
}, 50)
},
goBlue() {
var that = this
wx.showLoading({
title: '连接中',
})
console.log(this.data.deviceinfo.deviceNum, 'this.data.deviceinfo.deviceNum')
ICINLocker.scanDevices(this.data.deviceinfo.deviceNum)
.then((res) => {
console.log(res)
if (res.status == 0) {
var deviceId = res.deviceId
//成功找到蓝牙情况下进行锁连接
app.globalData.blueDeviceId = res.deviceId
ICINLocker.connect(res.deviceId,false) // 此处 deviceId 存起来,当断开连接时使用
.then((res) => {
if (res.status == 0) {
clearInterval(that.data.timer)
this.setData({
bleStatus: '蓝牙已连接',
deviceId: deviceId,
isSearch: true
})
app.globalData.zgBlueStatus = true
wx.hideLoading()
wx.showToast({
title: '连接成功',
icon: "none",
duration: 2000
})
setTimeout(() => {
if (this.data.event == 0) {
this.openTheDoor()
}else if(this.data.event == 1){
this.addPassword()
} else if (this.data.event == 3) {
this.addFingerPrints()
} else if (this.data.event == 6) {
this.setData({
show: true
})
}else if(this.data.event == 11){
this.setData({
showOne: true
})
}else if (this.data.event == 12) {
this.goPasswordList()
}else if(this.data.event == 17){
this.synchronizationTime()
}
},500)
} else {
wx.hideLoading()
var msg = ''
switch (res.errCode) {
case 10001:
msg = '调用失败,请打开蓝牙!';
break;
}
wx.showToast({
title: msg,
duration: 2000,
icon: 'none'
})
//此处处理返回值不为成功(0)的情况
}
}).catch((res) => {
wx.hideLoading()
console.log(res, '失败')
// 此处处理未能连接成功问题
})
}
})
.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()
}
}
}else{
wx.hideLoading()
}
})
},
/**
* *设置音量
* @param {门锁ID} _lockId
* @param {用户ID – 最多20字节} _userId
* @param {r 声音选项 00: 静音 01: 低音 02:高音} _action
* @param _commonKey
* @param {回调方法} callback
**/
// 设置音量
setVolume1(volume) {
wx.showLoading({
title: "正在发送...",
});
setTimeout(() => {
wx.hideLoading()
}, 1000);
let cmd = 0xF2
// let dn = util.stringToUint8ArrayWithPadding(deviceNum, 20, 0xff)
let length = 2
let b = new Uint8Array(length)
b[0] = cmd
b[1] = volume;
app.globalData.ble.send(cmd, b, function (res) {
})
},
setVolume(volume) {
ICINLocker.getSignKey(this.data.cgInfo.lockerId, this.data.cgInfo.superId, this.data.cgInfo.superId,
(callback) => {
console.log(callback, '-----')
if (callback.status == '00') {
ICINLocker.getCommonKey(this.data.cgInfo.lockerId, this.data.cgInfo.superId, this.data.cgInfo.superId, callback.signKey, (callback1) => {
console.log(callback1, '2222222')
if (callback1.status == '00') {
ICINLocker.setVolume(this.data.cgInfo.lockerId, this.data.cgInfo.superId, volume, callback1.commonKey, (callback2) => {
console.log(callback2, '333333333')
if (callback2.status == '00') {
wx.hideLoading()
wx.showToast({
title: '设置成功',
duration: 2000,
icon: 'none'
})
} else {
wx.hideLoading()
wx.showToast({
title: '设置失败',
duration: 2000,
icon: 'none'
})
}
})
} else {
wx.hideLoading()
wx.showToast({
title: '设置失败',
duration: 2000,
icon: 'none'
})
}
})
} else {
wx.hideLoading()
wx.showToast({
title: '设置失败',
duration: 2000,
icon: 'none'
})
}
});
},
//设置常开
setOpen() {
wx.showLoading({
title: "正在开启...",
});
setTimeout(() => {
wx.hideLoading()
}, 1000);
let cmd = 0xF3
// let dn = util.stringToUint8ArrayWithPadding(deviceNum, 20, 0xff)
let length = 2
let b = new Uint8Array(length)
b[0] = cmd
b[1] = 1;
app.globalData.ble.send(cmd, b, function (res) {})
},
setOpen1() {
wx.showLoading({
title: "正在关闭...",
});
setTimeout(() => {
wx.hideLoading()
}, 1000);
let cmd = 0xF3
// let dn = util.stringToUint8ArrayWithPadding(deviceNum, 20, 0xff)
let length = 2
let b = new Uint8Array(length)
b[0] = cmd
b[1] = 0;
app.globalData.ble.send(cmd, b, function (res) {})
},
//设置音量
setVoice() {
},
startconnect() {
//if(checkWechatVersion())
// {
wx.showLoading({
title: "连接中"
})
var deviceinfo = this.data.deviceinfo
const ble = new BLE(this.data.deviceinfo.deviceNum, emitter)
app.globalData.ble = ble
this.watchBLE()
app.globalData.ble.init()
// }
},
watchBLE() {
var that = this
var deviceinfo = this.data.deviceinfo
if (app.globalData.ble) {
app.globalData.ble.listen(res => {
if (res.type == 'connect') {
if (res.data == "未打开适配器") {
wx.hideLoading()
wx.showToast({
title: '请检查手机蓝牙和定位功能是否打开?',
duration: 2000,
icon: 'none'
})
} else {
if (res.data == '蓝牙已连接') {
this.data.info = res.data
app.globalData.bleStatus = res.data
if (this.data.event == 0) {
this.btntest2()
} else if(this.data.event == 1){
this.addPassword()
}else if (this.data.event == 3) {
this.btntest3()
} else if (this.data.event == 6) {
// this.setVoice()
this.setData({
show: true
})
} else if (this.data.event == 7) {
wx.showModal({
title: "常开设置",
cancelText: '关闭',
confirmText: '开启',
success: (res) => {
if (res.confirm) {
that.setOpen()
} else if (res.cancel) {
that.setOpen1()
}
}
})
}
}
}
}
})
}
},
// 添加密码
addPassword(){
this.setData({
showTwo:true
})
},
async getPassWordMehods(){
var that=this
let deviceinfoList = wx.getStorageSync('deviceinfo')
var data = {
id:deviceinfoList.cardId,
signature:wx.getStorageSync('signature'),
};
WXAPI.tsGetCertificate(data).then(res=>{
if(res.success){
var dataOne=[],dataTwo=[]
res.data.map(li=>{
if(li.type == 14){
li.content=JSON.parse(li.content)
dataOne.push(li)
}else if(li.type == 13){
li.content=JSON.parse(li.content)
dataTwo.push(li)
}
})
this.setData({
passwordList:dataOne,
NfcList:dataTwo
})
}else{
wx.showToast({
title: '获取失败',
duration:'2000',
mask:true,
icon:'none'
})
}
})
},
async sendPassword() {
var addpassword = this.data.addpassword.toString()
if(addpassword.length!=6){
wx.showToast({
title: '格式错误,密码为6位数字!',
icon:'none'
})
return false;
}
var time3 = new Date(this.data.starttime)
var time4 = new Date(this.data.endtime)
var passwordStartTimecontrast = time3.getTime() / 1000
var passwordEndTimecontrast = time4.getTime() / 1000
let passwordStatus = this.data.passwordStatus
console.log(time3,time4,passwordStartTimecontrast,passwordEndTimecontrast)
// await this.getPassWordMehods(this.data.addpassword,this.data.deviceinfo.cardId,14)
let paaaWd=this.data.passwordList.filter(lt=> lt.content.password == this.data.addpassword)
if(paaaWd.length > 0){
passwordStatus = false
}else{
passwordStatus = true
}
if(this.data.addpassword==''){
wx.showToast({
title: '密码不能为空',
mask:true,
duration: 2000,
icon: 'none'
})
return
}
if(!passwordStatus){
wx.showToast({
title: '已存在该密码,请重输',
duration: 2000,
mask:true,
icon: 'none'
})
return
}
if (passwordStartTimecontrast > passwordEndTimecontrast) {
wx.showToast({
title: '开始时间不能大于结束时间',
duration: 2000,
mask:true,
icon: 'none'
})
return
}
wx.showLoading({
title: '正在添加',
mask:true,
})
var _this = this
var deviceinfo = this.data.deviceinfo
if(this.data.remotePasswordStatus){
var pzname='',cardName=''
pzname=_this.data.deviceinfo.name+'-远程-密码'+(_this.data.passwordList.length+1)
cardName=_this.data.deviceinfo.name+'-远程-密码'+(_this.data.passwordList.length+1)
let dataObject={
code: "zg/tempPassword",
data: {
lockerId: deviceinfo.deviceNum,
imei: deviceinfo.imei,
order: 6207,
lockerUserId: JSON.parse(deviceinfo.info).userPassword,
passwordCount: 255,
keyId: JSON.parse(deviceinfo.info).userPassword,
passwordStartTime: passwordStartTimecontrast,
passwordEndTime: passwordEndTimecontrast,
action: 1,
password: addpassword,
cardName: cardName,
roomName: deviceinfo.roomName
},
operateName:_this.data.deviceinfo.name,
signature:wx.getStorageSync('signature'),
cardId: deviceinfo.cardId,
}
WXAPI.sendCommandOne(dataObject).then(res=>{
if (res.success) {
let dataPassword = {
imei: deviceinfo.imei,
deviceNum: deviceinfo.deviceNum,
userTelephone: JSON.parse(deviceinfo.info).userTelephone,
cardId: deviceinfo.cardId,
userPassword: JSON.parse(deviceinfo.info).userPassword,
password: addpassword,
operateMode: 7,
order: 6207,
type: 4,
passwordStartTime: passwordStartTimecontrast,
passwordEndTime: passwordEndTimecontrast,
is: false,
cardName: cardName,
roomName: deviceinfo.roomName,
pzname: pzname,
pass: false
};
var data = {
cardId: _this.data.deviceinfo.cardId,
content: JSON.stringify(dataPassword), //operateMode:NFC-10、把人员添加到凭证-1
deviceNum: _this.data.deviceinfo.deviceNum,
type: 4,
imei: _this.data.deviceinfo.imei,
serial: res.data.serialNumber,
startTime: passwordStartTimecontrast,
endTime: passwordEndTimecontrast,
signature:wx.getStorageSync('signature'),
};
var datalist = {
cardId: _this.data.deviceinfo.cardId,
content: JSON.stringify(dataPassword), //operateMode:NFC-10、把人员添加到凭证-1
type: 14,
startTime: passwordStartTimecontrast,
endTime: passwordEndTimecontrast,
signature:wx.getStorageSync('signature'),
};
console.log(datalist,'密码11')
WXAPI.tsAddCertificate(datalist).then(res6 => {
console.log(datalist,'密码22')
})
wx.showToast({
title: '下发成功',
icon: 'none',
mask:true,
duration: 2000
})
WXAPI.tsAddCertificate(data).then(res3 => {
if (res3.success) {
// var updatedata = {
// id: res3.data,
// status:1,
// signature:wx.getStorageSync('signature'),
// };
// WXAPI.editCertificate(updatedata).then((res2) => {
// });
_this.getPassWordMehods()
_this.setData({
showTwo: false
})
wx.hideLoading()
wx.showToast({
title: '下发成功',
icon: 'none',
mask:true,
duration: 2000
})
} else {
wx.hideLoading()
wx.showToast({
title: '添加失败',
mask:true,
icon: 'none',
duration: 2000
})
}
})
}else{
wx.showToast({
title: `${res.msg}`,
duration:2000,
icon:'none'
})
}
})
}else{
if (deviceinfo.manufactureId == 101) {
var time1 = moment(this.data.starttime).format("YYYYMMDDHHmmss")
var time2 = moment(this.data.endTime).format("YYYYMMDDHHmmss")
var time3 = new Date(_this.data.starttime.replace(/-/g, '/'))
var time4 = new Date(_this.data.endTime.replace(/-/g, '/'))
var passwordStartTime = time3.getTime() / 1000
var passwordEndTime = time4.getTime() / 1000
let info = JSON.parse(_this.data.deviceinfo.info)
var data1 = {
managerTelephone: "18270949468",
managerPassword: '202108',
userTelephone: info.userTelephone,
userPassword: info.userPassword,
password: this.data.addpassword,
startTime: time1,
endTime: time2,
}
var timestamp = moment().format("x")
bleall.startFp1_63(data1.managerTelephone, data1.managerPassword, data1.userTelephone,
data1.userPassword, data1.password, data1.startTime, data1.endTime, 7, timestamp,
function (res) {
console.log(res)
if (res.success) {
var pzname='',cardName=''
pzname=_this.data.deviceinfo.name+'-蓝牙-密码'+(_this.data.passwordList.length+1)
cardName=_this.data.personLi.name+'-蓝牙-密码'+(_this.data.passwordList.length+1)
var str = {
// cardId: this.personInfo.cardId,
pzname:pzname,
imei: _this.data.deviceinfo.imei,
password: _this.data.addpassword,
userTelephone: info.userTelephone,
operateMode: 7,
userPassword: info.userPassword,
passwordStartTime: time1,
passwordEndTime: time2,
is: false,
pass:true
}
var data3 = {
code: "ble/operateUserInfo",
signature:wx.getStorageSync('signature'),
cardId:_this.data.deviceinfo.cardId,
data: {
deviceNum: _this.data.deviceinfo.deviceNum,
imei: _this.data.deviceinfo.imei,
userTelephone: info.userTelephone,
userPassword: info.userPassword,
password: _this.data.password,
userStartTime: time1,
userEndTime: time2,
passwordStartTime: time1,
passwordEndTime: time2,
operateMode: 7,
order: 6207,
timestamp: timestamp,
managerTelephone: '18270949468',
managerPassword: '202108',
passwordLength: 10,
permission: 4294967295,
times: 255,
recycleTime: "65535",
roomName: _this.data.deviceinfo.roomName,
cardName: cardName,
}
}
WXAPI.sendCommandOne(data3).then(res3 => {
if (res3.success) {
var data4 = {
result: 1,
serial: res3.data.serialNumber
}
WXAPI.updatePush(data4).then(res4 => {
})
var data = {
cardId: _this.data.deviceinfo.cardId,
content: JSON.stringify(str), //operateMode:NFC-10、把人员添加到凭证-1
deviceNum: _this.data.deviceinfo.deviceNum,
type: 4,
imei: _this.data.deviceinfo.imei,
serial: res3.data.serialNumber,
startTime: passwordStartTime,
endTime: passwordEndTime,
signature:wx.getStorageSync('signature'),
};
var datalist = {
cardId: _this.data.deviceinfo.cardId,
content: JSON.stringify(str), //operateMode:NFC-10、把人员添加到凭证-1
type: 14,
startTime: passwordStartTime,
endTime: passwordEndTime,
signature:wx.getStorageSync('signature'),
};
console.log(datalist,'密码11')
WXAPI.tsAddCertificate(datalist).then(res6 => {
console.log(datalist,'密码22')
})
WXAPI.tsAddCertificate(data).then(res3 => {
if (res3.success) {
var updatedata = {
id: res3.data,
status:1,
signature:wx.getStorageSync('signature'),
};
WXAPI.editCertificate(updatedata).then((res2) => {
});
_this.getPassWordMehods()
_this.setData({
showTwo: false
})
wx.hideLoading()
wx.showToast({
title: '添加成功',
icon: 'none',
mask:true,
duration: 2000
})
} else {
wx.hideLoading()
wx.showToast({
title: '添加失败',
mask:true,
icon: 'none',
duration: 2000
})
}
})
} else {
wx.showToast({
title: res3.msg,
mask:true,
icon: 'none',
duration: 2000
})
}
})
}else{
wx.hideLoading()
if (res.data == "蓝牙功能暂不支持") {
_this.startconnect()
}else{
wx.showToast({
title: '下发失败',
mask:true,
duration: 2000,
icon: "none"
})
}
}
})
}else if(deviceinfo.manufactureId == 201||deviceinfo.manufactureId == 221){
var cgInfo = this.data.cgInfo
console.log(passwordStartTimecontrast,passwordEndTimecontrast)
var passwordStartTime = passwordStartTimecontrast
var passwordEndTime = passwordEndTimecontrast
var pzname='',cardName=''
console.log(_this.data.passwordList,_this.data.deviceinfo)
pzname=_this.data.deviceinfo.name+'-蓝牙-密码'+(_this.data.passwordList.length+1)
cardName=_this.data.deviceinfo.name+'-蓝牙-密码'+(_this.data.passwordList.length+1)
let info = JSON.parse(_this.data.deviceinfo.info)
var dataPasswod = {
code: "zg/tempPassword",
cardId:deviceinfo.cardId,
data: {
lockerId: deviceinfo.deviceNum,
imei: deviceinfo.imei,
passwordCount: 255,
lockerUserId: info.userPassword,
keyId: info.userPassword,
passwordStartTime: passwordStartTime,
passwordEndTime: passwordEndTime,
order: 6207,
action: 1,
password: this.data.addpassword,
type: 1,
roomName: this.data.deviceinfo.roomName,
cardName: cardName,
operateName:_this.data.deviceinfo.name
},
signature:wx.getStorageSync('signature'),
}
console.log(dataPasswod)
WXAPI.sendCommandOne(dataPasswod).then(res => {
console.log(res, '获取索引')
if (res.success) {
var pwdNo = res.data.index
var passwordIndex = res.data.index
// var str = res.data.index
pwdNo = pwdNo.toString(16)
if (pwdNo.length < 2) {
pwdNo='0'+pwdNo
}
var startTime = passwordStartTime.toString(16).toUpperCase()
var endTime = passwordEndTime.toString(16).toUpperCase()
console.log(startTime,endTime)
info.startTime=startTime
info.endTime=endTime
info.pwdNo=pwdNo
info.password=_this.data.addpassword
methods.bluetoothOperation_ZH(cgInfo,info,3).then(result=>{
console.log(result)
if (result.status == '00') {
var datacom = {
code: "zg/bleSendVoucherReply",
signature:wx.getStorageSync('signature'),
cardId:deviceinfo.cardId,
data: {
lockerId: deviceinfo.deviceNum,
serialNumber: res.data.serialNumber,
index: passwordIndex,
type: 7,
result: 1,
operateName:_this.data.deviceinfo.name
}
}
var str = {
// cardId: this.personInfo.cardId,
imei: deviceinfo.imei,
pzname:pzname,
password: _this.data.addpassword,
userTelephone: info.userTelephone,
operateMode: 7,
userPassword: info.userPassword,
passwordStartTime: passwordStartTime,
passwordEndTime: passwordEndTime,
is: false,
pass:true
}
var data = {
cardId: deviceinfo.cardId,
content: JSON.stringify(str), //operateMode:NFC-10、把人员添加到凭证-1
deviceNum: deviceinfo.deviceNum,
type: 4,
imei: deviceinfo.imei,
serial: res.data.serialNumber,
startTime: passwordStartTime,
endTime: passwordEndTime,
signature:wx.getStorageSync('signature'),
};
var datalist = {
cardId: deviceinfo.cardId,
content: JSON.stringify(str), //operateMode:NFC-10、把人员添加到凭证-1
type: 14,
startTime: passwordStartTime,
endTime: passwordEndTime,
signature:wx.getStorageSync('signature'),
};
console.log(datalist,'密码11')
WXAPI.tsAddCertificate(datalist).then(res6 => {
console.log(datalist,'密码22',res6)
})
console.log(data, '添加凭证')
WXAPI.tsAddCertificate(data).then(res3 => {
if (res3.success) {
var updatedata = {
id: res3.data,
status:1,
signature:wx.getStorageSync('signature'),
};
WXAPI.editCertificate(updatedata).then((res2) => {
});
WXAPI.sendCommandOne(datacom).then(res2 => {
if (res2.success) {}
})
console.log(res3, '添加凭证成功')
_this.setData({
show: false,
showTwo:false
})
_this.getPassWordMehods()
wx.hideLoading()
wx.showToast({
title: '添加成功',
mask:true,
icon: 'none',
duration: 2000
})
} else {
wx.hideLoading()
wx.showToast({
title: '添加失败',
mask:true,
icon: 'none',
duration: 2000
})
}
})
} else {
wx.showToast({
title: '添加失败',
mask:true,
icon: 'none',
duration: 2000
})
var datacom = {
code: "zg/bleSendVoucherReply",
signature:wx.getStorageSync('signature'),
cardId:deviceinfo.cardId,
data: {
lockerId: deviceinfo.deviceNum,
serialNumber: res.data.serialNumber,
index: res.data.index,
type: 7,
result: 0
}
}
WXAPI.sendCommandOne(datacom).then(res2 => {
console.log(res2, '失败')
_this.setData({
show: false
})
})
}
})
// .catch(err=>{
// wx.hideLoading()
// wx.showToast({
// title: '添加失败',
// icon: 'none',
// mask:true,
// duration: 2000
// })
// var datacom = {
// code: "zg/bleSendVoucherReply",
// signature:wx.getStorageSync('signature'),
// data: {
// lockerId: deviceinfo.deviceNum,
// serialNumber: res.data.serialNumber,
// index: res.data.index,
// type: 7,
// result: 0
// }
// }
// WXAPI.sendCommandOne(datacom).then(res2 => {
// console.log(res2, '失败')
// _this.setData({
// show: false
// })
// })
// })
} else {
wx.showToast({
title: res.msg,
duration: 2000,
mask:true,
icon: 'none'
})
}
})
}else if(deviceinfo.manufactureId == 1201 || deviceinfo.manufactureId == 1241){
}
}
},
closeblue() {
app.globalData.ble.close()
this.data.info = ''
app.globalData.bleStatus = false
this.data.bleStatus = false,
this.data.respond = []
},
closeblue1() {
// wx.showLoading({
// title: "正在停止...",
// });
app.globalData.ble.close()
// setTimeout(() => {
// wx.hideLoading()
// }, 1000);
this.data.info = ''
app.globalData.bleStatus = false
this.data.bleStatus = false,
this.data.respond = []
},
btntest3(event) {
var that = this
let deviceNum = that.data.deviceinfo.deviceNum
this.data.backstatus = true
that.startFp_29(deviceNum, 0x03)
// setTimeout(() => {
// that.getcartcount()
// }, 300)
},
btntest2(event) {
var that = this
let userTelephone = "18270949468" //JSON.parse(this.data.deviceinfo.info).userTelephone
let userPassword = "202108" //JSON.parse(this.data.deviceinfo.info).userPassword
let pwd = "2021110309" //JSON.parse(this.data.deviceinfo.info).userPassword
let openLockType = 2
var userInfo=wx.getStorageSync('deviceinfo')
var timestamp = moment().format("x")
bleall.openLock(userTelephone, userPassword, pwd, openLockType, timestamp, function (res) {
if (res.success) {
var data = {
code: "ld/bleUnlockRecord",
signature:wx.getStorageSync('signature'),
cardId:that.data.deviceinfo.cardId,
data: {
deviceNum: that.data.deviceNum,
userTelephone: userTelephone,
password: userPassword,
roomId:that.data.deviceinfo.roomId,
roomName:that.data.deviceinfo.roomName,
cardName:userInfo.name,
}
}
WXAPI.sendCommandOne(data).then(res => {
})
}
if (res.data == "蓝牙功能暂不支持") {
wx.showToast({
title: '重新连接蓝牙中',
duration: 2000,
icon: "none"
})
that.startconnect()
}
})
},
openLock(userTelephone, userPassword, pwd, openLockType) {
wx.showLoading({
title: "正在发送...",
});
setTimeout(() => {
wx.hideLoading()
}, 1000);
let cmd = 0x41
console.log(util, userTelephone)
let ut = util.stringToUint8Array(userTelephone)
let up = util.stringToUint8Array(userPassword)
let p = util.hexStringToBytesWithPadding(pwd, 10, 0xff)
let length = 1 + 11 + 6 + 10 + 1
let b = new Uint8Array(length)
b[0] = cmd
b.set(ut, 1)
b.set(up, 12)
b.set(p, 18)
b[28] = openLockType
console.log(b)
app.globalData.ble.send(cmd, b, length)
},
//远程开锁
remoteUnlocking() {
if (this.data.info == '蓝牙已连接') {
this.closeblue1()
}
var str2 = {
imei: this.data.deviceinfo.imei,
openLockType: 2,
is: true,
};
WXAPI.openLock(str2).then(res => {
if (res.data.success) {
wx.showToast({
title: "操作成功",
icon: "none",
duration: 2000
})
}
})
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady: function () {
app.globalData.zgBlueStatus = false
// this.btntest1()
},
AddressPermissions() {
wx.openBluetoothAdapter({
success: function (res) {
console.log('蓝牙已开启!');
},
fail: function (e) {
console.log(e)
wx.showToast({
title: '请打开蓝牙!',
duration: 2000,
icon: 'none'
})
}
});
ICINLocker.getLocationPermission().then((res) => {
if (res.status == 0) {} else {
// 连接出现问题
}
}).catch((res) => {
//处理未能获得地理位置情况
wx.showToast({
title: '请打开微信定位功能!',
duration: 2000,
icon: 'none'
})
})
},
/**
* 生命周期函数--监听页面显示
*/
onShow: function () {
var deviceinfo = wx.getStorageSync('deviceinfo')
this.setData({
deviceinfo:deviceinfo,
bleStatus: app.globalData.bleStatus
})
},
/**
* 生命周期函数--监听页面隐藏
*/
/**
* 生命周期函数--监听页面卸载
*/
onUnload: function () {
if (app.globalData.zgBlueStatus) {
ICINLocker.disConnect(app.globalData.blueDeviceId);
this.onReady()
}
this.setData({
bluestatus: false,
toSearch: false
})
this.closeblue()
},
onHide() {
this.setData({
toSearch: false
})
this.closeblue()
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh: function () {
// this.AddressPermissions()
var deviceinfo = wx.getStorageSync('deviceinfo')
app.globalData.deviceNum = deviceinfo.deviceNum
var userInfo1 = wx.getStorageSync('userInfo')
if (deviceinfo.manufactureId == 201|| deviceinfo.manufactureId == 221) {
var data3 = {
code: "zg/bleRegisterInfo",
signature:wx.getStorageSync('signature'),
cardId:deviceinfo.cardId,
data: {
lockerId: deviceinfo.deviceNum
}
}
WXAPI.sendCommandOne(data3).then(res1 => {
if (res1.success) {
wx.setStorageSync('cgInfo', res1.data)
this.setData({
cgInfo: res1.data
})
} else {
}
})
}
if (deviceinfo.roomId) {
if (userInfo1.type != 3) {
var data2 = {
q: JSON.stringify({
id: deviceinfo.roomId
}),
orderBy: "createTime",
orderType: 'desc'
}
WXAPI.getSiteTenant(data2).then(res1 => {
if (res1.data.list.length > 0) {
var array = res1.data.list.reverse()
wx.setStorageSync('info', array[0])
deviceinfo.info = array[0].info
this.setData({
deviceinfo: deviceinfo
})
} else {
wx.showToast({
title: "还未下发人员,请先下发人员",
duration: 2000,
icon: 'none'
})
}
})
} else if (userInfo1.type == 3) {
this.setData({
deviceinfo: deviceinfo
})
}
} else {
wx.navigateTo({
url: "../index/index"
})
}
this.setData({
info: app.globalData.bleStatus,
deviceinfo: deviceinfo
})
wx.stopPullDownRefresh()
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom: function () {
},
/**
* 用户点击右上角分享
*/
onShareAppMessage: function () {
}
})