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.

1242 lines
43 KiB

1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
  1. // pages/personManger/personManger.js
  2. const app = getApp()
  3. const WXAPI = require('../../utils/request')
  4. import ICINLocker from "../../utils/ICINPakage/ICINLocker"
  5. var methods = require('../../utils/methods.js');
  6. var md5 = require('../../utils/md5.js');
  7. var bleall = require('../../utils/bleall');
  8. import {
  9. BLE
  10. } from "../../utils/btls/ble";
  11. const emitter = app.globalData.emitter
  12. // ArrayBuffer转16进度字符串示例
  13. function ab2hex(buffer) {
  14. var hexArr = Array.prototype.map.call(
  15. new Uint8Array(buffer),
  16. function (bit) {
  17. return ('00' + bit.toString(16)).slice(-2)
  18. }
  19. )
  20. return hexArr.join(',');
  21. }
  22. import moment from "../../utils/moment"
  23. function CurentTime() {
  24. var now = new Date();
  25. var year = now.getFullYear(); //年
  26. var month = now.getMonth() + 1; //月
  27. var day = now.getDate(); //日
  28. var hh = now.getHours(); //时
  29. var mm = now.getMinutes(); //分
  30. var clock = year + "-";
  31. if (month < 10)
  32. clock += "0";
  33. clock += month + "-";
  34. if (day < 10)
  35. clock += "0";
  36. clock += day + " ";
  37. // if (hh < 10)
  38. // clock += "0";
  39. // clock += '00' + ":";
  40. // // if (mm < 10) clock += '0';
  41. clock += '00:00:00';
  42. return (clock);
  43. }
  44. function CurentTime1() {
  45. var now = new Date();
  46. var year = now.getFullYear() + 3; //年
  47. var month = now.getMonth() + 1; //月
  48. var day = now.getDate(); //日
  49. var hh = now.getHours(); //时
  50. var mm = now.getMinutes(); //分
  51. var clock = year + "-";
  52. if (month < 10)
  53. clock += "0";
  54. clock += month + "-";
  55. if (day < 10)
  56. clock += "0";
  57. clock += day + " ";
  58. // if (hh < 10)
  59. // clock += "0";
  60. // clock += hh + ":";
  61. // if (mm < 10) clock += '0';
  62. // clock += mm;
  63. clock += '23:59:59';
  64. return (clock);
  65. }
  66. Page({
  67. /**
  68. * 页面的初始数据
  69. */
  70. data: {
  71. datetimerange: [CurentTime(), CurentTime1()],
  72. endtime: '',
  73. starttime: '',
  74. personList: [],
  75. searchValue: '',
  76. deviceinfo: [],
  77. roomId: [],
  78. current: '',
  79. index: '',
  80. show: false,
  81. phone: '',
  82. name: '',
  83. cgInfo: {},
  84. number:"",
  85. minDate: '',
  86. minDate1: ''
  87. },
  88. bindDateChange: function (e) {
  89. var str = e.detail.value + " 00:00:00"
  90. this.data.datetimerange[0] = str
  91. this.setData({
  92. starttime: str
  93. })
  94. },
  95. bindDateChange1: function (e) {
  96. var str = e.detail.value + " 00:00:00"
  97. this.data.datetimerange[1] = str
  98. this.setData({
  99. endtime: str
  100. })
  101. },
  102. /**
  103. * 生命周期函数--监听页面加载
  104. */
  105. onLoad: function (options) {
  106. console.log(moment().format("x"))
  107. var deviceinfo = wx.getStorageSync('deviceinfo')
  108. var cgInfo = wx.getStorageSync('cgInfo')
  109. let starttime = moment().format('YYYY-MM-DD HH:mm:ss')
  110. let endtime = moment().add(30,'days').format('YYYY-MM-DD HH:mm:ss')
  111. if(deviceinfo.roomId){
  112. this.getSiteTenant(deviceinfo.roomId)
  113. }
  114. this.setData({
  115. deviceinfo: deviceinfo,
  116. roomId: deviceinfo.roomId,
  117. cgInfo: cgInfo,
  118. starttime,
  119. endtime,
  120. minDate: starttime,
  121. minDate1: endtime
  122. })
  123. },
  124. onChange1(event) {
  125. // event.detail 为当前输入的值
  126. console.log(event.detail);
  127. this.setData({
  128. name: event.detail
  129. })
  130. },
  131. onChange3(event) {
  132. this.setData({
  133. number: event.detail
  134. })
  135. },
  136. onChange2(event) {
  137. // event.detail 为当前输入的值
  138. console.log(event.detail);
  139. var str = event.detail
  140. if (str.length > 11) {
  141. wx.showToast({
  142. title: '手机号为11位数字,请输入正确手机号',
  143. duration: 2000,
  144. mask:true,
  145. icon: 'none'
  146. })
  147. str = str.substr(1, 11)
  148. this.setData({
  149. phone: str
  150. })
  151. } else {
  152. this.setData({
  153. phone: event.detail
  154. })
  155. }
  156. },
  157. // 添加用户
  158. adduser() {
  159. var _this = this
  160. wx.showLoading({
  161. title: '正在添加',
  162. mask:true
  163. })
  164. var time1 = moment(this.data.datetimerange[0]).format("YYYYMMDDHHmmss")
  165. var time2 = moment(this.data.datetimerange[1]).format("YYYYMMDDHHmmss")
  166. var time3 = new Date(this.data.datetimerange[0].replace(/-/g, '/'))
  167. var time4 = new Date(this.data.datetimerange[1].replace(/-/g, '/'))
  168. var passwordStartTime = time3.getTime() / 1000
  169. var passwordEndTime = time4.getTime() / 1000
  170. if(passwordStartTime>passwordEndTime){
  171. wx.showToast({
  172. title: '开始时间不能大于结束时间',
  173. duration: 2000,
  174. mask:true,
  175. icon: 'none'
  176. })
  177. return
  178. }
  179. if (this.data.phone == '') {
  180. wx.showToast({
  181. title: '请填写手机号',
  182. duration: 2000,
  183. mask:true,
  184. icon: 'none'
  185. })
  186. }else if(this.data.name == ''){
  187. wx.showToast({
  188. title: '请填写名称',
  189. duration: 2000,
  190. mask:true,
  191. icon: 'none'
  192. })
  193. }else if(this.data.number == ''){
  194. wx.showToast({
  195. title: '请填写学号',
  196. duration: 2000,
  197. mask:true,
  198. icon: 'none'
  199. })
  200. }else if(this.data.phone.length !=11){
  201. wx.showToast({
  202. title: '手机号格式错误',
  203. duration: 2000,
  204. mask:true,
  205. icon: 'none'
  206. })
  207. } else {
  208. var userInfo = wx.getStorageSync('userInfo')
  209. var deviceinfo = this.data.deviceinfo
  210. if (deviceinfo.manufactureId == 101) {
  211. var time1 = moment(this.data.datetimerange[0]).format("YYYYMMDDHHmmss")
  212. var time2 = moment(this.data.datetimerange[1]).format("YYYYMMDDHHmmss")
  213. var time3 = new Date(this.data.datetimerange[0].replace(/-/g, '/'))
  214. var time4 = new Date(this.data.datetimerange[1].replace(/-/g, '/'))
  215. var passwordStartTime = time3.getTime() / 1000
  216. var passwordEndTime = time4.getTime() / 1000
  217. var userPassword = JSON.stringify(this.data.phone).substring(this.data.phone.length - 6, this.data.phone.length)
  218. var data = {
  219. managerTelephone: "18270949468",
  220. managerPassword: "202108",
  221. userTelephone: this.data.phone,
  222. password: userPassword,
  223. userPassword: userPassword,
  224. startTime: time1,
  225. endTime: time2
  226. }
  227. var str = md5(this.data.phone)
  228. var usrID = userPassword//str.substr(str.length - 7, str.length).toUpperCase()
  229. var timestamp= moment().format("x")
  230. bleall.startFp1_63(data.managerTelephone, data.managerPassword, data.userTelephone,
  231. data.userPassword, data.password, data.startTime, data.endTime, 1,timestamp,
  232. function (res) {
  233. console.log(res)
  234. if (res.success) {
  235. bleall.startFp1_63(data.managerTelephone, data.managerPassword, data.userTelephone,
  236. data.userPassword, data.password,
  237. data.startTime, data.endTime, 4,timestamp,
  238. function (res1) {
  239. if (res1.success) {
  240. let loginKey = WXAPI.setCode("MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCXKHkNKieiGOTjXZJ0lFBjhRCa\nZTaAebTIfB9nnnVmNVIp//yCfyFXSlxbAj58CQwCVhwy109ROYf3BcsQNMZz7Djo\n8a5V0JThNye4ihxLiYLawLRjb2y2/IhzV0/JZiFtaM83xUt0tbqTKxD00Up7dy8c\n9OXc0h//0uQSraf6JwIDAQAB", userPassword)
  241. var infostr = {
  242. userTelephone: _this.data.phone,
  243. userPassword: userPassword,
  244. loginKey:loginKey,
  245. userId: usrID,
  246. keyId: usrID,
  247. pass:true
  248. };
  249. var data1 = {
  250. cardId: _this.data.number,
  251. cardState: 1,
  252. info: JSON.stringify(infostr),
  253. name: _this.data.name,
  254. number: _this.data.number,
  255. phone: _this.data.phone,
  256. sex: 1,
  257. type: 0,
  258. };
  259. WXAPI.addCard(data1).then(res => {
  260. if (res.success) {
  261. var data2 = [{
  262. cardId: res.data,
  263. siteId: _this.data.deviceinfo.roomId,
  264. startTime: time3,
  265. endTime: time4
  266. }]
  267. WXAPI.bindCard(data2).then(res2 => {
  268. var data3 = {
  269. code: "ble/operateUserInfo",
  270. data: {
  271. deviceNum: _this.data.deviceinfo.deviceNum,
  272. imei: _this.data.deviceinfo.imei,
  273. userTelephone: _this.data.phone,
  274. userPassword: userPassword,
  275. userStartTime: time1,
  276. userEndTime: time2,
  277. password: userPassword,
  278. passwordStartTime: time1,
  279. passwordEndTime: time2,
  280. operateMode: 1,
  281. order: 6226,
  282. roomName:_this.data.deviceinfo.roomName,
  283. cardName:'蓝牙'+_this.data.name,
  284. timestamp: timestamp,
  285. managerTelephone: '18270949468',
  286. managerPassword: '202108',
  287. passwordLength: 10,
  288. permission: 4294967295,
  289. times: 255,
  290. recycleTime: "65535",
  291. }
  292. }
  293. wx.hideLoading()
  294. wx.showToast({
  295. title: '添加成功',
  296. icon: 'none',
  297. mask:true,
  298. duration: 2000
  299. })
  300. // wx.setStorageSync('minDate', data.startTime)
  301. // wx.setStorageSync('minDate1', data.endTime)
  302. WXAPI.sendCommand(data3).then(res6 => {
  303. if(res6.success){
  304. var data4 = {
  305. result: 1,
  306. serial: res6.data.serialNumber
  307. }
  308. setTimeout(()=>{
  309. WXAPI.updatePush(data4).then(res4 => {
  310. })
  311. },1000)
  312. }
  313. // var result='',serial=''
  314. // WXAPI.editStatusBySerial('',`/v1/device/editStatus/bySerial/${result}/${serial}`).then(res2=>{
  315. // })
  316. })
  317. _this.setData({
  318. show: false
  319. })
  320. _this.getSiteTenant(_this.data.roomId)
  321. })
  322. }else{
  323. wx.hideLoading()
  324. wx.showToast({
  325. title: '添加失败',
  326. duration:2000,
  327. icon:'none'
  328. })
  329. }
  330. })
  331. }else{
  332. wx.hideLoading()
  333. wx.showToast({
  334. title: '添加失败',
  335. duration:2000,
  336. icon:'none'
  337. })
  338. }
  339. })
  340. }
  341. if (res.data == "蓝牙功能暂不支持") {
  342. wx.showLoading({
  343. title: '重连中',
  344. })
  345. _this.startconnect()
  346. }
  347. })
  348. } else if (deviceinfo.manufactureId == 201||deviceinfo.manufactureId == 221) {
  349. var time1 = new Date(this.data.datetimerange[0].replace(/-/g, '/'))
  350. var time2 = new Date(this.data.datetimerange[1].replace(/-/g, '/'))
  351. var passwordStartTime = time1.getTime() / 1000
  352. var passwordEndTime = time2.getTime() / 1000
  353. var startTime = passwordStartTime.toString(16).toUpperCase()
  354. var endTime = passwordEndTime.toString(16).toUpperCase()
  355. var str = md5(this.data.phone)
  356. var usrID = str.substr(str.length - 7, str.length).toUpperCase()
  357. var userPassword = JSON.stringify(this.data.phone).substring(this.data.phone.length - 6, this.data.phone.length)
  358. wx.showLoading({
  359. title: '正在添加',
  360. })
  361. let info={
  362. usrID:userPassword,
  363. startTime:startTime,
  364. endTime:endTime
  365. }
  366. methods.bluetoothOperation_ZH(this.data.cgInfo,info,1).then(result=>{
  367. if (result.status == '00') {
  368. var dataPasswod = {
  369. lockerId: this.data.deviceinfo.deviceNum,
  370. imei: this.data.deviceinfo.imei,
  371. lockerUserId: userPassword,
  372. keyId: userPassword,
  373. role: 0,
  374. order: 6226,
  375. action: 1,
  376. roomName:this.data.deviceinfo.roomName,
  377. cardName:'蓝牙'+this.data.name,
  378. type: 1,
  379. result: 1
  380. }
  381. let loginKey = WXAPI.setCode("MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCXKHkNKieiGOTjXZJ0lFBjhRCa\nZTaAebTIfB9nnnVmNVIp//yCfyFXSlxbAj58CQwCVhwy109ROYf3BcsQNMZz7Djo\n8a5V0JThNye4ihxLiYLawLRjb2y2/IhzV0/JZiFtaM83xUt0tbqTKxD00Up7dy8c\n9OXc0h//0uQSraf6JwIDAQAB", userPassword)
  382. var infostr = {
  383. userTelephone: _this.data.phone,
  384. userPassword: userPassword,
  385. loginKey:loginKey,
  386. userId: userPassword,
  387. keyId: userPassword,
  388. pass:true
  389. };
  390. var data1 = {
  391. cardId: this.data.number,
  392. cardState: 1,
  393. info: JSON.stringify(infostr),
  394. name: this.data.name,
  395. number: this.data.number,
  396. phone: this.data.phone,
  397. enterpriseId: userInfo.enterpriseId,
  398. sex: 1,
  399. type: 0
  400. }
  401. WXAPI.addCard(data1).then(res => {
  402. if (res.success) {
  403. var data2 = [{
  404. cardId: res.data,
  405. siteId: this.data.deviceinfo.roomId,
  406. startTime: time1,
  407. endTime: time2
  408. }]
  409. this.setData({
  410. name:'',
  411. phone:'',
  412. number:''
  413. })
  414. WXAPI.bindCard(data2).then(res2 => {
  415. if (res2.success) {
  416. WXAPI.ZGduserOperation(dataPasswod).then(res6 => {
  417. console.log(res6)
  418. if (res6.success) {
  419. wx.hideLoading()
  420. this.setData({
  421. name:'',
  422. phone:'',
  423. number:''
  424. })
  425. wx.showToast({
  426. title: '添加成功',
  427. icon: 'none',
  428. mask:true,
  429. duration: 2000
  430. })
  431. // wx.setStorageSync('minDate', data.startTime)
  432. // wx.setStorageSync('minDate1', data.endTime)
  433. } else {
  434. wx.hideLoading()
  435. wx.showToast({
  436. title: '添加失败',
  437. icon: 'none',
  438. mask:true,
  439. duration: 2000
  440. })
  441. }
  442. })
  443. this.getSiteTenant(this.data.roomId)
  444. this.setData({
  445. show: false
  446. })
  447. wx.showToast({
  448. title: '绑定成功',
  449. mask:true,
  450. icon: 'none',
  451. })
  452. } else {
  453. wx.hideLoading()
  454. wx.showToast({
  455. title: '添加失败',
  456. mask:true,
  457. icon: 'none'
  458. })
  459. }
  460. })
  461. } else {
  462. wx.hideLoading()
  463. wx.showToast({
  464. title: '添加失败',
  465. mask:true,
  466. icon: 'none'
  467. })
  468. }
  469. })
  470. } else {
  471. wx.hideLoading()
  472. wx.showToast({
  473. title: '添加失败',
  474. mask:true,
  475. duration: 2000,
  476. icon: 'none'
  477. })
  478. }
  479. })
  480. }else if(deviceinfo.manufactureId == 1201 || deviceinfo.manufactureId == 1241){
  481. var time1 = moment(this.data.datetimerange[0]).format("YYYYMMDDHHmmss")
  482. var time2 = moment(this.data.datetimerange[1]).format("YYYYMMDDHHmmss")
  483. var time3 = new Date(this.data.datetimerange[0].replace(/-/g, '/'))
  484. var time4 = new Date(this.data.datetimerange[1].replace(/-/g, '/'))
  485. var passwordStartTime = time3.getTime() / 1000
  486. var passwordEndTime = time4.getTime() / 1000
  487. var userPassword = JSON.stringify(this.data.phone).substring(this.data.phone.length - 6, this.data.phone.length)
  488. var data = {
  489. userTelephone: this.data.phone,
  490. password: userPassword,
  491. userPassword: userPassword,
  492. startTime: time1,
  493. endTime: time2
  494. }
  495. let loginKey = WXAPI.setCode("MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCXKHkNKieiGOTjXZJ0lFBjhRCa\nZTaAebTIfB9nnnVmNVIp//yCfyFXSlxbAj58CQwCVhwy109ROYf3BcsQNMZz7Djo\n8a5V0JThNye4ihxLiYLawLRjb2y2/IhzV0/JZiFtaM83xUt0tbqTKxD00Up7dy8c\n9OXc0h//0uQSraf6JwIDAQAB", userPassword)
  496. var infostr = {
  497. userTelephone: _this.data.phone,
  498. userPassword: userPassword,
  499. loginKey:loginKey,
  500. userId: userPassword,
  501. keyId: userPassword,
  502. pass:true
  503. };
  504. var data1 = {
  505. cardId: _this.data.number,
  506. cardState: 1,
  507. info: JSON.stringify(infostr),
  508. name: _this.data.name,
  509. number: _this.data.number,
  510. phone: _this.data.phone,
  511. sex: 1,
  512. type: 0,
  513. };
  514. WXAPI.addCard(data1).then(res => {
  515. if (res.success) {
  516. var data2 = [{
  517. cardId: res.data,
  518. siteId: _this.data.deviceinfo.roomId,
  519. startTime: time3,
  520. endTime: time4
  521. }]
  522. WXAPI.bindCard(data2).then(res2 => {
  523. if(res2.success){
  524. _this.setData({
  525. show: false
  526. })
  527. wx.showToast({
  528. title: '人员绑定成功',
  529. icon: 'none',
  530. duration: 2000
  531. })
  532. // wx.setStorageSync('minDate', data.startTime)
  533. // wx.setStorageSync('minDate1', data.endTime)
  534. _this.getSiteTenant(_this.data.roomId)
  535. }else{
  536. wx.hideLoading()
  537. wx.showToast({
  538. title: '人员绑定失败',
  539. duration:2000,
  540. icon:'none'
  541. })
  542. }
  543. })
  544. }else{
  545. wx.hideLoading()
  546. wx.showToast({
  547. title: '添加失败',
  548. duration:2000,
  549. icon:'none'
  550. })
  551. }
  552. })
  553. }
  554. }
  555. },
  556. // 关闭添加人员弹窗
  557. onClose() {
  558. this.setData({
  559. show: false
  560. });
  561. },
  562. // 获取入住人员
  563. getSiteTenant(roomId) {
  564. var data2 = {
  565. q: JSON.stringify({
  566. id: roomId
  567. }),
  568. orderBy: "createTime",
  569. orderType: 'desc'
  570. }
  571. WXAPI.getSiteTenant(data2).then(res1 => {
  572. if (res1.data.list.length > 0) {
  573. let starttime = moment().format('YYYY-MM-DD HH:mm:ss')
  574. let endtime = moment().add(30,'days').format('YYYY-MM-DD HH:mm:ss')
  575. // wx.setStorageSync('minDate',starttime)
  576. // wx.setStorageSync('minDate1',endtime)
  577. this.setData({
  578. personList: res1.data.list,
  579. roomId: roomId,
  580. starttime,
  581. endtime,
  582. // minDate,minDate1
  583. })
  584. } else {
  585. this.setData({
  586. personList: []
  587. })
  588. wx.showToast({
  589. title: "还未下发人员,请先下发人员",
  590. mask:true,
  591. duration: 2000,
  592. icon: 'none'
  593. })
  594. }
  595. })
  596. },
  597. onChange(event) {
  598. this.setData({
  599. searchValue: event.detail
  600. })
  601. },
  602. onClick(e) {
  603. var data2 = {
  604. q: JSON.stringify({
  605. id: this.data.roomId,
  606. name: this.data.searchValue
  607. }),
  608. orderBy: "createTime",
  609. orderType: 'desc'
  610. }
  611. WXAPI.getSiteTenant(data2).then(res1 => {
  612. if (res1.data.list.length > 0) {
  613. let minDate = res1.data.list[0].startTime
  614. let minDate1 = res1.data.list[0].endTime
  615. let starttime = moment(minDate).format('YYYY-MM-DD HH:mm:ss')
  616. let endtime = moment(minDate1).format('YYYY-MM-DD HH:mm:ss')
  617. // wx.setStorageSync('minDate',starttime)
  618. // wx.setStorageSync('minDate1',endtime)
  619. this.setData({
  620. personList: res1.data.list,
  621. starttime,
  622. endtime,
  623. // minDate,minDate1
  624. })
  625. } else {
  626. wx.showToast({
  627. title: "未发现该人员",
  628. mask:true,
  629. duration: 2000,
  630. icon: 'none'
  631. })
  632. }
  633. })
  634. },
  635. //选择已存在人员
  636. personnelCheckin(){
  637. wx.navigateTo({
  638. url: '/pages/selectPersonnel/selectPersonnel',
  639. })
  640. },
  641. // 添加人员
  642. addperson(e) {
  643. var deviceinfo = this.data.deviceinfo
  644. var current = e.currentTarget.dataset.current
  645. this.setData({
  646. current: current
  647. })
  648. if (deviceinfo.manufactureId == 201||deviceinfo.manufactureId == 221) {
  649. if (app.globalData.zgBlueStatus) {
  650. this.setData({
  651. show: true
  652. })
  653. } else {
  654. this.goBlue()
  655. }
  656. } else if (deviceinfo.manufactureId == 101) {
  657. if (app.globalData.bleStatus == '蓝牙已连接') {
  658. this.setData({
  659. show: true
  660. })
  661. } else {
  662. this.startconnect()
  663. }
  664. }else if (deviceinfo.manufactureId == 1201) {
  665. this.setData({
  666. show: true
  667. })
  668. }else if (deviceinfo.manufactureId == 1241) {
  669. this.setData({
  670. show: true
  671. })
  672. }
  673. },
  674. addperson1(e) {
  675. wx.showLoading({
  676. title: '加载中...',
  677. })
  678. var deviceinfo = this.data.deviceinfo
  679. var that = this
  680. var cgInfo = wx.getStorageSync('cgInfo')
  681. var current = e.currentTarget.dataset.current
  682. var index = e.currentTarget.dataset.index
  683. var personLi = that.data.personList[index]
  684. wx.setStorageSync('personLi', that.data.personList[index])
  685. this.setData({
  686. current: current,
  687. index: index
  688. })
  689. // wx.navigateTo({
  690. // url: '/pages/addperson/addperson?current=' + current,
  691. // })
  692. // return
  693. if (deviceinfo.manufactureId == 201||deviceinfo.manufactureId == 201) {
  694. if (app.globalData.zgBlueStatus) {
  695. if (current == 1) {
  696. wx.hideLoading()
  697. wx.navigateTo({
  698. url: '/pages/addperson/addperson?current=' + current,
  699. })
  700. } else if (current == 2) {
  701. wx.hideLoading()
  702. wx.showModal({
  703. title: '是否删除',
  704. success(res) {
  705. if (res.confirm) {
  706. wx.showLoading({
  707. title: '加载中...',
  708. })
  709. var info = JSON.parse(that.data.personList[that.data.index].info)
  710. var personLi = that.data.personList[that.data.index]
  711. ICINLocker.getSignKey(cgInfo.lockerId, cgInfo.superId, cgInfo.superId,
  712. (callback) => {
  713. if(callback.status=='00'){
  714. var signKey = callback.signKey
  715. ICINLocker.getCommonKey(cgInfo.lockerId, cgInfo.superId, cgInfo.superId, signKey, (callback1) => {
  716. if(callback1.status=='00'){
  717. var commonKey = callback1.commonKey
  718. ICINLocker.deleteUser(cgInfo.lockerId, cgInfo.superId, info.userId, cgInfo.superId, '', signKey, commonKey, (callback2) => {
  719. if (callback2.status == '00') {
  720. var data = {
  721. lockerId: deviceinfo.deviceNum,
  722. imei: deviceinfo.imei,
  723. lockerUserId: info.userId,
  724. keyId: info.userId,
  725. role: '00',
  726. action: 2,
  727. order: 6203,
  728. type: 3,
  729. result: 1,
  730. cardName:personLi.name,
  731. roomName:deviceinfo.roomName
  732. };
  733. WXAPI.ZGduserOperation(data).then(res => {
  734. if(res.code==200){
  735. var data3 = {
  736. result: 1,
  737. serial: res.data.serialNumber
  738. }
  739. setTimeout(()=>{
  740. WXAPI.updatePush(data3).then(res4 => {
  741. })
  742. },1000)
  743. }else{
  744. var data3 = {
  745. result: 702,
  746. serial: res.data.serialNumber
  747. }
  748. setTimeout(()=>{
  749. WXAPI.updatePush(data3).then(res4 => {
  750. })
  751. },1000)
  752. }
  753. })
  754. var str = [{
  755. cardId: personLi.cardId,
  756. siteId: that.data.deviceinfo.roomId,
  757. }]
  758. WXAPI.unbindCard(str).then(res => {
  759. if (res.success) {
  760. that.getSiteTenant(that.data.roomId)
  761. }
  762. })
  763. wx.hideLoading()
  764. } else {
  765. wx.hideLoading()
  766. wx.showToast({
  767. title: '删除失败',
  768. duration: 2000,
  769. mask:true,
  770. icon: 'none'
  771. })
  772. }
  773. })
  774. }else{
  775. wx.hideLoading()
  776. wx.showToast({
  777. title: '连接失败',
  778. duration: 2000,
  779. mask:true,
  780. icon: 'none'
  781. })
  782. }
  783. })
  784. }else{
  785. wx.hideLoading()
  786. wx.showToast({
  787. title: '连接失败',
  788. duration: 2000,
  789. mask:true,
  790. icon: 'none'
  791. })
  792. }
  793. })
  794. } else if (res.cancel) {
  795. console.log('用户点击取消')
  796. }
  797. }
  798. })
  799. }
  800. } else {
  801. wx.hideLoading()
  802. this.goBlue()
  803. }
  804. } else if (deviceinfo.manufactureId == 101) {
  805. wx.hideLoading()
  806. if (app.globalData.bleStatus == '蓝牙已连接') {
  807. if (current == 1) {
  808. wx.navigateTo({
  809. url: '/pages/addperson/addperson?current=' + current,
  810. })
  811. } else if (current == 2) {
  812. wx.hideLoading()
  813. wx.showModal({
  814. title: '是否删除',
  815. success(res) {
  816. if (res.confirm) {
  817. wx.showLoading({
  818. title: '加载中...',
  819. })
  820. var info = JSON.parse(that.data.personList[that.data.index].info)
  821. var personLi = that.data.personList[that.data.index]
  822. var data1 = {
  823. managerTelephone: "18270949468",
  824. managerPassword: '202108',
  825. userTelephone: info.userTelephone,
  826. userPassword: info.userPassword,
  827. password: info.userPassword,
  828. startTime: "20210813010101",
  829. endTime: "20680813010101"
  830. }
  831. var timestamp= moment().format("x")
  832. bleall.startFp1_63(data1.managerTelephone, data1.managerPassword, data1.userTelephone,
  833. data1.userPassword, data1.password, data1.startTime, data1.endTime, 3,timestamp,
  834. function (res) {
  835. if (res.success) {
  836. var data3 = {
  837. code: "ble/operateUserInfo",
  838. data: {
  839. deviceNum: that.data.deviceinfo.deviceNum,
  840. imei: that.data.deviceinfo.imei,
  841. userTelephone: info.userTelephone,
  842. userPassword: info.userPassword,
  843. password: info.userPassword,
  844. userStartTime: '20210813010101',
  845. userEndTime: '20680813010101',
  846. passwordStartTime: '20210813010101',
  847. passwordEndTime: '20680813010101',
  848. operateMode: 3,
  849. order: 6203,
  850. timestamp:timestamp,
  851. roomName:deviceinfo.roomName,
  852. cardName:'蓝牙'+personLi.name,
  853. managerTelephone: '18270949468',
  854. managerPassword: '202108',
  855. passwordLength: 10,
  856. permission: 4294967295,
  857. times: 255,
  858. recycleTime: "65535",
  859. }
  860. }
  861. WXAPI.sendCommand(data3).then(res => {
  862. console.log(res)
  863. if(res.success){
  864. var data4 = {
  865. result: 1,
  866. serial: res.data.serialNumber
  867. }
  868. setTimeout(()=>{
  869. WXAPI.updatePush(data4).then(res4 => {
  870. })
  871. },1000)
  872. var str = [{
  873. cardId: personLi.cardId,
  874. siteId: that.data.deviceinfo.roomId,
  875. }]
  876. WXAPI.unbindCard(str).then(res => {
  877. if (res.success) {
  878. that.getSiteTenant(that.data.roomId)
  879. }
  880. })
  881. }
  882. })
  883. }
  884. if (res.data == "蓝牙功能暂不支持") {
  885. wx.showLoading({
  886. title: '重连中',
  887. })
  888. that.startconnect()
  889. }
  890. })
  891. }
  892. }
  893. })
  894. }
  895. } else {
  896. this.startconnect()
  897. }
  898. }else if(deviceinfo.manufactureId == 1201 || deviceinfo.manufactureId == 1241){
  899. if (current == 1) {
  900. wx.navigateTo({
  901. url: '/pages/addperson/addperson?current=' + current,
  902. })
  903. } else if (current == 2) {
  904. wx.hideLoading()
  905. wx.showModal({
  906. title: '是否删除',
  907. success(res) {
  908. if (res.confirm) {
  909. var str = [{
  910. cardId: personLi.cardId,
  911. siteId: that.data.deviceinfo.roomId,
  912. }]
  913. WXAPI.unbindCard(str).then(res => {
  914. if (res.success) {
  915. that.getSiteTenant(that.data.roomId)
  916. }
  917. })
  918. }
  919. }
  920. })
  921. }
  922. }
  923. },
  924. goBlue() {
  925. var that = this
  926. var cgInfo = wx.getStorageSync('cgInfo')
  927. wx.showLoading({
  928. title: '连接蓝牙中',
  929. })
  930. ICINLocker.scanDevices(this.data.deviceinfo.deviceNum)
  931. .then((res) => {
  932. console.log(res)
  933. if (res.status == 0) {
  934. var deviceId = res.deviceId
  935. //成功找到蓝牙情况下进行锁连接
  936. app.globalData.blueDeviceId = res.deviceId
  937. ICINLocker.connect(res.deviceId) // 此处 deviceId 存起来,当断开连接时使用
  938. .then((res) => {
  939. if (res.status === 0) {
  940. clearInterval(that.data.timer)
  941. this.setData({
  942. bleStatus: '蓝牙已连接',
  943. deviceId: deviceId
  944. })
  945. app.globalData.zgBlueStatus = true
  946. wx.hideLoading()
  947. wx.showToast({
  948. title: '连接成功',
  949. mask:true,
  950. icon: "none",
  951. duration: 2000
  952. })
  953. if (that.data.current === 0) {
  954. this.setData({
  955. show: true
  956. })
  957. } else if (that.data.current == 1) {
  958. wx.navigateTo({
  959. url: '/pages/addperson/addperson?current=' + that.data.current,
  960. })
  961. } else if (that.data.current == 2) {
  962. var info = JSON.parse(that.data.personList[that.data.index].info)
  963. var personLi = that.data.personList[that.data.index]
  964. ICINLocker.getSignKey(cgInfo.lockerId, cgInfo.superId, cgInfo.superId,
  965. (callback) => {
  966. var signKey = callback.signKey
  967. console.log(signKey, 'signKey')
  968. ICINLocker.getCommonKey(cgInfo.lockerId, cgInfo.superId, cgInfo.superId, signKey, (callback) => {
  969. var commonKey = callback.commonKey
  970. console.log(commonKey, 'commonKey')
  971. ICINLocker.deleteUser(cgInfo.lockerId, cgInfo.superId, info.userId, cgInfo.superId, '', signKey, commonKey, (callback) => {
  972. console.log(callback, "删除人员")
  973. if (callback.status == '00') {
  974. var str = [{
  975. cardId: personLi.cardId,
  976. siteId: that.data.deviceinfo.roomId,
  977. }]
  978. console.log(str, 'str')
  979. WXAPI.unbindCard(str).then(res => {
  980. if (res.success) {
  981. that.getSiteTenant(that.data.roomId)
  982. }
  983. })
  984. } else {
  985. wx.showToast({
  986. title: '删除失败',
  987. mask:true,
  988. duration: 2000,
  989. icon: 'none'
  990. })
  991. }
  992. })
  993. })
  994. })
  995. }
  996. } else {
  997. wx.hideLoading()
  998. var msg = ''
  999. switch (res.errCode) {
  1000. case 10001:
  1001. msg = '调用失败,请打开蓝牙!';
  1002. break;
  1003. }
  1004. wx.showToast({
  1005. title: msg,
  1006. duration: 2000,
  1007. mask:true,
  1008. icon: 'none'
  1009. })
  1010. //此处处理返回值不为成功(0)的情况
  1011. }
  1012. }).catch((res) => {
  1013. wx.hideLoading()
  1014. console.log(res, '失败')
  1015. // 此处处理未能连接成功问题
  1016. })
  1017. }
  1018. })
  1019. .catch((res) => {
  1020. //此处处理未能连接到蓝牙的问题
  1021. if (res.status == 1) {
  1022. if (res.statusReason.errCode == 10001) {
  1023. wx.hideLoading()
  1024. wx.showModal({
  1025. title: "提示",
  1026. content: "请检查手机蓝牙和定位功能是否打开?",
  1027. showCancel: false,
  1028. confirmText: "确定",
  1029. success(res) {}
  1030. });
  1031. } else {
  1032. if (!app.globalData.zgBlueStatus) {
  1033. that.goBlue()
  1034. } else {
  1035. wx.hideLoading()
  1036. }
  1037. }
  1038. }
  1039. })
  1040. },
  1041. startconnect() {
  1042. //if(checkWechatVersion())
  1043. // {
  1044. wx.showLoading({
  1045. title: "连接蓝牙中"
  1046. })
  1047. var deviceinfo = this.data.deviceinfo
  1048. const ble = new BLE(this.data.deviceinfo.deviceNum, emitter)
  1049. app.globalData.ble = ble
  1050. this.watchBLE()
  1051. app.globalData.ble.init()
  1052. // }
  1053. },
  1054. watchBLE() {
  1055. var that = this
  1056. if (app.globalData.ble) {
  1057. app.globalData.ble.listen(res => {
  1058. if (res.type == 'connect') {
  1059. if (res.data == "未打开适配器") {
  1060. wx.hideLoading()
  1061. wx.showModal({
  1062. title: "提示",
  1063. content: "请检查手机蓝牙和定位功能是否打开?",
  1064. showCancel: false,
  1065. confirmText: "确定",
  1066. success(res) {}
  1067. });
  1068. } else {
  1069. if (res.data == '蓝牙已连接') {
  1070. app.globalData.bleStatus = res.data
  1071. if (that.data.current == 0) {
  1072. this.setData({
  1073. show: true
  1074. })
  1075. } else if (that.data.current == 1) {
  1076. wx.navigateTo({
  1077. url: '/pages/addperson/addperson?current=' + that.data.current,
  1078. })
  1079. } else if (that.data.current == 2) {
  1080. wx.showModal({
  1081. title: '是否删除',
  1082. success(res) {
  1083. if (res.confirm) {
  1084. wx.showLoading({
  1085. title: '加载中...',
  1086. })
  1087. var info = JSON.parse(that.data.personList[that.data.index].info)
  1088. var personLi = that.data.personList[that.data.index]
  1089. var data1 = {
  1090. managerTelephone: "18270949468",
  1091. managerPassword: '202108',
  1092. userTelephone: info.userTelephone,
  1093. userPassword: info.userPassword,
  1094. password: info.userPassword,
  1095. startTime: "20210813010101",
  1096. endTime: "20680813010101"
  1097. }
  1098. var timestamp= moment().format("x")
  1099. bleall.startFp1_63(data1.managerTelephone, data1.managerPassword, data1.userTelephone,
  1100. data1.userPassword, data1.password, data1.startTime, data1.endTime, 3,timestamp,
  1101. function (res) {
  1102. if (res.success) {
  1103. var data3 = {
  1104. code: "ble/operateUserInfo",
  1105. data: {
  1106. deviceNum: that.data.deviceinfo.deviceNum,
  1107. imei: that.data.deviceinfo.imei,
  1108. userTelephone: info.userTelephone,
  1109. userPassword: info.userPassword,
  1110. password: info.userPassword,
  1111. userStartTime: '20210813010101',
  1112. userEndTime: '20680813010101',
  1113. passwordStartTime: '20210813010101',
  1114. passwordEndTime: '20680813010101',
  1115. operateMode: 3,
  1116. order: 6203,
  1117. timestamp: timestamp,
  1118. managerTelephone: '18270949468',
  1119. managerPassword: '202108',
  1120. passwordLength: 10,
  1121. permission: 4294967295,
  1122. times: 255,
  1123. recycleTime: "65535",
  1124. }
  1125. }
  1126. WXAPI.sendCommand(data3).then(res => {
  1127. })
  1128. var str = [{
  1129. cardId: personLi.cardId,
  1130. siteId: that.data.deviceinfo.roomId,
  1131. }]
  1132. WXAPI.unbindCard(str).then(res => {
  1133. if (res.success) {
  1134. that.getSiteTenant(that.data.roomId)
  1135. }
  1136. })
  1137. }
  1138. if (res.data == "蓝牙功能暂不支持") {
  1139. wx.showLoading({
  1140. title: '重连中',
  1141. })
  1142. that.startconnect()
  1143. }
  1144. })
  1145. }
  1146. }
  1147. })
  1148. }
  1149. }
  1150. }
  1151. }
  1152. })
  1153. }
  1154. },
  1155. //普通用户获取 signk
  1156. getUserSignKey(data, callback) {
  1157. // ICINLocker.getUserSignKey(data.lockId, data.superAdminId, data.usrId, data.keyId, data.authUserSignKeyOrAuthKey, data.accessType, (callback1) => {
  1158. // console.log(callback1)
  1159. // callback(callback1)
  1160. // })
  1161. ICINLocker.getSignKey(data.lockId, data.usrId, data.keyId, (callback1) => {
  1162. console.log(callback1)
  1163. callback(callback1)
  1164. })
  1165. },
  1166. // 协商通讯密钥
  1167. getCommonKey(data, callback) {
  1168. ICINLocker.getCommonKey(data.lockId, data.usrId, data.keyId, data.userSignKey, (callback2) => {
  1169. console.log(callback2)
  1170. callback(callback2)
  1171. })
  1172. },
  1173. // 删除用户
  1174. ZGdeleteUser(data, callback) {
  1175. ICINLocker.deleteUser(data.lockId, data.superAdminId, data.usrId, data.keyId, data.delUserToken, data.signkey, data.commonKey, (callback1) => {
  1176. console.log(callback1)
  1177. callback(callback1)
  1178. });
  1179. },
  1180. /**
  1181. * 生命周期函数--监听页面初次渲染完成
  1182. */
  1183. onReady: function () {
  1184. },
  1185. /**
  1186. * 生命周期函数--监听页面显示
  1187. */
  1188. onShow: function () {
  1189. var deviceinfo = wx.getStorageSync('deviceinfo')
  1190. // this.getSiteTenant(deviceinfo.roomId)
  1191. },
  1192. /**
  1193. * 生命周期函数--监听页面隐藏
  1194. */
  1195. onHide: function () {
  1196. },
  1197. /**
  1198. * 生命周期函数--监听页面卸载
  1199. */
  1200. onUnload: function () {
  1201. },
  1202. /**
  1203. * 页面相关事件处理函数--监听用户下拉动作
  1204. */
  1205. onPullDownRefresh: function () {
  1206. },
  1207. /**
  1208. * 页面上拉触底事件的处理函数
  1209. */
  1210. onReachBottom: function () {
  1211. },
  1212. /**
  1213. * 用户点击右上角分享
  1214. */
  1215. onShareAppMessage: function () {
  1216. }
  1217. })