579 lines
13 KiB
JavaScript
579 lines
13 KiB
JavaScript
// packageC/hotel/HotelIndex/HotelIndex.js
|
|
var location = require("../../../mybehaviors/location/location");
|
|
var app = getApp();
|
|
Page({
|
|
behaviors: [location],
|
|
/**
|
|
* 页面的初始数据
|
|
*/
|
|
data: {
|
|
language: '',
|
|
show1: false,
|
|
show2: false,
|
|
show3: false,
|
|
value: 0,
|
|
valueData: 0,
|
|
date_obj_arr: [],
|
|
//入住时间
|
|
start_time: "",
|
|
//离店时间
|
|
end_time: "",
|
|
//入住几晚
|
|
night_day: "",
|
|
//轮播图片
|
|
carousels_arr: [],
|
|
//banner图片
|
|
bannerObj: {},
|
|
//分类
|
|
catagory_arr: [],
|
|
//定位
|
|
location: {},
|
|
//酒店列表
|
|
hotel_arr: [],
|
|
loading: false,
|
|
allLoaded: false,
|
|
goload: true,
|
|
isLoadMore: true,
|
|
page: 1,
|
|
total_page: 0,
|
|
star_arr: [{
|
|
name: "二星及以下/经济型",
|
|
value: 2
|
|
},
|
|
{
|
|
name: "三星/舒适",
|
|
value: 3
|
|
},
|
|
{
|
|
name: "四星/高档",
|
|
value: 4
|
|
},
|
|
{
|
|
name: "五星/豪华",
|
|
value: 5
|
|
},
|
|
{
|
|
name: "六星",
|
|
value: 6
|
|
},
|
|
{
|
|
name: "七星",
|
|
value: 7
|
|
},
|
|
{
|
|
name: "八星",
|
|
value: 8
|
|
},
|
|
{
|
|
name: "不限",
|
|
value: 0
|
|
}
|
|
],
|
|
current_index: 0,
|
|
star_value: 0,
|
|
toolbar: false,
|
|
PageNameList: {}, //标题
|
|
address: "",
|
|
point: {
|
|
lat: '',
|
|
lng: ''
|
|
},
|
|
city: '',
|
|
title: '',
|
|
HOTEL_LIST: "plugin.hotel.frontend.hotel.hotel.get-hotel-list-to-page",
|
|
INDEX_OTHER_URL: "plugin.hotel.frontend.hotel.get-default.get-index-data",
|
|
CATAGORY_URL: "plugin.hotel.frontend.hotel.hotel-category.get-list"
|
|
},
|
|
|
|
/**
|
|
* 生命周期函数--监听页面加载
|
|
*/
|
|
onLoad: function(options) {
|
|
this.getInitTime();
|
|
this.getOtherData();
|
|
this.getCatagoryData();
|
|
this.getCustomizeHotelHead();
|
|
if (options.addressData) {
|
|
let addressData = JSON.parse(options.addressData);
|
|
this.setData({
|
|
'point.lat': addressData.latitude,
|
|
'point.lng': addressData.longitude,
|
|
address: addressData.title,
|
|
title: addressData.title,
|
|
city: addressData.city
|
|
});
|
|
this.getList();
|
|
} else {
|
|
this._getLocation(() => {this.getList();});
|
|
}
|
|
|
|
},
|
|
|
|
/**
|
|
* 生命周期函数--监听页面初次渲染完成
|
|
*/
|
|
onReady: function() {
|
|
let language = wx.getStorageSync('langIndex');
|
|
this.setData({ 'language': language.en});
|
|
},
|
|
|
|
/**
|
|
* 生命周期函数--监听页面显示
|
|
*/
|
|
onShow: function() {
|
|
|
|
},
|
|
|
|
/**
|
|
* 生命周期函数--监听页面隐藏
|
|
*/
|
|
onHide: function() {
|
|
|
|
},
|
|
|
|
/**
|
|
* 生命周期函数--监听页面卸载
|
|
*/
|
|
onUnload: function() {
|
|
|
|
},
|
|
|
|
/**
|
|
* 页面相关事件处理函数--监听用户下拉动作
|
|
*/
|
|
onPullDownRefresh: function() {
|
|
|
|
},
|
|
|
|
/**
|
|
* 页面上拉触底事件的处理函数
|
|
*/
|
|
onReachBottom: function() {
|
|
if (this.data.isLoadMore) {
|
|
this.getMoreList();
|
|
} else {
|
|
console.log('没有更多数据');
|
|
}
|
|
},
|
|
|
|
/**
|
|
* 用户点击右上角分享
|
|
*/
|
|
onShareAppMessage: function() {
|
|
|
|
},
|
|
show2btn() {
|
|
this.setData({
|
|
show2: true
|
|
});
|
|
},
|
|
show3btn() {
|
|
this.setData({
|
|
show3: true
|
|
});
|
|
},
|
|
show1btn() {
|
|
this.setData({
|
|
show1: true
|
|
});
|
|
},
|
|
getList() {
|
|
var that = this;
|
|
let urlStr = app.getNetAddresss(that.data.HOTEL_LIST);
|
|
urlStr += '&lng=' + this.data.point.lng;
|
|
urlStr += '&lat=' + this.data.point.lat;
|
|
urlStr += '&city_name=' + this.data.city;
|
|
urlStr += '&page=' + this.data.page;
|
|
app._getNetWork({
|
|
url: urlStr,
|
|
success: function(resdata) {
|
|
var res = resdata.data;
|
|
if (res.result == 1) {
|
|
that.setData({
|
|
hotel_arr: res.data.data,
|
|
hotel_total_page: res.data.last_page
|
|
});
|
|
}
|
|
},
|
|
fail: function(res) {
|
|
console.log(res);
|
|
}
|
|
});
|
|
},
|
|
getInitTime() {
|
|
let now = new Date();
|
|
let next = new Date(now.getTime() + 24 * 60 * 60 * 1000);
|
|
this.setData({
|
|
start_time: `${now.getFullYear()}-${
|
|
now.getMonth() + 1 < 10
|
|
? `0${now.getMonth() + 1}`
|
|
: `${now.getMonth() + 1}`
|
|
}-${now.getDate() < 10 ? `0${now.getDate()}` : `${now.getDate()}`}`
|
|
});
|
|
this.setData({
|
|
end_time: `${next.getFullYear()}-${
|
|
next.getMonth() + 1 < 10
|
|
? `0${next.getMonth() + 1}`
|
|
: `${next.getMonth() + 1}`
|
|
}-${next.getDate() < 10 ? `0${next.getDate()}` : `${next.getDate()}`}`
|
|
});
|
|
},
|
|
//获取轮播 分类数据
|
|
getOtherData() {
|
|
var that = this;
|
|
let urlStr = app.getNetAddresss(that.data.INDEX_OTHER_URL);
|
|
app._getNetWork({
|
|
url: urlStr,
|
|
success: function(resdata) {
|
|
var res = resdata.data;
|
|
if (res.result == 1) {
|
|
that.setData({
|
|
carousels_arr: res.data.carousels,
|
|
bannerObj: res.data.banner
|
|
});
|
|
}
|
|
},
|
|
fail: function(res) {
|
|
console.log(res);
|
|
}
|
|
});
|
|
},
|
|
//获取分类
|
|
getCatagoryData() {
|
|
var that = this;
|
|
let urlStr = app.getNetAddresss(that.data.CATAGORY_URL);
|
|
app._getNetWork({
|
|
url: urlStr,
|
|
success: function(resdata) {
|
|
var res = resdata.data;
|
|
if (res.result == 1) {
|
|
that.setData({
|
|
catagory_arr: res.data
|
|
});
|
|
}
|
|
},
|
|
fail: function(res) {
|
|
console.log(res);
|
|
}
|
|
});
|
|
},
|
|
//获取酒店自定义字段
|
|
getCustomizeHotelHead() {
|
|
let that = this;
|
|
let isQuestHotel = "";
|
|
try {
|
|
const value = wx.getStorageSync('customizeHotelHead');
|
|
if (value) {
|
|
isQuestHotel = value;
|
|
// Do something with return value
|
|
}
|
|
} catch (e) {
|
|
// Do something when catch error
|
|
}
|
|
if (!app._isTextEmpty(isQuestHotel)) {
|
|
this.setData({
|
|
PageNameList: JSON.parse(isQuestHotel)
|
|
});
|
|
wx.setNavigationBarTitle({
|
|
title: this.data.PageNameList.hotel_first_page
|
|
});
|
|
} else {
|
|
let urlStr = app.getNetAddresss("plugin.hotel.frontend.hotel.get-hotel-info.get-custom-name");
|
|
app._getNetWork({
|
|
url: urlStr,
|
|
success: function(resdata) {
|
|
var res = resdata.data;
|
|
if (res.result == 1) {
|
|
that.setData({
|
|
PageNameList: res.data
|
|
});
|
|
wx.setNavigationBarTitle({
|
|
title: res.data.hotel_first_page ? res.data.hotel_first_page : ''
|
|
});
|
|
try {
|
|
wx.setStorageSync('customizeHotelHead', JSON.stringify(res.data));
|
|
} catch (e) {
|
|
console.log(e);
|
|
}
|
|
}
|
|
},
|
|
fail: function(res) {
|
|
console.log(res);
|
|
}
|
|
});
|
|
}
|
|
},
|
|
//图片跳转
|
|
imgHref(e) {
|
|
let url = e.currentTarget.dataset.link;
|
|
try {
|
|
wx.navigateTo({
|
|
url: url
|
|
});
|
|
} catch (e) {
|
|
wx.showToast({
|
|
title: '链接设置错误',
|
|
icon: 'none',
|
|
duration: 2000
|
|
});
|
|
//TODO handle the exception
|
|
}
|
|
},
|
|
//路由跳转
|
|
routerGo(e) {
|
|
// let value = e.currentTarget.dataset.mum;
|
|
wx.navigateTo({
|
|
url: '/packageC/o2o/o2oLocation/o2oLocation?tag=hotel'
|
|
});
|
|
},
|
|
//搜索
|
|
gotoSearch() {
|
|
wx.navigateTo({
|
|
url: '/packageC/hotel/HotelSearch/HotelSearch?start=' + this.data.start_time + '&end=' + this.data.end_time
|
|
});
|
|
},
|
|
//搜索2
|
|
gotoSearch2() {
|
|
if (app._isTextEmpty(this.data.start_time)) {
|
|
wx.showToast({
|
|
title: '请选择入住时间',
|
|
icon: 'none',
|
|
duration: 2000
|
|
});
|
|
return;
|
|
}
|
|
|
|
if (app._isTextEmpty(this.data.end_time)) {
|
|
wx.showToast({
|
|
title: '请选择离店时间',
|
|
icon: 'none',
|
|
duration: 2000
|
|
});
|
|
return;
|
|
}
|
|
wx.navigateTo({
|
|
url: '/packageC/hotel/HotelSearch/HotelSearch?start=' + this.data.start_time + '&end=' + this.data.end_time +
|
|
'&price=' + this.data.value + '&star=' + this.data.star_value
|
|
});
|
|
},
|
|
acceptTime(e) {
|
|
let type = e.detail.type;
|
|
let date = e.detail.date;
|
|
if (type == "离店") {
|
|
this.setData({
|
|
end_time: date
|
|
});
|
|
} else if (type == "入住") {
|
|
this.setData({
|
|
start_time: date
|
|
});
|
|
}
|
|
this.checkDate(type);
|
|
},
|
|
checkDate(type) {
|
|
//入住日期不能为空
|
|
//离店日期不能小于住店日期
|
|
//离店日期不能和住店日期同一天
|
|
let start = new Date(this.data.start_time).getTime();
|
|
let end = new Date(this.data.end_time).getTime();
|
|
if (app._isTextEmpty(this.data.start_time)) {
|
|
wx.showToast({
|
|
title: '请先选择入住日期',
|
|
icon: 'none',
|
|
duration: 2000
|
|
});
|
|
this.setData({
|
|
end_time: ""
|
|
});
|
|
return;
|
|
} else {
|
|
if (start == end) {
|
|
wx.showToast({
|
|
title: '入住和离店日期不能为同一天',
|
|
icon: 'none',
|
|
duration: 2000
|
|
});
|
|
this.setData({
|
|
end_time: ""
|
|
});
|
|
return;
|
|
}
|
|
if (start > end) {
|
|
wx.showToast({
|
|
title: '离店日期需要大于入店日期',
|
|
icon: 'none',
|
|
duration: 2000
|
|
});
|
|
this.setData({
|
|
end_time: ""
|
|
});
|
|
return;
|
|
}
|
|
//关闭弹窗
|
|
if (type == "离店") {
|
|
//计算多少晚
|
|
this.getDays(this.data.start_time, this.data.end_time);
|
|
this.setData({
|
|
show3: false
|
|
});
|
|
} else if (type == "入住") {
|
|
this.setData({
|
|
show2: false
|
|
});
|
|
}
|
|
}
|
|
},
|
|
closeHander(e) {
|
|
let type = e.detail;
|
|
if (type == "离店") {
|
|
this.setData({
|
|
show3: false
|
|
});
|
|
} else if (type == "入住") {
|
|
this.setData({
|
|
show2: false
|
|
});
|
|
}
|
|
},
|
|
//时间日期
|
|
getDays(strDateStart, strDateEnd) {
|
|
let strSeparator = "-"; //日期分隔符
|
|
let oDate1, oDate2, iDays;
|
|
oDate1 = strDateStart.split(strSeparator);
|
|
oDate2 = strDateEnd.split(strSeparator);
|
|
let strDateS = new Date(oDate1[0], oDate1[1] - 1, oDate1[2]);
|
|
let strDateE = new Date(oDate2[0], oDate2[1] - 1, oDate2[2]);
|
|
iDays = parseInt(Math.abs(strDateS - strDateE) / 1000 / 60 / 60 / 24); //把相差的毫秒数转换为天数
|
|
console.log(iDays);
|
|
this.setData({
|
|
night_day: iDays
|
|
});
|
|
},
|
|
slidedrag(e) {
|
|
let num = e.detail.value;
|
|
let num_1 = num * 10;
|
|
this.setData({
|
|
value: num_1
|
|
});
|
|
},
|
|
slideChange(e) {
|
|
let num = e.detail;
|
|
let num_1 = num * 10;
|
|
this.setData({
|
|
value: num_1
|
|
});
|
|
},
|
|
starChoose(e) {
|
|
let index = e.currentTarget.dataset.index;
|
|
let item = e.currentTarget.dataset.item;
|
|
this.setData({
|
|
current_index: index,
|
|
star_value: item.value
|
|
});
|
|
},
|
|
starSubmit(e) {
|
|
let tag = e.currentTarget.dataset.val;
|
|
if (tag == "reset") {
|
|
this.setData({
|
|
current_index: 0,
|
|
star_value: 2,
|
|
value: 0,
|
|
valueData: 0
|
|
});
|
|
} else if (tag == "complete") {
|
|
this.setData({
|
|
show1: false
|
|
});
|
|
}
|
|
},
|
|
show1closebtn() {
|
|
this.setData({
|
|
show1: false
|
|
});
|
|
},
|
|
show2closebtn() {
|
|
this.setData({
|
|
show2: false
|
|
});
|
|
},
|
|
show3closebtn() {
|
|
this.setData({
|
|
show3: false
|
|
});
|
|
},
|
|
//分类跳转
|
|
goCatagory(e) {
|
|
let value = e.currentTarget.dataset.item;
|
|
wx.navigateTo({
|
|
url: '/packageC/hotel/HotelSearch/HotelSearch?category=' + value.id
|
|
});
|
|
},
|
|
getMoreList() {
|
|
var that = this;
|
|
if (this.data.page == this.data.total_page) {
|
|
return;
|
|
}
|
|
if (this.data.page >= this.data.total_page) {
|
|
that.setData({
|
|
loading: true,
|
|
allLoaded: true
|
|
});
|
|
return;
|
|
} else {
|
|
this.setData({
|
|
page: this.data.page + 1
|
|
});
|
|
let urlStr = app.getNetAddresss(that.data.HOTEL_LIST);
|
|
urlStr += '&lng=' + this.data.point.lng;
|
|
urlStr += '&lat=' + this.data.point.lat;
|
|
urlStr += '&city_name=' + this.data.city;
|
|
urlStr += '&page=' + this.data.page;
|
|
app._getNetWork({
|
|
url: urlStr,
|
|
success: function(resdata) {
|
|
var res = resdata.data;
|
|
if (res.result == 1) {
|
|
that.setData({
|
|
loading: false,
|
|
allLoaded: false,
|
|
hotel_arr: that.data.hotel_arr.concat(res.data.data)
|
|
});
|
|
} else {
|
|
that.setData({
|
|
page: that.data.page - 1,
|
|
loading: true,
|
|
allLoaded: true,
|
|
isLoadMore: false
|
|
});
|
|
return;
|
|
}
|
|
|
|
},
|
|
fail: function(res) {
|
|
console.log(res);
|
|
}
|
|
});
|
|
}
|
|
},
|
|
gohome() {
|
|
wx.reLaunch({
|
|
url: '/packageG/index/index'
|
|
});
|
|
},
|
|
goorderlist() {
|
|
wx.navigateTo({
|
|
url: '/packageA/member/myOrder_v2/myOrder_v2?status=0&orderType=hotel'
|
|
});
|
|
},
|
|
gomember() {
|
|
wx.reLaunch({
|
|
url: '/packageG/member_v2/member_v2'
|
|
});
|
|
},
|
|
showToolbar() {
|
|
this.setData({
|
|
toolbar: !this.data.toolbar
|
|
});
|
|
},
|
|
});
|