Files
Wx_BLWConfigTools_V01_Prod/pages/Hosts/Hosts.js
2025-12-11 09:50:45 +08:00

1477 lines
39 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// pages/Hosts/Hosts.js
const app = getApp()
//导入酒店信息请求发方法
import {
GetHostsInfo,
GetMAC,
GetFaceSN,
ErrorInfo,
CheckFaceSN,
OpenDoorTest,
GetRoomType,
GetRoomTypeAndModalsListLog,
WebChatUpgrade,
QueryUpdateHostStatus,
} from '../../lib/RequestingCenter.js'
import md5 from '../../utils/md5.min.js'
Page({
/**
* 页面的初始数据
*/
data: {
islogs: false,
//手动输入
FaceSNinput: 0,
//手动输入
input: 0,
//显示 0 全部 1 主机 2 人脸机
showinfo:0,
//帮助
Help: false,
//弹窗
modal: 0,
//房间数据
HostsData: null,
//过滤后房间数据
HostsDataFilters: null,
//酒店信息
Hotelinfo: null,
//是否返回 只有一个酒店不能返回
isback: true,
//已经绑定是数量
YMac: 0,
//未绑定是数量
NMac: 0,
//筛选按钮的值
sel: 0,
//权限信息
autho: null,
//选择的房间信息
selHosts: null,
//扫描的条形码
code: null,
//swview高度
top_height: 0,
//本次操作的状态数据
statusdata: [0, 0, 0, 0],
//mac绑定的酒店 服务器获取
bdHosts:[],
//房型信息
roomtype:[],
//升级状态
Upgradestatus:"",
UpgradestatusTimeout:"",
UpgradestatusTimeout2:"",
UpgradestIstrue:true,
//房间信息
roomtypeInfo:[],
//房间回路信息
roomtypeInfoNode:[],
},
// 监听单个字段
observersUpgradestatus: function() {
let Upgradestatus=this.data.Upgradestatus
let UpgradestatusTimeout2=this.data.UpgradestatusTimeout2
if (Upgradestatus=='升级就绪'||Upgradestatus[0]=='.') {
if (UpgradestatusTimeout2>0) {
this.setData({
UpgradestatusTimeout:UpgradestatusTimeout2
})
this.observersUpgradestatusTimeout()
}
}
},
observersUpgradestatusTimeout:function () {
let Upgradestatus=this.data.Upgradestatus
var timestampSec = Math.floor(Date.now() / 1000);
var UpgradestatusTimeout=this.data.UpgradestatusTimeout
if ((timestampSec-UpgradestatusTimeout) >60) {
this.setData({
Upgradestatus:"升级超时!",
UpgradestatusTimeout2:0
})
}else{
setTimeout(function () {
let selHosts =this.data.selHosts
let ID =selHosts.Id
let RoomTypeID = selHosts.RoomTypeID
let dastr =this.data.Upgradestatus
if (dastr.length>6) {
dastr='.'
}else{
dastr=dastr+'.'
}
QueryUpdateHostStatus({
hotelid:ID,
roomTypeID:RoomTypeID
}).then(res => {
if (res.IsSuccess ==true) {
if (res.Response.length>0) {
if (res.Response.BaiFenBi=='100%') {
this.setData({
Upgradestatus:'升级完成!',
UpgradestatusTimeout2:0
})
} else{
this.setData({
Upgradestatus:dastr,
UpgradestatusTimeout2:timestampSec
})
}
}else
{
this.setData({
Upgradestatus:dastr
})
}
} else{
this.setData({
Upgradestatus:"服务器反馈设备升级失败!",
UpgradestatusTimeout2:0
})
}
}, err => {
this.setData({
Upgradestatus:"服务器接口调用异常,设备升级失败!",
UpgradestatusTimeout2:0
})
}).catch(err => {
this.setData({
Upgradestatus:"服务器接口调用异常,设备升级失败!",
UpgradestatusTimeout2:0
})
});
this.observersUpgradestatus()
}, 1000)
//定时询问
}
},
GetFaceSN_long:function (params) {
if (!this.CheckFaceSNAutho()) {
app.toast(2, "无绑定权限~")
return;
}
let index = params.currentTarget.dataset['index']
// console.log(index)
let selHosts = this.data.HostsDataFilters[index];
selHosts.index = index;
this.setData({
selHosts: selHosts,
FaceSNinput: 100
})
if (this.data.HostsDataFilters[index].FaceSN != "" && this.data.HostsDataFilters[index].FaceSN != null) {
this.setData({
modal: -1,
message: [ this.data.HostsDataFilters[index].FaceSN,selHosts.RoomNumber]
})
} else {
this.ShowInputsn();
}
},
/// 解绑sn
JbSn:function(params) {
let jbjd = null;
let faceSN = null;
let that = this;
let index = -1;
debugger
if( typeof params.currentTarget.dataset['index'] != 'undefined'){
faceSN = this.data.code;
index = params.currentTarget.dataset['index']
//解绑的房间
jbjd = this.data.bdHosts[index];
// 0 表示绑定成功~
// 1 表示绑定失败~
// 2 表示取消绑定~
// xg
}else{
jbjd = this.data.selHosts;
faceSN = this.data.selHosts.FaceSN;
}
console.log(jbjd)
GetFaceSN({faceSN:faceSN,roomID:jbjd.Id,roomNumber:jbjd.RoomNumber,faceAddress:this.data.address,HotelID:jbjd.HotelID,isjb:true}).then(
res => {
if (res.Status == 200) {
switch (res.Data) {
case 0:
try {
app.toast(1, "解绑成功~");
let data = that.data.HostsData;
let OLD = -1;
try {
data.forEach(
(x, INDEX) => {
if (x.RoomNumber === jbjd.RoomNumber) {
OLD = INDEX;
throw new Error();
}
}
)} catch (error) {
}
if (OLD >= 0) {
// 0 表示绑定成功~
// 1 表示绑定失败~
// 2 表示取消绑定~
data[OLD].xg = 2;
data[OLD].FaceSN = "";
}
let res = that.GetFilters(that.data.sel, data);
let databdHosts = that.data.bdHosts;
let selHosts = that.data.selHosts;
// 表示 是查询到 sn被绑定 index>-1 ==-1 表示是长安解绑
if(index>-1){
databdHosts.splice(index,1);
}else{
selHosts.FaceSN = null
}
that.setData({
selHosts:selHosts,
HostsData: data,
bdHosts:databdHosts,
HostsDataFilters: res[0],
statusdata: res[1],
input: 0
})
} catch (error) {
console.log(error)
}
break;
case 1:
app.toast(2, "SN已经绑定酒店~")
break;
case 2:
app.toast(2, "SN绑定酒店失败~")
break;
case 3:
app.toast(2, "SN注册绑定酒店失败~")
break;
case 4:
app.toast(2, "未知错误~")
break;
case 5:
app.toast(2, "数据不符合~")
break;
case 6:
app.toast(2, "解绑失败~")
break;
default:
app.toast(2, "其他错误~")
break;
}
/// 0 成功
/// 1 已经注册已经绑定酒店
/// 2 已经注册更新失败
/// 3 未注册为分配酒店 添加注册 添加酒店是啊比
/// 4 未能预计的结果--
/// 5 数据不符合
/// 6 解绑失败
console.log(0)
}
else{
app.toast(2, "网络繁忙")
}
},
err => {
app.toast(2, "网络繁忙")
}
).catch(err => {
app.toast(2, "网络繁忙")
});
},
CheckFaceMAC:function(vlues){
return true;
console.log(vlues.length != 16)
return vlues.length == 16;
},
GetFaceSNend:function(){
this.GetHide();
let that = this;
let xg = 1;
GetFaceSN({faceSN:this.data.code, roomID:this.data.selHosts.Id,roomNumber:this.data.selHosts.RoomNumber,faceAddress:this.data.address,HotelID:this.data.Hotelinfo.HotelId}).then(
res => {
if (res.Status == 200) {
switch (res.Data) {
case 0:
app.toast(1, "绑定成功~");
xg = 0;
break;
case 1:
app.toast(2, "SN已经绑定酒店~");
break;
case 2:
xg = 1;
app.toast(2, "SN绑定酒店失败~");
break;
case 3:
app.toast(2, "SN注册绑定酒店失败~");
break;
case 4:
app.toast(2, "未知错误~");
break;
case 5:
app.toast(2, "数据不符合~");
break;
case 6:
app.toast(2, "解绑失败~");
break;
default:
app.toast(2, "其他错误~");
break;
}
/// 0 成功
/// 1 已经注册已经绑定酒店
/// 2 已经注册更新失败
/// 3 未注册为分配酒店 添加注册 添加酒店是啊比
/// 4 未能预计的结果--
/// 5 数据不符合
/// 6 解绑失败
try {
that.data.selHosts.xg = xg;
if(xg==0){
that.data.selHosts.FaceSN = this.data.code;
}
let data = that.data.HostsData;
data[that.data.selHosts.index] = that.data.selHosts;
let res = that.GetFilters(that.data.sel, that.data.HostsData);
that.setData({
HostsData: data,
HostsDataFilters: res[0],
statusdata: res[1],
code: null,
input: 0
})
} catch (error) {
console.log(error)
}
}
else{
app.toast(2, "网络繁忙")
}
},
err => {
app.toast(2, "网络繁忙")
}
).catch(err => {
app.toast(2, "网络繁忙")
});
},
CheckFaceMACWL(){
let that = this;
CheckFaceSN({faceSN:this.data.code}).then(
res => {
if (res.Status == 200) {
if(res.Data<=0){
that.setData({
modal:-521,
})
}else{
let remove = [];
let bdHosts = res.Data;
try {
//记录已经分配酒店但是未分配房间 且酒店是当前酒店 那就判断为没有绑定
that.data.autho.forEach((element, index) => {
element.Hotels.forEach((elements, indexs) => {
for (let index = 0; index < bdHosts.length; index++) {
if (elements.HotelId == bdHosts[index].HotelID) {
if(bdHosts[index].HotelID == that.data.Hotelinfo.HotelId && bdHosts[index].Id==0){
remove.push(index);
}
elements.Auth.forEach (Auth=>{
if(Auth.AuthorityId == 21 && Auth.AuthotypeId == 3){
//有权限
bdHosts[index].qx = 0;
}
})
}
}
})
});
} catch (error) {
console.log(error)
}
remove.forEach (x=>{
bdHosts.splice(x, 1);
})
let modalval = -200;
if(bdHosts.length<=0){
modalval = -521;
}
that.setData({
modal:modalval,
bdHosts:bdHosts
})
// app.toast(2, "已经被绑定")
}
}else{
app.toast(2, "网络繁忙")
}
},
err => {
console.log(err)
app.toast(2, "网络繁忙")
}).catch(err => {
console.log(err)
app.toast(2, "网络繁忙")
});
},
GetFaceSNOK:function(){
let that = this;
if (!this.CheckFaceMAC(that.data.code)) {
this.setData({
modal: 520
})
return;
};
if (that.data.selHosts.FaceSN == that.data.code) {
app.toast(2, "条码一致,无需更改~")
return;
}
this.CheckFaceMACWL()
},
//GetFaceCode 人脸机扫码
GetFaceCode:function(){
var that = this;
setTimeout(function () {
that.GetHide()
}, 100);
wx.scanCode({
// onlyFromCamera: true,// 只允许从相机扫码
success(res) {
// 扫码成功后 在此处理接下来的逻辑
that.setData({
code: res.result
})
that.GetFaceSNOK();
},
fail(err) {
app.toast(2, "未识别到有效条形码")
}
})
},
//检查人脸机房间权限
CheckFaceSNAutho: function () {
let res = false;
this.data.Hotelinfo.Auth.forEach(x=>{
if(x.AuthorityId==21 && x.AuthotypeId == 3){
res = true;
}
});
return res;
},
// 点击人脸机
GetFaceSN:function (params) {
//长按事件
if (this.endTime - this.startTime > 350) {
return;
}
if (!this.CheckFaceSNAutho()) {
app.toast(2, "无绑定权限~")
return;
}
let index = params.currentTarget.dataset['index']
// console.log(index)
let selHosts = this.data.HostsDataFilters[index];
selHosts.index = index;
this.setData({
selHosts: selHosts,
FaceSNinput: 0
})
if (this.data.HostsDataFilters[index].FaceSN != "" && this.data.HostsDataFilters[index].FaceSN != null) {
this.setData({
modal:-1,
message: [this.data.HostsDataFilters[index].FaceSN, selHosts.RoomNumber]
})
} else {
this.GetFaceCode()
}
},
//人脸机测试
testinfo:function(e){
// console.log(e.currentTarget.id)
var jbjd=this.data.selHosts
// console.log(jbjd)
wx.navigateTo({
url: '/pages/test/test?Hotelinfo=' + e.currentTarget.id+'&RoomID='+jbjd.Id+'&faceadd='+this.data.address
})
},
//开门测试
OpenDoor:function(e){
var that=this;
console.log(e.currentTarget.id)
var sn=e.currentTarget.id.split("_")
console.log(sn)
OpenDoorTest({faceSN:sn[2],isjb:true}).then(
res => {
if (res.Status == 200) {
app.toast(2, res.Message)
}
else{
app.toast(2, res.Message)
}
},
err => {
app.toast(2, "网络繁忙")
}
).catch(err => {
app.toast(2, "网络繁忙")
});
},
//检查房间权限
CheckAutho: function () {
let res = false;
this.data.Hotelinfo.Auth.forEach(x=>{
if(x.AuthorityId==16 && x.AuthotypeId == 3){
res = true;
}
});
return res;
},
//touch start 开始触摸房间区域
handleTouchStart: function (e) {
this.startTime = e.timeStamp;
//console.log(" startTime = " + e.timeStamp);
},
//touch end结束触摸房间区域
handleTouchEnd: function (e) {
this.endTime = e.timeStamp;
//console.log(" endTime = " + e.timeStamp);
},
// 帮助
HelpClick: function (params) {
this.setData({
islogs: false,
Help: !this.data.Help
})
},
//日志信息
islogsClick: function (params) {
this.setData({
islogs: !this.data.islogs,
Help: false
})
},
// 长按房间
GetMAC_long: function (params) {
if (!this.CheckAutho()) {
app.toast(2, "无绑定权限~")
return;
}
let index = params.currentTarget.dataset['index']
// console.log(index)
let selHosts = this.data.HostsDataFilters[index];
selHosts.index = index;
this.setData({
selHosts: selHosts,
input: 100
})
if (this.data.HostsDataFilters[index].MAC != "" && this.data.HostsDataFilters[index].MAC != null) {
this.setData({
modal: 1,
message: [selHosts.RoomNumber, this.data.HostsDataFilters[index].MAC]
})
} else {
this.ShowInput();
}
},
// 手动输入mac
ShowInput: function (params) {
this.setData({
modal: 1000,
code:""
})
},
// 手动输入sn
ShowInputsn: function (params) {
this.setData({
modal: -1000,
code:""
})
},
//解绑MAC
Jb:async function(params) {
let index = params.currentTarget.dataset['index']
//解绑的酒店
let jbjd = this.data.bdHosts[index];
// this.GetMacOKend(false);
let that = this;
await GetMAC({
roomNumber: jbjd.RoomNumber,
roomID: jbjd.Id,
HotelID: jbjd.HotelID,
MAC: "",
NoCheck: false,
loc: that.data.address
}).then(
res => {
if (res.Status == 1000) {
app.toast(2, "无权限")
}
if (res.Status == 200) {
app.toast(1, "解绑成功")
var databdHosts = that.data.bdHosts;
databdHosts.splice(index,1);
that.setData({
bdHosts:databdHosts
})
//如果酒店是当前酒店 就把当前酒店的房间 标记为解绑
if(jbjd.HotelID != that.data.HotelId)
{
// console.log(jbjd.HotelID)
// console.log(that.data.HotelId)
return;
}
let data = that.data.HostsData;
let OLD = -1;
try {
data.forEach(
(x, INDEX) => {
if (x.RoomNumber === jbjd.RoomNumber) {
OLD = INDEX;
throw new Error();
}
}
)} catch (error) {
}
if (OLD >= 0) {
// 0 表示绑定成功~
// 1 表示绑定失败~
// 2 表示取消绑定~
data[OLD].xg = 2;
data[OLD].MAC = "";
}
let res = that.GetFilters(that.data.sel, data);
that.setData({
HostsData: data,
HostsDataFilters: res[0],
statusdata: res[1]
})
console.log(data[OLD])
} else {
app.toast(2, "解绑失败")
}
},
err => {
app.toast(2, "网络繁忙")
}).catch(err => {
app.toast(2, "网络繁忙")
});
},
//检查mac地址
GetMACOK: function () {
let that = this;
if (!this.CheckMAC(that.data.code)) {
this.setData({
modal: 520
})
return;
};
var newmac = "";
for (var i = 0; i < that.data.code.length; i += 2) {
if (i + 2 >= that.data.code.length) {
newmac += that.data.code[i] + that.data.code[i + 1];
} else {
newmac += that.data.code[i] + that.data.code[i + 1] + "-";
}
}
if (that.data.selHosts.MAC == newmac) {
app.toast(2, "条码一致,无需更改~")
return;
}
this.setData({
modal: 521,
})
},
//最终绑定MAC
GetMacOKend: async function (type) {
let that = this;
if (type != true && type != false) {
type = type.currentTarget.dataset['type']
}
this.GetHide();
let xg = null;
await GetMAC({
roomNumber: that.data.selHosts.RoomNumber,
HotelID: that.data.selHosts.HotelID,
MAC: that.data.code,
NoCheck: type,
loc: that.data.address
}).then(
res => {
if (res.Status == 1000) {
xg = 100;
app.toast(2, "无权限")
}
if (res.Status == 200) {
xg = 0;
app.toast(1, "绑定成功")
} else {
if (!type) {
xg = 1;
app.toast(2, "绑定失败")
} else {
try {
if (res.Status == 100) {
xg = 100;
let modal = 3;
let mesg = [that.data.code];
//mac绑定的房间
let bdHosts = res.Data.Hosts;
try {
that.data.autho.forEach((element, index) => {
element.Hotels.forEach((elements, indexs) => {
for (let index = 0; index < res.Data.Hosts.length; index++) {
if (elements.HotelId == res.Data.Hosts[index].HotelID) {
elements.Auth.forEach (Auth=>{
if(Auth.AuthorityId == 16 && Auth.AuthotypeId == 3){
//有权限
bdHosts[index].qx = 0;
}
})
}
}
})
});
} catch (error) {
console.log(error)
}
that.setData({
modal: modal,
bdHosts:bdHosts,
message: mesg
})
} else {
if (res.Status == 150) {
xg = 1;
app.toast(2, "绑定失败")
} else {
xg = 100;
app.toast(2, "网络繁忙")
}
}
} catch (error) {
xg = 100;
console.log(error)
}
}
}
},
err => {
xg = 100;
app.toast(2, "网络繁忙")
}).catch(err => {
xg = 100;
app.toast(2, "网络繁忙")
});
try {
// 100表示检查MAC并没有执行绑定操作 或者 请求过程出错 不执行下面的操作
if (xg == 100) {
return;
}
//标记修改
that.data.selHosts.xg = xg;
// return;
var newmac = "";
for (var i = 0; i < that.data.code.length; i += 2) {
if (i + 2 >= that.data.code.length) {
newmac += that.data.code[i] + that.data.code[i + 1];
} else {
newmac += that.data.code[i] + that.data.code[i + 1] + "-";
}
}
that.data.selHosts.MAC = newmac;
let data = that.data.HostsData;
// 本房间有相同的 mac的房间标记为取消绑定 已经弃用了
// let OLD = -1;
// try {
// data.forEach(
// (x, INDEX) => {
// if (x.MAC == newmac && that.data.selHosts.Id != x.Id) {
// OLD = INDEX;
// throw new Error();
// }
// }
// )
// } catch (error) {
// console.log("房间 已经找到,无需循环~")
// }
// if (OLD >= 0) {
// // 0 表示绑定成功~
// // 1 表示绑定失败~
// // 2 表示取消绑定~
// data[OLD].xg = 2;
// data[OLD].MAC = "";
// }
data[that.data.selHosts.index] = that.data.selHosts;
let res = that.GetFilters(that.data.sel, that.data.HostsData);
that.setData({
HostsData: data,
HostsDataFilters: res[0],
statusdata: res[1],
code: null,
input: 0
})
} catch (error) {
console.log(error)
}
},
//检查Mac
CheckMAC: function (vlues) {
return (vlues.indexOf("34D0B8") == 0 && vlues.length == 12 && vlues.indexOf(" ") < 0);
},
//扫码~
GetCode: async function () {
var that = this;
setTimeout(function () {
that.GetHide()
}, 100);
wx.scanCode({
// onlyFromCamera: true,// 只允许从相机扫码
success(res) {
// 扫码成功后 在此处理接下来的逻辑
that.setData({
code: res.result
})
that.GetMACOK();
},
fail(err) {
app.toast(2, "未识别到有效条形码")
}
})
},
//隐藏提示~
GetHide() {
this.setData({
modal: 0,
input: 0,
FaceSNinput:0 ,
Upgradestatus:"",
})
},
// 房间点击事件
GetMAC: function (e) {
//长按事件
if (this.endTime - this.startTime > 350) {
return;
}
if (!this.CheckAutho()) {
app.toast(2, "无绑定权限~")
return;
}
let index = e.currentTarget.dataset['index']
// console.log(index)
let selHosts = this.data.HostsDataFilters[index];
selHosts.index = index;
this.setData({
selHosts: selHosts,
input: 0
})
if (this.data.HostsDataFilters[index].MAC != "" && this.data.HostsDataFilters[index].MAC != null) {
this.setData({
modal: 1,
message: [this.data.HostsDataFilters[index].MAC, selHosts.RoomNumber]
})
} else {
this.GetCode()
}
},
// 未分配max
GetMaxby(type = 0, arry = null) {
let y = 0;
let n = 0;
if (arry == null) {
arry = this.data.HostsData;
}
arry.forEach(x => {
if (x.MAC == "" || x.MAC == null) {
n++;
} else {
y++;
}
})
if (type == 0) {
return y;
}
return n;
},
//分类过滤方法
GetFilters(type = -1, arry = null) {
if (type == -1) {
type = this.data.sel
}
if (arry == null && this.data.HostsData != null) {
arry = this.data.HostsData;
}
if (arry == null) {
return;
}
let ok = 0;
let err = 0;
let no = 0;
let df = 0;
let res = [];
arry.forEach(x => {
switch (x.xg) {
case 0:
ok++;
break;
case 1:
err++;
break;
case 2:
no++;
break;
default:
df++;
break;
}
if (type == 0) {
res.push(x)
} else {
if (x.MAC == "" || x.MAC == null) {
if (type == 2) {
res.push(x)
}
} else {
if (type == 1) {
res.push(x)
}
}
}
})
return [res, [ok, err, no, df]];
},
// 分类点击事件
GetshowinfoClick(e) {
let showinfo = e.currentTarget.dataset['index']
this.setData({
showinfo:showinfo
})
},
GetRoomTypeList(){
debugger
GetHostsInfo({
HotelID: that.data.Hotelinfo.HotelId
}).then(res =>{
if (res.Status == 200) {
console.log('获取房型成功')
}
else{
console.log('获取房型失败:'+that.data.Hotelinfo.HotelId)
}
}).catch(err => {
console.log('网络访问错误')
console.log(err)
});
},
GetshowinfoClick1(e){
let showinfo = e.currentTarget.dataset['index']
var that=this;
that.setData({
showinfo:showinfo
})
GetHostsInfo({
HotelID: that.data.Hotelinfo.HotelId
}).then(res => {
if (res.Status == 200) {
that.setData({
HostsData: res.Data,
HostsDataFilters: res.Data,
isback: (app.globalData.autho.length > 1 || app.globalData.autho[0].Hotels.length > 1),
HotelId: that.data.Hotelinfo.HotelId,
statusdata: [0, 0, 0, 0],
YMac: this.GetMaxby(0, res.Data),
NMac: this.GetMaxby(1, res.Data)
})
that.GetLOC();
} else {
app.toast(2, res.Message || "网络繁忙")
}
}, err => {
console.log(err)
app.toast(2, "网络繁忙")
}).catch(err => {
console.log(err)
app.toast(2, "网络繁忙")
});
},
// 绑定筛选分类点击事件
GetClick(e) {
this.setData({
islogs: false,
Help: false
})
let index = e.currentTarget.dataset['index']
let res = this.GetFilters(index, this.data.HostsData);
this.setData({
sel: index,
HostsDataFilters: res[0],
statusdata: res[1]
})
},
/**
* 生命周期函数--监听页面加载
*/
onLoad: async function (options) {
if (!options.HotelId || app.globalData.autho == null) {
app.toast(2, "无酒店信息~")
return;
}
this.setData({
autho: app.globalData.autho
})
// console.log(this.data.autho)
try {
this.data.autho.forEach((element, index) => {
element.Hotels.forEach((elements, indexs) => {
if (elements.HotelId == options.HotelId) {
this.setData({
Hotelinfo: elements
})
throw new Error();
}
})
});
} catch (error) {
console.log("已经找到,无需循环~")
}
let that = this;
setTimeout(function () {
// 1.使用wx.createSelectorQuery()查询到需要滚动到的元素位置
wx.createSelectorQuery().select('#scroll').boundingClientRect(res => {
// 2.使用wx.getSysTemInfo()获取设备及页面高度windowHeightpx
wx.getSystemInfo({
success(ress) {
that.setData({
top_height: ress.windowHeight - res.top
})
}
})
}).exec(function (params) {
console.log(params)
})
}, 100)
await GetHostsInfo({
HotelID: this.data.Hotelinfo.HotelId
}).then(res => {
if (res.Status == 200) {
that.setData({
HostsData: res.Data,
HostsDataFilters: res.Data,
isback: (app.globalData.autho.length > 1 || app.globalData.autho[0].Hotels.length > 1),
HotelId: options.HotelId,
statusdata: [0, 0, 0, res.Data.length],
YMac: this.GetMaxby(0, res.Data),
NMac: this.GetMaxby(1, res.Data)
})
app.globalData.HotelId=options.HotelId
that.GetLOC();
} else {
app.toast(2, res.Message || "网络繁忙")
}
}, err => {
console.log(err)
app.toast(2, "网络繁忙")
}).catch(err => {
console.log(err)
app.toast(2, "网络繁忙")
});
console.log(app.globalData.HotelId)
await GetRoomType({
HotelID: this.data.Hotelinfo.HotelId
}).then(res => {
app.SetroontypeListindex(res)
that.setData({
roomtype:app.globalData.roomIDName
})
}, err => {
console.log('GetRoomType error')
}).catch(err => {
});
await GetRoomTypeAndModalsListLog({
code:this.data.Hotelinfo.Code
}).then(res =>{
if (res.IsSuccess==true) {
that.setData({
roomtypeInfo:res.Result
})
}
})
},
//页面卸载
onUnload: function name(params) {
let data = wx.getStorageSync("oldHotelinfo") || []
let ok = false;
try {
for (let index = 0; index < data.length; index++) {
const element = data[index];
if (element.key == this.data.Hotelinfo.HotelId) {
ok = true;
data[index].data = this.data.HostsData;
throw new Error();
}
}
} catch (error) {
console.log('已经找到了')
}
if (!ok) {
data.push({
key: this.data.Hotelinfo.HotelId,
data: this.data.HostsData
})
}
try {
wx.setStorageSync('oldHotelinfo', data)
} catch (error) {
console.log(error)
}
console.log('000')
// 获取页面栈
var pages = getCurrentPages();
var currPage = pages[pages.length - 1]; // 当前页
var prevPage = pages[pages.length - 2]; // 上一个页面
prevPage.setData({
issel: this.data.Hotelinfo.HotelId
});
},
//固件升级
ConfigurationUpgrade: async function(e){
console.log('固件升级')
let selHosts =this.data.selHosts
this. Carryoutupgrade(false)
},
//配置升级
FirmwareUpgrade: async function (e){
console.log('配置升级')
this.Carryoutupgrade(true)
},
// 进行升级
Carryoutupgrade:function (params) {
//debugger
let selHosts =this.data.selHosts
let ID =selHosts.Id
let RoomTypeID = selHosts.RoomTypeID
let roontypeList =app.globalData.roontypeList
let Gfilename =""
let Pfilename =""
for (let index = 0; index < roontypeList.length; index++) {
const element = roontypeList[index];
if (RoomTypeID==element.ROOM_TYPE_OLD_ID) {
if (element.App_Cfg_For_L2.length>0) {
Gfilename=element.App_Cfg_For_L2
}
if (element.App_Cfg_For_L4.length>0) {
Gfilename=element.App_Cfg_For_L4
}
if (element.APPTYPE=="App_Cfg") {
Pfilename=element.CONFIG_BIN
}else{
Pfilename=""
}
break
}
}
debugger
Gfilename=Gfilename.replace('.hex','.bin')
if (params) {
if (Pfilename.length>0) {
WebChatUpgrade({
roomTypeID:RoomTypeID,
hostid_lists:'['+ID+']',
upgradefileName:Pfilename
}).then(res => {
if (res.IsSuccess ==true) {
this.setData({
Upgradestatus:"升级就绪",
UpgradestIstrue:params
})
this.observersUpgradestatus()
} else{
this.setData({
Upgradestatus:'服务器升级配置失败!'
})
this.DisplayPrompt('服务器升级配置失败!',1000)
}
}, err => {
this.setData({
Upgradestatus:'升级配置失败,服务器响应异常'
})
this.DisplayPrompt('升级配置失败,服务器响应异常',1000)
}).catch(err => {
this.setData({
Upgradestatus:'升级配置失败,服务器响应异常'
})
this.DisplayPrompt('升级配置失败,服务器响应异常',1000)
});
}else{
this.setData({
Upgradestatus:'升级配置失败!服务器未获取到配置!'
})
this.DisplayPrompt('升级配置失败!服务器未获取到配置!',1000)
}
}else{
if (Gfilename.length>0) {
WebChatUpgrade({
roomTypeID:RoomTypeID,
hostid_lists:'['+ID+']',
upgradefileName:Gfilename
}).then(res => {
if (res.IsSuccess ==true) {
this.setData({
Upgradestatus:"升级就绪",
UpgradestIstrue:params
})
this.observersUpgradestatus()
} else{
this.setData({
Upgradestatus:'服务器升级固件失败!'
})
this.DisplayPrompt('服务器升级固件失败!',1000)
}
}, err => {
this.setData({
Upgradestatus:'升级固件失败,服务器响应异常'
})
this.DisplayPrompt('升级固件失败,服务器响应异常',1000)
}).catch(err => {
this.setData({
Upgradestatus:'升级固件失败,服务器响应异常'
})
this.DisplayPrompt('升级固件失败,服务器响应异常',1000)
});
}else
{
this.setData({
Upgradestatus:"升级固件失败!!"
})
this.DisplayPrompt('升级固件失败!!',1000)
}
}
},
DisplayPrompt(tipstr, showtime)
{
wx.showLoading({
title: tipstr,
})
setTimeout(function () {
wx.hideLoading()
}, showtime)
},
// 反馈异常
ErrorInfo: async function (e) {
let type = e.currentTarget.dataset['type']
let that = this;
await ErrorInfo({
type: type,
MAC: this.data.selHosts.MAC,
roomNumber: this.data.selHosts.RoomNumber,
HotelID: this.data.selHosts.HotelID,
}).then(res => {
if (res.Status == 200) {
that.GetHide();
app.globalData.userinfo.error.push({
HostsId: that.data.selHosts.Id,
MAC: that.data.selHosts.MAC,
type: type
});
app.toast(1, "反馈成功~")
} else {
app.toast(2, "反馈失败~")
}
}, err => {
app.toast(2, "反馈失败~")
}).catch((e) => {
app.toast(2, "反馈失败~")
})
},
// 微信api获取经纬度
getFuzzyLocations() {
wx.getFuzzyLocation({
type: 'wgs84',
success: this.updateLocation,
fail: (e) => {
console.log(e)
}
})
},
// 根据经纬度,设置数据
updateLocation(res) {
let {
latitude: lat,
longitude: lon
} = res
let data = {
lat,
lon
}
// this.setData(data)
this.getAddress(lat, lon)
},
// 根据经纬度,逆地址解析
getAddress(lat, lon) {
// 在wx.request中this指向wx.request故无法setData此处将this指向that
var that = this
let SIG = md5("/ws/geocoder/v1?key=" + app.globalData.MapKey + "&location=" + String(lat) + "," + String(lon) + app.globalData.MapSk)
wx.request({
url: 'https://apis.map.qq.com/ws/geocoder/v1',
data: {
key: app.globalData.MapKey,
location: `${lat},${lon}`,
sig: SIG
},
success(res) {
let result = res.data.result
// console.log(result)
// formatted_addresses.recommend是经过腾讯地图优化过的描述方式更具人性化特点
let formatted_addresses = result.formatted_addresses.recommend
// 此处的that指向app
that.setData({
address: formatted_addresses
})
},
fail: (e) => {
console.log(e)
}
})
},
//每次展示获取一次定位
onShow() {
let that = this;
wx.getSetting({
success: (res) => {
console.log(JSON.stringify(res))
// res.authSetting['scope.userFuzzyLocation'] == undefined 表示 初始化进入该页面
// res.authSetting['scope.userFuzzyLocation'] == false 表示 非初始化进入该页面,且未授权
// res.authSetting['scope.userFuzzyLocation'] == true 表示 地理位置授权
if (res.authSetting['scope.userFuzzyLocation'] != undefined && res.authSetting['scope.userFuzzyLocation'] != true) {
//以前被拒绝授权指引用户授权
wx.showModal({
title: '请求授权当前位置',
content: '需要获取您的地理位置,请确认授权',
success: function (res) {
if (res.cancel) {
app.toast(2, "拒绝授权")
} else if (res.confirm) {
wx.openSetting({
success: function (dataAu) {
if (dataAu.authSetting["scope.userFuzzyLocation"] == true) {
app.toast(1, "授权成功")
that.getFuzzyLocations();
} else {
app.toast(2, "授权失败")
}
}
})
}
}
})
} else if (res.authSetting['scope.userFuzzyLocation'] == undefined) {
//调用wx.getFuzzyLocation
that.getFuzzyLocations();
} else {
that.getFuzzyLocations();
}
}
})
},
//读取本地历史缓存 并且 修改房间信息
GetLOC() {
let hc = null;
let data = wx.getStorageSync("oldHotelinfo") || []
try {
for (let index = 0; index < data.length; index++) {
const element = data[index];
if (element.key == this.data.Hotelinfo.HotelId) {
hc = data[index].data;
throw new Error();
}
}
} catch (error) {
console.log('已经找到')
}
if (hc != null) {
let data = this.data.HostsData;
hc.forEach(x => {
for (let index = 0; index < data.length; index++) {
if (data[index].Id == x.Id) {
data[index].xg = x.xg;
}
}
})
this.setData({
HostsData: data,
HostsDataFilters: data
})
}
}
})