123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403 |
- // nova-tourism/pages/homestay/homestay-detail/index.js
- let Parse = getApp().Parse;
- const company = getApp().globalData.company
- import dateServ from '../../../service/date';
- const dateF = require("../../../../utils/date")
- let sev = require("../../../service/request")
- const uid = Parse.User.current()?.id
- const req = require('../../../../utils/request')
- Page({
- /**
- * 页面的初始数据
- */
- data: {
- //屏幕高度
- statusBarHeight: 0, // 状态栏高度
- screenHeight: 0, // 屏幕高度
- customHeight: 0, // 自定义导航栏高度(如小程序右上角胶囊按钮)
- bottomNavHeight: 0, // 底部导航栏高度
- contentHeight: 0, // 可用内容高度
- // 轮播图数组
- imageUrls: [],
- index: 1,
- roomIndex: 1,
- //
- decodedDateStart: '',
- decodedDateEnd: '',
- objectId: "",
- daysBetween: 0,
- istoday: null,
- storeList: [],
- roomList: [],
- //地图
- longitude: 0,
- latitude: 0,
- markers: [],
- //
- start: '',
- end: '',
- //
- show: false,
- date_start1: '',
- date_end1: '',
- showRoom: false, //显示房间详情
- chickRoom: null, //选中的房间
- specDateMap: {}, //特殊日期标识-今天/明天
- gift: [], //望仙礼遇-商品
- },
- /**
- * 生命周期函数--监听页面加载
- */
- onLoad: function (options) {
- const today = new Date();
- const tomorrow = new Date();
- tomorrow.setDate(today.getDate() + 1);
- let specDateMap = {}
- specDateMap[dateF.formatTime('mm月dd日', today)] = '今天'
- specDateMap[dateF.formatTime('mm月dd日', tomorrow)] = '明天'
- // 计算
- const systemInfo = wx.getSystemInfoSync();
- const statusBarHeight = systemInfo.statusBarHeight || 0;
- const screenHeight = systemInfo.screenHeight || 0;
- const custom = wx.getMenuButtonBoundingClientRect();
- const customHeight = custom.height + 10 + 2 || 0;
- const bottomNavHeight = systemInfo.screenHeight - systemInfo.safeArea.bottom || 0;
- const contentHeight = (screenHeight - bottomNavHeight - statusBarHeight - customHeight) * 750 / systemInfo.windowWidth;
- if (bottomNavHeight) {
- const padding_bottom = bottomNavHeight * 750 / systemInfo.windowWidth
- this.setData({
- bottomNavHeight: padding_bottom
- })
- } else {
- this.setData({
- bottomNavHeight: 40
- })
- }
- this.setData({
- statusBarHeight,
- screenHeight,
- customHeight,
- contentHeight
- });
- const {
- store_id,
- start,
- end,
- } = options;
- let startDate = new Date(`${start} 12:00:00`)
- let endDate = new Date(`${end} 14:00:00`)
- this.setData({
- decodedDateStart: dateF.formatTime('mm月dd日', startDate),
- decodedDateEnd: dateF.formatTime('mm月dd日', endDate),
- objectId: store_id,
- daysBetween: sev.getDays(startDate, endDate),
- start: startDate,
- end: endDate,
- specDateMap
- })
- console.log(this.data.start, this.data.end);
- // this.hanshu()
- this.refersh()
- },
- async refersh() {
- this.getShopStore()
- this.getRoom()
- this.getGift()
- },
- /**获取当前店铺 */
- async getShopStore() {
- let {
- objectId
- } = this.data
- let query = new Parse.Query('ShopStore')
- let d = await query.get(objectId)
- let shopStore = d?.toJSON()
- let cQuery = new Parse.Query('DramaShopCollect')
- cQuery.equalTo('company', company)
- cQuery.equalTo('user', uid)
- cQuery.equalTo('homestayStore', objectId)
- cQuery.equalTo('isCollect', 'true')
- cQuery.notEqualTo('isDeleted', "true")
- let count = await cQuery.count()
- shopStore.iscollect = count
- console.log(shopStore)
- let longitude = shopStore?.location?.longitude || 0
- let latitude = shopStore?.location?.latitude || 0
- this.setData({
- shopStore,
- longitude,
- latitude,
- markers: [{
- id: 1,
- longitude,
- latitude,
- iconPath: 'https://file-cloud.fmode.cn/13WZ0W7u3l/20240724/7ebg0k104325941.png?imageView2/1/w/200/h/200', /// 自定义标记图标
- width: 20,
- height: 20,
- }]
- })
- },
- /**获取店铺房间 */
- async getRoom() {
- let {
- objectId
- } = this.data
- let query = new Parse.Query('ShopRoom');
- query.equalTo('company', company);
- query.equalTo('shop', objectId);
- query.equalTo('isEnabled', 'true');
- query.notEqualTo('isDeleted', 'true');
- query.ascending('index')
- let d = await query.find();
- let roomList = d?.map(item => item?.toJSON())
- await this.setData({
- roomList
- })
- this.judRoom()
- },
- /**打开地图 */
- callMap() {
- let {
- shopStore,
- latitude,
- longitude,
- } = this.data
- wx.openLocation({
- name: shopStore?.storeName || '',
- latitude,
- longitude,
- scale: 18
- })
- },
- /** 开日历*/
- openCalendar() {
- this.setData({
- show: true
- });
- },
- /** 关日历*/
- closeCalendar() {
- this.setData({
- show: false
- });
- },
- /** 选好日期点击完成后*/
- async onConfirm(event) {
- const [start, end] = event.detail;
- let daysBetween = sev.getDays(start, end)
- await this.setData({
- start: new Date(start.setHours(12, 0, 0)),
- end: new Date(end.setHours(14, 0, 0)),
- decodedDateStart: dateF.formatTime('mm月dd日', start),
- decodedDateEnd: dateF.formatTime('mm月dd日', end),
- daysBetween
- });
- this.judRoom()
- this.closeCalendar()
- },
- /**遍历房间判断当前时段房间状态 */
- async judRoom() {
- let {
- start,
- end,
- roomList
- } = this.data
- for (let i in roomList) {
- let item = roomList[i]
- /**是否空闲-true(可预约),false(不可预约) */
- let isFree = await sev.isFree({
- from: start,
- to: end
- }, item.objectId)
- roomList[i].isFree = isFree
- }
- this.setData({
- roomList
- })
- },
- /** 点击预定*/
- navigate(e) {
- const {
- index
- } = e.currentTarget.dataset;
- let {
- start,
- end,
- roomList
- } = this.data
- console.log(roomList, roomList[index])
- if (!roomList[index].isFree) {
- wx.showToast({
- title: '时段内房间被预约',
- icon: 'none'
- })
- return
- }
- let date_start = dateF.formatTime("YYYY-mm-dd", start)
- let date_end = dateF.formatTime("YYYY-mm-dd", end)
- wx.navigateTo({
- url: `../homestay-order2/index?objectId=${roomList[index].objectId}&date_start=${date_start}&date_end=${date_end}`
- })
- },
- /** 点击预定*/
- navigatePopup() {
- let {
- start,
- end,
- chickRoom
- } = this.data
- if (!chickRoom.isFree) {
- wx.showToast({
- title: '时段内房间被预约',
- icon: 'none'
- })
- return
- }
- let date_start = dateF.formatTime("YYYY-mm-dd", start)
- let date_end = dateF.formatTime("YYYY-mm-dd", end)
- wx.navigateTo({
- url: `../homestay-order2/index?objectId=${chickRoom.objectId}&date_start=${date_start}&date_end=${date_end}`
- })
- },
- /**房间弹框-开 */
- showRoom(e) {
- let {
- roomList
- } = this.data
- let {
- index
- } = e.currentTarget.dataset
- console.log(roomList[index])
- this.setData({
- chickRoom: roomList[index],
- showRoom: true
- });
- },
- /**房间弹框-关 */
- onCloseRoom() {
- this.setData({
- showRoom: false
- });
- },
- /**拨打电话 */
- phone() {
- let phone = this.data.storeList[0].mobile
- console.log(phone);
- wx.makePhoneCall({
- phoneNumber: phone
- })
- },
- /** 获取望仙礼遇-商品*/
- async getGift() {
- let {
- objectId
- } = this.data
- let sql = `SELECT good."objectId",good."name",good."price",good."image"
- FROM "ShopGoods" good
- WHERE good."company" = '${company}'
- AND good."isDeleted" IS NOT TRUE
- AND good."status" IS TRUE
- AND good."shopStore"='${objectId}'
- ORDER BY COALESCE(good."isHome", FALSE) DESC,
- CASE WHEN good."top"= 0 THEN 1 ELSE 0 END,
- good."top" ASC,good."createdAt"
- LIMIT 4`
- let gift = await req.customSQL(sql) || []
- console.log(gift)
- this.setData({
- gift
- })
- },
- /** 跳转*/
- tourl(e) {
- const url = e.currentTarget.dataset.url
- wx.navigateTo({
- url: `${url}` // 目标页面的路径
- });
- },
- /**
- * 生命周期函数--监听页面初次渲染完成
- */
- onReady: function () {
- },
- /**
- * 生命周期函数--监听页面显示
- */
- onShow: function () {
- let {
- roomList
- } = this.data
- if (roomList?.length) {
- this.judRoom()
- }
- },
- /**
- * 生命周期函数--监听页面隐藏
- */
- onHide: function () {
- },
- /**
- * 生命周期函数--监听页面卸载
- */
- onUnload: function () {
- },
- /**
- * 页面相关事件处理函数--监听用户下拉动作
- */
- onPullDownRefresh: function () {
- },
- /**
- * 页面上拉触底事件的处理函数
- */
- onReachBottom: function () {
- },
- /**
- * 用户点击右上角分享
- */
- onShareAppMessage: function () {
- },
- //随轮播图变化而变化
- onSwiperChange: function (event) {
- const currentIndex = event.detail.current; // 获取当前索引
- this.setData({
- index: currentIndex + 1
- })
- },
- //随轮播图变化而变化
- onRoomChange: function (event) {
- const currentIndex = event.detail.current; // 获取当前索引
- this.setData({
- roomIndex: currentIndex + 1
- })
- },
- })
|