// index.js // 获取应用实例 const app = getApp() var util = require('../../utils/util'); import ICINLocker from "../../utils/ICINPakage/ICINLocker" const WXAPI = require('../../utils/request') // ArrayBuffer转16进度字符串示例 function ab2hex(buffer) { var hexArr = Array.prototype.map.call( new Uint8Array(buffer), function (bit) { return ('00' + bit.toString(16)).slice(-2) } ) return hexArr.join(','); } import { ztreeToElementTree, IntToBytesLittleEndian, BytesToIntBigEndian, uniqueArray } from "../../utils/util" import moment from "../../utils/moment" Page({ data: { show: false, signKey: '', commonKey: '', list: [], searchValue: '', userInfo: {}, pageNum: 1, pageSize: 20, stoppull: false, zNodes: [], index: 0, array: [], index1: 0, array1: [], ces: 0, ces1: '', ces2: '', dataList: [], selectKey: '', //选中的节点id selectRoomName: '选择房间', pid:'', treeList:[], allDevice:[], devices_list:[], searching:'' }, onLoad() { this.getAllDevice() var userInfo = wx.getStorageSync('userInfo') this.setData({ userInfo, }) wx.getStorage({ key: "token", success: (res) => { // this.getIntegration() if (userInfo.type >= 3) { this.getRoomList() this.getRoom1() } else if (userInfo.type < 3) { this.getTree() } }, fail: (res) => { wx.redirectTo({ url: "/pages/login/login" }) } }) }, getCgInfo(deviceNum){ return new Promise((resolve, reject)=>{ var data3 = { code: "zg/bleRegisterInfo", data: { lockerId: deviceNum } } WXAPI.sendCommand(data3).then(res1 => { if(res1.success){ resolve(res1) }else{ reject(res1) } }) }) }, // 获取所有设备 getAllDevice(){ var data1={ pageNum: 0, pageSize: 0, } WXAPI.getDeviceItems(data1).then(res => { if(res.success){ this.setData({ allDevice:res.data.list }) } }) }, handleSelect(e) { wx.showToast({ title: `已选择${e.detail.item.name}`, icon: 'none', duration: 1000 }) wx.setStorageSync('selectKey', e.detail.item.id) wx.setStorageSync('selectRoomName', e.detail.item.name) wx.setStorageSync('pid', e.detail.item.id) this.setData({ selectKey: e.detail.item.id, selectRoomName: e.detail.item.name, pid:e.detail.item.id, show: false }) this.getRoom2(e.detail.item.id) }, bindroom() { this.setData({ show: true }); }, onClose() { this.setData({ show: false }); }, zh() { var time = moment().format("x") var str = this.toBin(time) console.log(str) var ces1 = IntToBytesLittleEndian(time, 6) var ces2 = BytesToIntBigEndian(ces1) this.setData({ ces: time, ces1: ces1, ces2: ces2, }) }, toBin(str) { var arr = []; var remainder, i, str2, num, char; while (str.length > 0) { str2 = ""; remainder = 0; for (i = 0; i < str.length; i++) { // str2 = str组成的十进制数 / 2 num = str.charCodeAt(i) - 0x30; // num to String num = remainder * 10 + num; char = Math.floor(num / 2).toString(); // 忽略最高为的0 , 即最高为如果是 0 则不放入 str2 if (!(char === "0" && str2 === "")) { str2 += char; } remainder = num % 2; } str = str2; arr.push(remainder); // 保存余数 } return arr.reverse().join(''); }, bindPickerChange: function (e) { console.log('picker发送选择改变,携带值为', e.detail.value) var array1 = [], children = [] if (this.data.zNodes[e.detail.value].children) { children = this.data.zNodes[e.detail.value].children children.map(li => { array1.push(li.name) }) } this.getRoom2(this.data.zNodes[e.detail.value].id) this.setData({ index: e.detail.value, array1: array1 }) }, bindPickerChange1: function (e) { console.log('picker发送选择改变,携带值为', e.detail.value) this.getRoom2(this.data.zNodes[this.data.index].children[e.detail.value].id) this.setData({ index1: e.detail.value, }) }, getRoomList(){ var data = { pageNum: 0, pageSize: 0 }; WXAPI.getSiteList(data).then(res => { var newArr = util.uniqueArray(res.data.list.list, "id"); this.setData({ treeList:newArr }) }) }, getTree() { var _this = this WXAPI.getTree('').then(res => { var list=res.data.sort((pre, cur)=>pre.id - cur.id) var newArr = util.uniqueArray(list, "id"); var setting = { data: { simpleData: { idKey: 'id', pIdKey: 'pid' }, key: { children: 'children' } } } var dataList = this.transformTozTreeFormat(setting, newArr) var selectKey = wx.getStorageSync('selectKey') || '' var selectRoomName = wx.getStorageSync('selectRoomName') || dataList[0].name var pid = wx.getStorageSync('pid') || dataList[0].pid this.setData({ dataList: dataList, // pid:dataList[0].pid, treeList:newArr, // selectRoomName:dataList[0].name, selectKey,selectRoomName,pid }) this.getRoom() }) }, onChange(event) { this.setData({ searchValue: event.detail }) }, godetail(e) { console.log(e) var IMEI = e.currentTarget.dataset.item // if (this.data.userInfo.type != 3) { if (IMEI.imei) { var q = { roomId: IMEI.id, // lockType:1, types:[1,21, 41], } var data1 = { q: JSON.stringify(q) } WXAPI.getDeviceItems(data1).then(res => { console.log(res); if (res.data.list.length > 0) { // wx.setStorage({ // key: "deviceinfo", // data: res.data.list[0] // }) wx.setStorageSync('deviceinfo', res.data.list[0]) wx.navigateTo({ url: "/pages/roomDetail/roomDetail" }) } else { wx.showToast({ title: "未发现此门锁信息", duration: 2000, icon: 'none' }) } }) } else { wx.showToast({ title: "还未绑定门锁", duration: 2000, icon: 'none' }) } // } else if (this.data.userInfo.type == 3) { // wx.setStorage({ // key: "deviceinfo", // data: this.data.list[0] // }) // wx.navigateTo({ // url: "/pages/roomDetail/roomDetail" // }) // } }, // 搜索 onClick(e) { var userInfo = this.data.userInfo this.setData({ pageNum: 1, pid: '', list: [] }) wx.getStorage({ key: "token", success: (res) => { if (userInfo.type != 3) { this.getRoom() } else if (userInfo.type == 3) { this.getRoom1() } }, fail: (res) => { wx.redirectTo({ url: "/pages/login/login" }) } }) }, // 获取用户信息 getuserInfo() { WXAPI.getuserInfo('').then(res => { this.setData({ userInfo: res.data, }); wx.setStorageSync("userInfo", res.data) }) }, findIndexArray(data,id,indexArray){ let arr = Array.from(indexArray); for(let i=0,len=data.length;i { var stoppull = false if (res.data.list.list.length < 20) { stoppull = true } res.data.list.list.map(li=>{ var name = this.findIndexArray(this.data.dataList, li.id, []) var path = '' if (name) { path = name.reverse().join('/') } li['path'] = path var device=this.data.allDevice.filter(item=>item.roomId==li.id)[0] if(device){ li.deviceNum=device.deviceNum li['battery']=device.battery li['rssi']=device.rssi li['isOnline']=device.isOnline li['manufactureId']=device.manufactureId }else{ li['battery']='' li['rssi']='' li['isOnline']='' li['manufactureId']='' } }) var alllist = res.data.list.list this.setData({ list: alllist, stoppull, pageNum: 1 }) }) }, // 获取房间 getRoom() { var q = { ancestor: this.data.pid, isRoom:1, name:this.data.searchValue }; var data = { q: JSON.stringify(q), pageNum: this.data.pageNum, pageSize: this.data.pageSize }; WXAPI.getSiteList(data).then(res => { var stoppull = false if (res.data.list.list.length < 20) { stoppull = true } res.data.list.list.map(li=>{ var name = this.findIndexArray(this.data.dataList, li.id, []) var path = '' if (name) { path = name.reverse().join('/') } li['path'] = path var device=this.data.allDevice.filter(item=>item.roomId==li.id)[0] if(device){ li.deviceNum=device.deviceNum li['battery']=device.battery li['rssi']=device.rssi li['isOnline']=device.isOnline li['manufactureId']=device.manufactureId }else{ li['battery']='' li['rssi']='' li['isOnline']='' li['manufactureId']='' } }) var alllist = this.data.list.concat(res.data.list.list) this.setData({ list: alllist, stoppull }) }) }, transformTozTreeFormat(setting, sNodes) { var i, l, key = setting.data.simpleData.idKey, parentKey = setting.data.simpleData.pIdKey, childKey = setting.data.key.children if (!key || key == "" || !sNodes) return []; var r = []; var tmpMap = []; for (i = 0, l = sNodes.length; i < l; i++) { tmpMap[sNodes[i][key]] = sNodes[i]; } for (i = 0, l = sNodes.length; i < l; i++) { if (tmpMap[sNodes[i][parentKey]] && sNodes[i][key] != sNodes[i][parentKey]) { if (!tmpMap[sNodes[i][parentKey]][childKey]) tmpMap[sNodes[i][parentKey]][childKey] = []; tmpMap[sNodes[i][parentKey]][childKey].push(sNodes[i]); } else { r.push(sNodes[i]); } } return r; }, // 获取房间列表 getRoom1() { var q = { number: this.data.userInfo.username, isRoom:1, name:this.data.searchValue }; var data = { q: JSON.stringify(q), pageNum: 0, pageSize: 0 }; WXAPI.getlistNum(data).then(res => { if(res.success){ var person=res.data.list[0] var query={} wx.setStorageSync('info', person) WXAPI.onlyTenant(query).then(res2=>{ var dataList=res2.data.list.filter(item=> item.cardId==person.id) let list=[] dataList.map(li=>{ var obj=this.data.treeList.filter(it=>it.id===li.roomId)[0] if(obj){ list.push(obj) } var device=this.data.allDevice.filter(item=>item.roomId==li.id)[0] if(device){ li.deviceNum=device.deviceNum li['battery']=device.battery li['rssi']=device.rssi li['isOnline']=device.isOnline li['manufactureId']=device.manufactureId }else{ li['battery']='' li['rssi']='' li['isOnline']='' li['manufactureId']='' } }) this.setData({ list:list }) }) }else{ wx.showToast({ icon: "none", duration: 2000, title: "未找到该人员" }) } }) }, qrcodefun() { var that = this wx.scanCode({ success(res) { var deviceNum = '' if (res.result.indexOf('&') != -1) { deviceNum = res.result.split('&')[0] } else if(res.result.indexOf('WSL') != -1){ deviceNum = res.result }else if (res.result.indexOf('_')) { deviceNum = "ICIN_" + res.result.split('_')[0] } console.log(res.result.indexOf('WSL')) var q = { deviceNum: deviceNum, // lockType:1, types:[1,21], }; var data = { q: JSON.stringify(q), pageNum: 1, pageSize: 10, }; WXAPI.getDeviceItems(data).then(res => { var len = res.data.list if (len.length > 0) { wx.setStorage({ key: "deviceinfo", data: res.data.list[0] }) wx.navigateTo({ url: "/pages/roomDetail/roomDetail?open=true" }) } else { wx.showToast({ icon: "none", duration: 2000, title: "未在平台找到此设备!" }) } }) } }) }, onPullDownRefresh() { this.setData({ list:[] }) this.onLoad() setTimeout(()=>{ wx.stopPullDownRefresh() },500) // this.setData({ // pageNum: 1, // list: [], // stoppull: false // }) // wx.getStorage({ // key: "token", // success: (res) => { // wx.stopPullDownRefresh() // if (this.data.userInfo.type > 3) { // this.getRoom() // } else if (this.data.userInfo.type <= 3) { // this.getRoom1() // } // }, // fail: (res) => { // wx.stopPullDownRefresh() // wx.redirectTo({ // url: "/pages/login/login" // }) // } // }) }, onReachBottom() { var userInfo = this.data.userInfo if (!this.data.stoppull) { wx.getStorage({ key: "token", success: (res) => { var num = this.data.pageNum + 1 this.setData({ pageNum: num }) if (userInfo.type != 3) { this.getRoom() } else if (userInfo.type == 3) { this.getRoom1() } }, fail: (res) => { wx.redirectTo({ url: "/pages/login/login" }) } }) } else { wx.showToast({ title: '暂无更多数据', duration: 2000, icon: 'none' }) } }, closeblue() { wx.showLoading({ title: "正在停止...", mask: true }); app.globalData.ble.close() setTimeout(() => { wx.hideLoading() }, 1000); app.globalData.bleStatus = false }, onShow: function () { wx.hideLoading() if (app.globalData.zgBlueStatus) { ICINLocker.disConnect(app.globalData.blueDeviceId); } if(app.globalData.bleStatus){ this.closeblue() } }, getUserProfile(e) {}, getUserInfo(e) { // 不推荐使用getUserInfo获取用户信息,预计自2021年4月13日起,getUserInfo将不再弹出弹窗,并直接返回匿名的用户个人信息 this.setData({ userInfo: e.detail.userInfo, hasUserInfo: true }) }, onShareAppMessage() {} })