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.

2123 lines
64 KiB

1 year ago
1 year ago
1 year ago
1 year ago
  1. // pages/roomDetail/roomDetail.js
  2. const WXAPI = require('../../utils/request')
  3. import ICINLocker from "../../utils/ICINPakage/ICINLocker"
  4. var methods = require('../../utils/methods');
  5. var util = require('../../utils/util');
  6. import {
  7. BLE
  8. } from "../../utils/btls/ble";
  9. // import { clearInterval } from "timers";
  10. const app = getApp();
  11. var bleall = require('../../utils/bleall');
  12. const emitter = app.globalData.emitter
  13. import moment from "../../utils/moment"
  14. const ADD_NFC_MODE=10
  15. var basecode = ''
  16. // ArrayBuffer转16进度字符串示例
  17. function ab2hex(buffer) {
  18. var hexArr = Array.prototype.map.call(
  19. new Uint8Array(buffer),
  20. function (bit) {
  21. return ('00' + bit.toString(16)).slice(-2)
  22. }
  23. )
  24. return hexArr.join(',');
  25. }
  26. Page({
  27. /**
  28. * 页面的初始数据
  29. */
  30. data: {
  31. passwordStatus:false,
  32. addpassword:'',
  33. showTwo:false,
  34. showOne:false,
  35. starttime:'',
  36. endtime:'',
  37. minDate: '',
  38. minDate1: '',
  39. info: "", //显示框
  40. deviceinfo: {
  41. rssi: 0,
  42. battery: 0,
  43. lockStatus: 0,
  44. isOnline: 0,
  45. event: '',
  46. bleStatus: ''
  47. },
  48. index: 0,
  49. fingerprintId: '',
  50. openlock: '',
  51. IssuingPersonnel: true,
  52. backstatus: false,
  53. cgInfo: '',
  54. zgBlueStatus: false,
  55. timer: '',
  56. count: 0,
  57. show: false,
  58. actions: [{
  59. name: '静音',
  60. color: '#ee0a24'
  61. },
  62. {
  63. name: '低音',
  64. color: '#333'
  65. },
  66. {
  67. name: '高音',
  68. color: '#333'
  69. },
  70. ],
  71. volume: '',
  72. bluestatus: app.globalData.backstatus,
  73. show1: false,
  74. TemporaryPassword: '',
  75. phone: '',
  76. userInfo: {
  77. type: ''
  78. },
  79. authority: false,
  80. showbuleKey:false,
  81. deviceList:[],
  82. userRole:'',
  83. passwordList:[],
  84. NfcList:[],
  85. remotePasswordStatus:false
  86. },
  87. /**
  88. * 生命周期函数--监听页面加载
  89. */
  90. onLoad: function (options) {
  91. var userRole = wx.getStorageSync('userRole') || ''
  92. this.setData({
  93. userRole
  94. })
  95. app.globalData.zgBlueStatus = false
  96. this.AddressPermissions()
  97. let deviceinfo = wx.getStorageSync('deviceinfo')
  98. // if(deviceinfo){
  99. // let superAdmin = []
  100. // var superAdminIdlist = deviceinfo.bluetoothMac.slice(deviceinfo.bluetoothMac.length - 11, deviceinfo.bluetoothMac.length).split(":").join("")
  101. // for (let i = 0; i < superAdminIdlist.length; i++) {
  102. // if (superAdminIdlist[i] >= 0 && superAdminIdlist[i] <= 9) {
  103. // superAdmin.push(superAdminIdlist[i])
  104. // } else {
  105. // let adminid = superAdminIdlist.charCodeAt(i)
  106. // superAdmin.push(adminid)
  107. // }
  108. // }
  109. // let superAdminId = superAdmin.join('').slice(superAdmin.length - 8, superAdmin.length)
  110. // basecode = superAdminId
  111. // console.log(basecode, "basecode");
  112. // }
  113. if(deviceinfo.manufactureId==201||deviceinfo.manufactureId == 221){
  114. var data3 = {
  115. code: "zg/bleRegisterInfo",
  116. signature:wx.getStorageSync('signature'),
  117. cardId:deviceinfo.cardId,
  118. data: {
  119. lockerId: deviceinfo.deviceNum
  120. }
  121. }
  122. WXAPI.sendCommandOne(data3).then(res1 => {
  123. if (res1.success) {
  124. wx.setStorageSync('cgInfo', res1.data)
  125. this.setData({
  126. cgInfo: res1.data
  127. })
  128. } else {
  129. }
  130. })
  131. }else{
  132. }
  133. this.getApartmentCardInfoMethods()
  134. this.getPassWordMehods()
  135. app.globalData.deviceNum = deviceinfo.deviceNum
  136. if(deviceinfo.manufactureId == 101){
  137. app.watch(this.getcartcount, 'backdata')
  138. app.watch(this.fingerprintFun, 'fingerprintId')
  139. app.watch(this.openlockfun, 'openlock')
  140. }
  141. },
  142. // 获取合同信息
  143. getApartmentCardInfoMethods(){
  144. let deviceinfoList = wx.getStorageSync('deviceinfoList')
  145. if(deviceinfoList[0].cardId){
  146. let data={
  147. signature:wx.getStorageSync('signature'),
  148. id:deviceinfoList[0].cardId,
  149. }
  150. WXAPI.getApartmentCardInfo(data).then(res=>{
  151. if(res.success){
  152. let leases = res.data.leases
  153. if(leases.length>0){
  154. let leasesObject = leases[leases.length-1]
  155. let minDate = moment(leasesObject.signingTime).format('YYYY-MM-DD')
  156. let minDate1 = moment(leasesObject.contractTime).format('YYYY-MM-DD')
  157. this.setData({
  158. minDate:minDate,
  159. minDate1:minDate1
  160. })
  161. }else{
  162. wx.showToast({
  163. title: "还未签订合同",
  164. duration: 2000,
  165. icon: 'none'
  166. })
  167. }
  168. }else{
  169. wx.showToast({
  170. title: "获取合同信息失败",
  171. duration: 2000,
  172. icon: 'none'
  173. })
  174. }
  175. })
  176. }else{
  177. wx.showToast({
  178. title: "还未有对应合同",
  179. duration: 2000,
  180. icon: 'none'
  181. })
  182. }
  183. },
  184. // 添加远程密码
  185. addRemotePassword(){
  186. this.setData({
  187. showTwo:true,
  188. remotePasswordStatus:true
  189. })
  190. },
  191. // 前往密码列表
  192. goPasswordList(){
  193. wx.navigateTo({
  194. url: '/pagesA/passwordList/passwordList',
  195. })
  196. },
  197. // 交租跳转
  198. payRentMethods(){
  199. wx.navigateTo({
  200. url: '/pages/rentDetail/rentDetail',
  201. })
  202. },
  203. onCloseBlue(){
  204. this.setData({
  205. showbuleKey:false
  206. })
  207. },
  208. onCloseTwo(){
  209. this.setData({
  210. showTwo:false,
  211. remotePasswordStatus:false
  212. })
  213. },
  214. onCloseOne(){
  215. this.setData({
  216. showOne:false
  217. })
  218. },
  219. // 选择开始结束时间
  220. bindDateChangeAdd(e){
  221. var str = e.detail.value + " 00:00:00"
  222. this.setData({
  223. starttime: str
  224. })
  225. },
  226. bindDateChangeAddTwo(e){
  227. var str = e.detail.value + " 00:00:00"
  228. this.setData({
  229. endtime: str
  230. })
  231. },
  232. addUser(){
  233. var cgInfo=this.data.cgInfo
  234. ICINLocker.getSignKey(cgInfo.lockerId, cgInfo.superId, cgInfo.superId,
  235. (callback) => {
  236. if (callback.status == '00') {
  237. ICINLocker.getCommonKey(cgInfo.lockerId, cgInfo.superId, cgInfo.superId, callback.signKey, (callback1) => {
  238. if (callback1.status == '00') {
  239. ICINLocker.addUserToLock(cgInfo.lockerId, cgInfo.superId, "BLEKEY_8d82e5d527e1", "0o01weit9ti9ti", "00", callback.signKey, "", callback1.commonKey, "00000000", "FFFFFFFF", (callback) => {
  240. console.log(callback)
  241. })
  242. }
  243. })
  244. }
  245. })
  246. },
  247. stringToHex(str){
  248.     var val="";
  249.     for(var i = 0; i < str.length; i++){
  250.       if(val == "")
  251.         val = str.charCodeAt(i).toString(16);
  252.       else
  253.         val += str.charCodeAt(i).toString(16);
  254.     }
  255.     return val;
  256.   },
  257. linkBlue(){
  258. wx.navigateTo({
  259. url: '/pages/addBlueButton/addBlueButton',
  260. })
  261. },
  262. searchBlueButton(e) {
  263. var that = this
  264. var cgInfo=this.data.cgInfo
  265. var comm=this.stringToHex(e.currentTarget.dataset.select.name)
  266. console.log(comm)
  267. var deviceId=e.currentTarget.dataset.select.deviceId
  268. var keyId="0o01weit9ti9ti"
  269. var password="3030000000000000000000000000000000000000"
  270. app.globalData.blueDeviceId = e.currentTarget.dataset.select.name
  271. var blueKeyId=e.currentTarget.dataset.select.name
  272. ICINLocker.connect(deviceId,true) // 此处 deviceId 存起来,当断开连接时使用
  273. .then((res) => {
  274. if (res.status == 0) {
  275. clearInterval(that.data.timer)
  276. this.setData({
  277. bleStatus: '蓝牙已连接',
  278. deviceId: deviceId
  279. })
  280. app.globalData.zgBlueStatus = true
  281. wx.showToast({
  282. title: '连接成功',
  283. icon: "none",
  284. duration: 2000
  285. })
  286. ICINLocker.readBluetoothBuckle(cgInfo.lockerId, comm, callback2 => {
  287. if(callback2.status==0){
  288. ICINLocker.registeBluetoothBuckle(cgInfo.superId, blueKeyId, keyId, password, "", cgInfo.authKey, comm, callback3 => {
  289. if(callback3.status==0){
  290. wx.hideLoading()
  291. wx.showToast({
  292. title: '添加成功',
  293. duration:2000,
  294. icon:"none"
  295. })
  296. }else{
  297. wx.hideLoading()
  298. wx.showToast({
  299. title: '添加成功',
  300. duration:2000,
  301. icon:"none"
  302. })
  303. }
  304. })
  305. }else{
  306. wx.hideLoading()
  307. wx.showToast({
  308. title: '读取失败',
  309. duration:2000,
  310. icon:"none"
  311. })
  312. }
  313. });
  314. } else {
  315. wx.hideLoading()
  316. var msg = ''
  317. switch (res.errCode) {
  318. case 10001:
  319. msg = '调用失败,请打开蓝牙!';
  320. break;
  321. }
  322. wx.showToast({
  323. title: msg,
  324. duration: 2000,
  325. icon: 'none'
  326. })
  327. //此处处理返回值不为成功(0)的情况
  328. }
  329. }).catch((res) => {
  330. wx.hideLoading()
  331. console.log(res, '失败')
  332. // 此处处理未能连接成功问题
  333. })
  334. },
  335. onChange2(event) {
  336. this.setData({
  337. addpassword: event.detail
  338. })
  339. },
  340. onChange(event) {
  341. this.setData({
  342. phone: event.detail
  343. })
  344. },
  345. // 发送临时密码
  346. sendMessage() {
  347. var re = /^1\d{10}$/
  348. if (re.test(this.data.phone)) {
  349. var data = {
  350. code: this.data.TemporaryPassword,
  351. phone: this.data.phone,
  352. device: this.data.deviceinfo.deviceNum,
  353. name: this.data.deviceinfo.roomName
  354. }
  355. WXAPI.sendEmergence(data).then(res => {
  356. if (res.success) {
  357. this.setData({
  358. show1: false
  359. })
  360. wx.showToast({
  361. title: "发送成功",
  362. duration: 2000,
  363. icon: "none"
  364. })
  365. } else {
  366. wx.showToast({
  367. title: "发送失败",
  368. duration: 2000,
  369. icon: "none"
  370. })
  371. }
  372. })
  373. } else {
  374. wx.showToast({
  375. title: "请输入正确的手机号",
  376. duration: 2000,
  377. icon: "none"
  378. })
  379. }
  380. },
  381. // 获取临时密码
  382. getTemporaryPassword() {
  383. var data = {
  384. code: "zg/getEmergence",
  385. signature:wx.getStorageSync('signature'),
  386. cardId:this.data.deviceinfo.cardId,
  387. data: {
  388. lockerId: this.data.deviceinfo.deviceNum
  389. }
  390. }
  391. WXAPI.sendCommandOne(data).then(res => {
  392. if (res.success) {
  393. this.setData({
  394. TemporaryPassword: res.data.data,
  395. show1: true
  396. })
  397. } else {
  398. wx.showToast({
  399. title: "获取失败",
  400. duration: 2000,
  401. icon: "none"
  402. })
  403. }
  404. })
  405. },
  406. // 关闭临时密码弹窗
  407. onClose1() {
  408. this.setData({
  409. show1: false
  410. });
  411. },
  412. // 关闭设置音量
  413. onClose() {
  414. this.setData({
  415. show: false
  416. });
  417. },
  418. processCardNumber(cardNo){
  419. var str1=cardNo.substr(0,8)
  420. var str2=cardNo.substr(8,8)
  421. var num=str2.split("")
  422. var status=num.every(item=> item==0)
  423. console.log(status,num,'numnum',str1,str2)
  424. if(status){
  425. var bbb = str1.split("")
  426. var a, b;
  427. var aIndex = 0;
  428. var bIndex = 1;
  429. var arr = [];
  430. bbb.forEach((str, index) => {
  431. if (index % 2 === 0) {
  432. a = str;
  433. aIndex += 1
  434. } else {
  435. b = str
  436. bIndex += 1
  437. }
  438. if (a&&b&&(bIndex-aIndex === 1)) {
  439. arr.push(a+b)
  440. }
  441. });
  442. console.log(arr)
  443. return arr.join("")
  444. }else{
  445. var ll=str1+str2
  446. return ll
  447. }
  448. },
  449. sendNfc() {
  450. var time3 = new Date(this.data.starttime)
  451. var time4 = new Date(this.data.endtime)
  452. var passwordStartTimecontrast = time3.getTime() / 1000
  453. var passwordEndTimecontrast = time4.getTime() / 1000
  454. if (passwordStartTimecontrast > passwordEndTimecontrast) {
  455. wx.showToast({
  456. title: '开始时间不能大于结束时间',
  457. duration: 2000,
  458. mask:true,
  459. icon: 'none'
  460. })
  461. return
  462. }
  463. wx.showLoading({
  464. title: '正在添加',
  465. mask: true
  466. })
  467. var _this = this
  468. var deviceinfo = this.data.deviceinfo
  469. var info = JSON.parse(this.data.deviceinfo.info)
  470. if (deviceinfo.manufactureId == 101) {
  471. } else if (deviceinfo.manufactureId == 201||deviceinfo.manufactureId == 221) {
  472. var cgInfo = this.data.cgInfo
  473. var passwordStartTime = passwordStartTimecontrast
  474. var passwordEndTime = passwordEndTimecontrast
  475. var pzname='',cardName=''
  476. if(pzname==""){
  477. pzname=_this.data.deviceinfo.name+'-蓝牙-NFC'+(_this.data.NfcList.length+1)
  478. cardName=_this.data.deviceinfo.name+'-蓝牙-NFC'+(_this.data.NfcList.length+1)
  479. }else{
  480. pzname=_this.data.deviceinfo.name+'-蓝牙-'+pzname
  481. cardName=_this.data.deviceinfo.name+'-蓝牙-'+pzname
  482. }
  483. var dataPasswod = {
  484. code: "zg/cardOperate",
  485. cardId:deviceinfo.cardId,
  486. data: {
  487. lockerId: deviceinfo.deviceNum,
  488. imei: deviceinfo.imei,
  489. lockerUserId: info.userPassword,
  490. keyId: info.userPassword,
  491. action: 1,
  492. taskStatus: 1,
  493. order: 6210,
  494. startTime: passwordStartTime,
  495. endTime: passwordEndTime,
  496. cardType: 50,
  497. type: ADD_NFC_MODE,
  498. roomName: this.data.deviceinfo.roomName,
  499. cardName: cardName,
  500. operateName:_this.data.deviceinfo.name
  501. },
  502. signature:wx.getStorageSync('signature'),
  503. }
  504. console.log(dataPasswod,'dataPasswod')
  505. WXAPI.sendCommandOne(dataPasswod).then(res => {
  506. console.log(res,'resres')
  507. if (res.success) {
  508. var pwdNo = res.data.index
  509. var passwordIndex = res.data.index
  510. var serialNumber=res.data.serialNumber
  511. pwdNo = pwdNo.toString(16)
  512. if (pwdNo.length < 2) {
  513. pwdNo='0'+pwdNo
  514. }
  515. var startTime = passwordStartTime.toString(16).toUpperCase()
  516. var endTime = passwordEndTime.toString(16).toUpperCase()
  517. info.startTime=startTime
  518. info.endTime=endTime
  519. info.pwdNo = pwdNo
  520. methods.bluetoothOperation_ZH(cgInfo,info,7).then(result=>{
  521. if (result.status == '00') {
  522. let carNoId=this.processCardNumber(result.cardNo)
  523. var datacom = {
  524. code: "zg/bleSendVoucherReply",
  525. cardId:deviceinfo.cardId,
  526. data: {
  527. lockerId: deviceinfo.deviceNum,
  528. serialNumber: serialNumber,
  529. index: passwordIndex,
  530. type: ADD_NFC_MODE,
  531. cardNo: carNoId.toUpperCase(),
  532. result: 1,
  533. operateName:_this.data.deviceinfo.name
  534. },
  535. signature:wx.getStorageSync('signature'),
  536. }
  537. WXAPI.sendCommandOne(datacom).then(res2 => {
  538. if (res2.success) {
  539. var str = {
  540. // cardId: this.personInfo.cardId,
  541. pzname:pzname,
  542. imei: _this.data.deviceinfo.imei,
  543. password: carNoId.toUpperCase(),
  544. blueCardNo:result.cardNo,
  545. userTelephone: info.userTelephone,
  546. operateMode: 10,
  547. userPassword: info.userPassword,
  548. passwordStartTime: passwordStartTime,
  549. passwordEndTime: passwordEndTime,
  550. is: false,
  551. roomName:_this.data.deviceinfo.roomName,
  552. }
  553. var data = {
  554. cardId: _this.data.deviceinfo.cardId,
  555. content: JSON.stringify(str), //operateMode:NFC-10、把人员添加到凭证-1
  556. deviceNum: _this.data.deviceinfo.deviceNum,
  557. type: 3,
  558. blueCardNo:result.cardNo,
  559. imei: _this.data.deviceinfo.imei,
  560. serial: serialNumber,
  561. startTime: passwordStartTime,
  562. endTime: passwordEndTime,
  563. signature:wx.getStorageSync('signature'),
  564. };
  565. console.log(data, '添加凭证')
  566. var datalist = {
  567. cardId: _this.data.deviceinfo.cardId,
  568. content: JSON.stringify(str), //operateMode:NFC-10、把人员添加到凭证-1
  569. type: 13,
  570. startTime: passwordStartTime,
  571. endTime: passwordEndTime,
  572. signature:wx.getStorageSync('signature'),
  573. };
  574. WXAPI.tsAddCertificate(datalist).then(res6 => {
  575. console.log(datalist,'NFC',res6)
  576. })
  577. WXAPI.tsAddCertificate(data).then(res3 => {
  578. if (res3.success) {
  579. var updatedata = {
  580. id: res3.data,
  581. status:1,
  582. signature:wx.getStorageSync('signature'),
  583. };
  584. WXAPI.editCertificate(updatedata).then((res2) => {
  585. });
  586. console.log(res3, '添加凭证成功')
  587. _this.setData({
  588. showOne: false
  589. })
  590. _this.getPassWordMehods()
  591. wx.hideLoading()
  592. wx.showToast({
  593. title: '添加成功',
  594. mask:true,
  595. icon: 'none',
  596. duration: 2000
  597. })
  598. } else {
  599. wx.hideLoading()
  600. wx.showToast({
  601. title: '添加失败',
  602. mask:true,
  603. icon: 'none',
  604. duration: 2000
  605. })
  606. }
  607. })
  608. }
  609. })
  610. } else {
  611. wx.hideLoading()
  612. wx.showToast({
  613. title: '添加失败',
  614. mask:true,
  615. icon: 'none',
  616. duration: 2000
  617. })
  618. var datacom = {
  619. code: "zg/bleSendVoucherReply",
  620. cardId:deviceinfo.cardId,
  621. data: {
  622. lockerId: deviceinfo.deviceNum,
  623. serialNumber: serialNumber,
  624. index: passwordIndex,
  625. type: ADD_NFC_MODE,
  626. result: 0
  627. },
  628. signature:wx.getStorageSync('signature'),
  629. }
  630. WXAPI.sendCommandOne(datacom).then(res2 => {
  631. console.log(res2, '失败')
  632. _this.setData({
  633. showOne: false
  634. })
  635. })
  636. }
  637. })
  638. } else {
  639. wx.showToast({
  640. title: res.msg,
  641. duration: 2000,
  642. mask:true,
  643. icon: 'none'
  644. })
  645. }
  646. })
  647. }
  648. },
  649. // 选择设置音量
  650. onSelect(event) {
  651. var volume = '',
  652. volume1 = ''
  653. if (event.detail.name == '静音') {
  654. volume = '00'
  655. volume1 = 0
  656. } else if (event.detail.name == '低音') {
  657. volume = '01'
  658. volume1 = 1
  659. } else if (event.detail.name == '高音') {
  660. volume = '02'
  661. volume1 = 2
  662. }
  663. this.setData({
  664. volume: volume
  665. })
  666. wx.showLoading({
  667. title: "正在设置...",
  668. });
  669. if (this.data.deviceinfo.manufactureId == 201||this.data.deviceinfo.manufactureId == 221) {
  670. this.setVolume(volume)
  671. } else if (this.data.deviceinfo.manufactureId == 101) {
  672. this.setVolume1(volume)
  673. }
  674. },
  675. fingerprintFun() {
  676. this.data.fingerprintId = app.globalData.fingerprintId
  677. },
  678. // 人员管理
  679. personManger() {
  680. wx.navigateTo({
  681. url: '/pages/personManger/personManger',
  682. })
  683. },
  684. openlockfun() {
  685. var that = this
  686. this.data.openlock = app.globalData.openlock
  687. var userInfo=wx.getStorageSync('deviceinfo')
  688. if (app.globalData.openlock == 1) {
  689. var data = {
  690. code: "ld/bleUnlockRecord",
  691. signature:wx.getStorageSync('signature'),
  692. cardId:this.data.deviceinfo.cardId,
  693. data: {
  694. deviceNum: this.data.deviceinfo.deviceNum,
  695. userTelephone: "18270949468",
  696. password: "2021",
  697. roomId:that.data.deviceinfo.roomId,
  698. roomName:that.data.deviceinfo.roomName,
  699. cardName:userInfo.name,
  700. }
  701. }
  702. console.log(data)
  703. WXAPI.sendCommandOne(data).then(res => {
  704. })
  705. } else {
  706. wx.showToast({
  707. title: "开门失败,请重新开门",
  708. duration: 2000,
  709. icon: "none"
  710. })
  711. }
  712. },
  713. getcartcount(val) {
  714. var that = this
  715. let deviceNum = that.data.deviceinfo.deviceNum
  716. if (app.globalData.backdata == 3 && this.data.backstatus) {
  717. that.startFp_29(deviceNum, 0x02)
  718. } else if (app.globalData.backdata == 2 && this.data.backstatus) {
  719. that.startFp_29(deviceNum, 0x01)
  720. } else if (app.globalData.backdata == 1 && this.data.backstatus) {
  721. var data = {
  722. managerTelephone: "18270949468",
  723. managerPassword: "202108",
  724. userTelephone: JSON.parse(that.data.deviceinfo.info).userTelephone,
  725. userPassword: JSON.parse(that.data.deviceinfo.info).userPassword,
  726. startTime: "20210813010101",
  727. endTime: "20680813010101"
  728. }
  729. this.data.backstatus = false
  730. that.startFp_63(data.managerTelephone, data.managerPassword, data.userTelephone, data.userPassword,
  731. data.startTime, data.endTime, 16)
  732. }
  733. },
  734. startFp_63(managerTelephone, managerPassword, userTelephone, userPassword, startTime, endTime, num) {
  735. wx.showLoading({
  736. title: "正在发送...",
  737. });
  738. setTimeout(() => {
  739. wx.hideLoading()
  740. }, 1000);
  741. let cmd = 0x63
  742. let mt = util.stringToUint8Array(managerTelephone)
  743. let mp = util.stringToUint8Array(managerPassword)
  744. let ut = util.stringToUint8Array(userTelephone)
  745. let up = util.stringToUint8Array(userPassword)
  746. let ust = util.time40ToBytes(startTime)
  747. let uet = util.time40ToBytes(endTime)
  748. let fst = util.time40ToBytes(startTime)
  749. let fet = util.time40ToBytes(endTime)
  750. let length = 1 + 11 + 6 + 11 + 6 + 5 + 5 + 4 + 2 + 10 + 5 + 5 + 1 + 2 + 1
  751. let b = new Uint8Array(length)
  752. b[0] = cmd
  753. b.set(mt, 1)
  754. b.set(mp, 12)
  755. b.set(ut, 18)
  756. b.set(up, 29)
  757. b.set(ust, 35)
  758. b.set(uet, 40)
  759. //权限
  760. b[45] = 0x46;
  761. b[46] = 0x46;
  762. b[47] = 0x46;
  763. b[48] = 0x46;
  764. //密码长度 uint16
  765. b[49] = 0
  766. b[50] = 0x0a
  767. //密码数据
  768. b[51] = this.data.fingerprintId
  769. b[52] = 0xff
  770. b[53] = 0xff
  771. b[54] = 0xff
  772. b[55] = 0xff
  773. b[56] = 0xff
  774. b[57] = 0xff
  775. b[58] = 0xff
  776. b[59] = 0xff
  777. b[60] = 0xff
  778. b.set(fst, 61)
  779. b.set(fet, 66)
  780. b[71] = 0xff;
  781. b[72] = 0xff;
  782. b[73] = 0xff;
  783. b[74] = num; //添加指纹
  784. app.globalData.ble.send(cmd, b)
  785. },
  786. delete_63(managerTelephone, managerPassword, userTelephone, userPassword, startTime, endTime, id) {
  787. wx.showLoading({
  788. title: "正在发送...",
  789. });
  790. setTimeout(() => {
  791. wx.hideLoading()
  792. }, 1000);
  793. let cmd = 0x63
  794. let mt = util.stringToUint8Array(managerTelephone)
  795. let mp = util.stringToUint8Array(managerPassword)
  796. let ut = util.stringToUint8Array(userTelephone)
  797. let up = util.stringToUint8Array(userPassword)
  798. let ust = util.time40ToBytes(startTime)
  799. let uet = util.time40ToBytes(endTime)
  800. let fst = util.time40ToBytes(startTime)
  801. let fet = util.time40ToBytes(endTime)
  802. let length = 1 + 11 + 6 + 11 + 6 + 5 + 5 + 4 + 2 + 10 + 5 + 5 + 1 + 2 + 1
  803. let b = new Uint8Array(length)
  804. b[0] = cmd
  805. b.set(mt, 1)
  806. b.set(mp, 12)
  807. b.set(ut, 18)
  808. b.set(up, 29)
  809. b.set(ust, 35)
  810. b.set(uet, 40)
  811. //权限
  812. b[45] = 0x46;
  813. b[46] = 0x46;
  814. b[47] = 0x46;
  815. b[48] = 0x46;
  816. //密码长度 uint16
  817. b[49] = 0
  818. b[50] = 0x0a
  819. //密码数据
  820. b[51] = id
  821. b[52] = 0xff
  822. b[53] = 0xff
  823. b[54] = 0xff
  824. b[55] = 0xff
  825. b[56] = 0xff
  826. b[57] = 0xff
  827. b[58] = 0xff
  828. b[59] = 0xff
  829. b[60] = 0xff
  830. b.set(fst, 61)
  831. b.set(fet, 66)
  832. b[71] = 0xff;
  833. b[72] = 0xff;
  834. b[73] = 0xff;
  835. b[74] = 18; //删除指纹
  836. app.globalData.ble.send(cmd, b)
  837. },
  838. startFp_29(deviceNum, status) {
  839. wx.showLoading({
  840. title: "正在发送...",
  841. });
  842. setTimeout(() => {
  843. wx.hideLoading()
  844. }, 1000);
  845. let cmd = 0x29
  846. let dn = util.stringToUint8ArrayWithPadding(deviceNum, 20, 0xff)
  847. let length = 1 + 20 + 5 + 1 + 1
  848. let b = new Uint8Array(length)
  849. b[0] = cmd
  850. b.set(dn, 1)
  851. //send data=0x0036000008
  852. b[21] = 0x00;
  853. b[22] = 0x36;
  854. b[23] = 0;
  855. b[24] = 0;
  856. b[25] = 0x08
  857. b[26] = status //status: 0x03, 0x02, 0x01
  858. b[27] = 0x01
  859. app.globalData.ble.send(cmd, b)
  860. },
  861. // 设置密码
  862. permissionsfun() {
  863. wx.navigateTo({
  864. url: "/pages/permissions/permissions"
  865. })
  866. },
  867. // 跳转开锁记录页面
  868. getlogList() {
  869. wx.navigateTo({
  870. url: "/pages/openLockLog/openLockLog?&roomId=" + this.data.deviceinfo.roomId+"&cardId="+this.data.deviceinfo.cardId
  871. })
  872. },
  873. // zg蓝牙连接
  874. openTheDoor() {
  875. // if(this.data.deviceinfo.info){
  876. // JSON.parse(this.data.deviceinfo.info)
  877. // var deviceinfo = this.data.deviceinfo
  878. var userInfo = wx.getStorageSync('deviceinfo')
  879. ICINLocker.getSignKey(this.data.cgInfo.lockerId, this.data.cgInfo.superId, this.data.cgInfo.superId, (callback) => {
  880. console.log(callback)
  881. if (callback.status == '00') {
  882. var userSignKey = callback.signKey
  883. ICINLocker.getCommonKey(this.data.cgInfo.lockerId, this.data.cgInfo.superId, this.data.cgInfo.superId, userSignKey, (callback) => {
  884. console.log(callback)
  885. var commonKey = callback.commonKey
  886. ICINLocker.openTheDoor(this.data.cgInfo.lockerId, this.data.cgInfo.superId, userSignKey, this.data.cgInfo.superId, '', '01', commonKey, (callback) => {
  887. var data = {
  888. code: "zg/bleUnlockRecord",
  889. signature:wx.getStorageSync('signature'),
  890. cardId:this.data.deviceinfo.cardId,
  891. data: {
  892. lockerId: this.data.cgInfo.lockerId,
  893. lockerUserId: this.data.cgInfo.superId,
  894. roomId:this.data.deviceinfo.roomId,
  895. roomName:this.data.deviceinfo.roomName,
  896. cardName:userInfo.name,
  897. operateName:this.data.deviceinfo.name
  898. }
  899. }
  900. WXAPI.sendCommandOne(data).then(res => {
  901. console.log(res)
  902. })
  903. })
  904. })
  905. }
  906. });
  907. // }else{
  908. // wx.showToast({
  909. // title: '请先下发人员',
  910. // duration:2000,
  911. // icon:'none'
  912. // })
  913. // }
  914. },
  915. // 退出登录
  916. loginOut(){
  917. console.log(1111)
  918. wx.removeStorage({
  919. key:"signature"
  920. })
  921. wx.redirectTo({
  922. url:"/pages/login/login"
  923. })
  924. },
  925. // 添加指纹
  926. addFingerPrints() {
  927. var userInfo = JSON.parse(this.data.deviceinfo.info)
  928. ICINLocker.getCommonKey(this.data.cgInfo.lockerId, this.data.cgInfo.superId, this.data.cgInfo.superId, this.data.cgInfo.authKey, (callback) => {
  929. 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) => {
  930. console.log(callback)
  931. })
  932. })
  933. },
  934. // 蓝牙初始化
  935. btntest1(e) {
  936. var event = e.currentTarget.dataset.i
  937. var that = this;
  938. this.data.event = event
  939. var deviceinfo = this.data.deviceinfo
  940. this.setData({
  941. remotePasswordStatus:false
  942. })
  943. if (deviceinfo.manufactureId == 201||deviceinfo.manufactureId == 221) {
  944. if (app.globalData.zgBlueStatus) {
  945. if (event == 0) {
  946. this.openTheDoor()
  947. } else if (event == 1) {
  948. this.addPassword()
  949. }else if (event == 3) {
  950. this.addFingerPrints()
  951. } else if (event == 6) {
  952. this.setData({
  953. show: true
  954. })
  955. }else if (event == 11) {
  956. this.setData({
  957. showOne: true
  958. })
  959. }else if (event == 12) {
  960. this.goPasswordList()
  961. }
  962. } else {
  963. that.goBlue()
  964. }
  965. } else if (deviceinfo.manufactureId == 101) {
  966. if (app.globalData.bleStatus == '蓝牙已连接') {
  967. if (event == 0) {
  968. this.btntest2()
  969. } else if (event == 1) {
  970. this.addPassword()
  971. }else if (event == 3) {
  972. this.btntest3()
  973. } else if (event == 6) {
  974. // this.setVoice()
  975. this.setData({
  976. show: true
  977. })
  978. } else if (event == 7) {
  979. wx.showModal({
  980. title: "常开设置",
  981. cancelText: '关闭',
  982. confirmText: '开启',
  983. success: (res) => {
  984. if (res.confirm) {
  985. that.setOpen()
  986. } else if (res.cancel) {
  987. that.setOpen1()
  988. }
  989. }
  990. })
  991. }
  992. } else {
  993. this.startconnect()
  994. }
  995. }
  996. },
  997. goBlue() {
  998. var that = this
  999. wx.showLoading({
  1000. title: '连接中',
  1001. })
  1002. console.log(this.data.deviceinfo.deviceNum, 'this.data.deviceinfo.deviceNum')
  1003. ICINLocker.scanDevices(this.data.deviceinfo.deviceNum)
  1004. .then((res) => {
  1005. console.log(res)
  1006. if (res.status == 0) {
  1007. var deviceId = res.deviceId
  1008. //成功找到蓝牙情况下进行锁连接
  1009. app.globalData.blueDeviceId = res.deviceId
  1010. ICINLocker.connect(res.deviceId,false) // 此处 deviceId 存起来,当断开连接时使用
  1011. .then((res) => {
  1012. if (res.status == 0) {
  1013. clearInterval(that.data.timer)
  1014. this.setData({
  1015. bleStatus: '蓝牙已连接',
  1016. deviceId: deviceId
  1017. })
  1018. app.globalData.zgBlueStatus = true
  1019. wx.hideLoading()
  1020. wx.showToast({
  1021. title: '连接成功',
  1022. icon: "none",
  1023. duration: 2000
  1024. })
  1025. if (this.data.event == 0) {
  1026. this.openTheDoor()
  1027. }else if(this.data.event == 1){
  1028. this.addPassword()
  1029. } else if (this.data.event == 3) {
  1030. this.addFingerPrints()
  1031. } else if (this.data.event == 6) {
  1032. this.setData({
  1033. show: true
  1034. })
  1035. }else if(this.data.event == 11){
  1036. this.setData({
  1037. showOne: true
  1038. })
  1039. }else if (event == 12) {
  1040. this.goPasswordList()
  1041. }
  1042. } else {
  1043. wx.hideLoading()
  1044. var msg = ''
  1045. switch (res.errCode) {
  1046. case 10001:
  1047. msg = '调用失败,请打开蓝牙!';
  1048. break;
  1049. }
  1050. wx.showToast({
  1051. title: msg,
  1052. duration: 2000,
  1053. icon: 'none'
  1054. })
  1055. //此处处理返回值不为成功(0)的情况
  1056. }
  1057. }).catch((res) => {
  1058. wx.hideLoading()
  1059. console.log(res, '失败')
  1060. // 此处处理未能连接成功问题
  1061. })
  1062. }
  1063. })
  1064. .catch((res) => {
  1065. //此处处理未能连接到蓝牙的问题
  1066. if (res.status == 1) {
  1067. if (res.statusReason.errCode == 10001) {
  1068. wx.hideLoading()
  1069. wx.showToast({
  1070. title: '请检查手机蓝牙和定位功能是否打开?',
  1071. duration: 2000,
  1072. icon: 'none'
  1073. })
  1074. } else {
  1075. if (!app.globalData.zgBlueStatus && that.data.bluestatus) {
  1076. that.goBlue()
  1077. } else {
  1078. wx.hideLoading()
  1079. }
  1080. }
  1081. }
  1082. })
  1083. },
  1084. /**
  1085. * *设置音量
  1086. * @param {门锁ID} _lockId
  1087. * @param {用户ID 最多20字节} _userId
  1088. * @param {r 声音选项 00: 静音 01: 低音 02高音} _action
  1089. * @param _commonKey
  1090. * @param {回调方法} callback
  1091. **/
  1092. // 设置音量
  1093. setVolume1(volume) {
  1094. wx.showLoading({
  1095. title: "正在发送...",
  1096. });
  1097. setTimeout(() => {
  1098. wx.hideLoading()
  1099. }, 1000);
  1100. let cmd = 0xF2
  1101. // let dn = util.stringToUint8ArrayWithPadding(deviceNum, 20, 0xff)
  1102. let length = 2
  1103. let b = new Uint8Array(length)
  1104. b[0] = cmd
  1105. b[1] = volume;
  1106. app.globalData.ble.send(cmd, b, function (res) {
  1107. })
  1108. },
  1109. setVolume(volume) {
  1110. ICINLocker.getSignKey(this.data.cgInfo.lockerId, this.data.cgInfo.superId, this.data.cgInfo.superId,
  1111. (callback) => {
  1112. console.log(callback, '-----')
  1113. if (callback.status == '00') {
  1114. ICINLocker.getCommonKey(this.data.cgInfo.lockerId, this.data.cgInfo.superId, this.data.cgInfo.superId, callback.signKey, (callback1) => {
  1115. console.log(callback1, '2222222')
  1116. if (callback1.status == '00') {
  1117. ICINLocker.setVolume(this.data.cgInfo.lockerId, this.data.cgInfo.superId, volume, callback1.commonKey, (callback2) => {
  1118. console.log(callback2, '333333333')
  1119. if (callback2.status == '00') {
  1120. wx.hideLoading()
  1121. wx.showToast({
  1122. title: '设置成功',
  1123. duration: 2000,
  1124. icon: 'none'
  1125. })
  1126. } else {
  1127. wx.hideLoading()
  1128. wx.showToast({
  1129. title: '设置失败',
  1130. duration: 2000,
  1131. icon: 'none'
  1132. })
  1133. }
  1134. })
  1135. } else {
  1136. wx.hideLoading()
  1137. wx.showToast({
  1138. title: '设置失败',
  1139. duration: 2000,
  1140. icon: 'none'
  1141. })
  1142. }
  1143. })
  1144. } else {
  1145. wx.hideLoading()
  1146. wx.showToast({
  1147. title: '设置失败',
  1148. duration: 2000,
  1149. icon: 'none'
  1150. })
  1151. }
  1152. });
  1153. },
  1154. //设置常开
  1155. setOpen() {
  1156. wx.showLoading({
  1157. title: "正在开启...",
  1158. });
  1159. setTimeout(() => {
  1160. wx.hideLoading()
  1161. }, 1000);
  1162. let cmd = 0xF3
  1163. // let dn = util.stringToUint8ArrayWithPadding(deviceNum, 20, 0xff)
  1164. let length = 2
  1165. let b = new Uint8Array(length)
  1166. b[0] = cmd
  1167. b[1] = 1;
  1168. app.globalData.ble.send(cmd, b, function (res) {})
  1169. },
  1170. setOpen1() {
  1171. wx.showLoading({
  1172. title: "正在关闭...",
  1173. });
  1174. setTimeout(() => {
  1175. wx.hideLoading()
  1176. }, 1000);
  1177. let cmd = 0xF3
  1178. // let dn = util.stringToUint8ArrayWithPadding(deviceNum, 20, 0xff)
  1179. let length = 2
  1180. let b = new Uint8Array(length)
  1181. b[0] = cmd
  1182. b[1] = 0;
  1183. app.globalData.ble.send(cmd, b, function (res) {})
  1184. },
  1185. //设置音量
  1186. setVoice() {
  1187. },
  1188. startconnect() {
  1189. //if(checkWechatVersion())
  1190. // {
  1191. wx.showLoading({
  1192. title: "连接中"
  1193. })
  1194. var deviceinfo = this.data.deviceinfo
  1195. const ble = new BLE(this.data.deviceinfo.deviceNum, emitter)
  1196. app.globalData.ble = ble
  1197. this.watchBLE()
  1198. app.globalData.ble.init()
  1199. // }
  1200. },
  1201. watchBLE() {
  1202. var that = this
  1203. var deviceinfo = this.data.deviceinfo
  1204. if (app.globalData.ble) {
  1205. app.globalData.ble.listen(res => {
  1206. if (res.type == 'connect') {
  1207. if (res.data == "未打开适配器") {
  1208. wx.hideLoading()
  1209. wx.showToast({
  1210. title: '请检查手机蓝牙和定位功能是否打开?',
  1211. duration: 2000,
  1212. icon: 'none'
  1213. })
  1214. } else {
  1215. if (res.data == '蓝牙已连接') {
  1216. this.data.info = res.data
  1217. app.globalData.bleStatus = res.data
  1218. if (this.data.event == 0) {
  1219. this.btntest2()
  1220. } else if(this.data.event == 1){
  1221. this.addPassword()
  1222. }else if (this.data.event == 3) {
  1223. this.btntest3()
  1224. } else if (this.data.event == 6) {
  1225. // this.setVoice()
  1226. this.setData({
  1227. show: true
  1228. })
  1229. } else if (this.data.event == 7) {
  1230. wx.showModal({
  1231. title: "常开设置",
  1232. cancelText: '关闭',
  1233. confirmText: '开启',
  1234. success: (res) => {
  1235. if (res.confirm) {
  1236. that.setOpen()
  1237. } else if (res.cancel) {
  1238. that.setOpen1()
  1239. }
  1240. }
  1241. })
  1242. }
  1243. }
  1244. }
  1245. }
  1246. })
  1247. }
  1248. },
  1249. // 添加密码
  1250. addPassword(){
  1251. this.setData({
  1252. showTwo:true
  1253. })
  1254. },
  1255. async getPassWordMehods(){
  1256. var that=this
  1257. let deviceinfoList = wx.getStorageSync('deviceinfo')
  1258. var data = {
  1259. id:deviceinfoList.cardId,
  1260. signature:wx.getStorageSync('signature'),
  1261. };
  1262. WXAPI.tsGetCertificate(data).then(res=>{
  1263. if(res.success){
  1264. var dataOne=[],dataTwo=[]
  1265. res.data.map(li=>{
  1266. if(li.type == 14){
  1267. li.content=JSON.parse(li.content)
  1268. dataOne.push(li)
  1269. }else if(li.type == 13){
  1270. li.content=JSON.parse(li.content)
  1271. dataTwo.push(li)
  1272. }
  1273. })
  1274. this.setData({
  1275. passwordList:dataOne,
  1276. NfcList:dataTwo
  1277. })
  1278. }else{
  1279. wx.showToast({
  1280. title: '获取失败',
  1281. duration:'2000',
  1282. mask:true,
  1283. icon:'none'
  1284. })
  1285. }
  1286. })
  1287. },
  1288. async sendPassword() {
  1289. var addpassword = this.data.addpassword.toString()
  1290. if(addpassword.length!=6){
  1291. wx.showToast({
  1292. title: '格式错误,密码为6位数字!',
  1293. icon:'none'
  1294. })
  1295. return false;
  1296. }
  1297. var time3 = new Date(this.data.starttime)
  1298. var time4 = new Date(this.data.endtime)
  1299. var passwordStartTimecontrast = time3.getTime() / 1000
  1300. var passwordEndTimecontrast = time4.getTime() / 1000
  1301. let passwordStatus = this.data.passwordStatus
  1302. console.log(time3,time4,passwordStartTimecontrast,passwordEndTimecontrast)
  1303. // await this.getPassWordMehods(this.data.addpassword,this.data.deviceinfo.cardId,14)
  1304. let paaaWd=this.data.passwordList.filter(lt=> lt.content.password == this.data.addpassword)
  1305. if(paaaWd.length > 0){
  1306. passwordStatus = false
  1307. }else{
  1308. passwordStatus = true
  1309. }
  1310. if(this.data.addpassword==''){
  1311. wx.showToast({
  1312. title: '密码不能为空',
  1313. mask:true,
  1314. duration: 2000,
  1315. icon: 'none'
  1316. })
  1317. return
  1318. }
  1319. if(!passwordStatus){
  1320. wx.showToast({
  1321. title: '已存在该密码,请重输',
  1322. duration: 2000,
  1323. mask:true,
  1324. icon: 'none'
  1325. })
  1326. return
  1327. }
  1328. if (passwordStartTimecontrast > passwordEndTimecontrast) {
  1329. wx.showToast({
  1330. title: '开始时间不能大于结束时间',
  1331. duration: 2000,
  1332. mask:true,
  1333. icon: 'none'
  1334. })
  1335. return
  1336. }
  1337. wx.showLoading({
  1338. title: '正在添加',
  1339. mask:true,
  1340. })
  1341. var _this = this
  1342. var deviceinfo = this.data.deviceinfo
  1343. if(this.data.remotePasswordStatus){
  1344. var pzname='',cardName=''
  1345. pzname=_this.data.deviceinfo.name+'-远程-密码'+(_this.data.passwordList.length+1)
  1346. cardName=_this.data.deviceinfo.name+'-远程-密码'+(_this.data.passwordList.length+1)
  1347. let dataObject={
  1348. code: "zg/tempPassword",
  1349. data: {
  1350. lockerId: deviceinfo.deviceNum,
  1351. imei: deviceinfo.imei,
  1352. order: 6207,
  1353. lockerUserId: JSON.parse(deviceinfo.info).userPassword,
  1354. passwordCount: 255,
  1355. keyId: JSON.parse(deviceinfo.info).userPassword,
  1356. passwordStartTime: passwordStartTimecontrast,
  1357. passwordEndTime: passwordEndTimecontrast,
  1358. action: 1,
  1359. password: addpassword,
  1360. cardName: cardName,
  1361. roomName: deviceinfo.roomName
  1362. },
  1363. operateName:_this.data.deviceinfo.name,
  1364. signature:wx.getStorageSync('signature'),
  1365. cardId: deviceinfo.cardId,
  1366. }
  1367. WXAPI.sendCommandOne(dataObject).then(res=>{
  1368. if (res.success) {
  1369. let dataPassword = {
  1370. imei: deviceinfo.imei,
  1371. deviceNum: deviceinfo.deviceNum,
  1372. userTelephone: JSON.parse(deviceinfo.info).userTelephone,
  1373. cardId: deviceinfo.cardId,
  1374. userPassword: JSON.parse(deviceinfo.info).userPassword,
  1375. password: addpassword,
  1376. operateMode: 7,
  1377. order: 6207,
  1378. type: 4,
  1379. passwordStartTime: passwordStartTimecontrast,
  1380. passwordEndTime: passwordEndTimecontrast,
  1381. is: false,
  1382. cardName: cardName,
  1383. roomName: deviceinfo.roomName,
  1384. pzname: pzname,
  1385. pass: false
  1386. };
  1387. var data = {
  1388. cardId: _this.data.deviceinfo.cardId,
  1389. content: JSON.stringify(dataPassword), //operateMode:NFC-10、把人员添加到凭证-1
  1390. deviceNum: _this.data.deviceinfo.deviceNum,
  1391. type: 4,
  1392. imei: _this.data.deviceinfo.imei,
  1393. serial: res.data.serialNumber,
  1394. startTime: passwordStartTimecontrast,
  1395. endTime: passwordEndTimecontrast,
  1396. signature:wx.getStorageSync('signature'),
  1397. };
  1398. var datalist = {
  1399. cardId: _this.data.deviceinfo.cardId,
  1400. content: JSON.stringify(dataPassword), //operateMode:NFC-10、把人员添加到凭证-1
  1401. type: 14,
  1402. startTime: passwordStartTimecontrast,
  1403. endTime: passwordEndTimecontrast,
  1404. signature:wx.getStorageSync('signature'),
  1405. };
  1406. console.log(datalist,'密码11')
  1407. WXAPI.tsAddCertificate(datalist).then(res6 => {
  1408. console.log(datalist,'密码22')
  1409. })
  1410. wx.showToast({
  1411. title: '下发成功',
  1412. icon: 'none',
  1413. mask:true,
  1414. duration: 2000
  1415. })
  1416. WXAPI.tsAddCertificate(data).then(res3 => {
  1417. if (res3.success) {
  1418. // var updatedata = {
  1419. // id: res3.data,
  1420. // status:1,
  1421. // signature:wx.getStorageSync('signature'),
  1422. // };
  1423. // WXAPI.editCertificate(updatedata).then((res2) => {
  1424. // });
  1425. _this.getPassWordMehods()
  1426. _this.setData({
  1427. showTwo: false
  1428. })
  1429. wx.hideLoading()
  1430. wx.showToast({
  1431. title: '下发成功',
  1432. icon: 'none',
  1433. mask:true,
  1434. duration: 2000
  1435. })
  1436. } else {
  1437. wx.hideLoading()
  1438. wx.showToast({
  1439. title: '添加失败',
  1440. mask:true,
  1441. icon: 'none',
  1442. duration: 2000
  1443. })
  1444. }
  1445. })
  1446. }else{
  1447. wx.showToast({
  1448. title: `${res.msg}`,
  1449. duration:2000,
  1450. icon:'none'
  1451. })
  1452. }
  1453. })
  1454. }else{
  1455. if (deviceinfo.manufactureId == 101) {
  1456. var time1 = moment(this.data.starttime).format("YYYYMMDDHHmmss")
  1457. var time2 = moment(this.data.endTime).format("YYYYMMDDHHmmss")
  1458. var time3 = new Date(_this.data.starttime.replace(/-/g, '/'))
  1459. var time4 = new Date(_this.data.endTime.replace(/-/g, '/'))
  1460. var passwordStartTime = time3.getTime() / 1000
  1461. var passwordEndTime = time4.getTime() / 1000
  1462. let info = JSON.parse(_this.data.deviceinfo.info)
  1463. var data1 = {
  1464. managerTelephone: "18270949468",
  1465. managerPassword: '202108',
  1466. userTelephone: info.userTelephone,
  1467. userPassword: info.userPassword,
  1468. password: this.data.addpassword,
  1469. startTime: time1,
  1470. endTime: time2,
  1471. }
  1472. var timestamp = moment().format("x")
  1473. bleall.startFp1_63(data1.managerTelephone, data1.managerPassword, data1.userTelephone,
  1474. data1.userPassword, data1.password, data1.startTime, data1.endTime, 7, timestamp,
  1475. function (res) {
  1476. console.log(res)
  1477. if (res.success) {
  1478. var pzname='',cardName=''
  1479. pzname=_this.data.deviceinfo.name+'-蓝牙-密码'+(_this.data.passwordList.length+1)
  1480. cardName=_this.data.personLi.name+'-蓝牙-密码'+(_this.data.passwordList.length+1)
  1481. var str = {
  1482. // cardId: this.personInfo.cardId,
  1483. pzname:pzname,
  1484. imei: _this.data.deviceinfo.imei,
  1485. password: _this.data.addpassword,
  1486. userTelephone: info.userTelephone,
  1487. operateMode: 7,
  1488. userPassword: info.userPassword,
  1489. passwordStartTime: time1,
  1490. passwordEndTime: time2,
  1491. is: false,
  1492. pass:true
  1493. }
  1494. var data3 = {
  1495. code: "ble/operateUserInfo",
  1496. signature:wx.getStorageSync('signature'),
  1497. cardId:_this.data.deviceinfo.cardId,
  1498. data: {
  1499. deviceNum: _this.data.deviceinfo.deviceNum,
  1500. imei: _this.data.deviceinfo.imei,
  1501. userTelephone: info.userTelephone,
  1502. userPassword: info.userPassword,
  1503. password: _this.data.password,
  1504. userStartTime: time1,
  1505. userEndTime: time2,
  1506. passwordStartTime: time1,
  1507. passwordEndTime: time2,
  1508. operateMode: 7,
  1509. order: 6207,
  1510. timestamp: timestamp,
  1511. managerTelephone: '18270949468',
  1512. managerPassword: '202108',
  1513. passwordLength: 10,
  1514. permission: 4294967295,
  1515. times: 255,
  1516. recycleTime: "65535",
  1517. roomName: _this.data.deviceinfo.roomName,
  1518. cardName: cardName,
  1519. }
  1520. }
  1521. WXAPI.sendCommandOne(data3).then(res3 => {
  1522. if (res3.success) {
  1523. var data4 = {
  1524. result: 1,
  1525. serial: res3.data.serialNumber
  1526. }
  1527. WXAPI.updatePush(data4).then(res4 => {
  1528. })
  1529. var data = {
  1530. cardId: _this.data.deviceinfo.cardId,
  1531. content: JSON.stringify(str), //operateMode:NFC-10、把人员添加到凭证-1
  1532. deviceNum: _this.data.deviceinfo.deviceNum,
  1533. type: 4,
  1534. imei: _this.data.deviceinfo.imei,
  1535. serial: res3.data.serialNumber,
  1536. startTime: passwordStartTime,
  1537. endTime: passwordEndTime,
  1538. signature:wx.getStorageSync('signature'),
  1539. };
  1540. var datalist = {
  1541. cardId: _this.data.deviceinfo.cardId,
  1542. content: JSON.stringify(str), //operateMode:NFC-10、把人员添加到凭证-1
  1543. type: 14,
  1544. startTime: passwordStartTime,
  1545. endTime: passwordEndTime,
  1546. signature:wx.getStorageSync('signature'),
  1547. };
  1548. console.log(datalist,'密码11')
  1549. WXAPI.tsAddCertificate(datalist).then(res6 => {
  1550. console.log(datalist,'密码22')
  1551. })
  1552. WXAPI.tsAddCertificate(data).then(res3 => {
  1553. if (res3.success) {
  1554. var updatedata = {
  1555. id: res3.data,
  1556. status:1,
  1557. signature:wx.getStorageSync('signature'),
  1558. };
  1559. WXAPI.editCertificate(updatedata).then((res2) => {
  1560. });
  1561. _this.getPassWordMehods()
  1562. _this.setData({
  1563. showTwo: false
  1564. })
  1565. wx.hideLoading()
  1566. wx.showToast({
  1567. title: '添加成功',
  1568. icon: 'none',
  1569. mask:true,
  1570. duration: 2000
  1571. })
  1572. } else {
  1573. wx.hideLoading()
  1574. wx.showToast({
  1575. title: '添加失败',
  1576. mask:true,
  1577. icon: 'none',
  1578. duration: 2000
  1579. })
  1580. }
  1581. })
  1582. } else {
  1583. wx.showToast({
  1584. title: res3.msg,
  1585. mask:true,
  1586. icon: 'none',
  1587. duration: 2000
  1588. })
  1589. }
  1590. })
  1591. }else{
  1592. wx.hideLoading()
  1593. if (res.data == "蓝牙功能暂不支持") {
  1594. _this.startconnect()
  1595. }else{
  1596. wx.showToast({
  1597. title: '下发失败',
  1598. mask:true,
  1599. duration: 2000,
  1600. icon: "none"
  1601. })
  1602. }
  1603. }
  1604. })
  1605. }else if(deviceinfo.manufactureId == 201||deviceinfo.manufactureId == 221){
  1606. var cgInfo = this.data.cgInfo
  1607. console.log(passwordStartTimecontrast,passwordEndTimecontrast)
  1608. var passwordStartTime = passwordStartTimecontrast
  1609. var passwordEndTime = passwordEndTimecontrast
  1610. var pzname='',cardName=''
  1611. console.log(_this.data.passwordList,_this.data.deviceinfo)
  1612. pzname=_this.data.deviceinfo.name+'-蓝牙-密码'+(_this.data.passwordList.length+1)
  1613. cardName=_this.data.deviceinfo.name+'-蓝牙-密码'+(_this.data.passwordList.length+1)
  1614. let info = JSON.parse(_this.data.deviceinfo.info)
  1615. var dataPasswod = {
  1616. code: "zg/tempPassword",
  1617. cardId:deviceinfo.cardId,
  1618. data: {
  1619. lockerId: deviceinfo.deviceNum,
  1620. imei: deviceinfo.imei,
  1621. passwordCount: 255,
  1622. lockerUserId: info.userPassword,
  1623. keyId: info.userPassword,
  1624. passwordStartTime: passwordStartTime,
  1625. passwordEndTime: passwordEndTime,
  1626. order: 6207,
  1627. action: 1,
  1628. password: this.data.addpassword,
  1629. type: 1,
  1630. roomName: this.data.deviceinfo.roomName,
  1631. cardName: cardName,
  1632. operateName:_this.data.deviceinfo.name
  1633. },
  1634. signature:wx.getStorageSync('signature'),
  1635. }
  1636. console.log(dataPasswod)
  1637. WXAPI.sendCommandOne(dataPasswod).then(res => {
  1638. console.log(res, '获取索引')
  1639. if (res.success) {
  1640. var pwdNo = res.data.index
  1641. var passwordIndex = res.data.index
  1642. // var str = res.data.index
  1643. pwdNo = pwdNo.toString(16)
  1644. if (pwdNo.length < 2) {
  1645. pwdNo='0'+pwdNo
  1646. }
  1647. var startTime = passwordStartTime.toString(16).toUpperCase()
  1648. var endTime = passwordEndTime.toString(16).toUpperCase()
  1649. console.log(startTime,endTime)
  1650. info.startTime=startTime
  1651. info.endTime=endTime
  1652. info.pwdNo=pwdNo
  1653. info.password=_this.data.addpassword
  1654. methods.bluetoothOperation_ZH(cgInfo,info,3).then(result=>{
  1655. console.log(result)
  1656. if (result.status == '00') {
  1657. var datacom = {
  1658. code: "zg/bleSendVoucherReply",
  1659. signature:wx.getStorageSync('signature'),
  1660. cardId:deviceinfo.cardId,
  1661. data: {
  1662. lockerId: deviceinfo.deviceNum,
  1663. serialNumber: res.data.serialNumber,
  1664. index: passwordIndex,
  1665. type: 7,
  1666. result: 1,
  1667. operateName:_this.data.deviceinfo.name
  1668. }
  1669. }
  1670. var str = {
  1671. // cardId: this.personInfo.cardId,
  1672. imei: deviceinfo.imei,
  1673. pzname:pzname,
  1674. password: _this.data.addpassword,
  1675. userTelephone: info.userTelephone,
  1676. operateMode: 7,
  1677. userPassword: info.userPassword,
  1678. passwordStartTime: passwordStartTime,
  1679. passwordEndTime: passwordEndTime,
  1680. is: false,
  1681. pass:true
  1682. }
  1683. var data = {
  1684. cardId: deviceinfo.cardId,
  1685. content: JSON.stringify(str), //operateMode:NFC-10、把人员添加到凭证-1
  1686. deviceNum: deviceinfo.deviceNum,
  1687. type: 4,
  1688. imei: deviceinfo.imei,
  1689. serial: res.data.serialNumber,
  1690. startTime: passwordStartTime,
  1691. endTime: passwordEndTime,
  1692. signature:wx.getStorageSync('signature'),
  1693. };
  1694. var datalist = {
  1695. cardId: deviceinfo.cardId,
  1696. content: JSON.stringify(str), //operateMode:NFC-10、把人员添加到凭证-1
  1697. type: 14,
  1698. startTime: passwordStartTime,
  1699. endTime: passwordEndTime,
  1700. signature:wx.getStorageSync('signature'),
  1701. };
  1702. console.log(datalist,'密码11')
  1703. WXAPI.tsAddCertificate(datalist).then(res6 => {
  1704. console.log(datalist,'密码22',res6)
  1705. })
  1706. console.log(data, '添加凭证')
  1707. WXAPI.tsAddCertificate(data).then(res3 => {
  1708. if (res3.success) {
  1709. var updatedata = {
  1710. id: res3.data,
  1711. status:1,
  1712. signature:wx.getStorageSync('signature'),
  1713. };
  1714. WXAPI.editCertificate(updatedata).then((res2) => {
  1715. });
  1716. WXAPI.sendCommandOne(datacom).then(res2 => {
  1717. if (res2.success) {}
  1718. })
  1719. console.log(res3, '添加凭证成功')
  1720. _this.setData({
  1721. show: false,
  1722. showTwo:false
  1723. })
  1724. _this.getPassWordMehods()
  1725. wx.hideLoading()
  1726. wx.showToast({
  1727. title: '添加成功',
  1728. mask:true,
  1729. icon: 'none',
  1730. duration: 2000
  1731. })
  1732. } else {
  1733. wx.hideLoading()
  1734. wx.showToast({
  1735. title: '添加失败',
  1736. mask:true,
  1737. icon: 'none',
  1738. duration: 2000
  1739. })
  1740. }
  1741. })
  1742. } else {
  1743. wx.showToast({
  1744. title: '添加失败',
  1745. mask:true,
  1746. icon: 'none',
  1747. duration: 2000
  1748. })
  1749. var datacom = {
  1750. code: "zg/bleSendVoucherReply",
  1751. signature:wx.getStorageSync('signature'),
  1752. cardId:deviceinfo.cardId,
  1753. data: {
  1754. lockerId: deviceinfo.deviceNum,
  1755. serialNumber: res.data.serialNumber,
  1756. index: res.data.index,
  1757. type: 7,
  1758. result: 0
  1759. }
  1760. }
  1761. WXAPI.sendCommandOne(datacom).then(res2 => {
  1762. console.log(res2, '失败')
  1763. _this.setData({
  1764. show: false
  1765. })
  1766. })
  1767. }
  1768. })
  1769. // .catch(err=>{
  1770. // wx.hideLoading()
  1771. // wx.showToast({
  1772. // title: '添加失败',
  1773. // icon: 'none',
  1774. // mask:true,
  1775. // duration: 2000
  1776. // })
  1777. // var datacom = {
  1778. // code: "zg/bleSendVoucherReply",
  1779. // signature:wx.getStorageSync('signature'),
  1780. // data: {
  1781. // lockerId: deviceinfo.deviceNum,
  1782. // serialNumber: res.data.serialNumber,
  1783. // index: res.data.index,
  1784. // type: 7,
  1785. // result: 0
  1786. // }
  1787. // }
  1788. // WXAPI.sendCommandOne(datacom).then(res2 => {
  1789. // console.log(res2, '失败')
  1790. // _this.setData({
  1791. // show: false
  1792. // })
  1793. // })
  1794. // })
  1795. } else {
  1796. wx.showToast({
  1797. title: res.msg,
  1798. duration: 2000,
  1799. mask:true,
  1800. icon: 'none'
  1801. })
  1802. }
  1803. })
  1804. }
  1805. }
  1806. },
  1807. closeblue() {
  1808. app.globalData.ble.close()
  1809. this.data.info = ''
  1810. app.globalData.bleStatus = false
  1811. this.data.bleStatus = false,
  1812. this.data.respond = []
  1813. },
  1814. closeblue1() {
  1815. // wx.showLoading({
  1816. // title: "正在停止...",
  1817. // });
  1818. app.globalData.ble.close()
  1819. // setTimeout(() => {
  1820. // wx.hideLoading()
  1821. // }, 1000);
  1822. this.data.info = ''
  1823. app.globalData.bleStatus = false
  1824. this.data.bleStatus = false,
  1825. this.data.respond = []
  1826. },
  1827. btntest3(event) {
  1828. var that = this
  1829. let deviceNum = that.data.deviceinfo.deviceNum
  1830. this.data.backstatus = true
  1831. that.startFp_29(deviceNum, 0x03)
  1832. // setTimeout(() => {
  1833. // that.getcartcount()
  1834. // }, 300)
  1835. },
  1836. btntest2(event) {
  1837. var that = this
  1838. let userTelephone = "18270949468" //JSON.parse(this.data.deviceinfo.info).userTelephone
  1839. let userPassword = "202108" //JSON.parse(this.data.deviceinfo.info).userPassword
  1840. let pwd = "2021110309" //JSON.parse(this.data.deviceinfo.info).userPassword
  1841. let openLockType = 2
  1842. var userInfo=wx.getStorageSync('deviceinfo')
  1843. var timestamp = moment().format("x")
  1844. bleall.openLock(userTelephone, userPassword, pwd, openLockType, timestamp, function (res) {
  1845. if (res.success) {
  1846. var data = {
  1847. code: "ld/bleUnlockRecord",
  1848. signature:wx.getStorageSync('signature'),
  1849. cardId:that.data.deviceinfo.cardId,
  1850. data: {
  1851. deviceNum: that.data.deviceNum,
  1852. userTelephone: userTelephone,
  1853. password: userPassword,
  1854. roomId:that.data.deviceinfo.roomId,
  1855. roomName:that.data.deviceinfo.roomName,
  1856. cardName:userInfo.name,
  1857. }
  1858. }
  1859. WXAPI.sendCommandOne(data).then(res => {
  1860. })
  1861. }
  1862. if (res.data == "蓝牙功能暂不支持") {
  1863. wx.showToast({
  1864. title: '重新连接蓝牙中',
  1865. duration: 2000,
  1866. icon: "none"
  1867. })
  1868. that.startconnect()
  1869. }
  1870. })
  1871. },
  1872. openLock(userTelephone, userPassword, pwd, openLockType) {
  1873. wx.showLoading({
  1874. title: "正在发送...",
  1875. });
  1876. setTimeout(() => {
  1877. wx.hideLoading()
  1878. }, 1000);
  1879. let cmd = 0x41
  1880. console.log(util, userTelephone)
  1881. let ut = util.stringToUint8Array(userTelephone)
  1882. let up = util.stringToUint8Array(userPassword)
  1883. let p = util.hexStringToBytesWithPadding(pwd, 10, 0xff)
  1884. let length = 1 + 11 + 6 + 10 + 1
  1885. let b = new Uint8Array(length)
  1886. b[0] = cmd
  1887. b.set(ut, 1)
  1888. b.set(up, 12)
  1889. b.set(p, 18)
  1890. b[28] = openLockType
  1891. console.log(b)
  1892. app.globalData.ble.send(cmd, b, length)
  1893. },
  1894. //远程开锁
  1895. remoteUnlocking() {
  1896. if (this.data.info == '蓝牙已连接') {
  1897. this.closeblue1()
  1898. }
  1899. var str2 = {
  1900. imei: this.data.deviceinfo.imei,
  1901. openLockType: 2,
  1902. is: true,
  1903. };
  1904. WXAPI.openLock(str2).then(res => {
  1905. if (res.data.success) {
  1906. wx.showToast({
  1907. title: "操作成功",
  1908. icon: "none",
  1909. duration: 2000
  1910. })
  1911. }
  1912. })
  1913. },
  1914. /**
  1915. * 生命周期函数--监听页面初次渲染完成
  1916. */
  1917. onReady: function () {
  1918. app.globalData.zgBlueStatus = false
  1919. // this.btntest1()
  1920. },
  1921. AddressPermissions() {
  1922. wx.openBluetoothAdapter({
  1923. success: function (res) {
  1924. console.log('蓝牙已开启!');
  1925. },
  1926. fail: function (e) {
  1927. console.log(e)
  1928. wx.showToast({
  1929. title: '请打开蓝牙!',
  1930. duration: 2000,
  1931. icon: 'none'
  1932. })
  1933. }
  1934. });
  1935. ICINLocker.getLocationPermission().then((res) => {
  1936. if (res.status == 0) {} else {
  1937. // 连接出现问题
  1938. }
  1939. }).catch((res) => {
  1940. //处理未能获得地理位置情况
  1941. wx.showToast({
  1942. title: '请打开微信定位功能!',
  1943. duration: 2000,
  1944. icon: 'none'
  1945. })
  1946. })
  1947. },
  1948. /**
  1949. * 生命周期函数--监听页面显示
  1950. */
  1951. onShow: function () {
  1952. var deviceinfo = wx.getStorageSync('deviceinfo')
  1953. this.setData({
  1954. deviceinfo:deviceinfo,
  1955. bleStatus: app.globalData.bleStatus
  1956. })
  1957. },
  1958. /**
  1959. * 生命周期函数--监听页面隐藏
  1960. */
  1961. /**
  1962. * 生命周期函数--监听页面卸载
  1963. */
  1964. onUnload: function () {
  1965. if (app.globalData.zgBlueStatus) {
  1966. ICINLocker.disConnect(app.globalData.blueDeviceId);
  1967. this.onReady()
  1968. }
  1969. this.setData({
  1970. bluestatus: false
  1971. })
  1972. this.closeblue()
  1973. },
  1974. onHide() {
  1975. this.closeblue()
  1976. },
  1977. /**
  1978. * 页面相关事件处理函数--监听用户下拉动作
  1979. */
  1980. onPullDownRefresh: function () {
  1981. // this.AddressPermissions()
  1982. var deviceinfo = wx.getStorageSync('deviceinfo')
  1983. app.globalData.deviceNum = deviceinfo.deviceNum
  1984. var userInfo1 = wx.getStorageSync('userInfo')
  1985. if (deviceinfo.manufactureId == 201|| deviceinfo.manufactureId == 221) {
  1986. var data3 = {
  1987. code: "zg/bleRegisterInfo",
  1988. signature:wx.getStorageSync('signature'),
  1989. cardId:deviceinfo.cardId,
  1990. data: {
  1991. lockerId: deviceinfo.deviceNum
  1992. }
  1993. }
  1994. WXAPI.sendCommandOne(data3).then(res1 => {
  1995. if (res1.success) {
  1996. wx.setStorageSync('cgInfo', res1.data)
  1997. this.setData({
  1998. cgInfo: res1.data
  1999. })
  2000. } else {
  2001. }
  2002. })
  2003. }
  2004. if (deviceinfo.roomId) {
  2005. if (userInfo1.type != 3) {
  2006. var data2 = {
  2007. q: JSON.stringify({
  2008. id: deviceinfo.roomId
  2009. }),
  2010. orderBy: "createTime",
  2011. orderType: 'desc'
  2012. }
  2013. WXAPI.getSiteTenant(data2).then(res1 => {
  2014. if (res1.data.list.length > 0) {
  2015. var array = res1.data.list.reverse()
  2016. wx.setStorageSync('info', array[0])
  2017. deviceinfo.info = array[0].info
  2018. this.setData({
  2019. deviceinfo: deviceinfo
  2020. })
  2021. } else {
  2022. wx.showToast({
  2023. title: "还未下发人员,请先下发人员",
  2024. duration: 2000,
  2025. icon: 'none'
  2026. })
  2027. }
  2028. })
  2029. } else if (userInfo1.type == 3) {
  2030. this.setData({
  2031. deviceinfo: deviceinfo
  2032. })
  2033. }
  2034. } else {
  2035. wx.navigateTo({
  2036. url: "../index/index"
  2037. })
  2038. }
  2039. this.setData({
  2040. info: app.globalData.bleStatus,
  2041. deviceinfo: deviceinfo
  2042. })
  2043. wx.stopPullDownRefresh()
  2044. },
  2045. /**
  2046. * 页面上拉触底事件的处理函数
  2047. */
  2048. onReachBottom: function () {
  2049. },
  2050. /**
  2051. * 用户点击右上角分享
  2052. */
  2053. onShareAppMessage: function () {
  2054. }
  2055. })