286 lines
6.5 KiB
JavaScript
286 lines
6.5 KiB
JavaScript
|
|
// pages/basics/MakingRounds/MakingRounds.js
|
|||
|
|
const app = getApp()
|
|||
|
|
import {
|
|||
|
|
GetHostsInfo,
|
|||
|
|
GetMAC,
|
|||
|
|
GetFaceSN,
|
|||
|
|
ErrorInfo,
|
|||
|
|
CheckFaceSN,
|
|||
|
|
OpenDoorTest,
|
|||
|
|
GetRoomType,
|
|||
|
|
GetRoomTypeAndModalsListLog,
|
|||
|
|
WebChatUpgrade,
|
|||
|
|
QueryUpdateHostStatus,
|
|||
|
|
ForwardQueryUpdateHostProgressBar,
|
|||
|
|
GetRoomTypeNode,
|
|||
|
|
SetRCULight,
|
|||
|
|
SetRCUAir,
|
|||
|
|
SetRCUCurtain,
|
|||
|
|
} from '../../../lib/RequestingCenter.js'
|
|||
|
|
Page({
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* 页面的初始数据
|
|||
|
|
*/
|
|||
|
|
data: {
|
|||
|
|
RoomIndex:0,
|
|||
|
|
//权限信息
|
|||
|
|
autho: null,
|
|||
|
|
//酒店信息
|
|||
|
|
Hotelinfo: null,
|
|||
|
|
HostsData:null,
|
|||
|
|
HostsDataFilters:[],
|
|||
|
|
isback:null,
|
|||
|
|
HotelId:null,
|
|||
|
|
statusdata:null,
|
|||
|
|
onlineNumber:0,
|
|||
|
|
inputValue:"",
|
|||
|
|
toView:"",
|
|||
|
|
scrollHeight: 0
|
|||
|
|
},
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* 生命周期函数--监听页面加载
|
|||
|
|
*/
|
|||
|
|
onLoad:async function(options) {
|
|||
|
|
if (!options.HotelId || app.globalData.autho == null) {
|
|||
|
|
app.toast(2, "无酒店信息~")
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
this.setData({
|
|||
|
|
autho: app.globalData.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
|
|||
|
|
await GetHostsInfo({
|
|||
|
|
HotelID: this.data.Hotelinfo.HotelId
|
|||
|
|
}).then(res => {
|
|||
|
|
|
|||
|
|
if (res.Status == 200) {
|
|||
|
|
let onlineNumber=0
|
|||
|
|
for (let index = 0; index < res.Data.length; index++) {
|
|||
|
|
const element = res.Data[index];
|
|||
|
|
if (element.Status===1) {
|
|||
|
|
onlineNumber=onlineNumber+1
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
that.setData({
|
|||
|
|
onlineNumber:onlineNumber,
|
|||
|
|
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]
|
|||
|
|
})
|
|||
|
|
|
|||
|
|
console.log(this.data.HostsDataFilters)
|
|||
|
|
|
|||
|
|
} else {
|
|||
|
|
app.toast(2, res.Message || "网络繁忙")
|
|||
|
|
}
|
|||
|
|
}, err => {
|
|||
|
|
console.log(err)
|
|||
|
|
app.toast(2, "网络繁忙")
|
|||
|
|
}).catch(err => {
|
|||
|
|
console.log(err)
|
|||
|
|
|
|||
|
|
app.toast(2, "网络繁忙")
|
|||
|
|
});
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
},
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* 生命周期函数--监听页面初次渲染完成
|
|||
|
|
*/
|
|||
|
|
onReady() {
|
|||
|
|
this.calcScrollHeight();
|
|||
|
|
},
|
|||
|
|
calcScrollHeight() {
|
|||
|
|
// 1. 拿到屏幕可用高度(px)
|
|||
|
|
const sys = wx.getSystemInfoSync();
|
|||
|
|
const screenHeight = sys.windowHeight; // px
|
|||
|
|
|
|||
|
|
// 2. 拿到 scroll-view 的 top(px)
|
|||
|
|
wx.createSelectorQuery()
|
|||
|
|
.in(this)
|
|||
|
|
.select('#myScroll')
|
|||
|
|
.boundingClientRect(rect => {
|
|||
|
|
if (rect) {
|
|||
|
|
const topPx = rect.top; // px
|
|||
|
|
const bottomPx = 10 / 2; // 10rpx → 5px(2倍屏)
|
|||
|
|
const heightPx = screenHeight - topPx - bottomPx;
|
|||
|
|
|
|||
|
|
// 3. 转 rpx 并写入
|
|||
|
|
this.setData({
|
|||
|
|
scrollHeight: heightPx * 2 // px→rpx
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
})
|
|||
|
|
.exec();
|
|||
|
|
},
|
|||
|
|
/**
|
|||
|
|
* 生命周期函数--监听页面显示
|
|||
|
|
*/
|
|||
|
|
onShow() {
|
|||
|
|
|
|||
|
|
},
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* 生命周期函数--监听页面隐藏
|
|||
|
|
*/
|
|||
|
|
onHide() {
|
|||
|
|
|
|||
|
|
},
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* 生命周期函数--监听页面卸载
|
|||
|
|
*/
|
|||
|
|
onUnload() {
|
|||
|
|
|
|||
|
|
},
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* 页面相关事件处理函数--监听用户下拉动作
|
|||
|
|
*/
|
|||
|
|
onPullDownRefresh() {
|
|||
|
|
|
|||
|
|
},
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* 页面上拉触底事件的处理函数
|
|||
|
|
*/
|
|||
|
|
onReachBottom() {
|
|||
|
|
|
|||
|
|
},
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* 用户点击右上角分享
|
|||
|
|
*/
|
|||
|
|
onShareAppMessage() {
|
|||
|
|
|
|||
|
|
},
|
|||
|
|
|
|||
|
|
inputSearchForHotels(e){
|
|||
|
|
this.setData({
|
|||
|
|
inputValue: e.detail.value
|
|||
|
|
})
|
|||
|
|
},
|
|||
|
|
SearchForHotels(e){
|
|||
|
|
//debugger
|
|||
|
|
let myarry =this.data.HostsDataFilters
|
|||
|
|
let inputValue =this.data.inputValue.trim()
|
|||
|
|
const CNaelement =this.sortHotelsByFuzzyMatch(myarry,inputValue)
|
|||
|
|
this.setData({
|
|||
|
|
HostsDataFilters:CNaelement
|
|||
|
|
})
|
|||
|
|
},
|
|||
|
|
goProcess(e) {
|
|||
|
|
const { room, hotel, status } = e.currentTarget.dataset;
|
|||
|
|
|
|||
|
|
if (status !== 1) return; // 不为1时不跳转
|
|||
|
|
wx.navigateTo({
|
|||
|
|
url: `/pages/basics/MakingRounds/process/process?RoomNumber=${room}&HotelName=${hotel}&HotelId=${this.data.Hotelinfo.HotelId }`
|
|||
|
|
});
|
|||
|
|
},
|
|||
|
|
RefreshTheRoom:async function(e){
|
|||
|
|
let that = this
|
|||
|
|
await GetHostsInfo({
|
|||
|
|
HotelID: this.data.Hotelinfo.HotelId
|
|||
|
|
}).then(res => {
|
|||
|
|
|
|||
|
|
if (res.Status == 200) {
|
|||
|
|
let onlineNumber=0
|
|||
|
|
for (let index = 0; index < res.Data.length; index++) {
|
|||
|
|
const element = res.Data[index];
|
|||
|
|
if (element.Status===1) {
|
|||
|
|
onlineNumber=onlineNumber+1
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
that.setData({
|
|||
|
|
onlineNumber:onlineNumber,
|
|||
|
|
HostsData: res.Data,
|
|||
|
|
HostsDataFilters: res.Data,
|
|||
|
|
isback: (app.globalData.autho.length > 1 || app.globalData.autho[0].Hotels.length > 1),
|
|||
|
|
statusdata: [0, 0, 0, res.Data.length]
|
|||
|
|
})
|
|||
|
|
|
|||
|
|
console.log(this.data.HostsDataFilters)
|
|||
|
|
|
|||
|
|
} else {
|
|||
|
|
app.toast(2, res.Message || "网络繁忙")
|
|||
|
|
}
|
|||
|
|
}, err => {
|
|||
|
|
console.log(err)
|
|||
|
|
app.toast(2, "网络繁忙")
|
|||
|
|
}).catch(err => {
|
|||
|
|
console.log(err)
|
|||
|
|
|
|||
|
|
app.toast(2, "网络繁忙")
|
|||
|
|
});
|
|||
|
|
},
|
|||
|
|
|
|||
|
|
sortHotelsByFuzzyMatch:function(hotels, keyword) {
|
|||
|
|
// 1. 参数验证
|
|||
|
|
if (!Array.isArray(hotels)) {
|
|||
|
|
console.warn('第一个参数必须是数组');
|
|||
|
|
return [];
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if (typeof keyword !== 'string') {
|
|||
|
|
console.warn('第二个参数必须是字符串');
|
|||
|
|
return hotels.slice();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// 2. 处理空数组或空关键字的情况
|
|||
|
|
const trimmedKeyword = keyword.trim();
|
|||
|
|
if (hotels.length === 0 || trimmedKeyword === '') {
|
|||
|
|
return hotels.slice();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
const lowerKeyword = trimmedKeyword.toLowerCase();
|
|||
|
|
|
|||
|
|
// 3. 分离匹配和不匹配的酒店
|
|||
|
|
const matchedHotels = [];
|
|||
|
|
const unmatchedHotels = [];
|
|||
|
|
|
|||
|
|
hotels.forEach(hotel => {
|
|||
|
|
// 检查是否为有效酒店对象
|
|||
|
|
if (!hotel || typeof hotel !== 'object' || !hotel.RoomNumber) {
|
|||
|
|
unmatchedHotels.push(hotel);
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
const hotelName = String(hotel.RoomNumber).toLowerCase();
|
|||
|
|
const isMatch = hotelName.includes(lowerKeyword);
|
|||
|
|
|
|||
|
|
if (isMatch) {
|
|||
|
|
matchedHotels.push(hotel);
|
|||
|
|
} else {
|
|||
|
|
unmatchedHotels.push(hotel);
|
|||
|
|
}
|
|||
|
|
});
|
|||
|
|
|
|||
|
|
// 4. 合并数组并返回
|
|||
|
|
return [...matchedHotels, ...unmatchedHotels];
|
|||
|
|
},
|
|||
|
|
})
|