// 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 }); }, });