|
|
- // pages/permissions/permissions.js
- const WXAPI = require('../../utils/request')
- import ICINLocker from "../../utils/ICINPakage/ICINLocker"
- var util = require('../../utils/util');
- import {
- BLE
- } from "../../utils/btls/ble";
- const app = getApp();
- 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(',');
- }
-
- function CurentTime() {
- var now = new Date();
- var year = now.getFullYear(); //年
- var month = now.getMonth() + 1; //月
- var day = now.getDate(); //日
- var hh = now.getHours(); //时
- var mm = now.getMinutes(); //分
- var clock = year + "-";
- if (month < 10)
- clock += "0";
- clock += month + "-";
- if (day < 10)
- clock += "0";
- clock += day + " ";
- if (hh < 10)
- clock += "0";
- clock += hh + ":";
- if (mm < 10) clock += '0';
- clock += mm;
- return (clock);
- }
- var date = new Date()
- Page({
-
- /**
- * 页面的初始数据
- */
- data: {
- personInfo: {},
- password: '',
- datetimerange: [CurentTime(), CurentTime()],
- deviceinfo: {},
- endtime: '',
- starttime: '',
- minDate: CurentTime(),
- minDate1: CurentTime(),
- },
-
- /**
- * 生命周期函数--监听页面加载
- */
- onLoad: function (options) {
- var userInfo1 = wx.getStorageSync('userInfo')
- if (userInfo1.type != 3) {
- this.data.personInfo = wx.getStorageSync('info')
- } else if (userInfo1.type == 3) {
- this.data.personInfo = wx.getStorageSync('deviceinfo')
- }
- this.data.deviceinfo = wx.getStorageSync('deviceinfo')
- },
- onChange(event) {
- // event.detail 为当前输入的值
- this.setData({
- password: event.detail
- })
- },
- bindDateChange: function (e) {
- var str = e.detail.value + " 00:00:00"
- this.data.datetimerange[0] = str
- this.setData({
- starttime: e.detail.value,
- minDate1: e.detail.value
- })
- },
- bindDateChange1: function (e) {
- var str = e.detail.value + " 00:00:00"
- this.data.datetimerange[1] = str
- this.setData({
- endtime: e.detail.value
- })
- },
- addwordfun() {
- var _this=this
- if (this.data.deviceinfo.manufactureId == 201||this.data.deviceinfo.manufactureId == 221) {
- if (app.globalData.zgBlueStatus) {
- var deviceinfo = this.data.deviceinfo
- var info = JSON.parse(this.data.personInfo.info)
- var cgInfo = wx.getStorageSync('cgInfo')
- ICINLocker.getUserSignKey(cgInfo.lockerId, cgInfo.superId, info.userPassword, cgInfo.superId, cgInfo.authKey, '01', (callback) => {
- console.log(callback)
- if (callback.status == '00') {
- var userSignKey = callback.userSignKey
- ICINLocker.getCommonKey(cgInfo.lockerId, info.userPassword, info.userPassword, userSignKey, (callback) => {
- console.log(callback, 'commonKey')
- var commonKey = callback.commonKey
- ICINLocker.handlePwd(deviceinfo.deviceNum, cgInfo.superId, info.userPassword, this.data.password, '00', cgInfo.superId, cgInfo.authKey, '', '00000000', 'FFFFFFFF', 255, commonKey, (callback) => {
- console.log(callback.status)
- if(callback.status='00'){
- var passwordStartTime = _this.data.datetimerange[0].replaceAll('-', '').replaceAll(':', '').replaceAll(
- ' ',
- '')
- var passwordEndTime = _this.data.datetimerange[1].replaceAll('-', '').replaceAll(':', '').replaceAll(
- ' ', '')
- var str = {
- // cardId: this.personInfo.cardId,
- imei: _this.data.deviceinfo.imei,
- password: _this.data.password,
- userTelephone: JSON.parse(_this.data.personInfo.info).userTelephone,
- operateMode: 7,
- userPassword: JSON.parse(_this.data.personInfo.info).userPassword,
- passwordStartTime: passwordStartTime,
- passwordEndTime: passwordEndTime,
- is: false
- }
- var data = {
- cardId: _this.data.personInfo.card,
- content: JSON.stringify(str), //operateMode:NFC-10、把人员添加到凭证-1
- deviceNum: _this.data.personInfo.deviceNum,
- type: 4,
- imei: _this.data.deviceinfo.imei,
- startTime: passwordStartTime,
- endTime: passwordEndTime,
- };
- WXAPI.addCertificates(data).then(res => {
- if(res.success){
- wx.showToast({
- title: '添加成功',
- })
- }
- })
- }
- })
- })
- }
- })
- } else {
- this.goBlue()
- }
- } else {
- if (app.globalData.bleStatus == '蓝牙已连接') {
- var _this = this
- if (this.data.password.length != 6) {
- wx.showToast({
- title: "密码为6位数字",
- icon: 'none',
- duration: 2000
- })
- } else {
- var passwordStartTime = _this.data.datetimerange[0].replaceAll('-', '').replaceAll(':', '').replaceAll(
- ' ',
- '')
- var passwordEndTime = _this.data.datetimerange[1].replaceAll('-', '').replaceAll(':', '').replaceAll(
- ' ', '')
- var str = {
- // cardId: this.personInfo.cardId,
- imei: _this.data.deviceinfo.imei,
- password: _this.data.password,
- userTelephone: JSON.parse(_this.data.personInfo.info).userTelephone,
- operateMode: 7,
- userPassword: JSON.parse(_this.data.personInfo.info).userPassword,
- passwordStartTime: passwordStartTime,
- passwordEndTime: passwordEndTime,
- is: false,
- }
- var data = {
- cardId: _this.data.personInfo.card,
- content: JSON.stringify(str), //operateMode:NFC-10、把人员添加到凭证-1
- deviceNum: _this.data.personInfo.deviceNum,
- type: 4,
- imei: _this.data.deviceinfo.imei,
- startTime: passwordStartTime,
- endTime: passwordEndTime,
- };
- WXAPI.addCertificates(data).then(res => {
- var data = {
- managerTelephone: "18270949468",
- managerPassword: "202108",
- userTelephone: JSON.parse(_this.data.personInfo.info).userTelephone,
- userPassword: JSON.parse(_this.data.personInfo.info).userPassword,
- startTime: passwordStartTime,
- password: _this.data.password,
- endTime: passwordEndTime
- }
- _this.startFp_63(data.managerTelephone, data.managerPassword, data.userTelephone, data
- .userPassword, data.password,
- data.startTime, data.endTime, 7)
- })
- }
- } else {
- this.startconnect()
- }
- }
- },
- goBlue() {
- var that = this
- wx.showLoading({
- title: '连接中',
- })
- ICINLocker.scanDevices(this.data.deviceinfo.deviceNum)
- .then((res) => {
- console.log(res)
- if (res.status == 0) {
- //成功找到蓝牙情况下进行锁连接
- ICINLocker.connect(res.deviceId) // 此处 deviceId 存起来,当断开连接时使用
- .then((res) => {
- if (res.status == 0) {
- this.setData({
- bleStatus: '蓝牙已连接'
- })
- app.globalData.zgBlueStatus = true
- wx.hideLoading()
- wx.showToast({
- title: '连接成功',
- icon: "none",
- duration: 2000
- })
- } 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) => {
- //此处处理未能连接到蓝牙的问题
- switch (res.errCode) {
- case 10001:
- wx.showToast({
- title: '请打开蓝牙',
- duration: 2000,
- icon: 'none'
- });
- break;
- // default:this.goBlue();
- }
- this.goBlue()
- })
- },
- startconnect() {
- //if(checkWechatVersion())
- // {
- wx.showLoading({
- title: "连接中"
- })
- const ble = new BLE(this.data.deviceinfo.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 == '蓝牙已连接') {
- this.data.info = res.data
- app.globalData.bleStatus = res.data
- this.addwordfun()
- }
- }
- }
- })
- }
- },
- closeblue() {
- wx.showLoading({
- title: "正在停止...",
- });
- app.globalData.ble.close()
- this.data.info = ''
- setTimeout(() => {
- wx.hideLoading()
- }, 1000);
- app.globalData.bleStatus = false
- this.data.bleStatus = false,
- this.data.respond = []
- },
- startFp_63(managerTelephone, managerPassword, userTelephone, userPassword, password, 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 pd = util.hexStringToBytesWithPadding(password, 10, 0xff)
-
- 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] = 0xff;
- b[46] = 0xff;
- b[47] = 0xff;
- b[48] = 0xff;
-
- //密码长度 uint16
- b[49] = 0
- b[50] = 0x0a
- //密码数据
- b.set(pd, 51)
-
- 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)
- },
- change(e) {
- this.data.single = e
- console.log('-change事件:', e);
- },
-
- /**
- * 生命周期函数--监听页面初次渲染完成
- */
- onReady: function () {
-
- },
-
- /**
- * 生命周期函数--监听页面显示
- */
- onShow: function () {
-
- },
-
- /**
- * 生命周期函数--监听页面隐藏
- */
- onHide: function () {
-
- },
-
- /**
- * 生命周期函数--监听页面卸载
- */
- onUnload: function () {
-
- },
-
- /**
- * 页面相关事件处理函数--监听用户下拉动作
- */
- onPullDownRefresh: function () {
-
- },
-
- /**
- * 页面上拉触底事件的处理函数
- */
- onReachBottom: function () {
-
- },
-
- /**
- * 用户点击右上角分享
- */
- onShareAppMessage: function () {
-
- }
- })
|