xll 1 lună în urmă
părinte
comite
0876fd2040

+ 86 - 85
app.json

@@ -1,90 +1,91 @@
 {
-    "pages": [
-        "index"
-    ],
-    "subpackages": [
-        {
-            "root": "nova-tourism",
-            "name": "tourism",
-            "pages": [
-                "pages/index/index",
-                "pages/homestay/homestay-detail/index",
-                "pages/my/my-card/index",
-                "pages/my/my-wallet/index",
-                "pages/homestay/homestay-order/index",
-                "pages/homestay/customer/select-customer/index",
-                "pages/homestay/customer/customer-info/index",
-                "pages/collect/collect-detail/index",
-                "pages/my/merchant/login/index",
-                "pages/my/merchant/merchant-home/index",
-                "pages/my/merchant/merchant-home/store-withdraw/index",
-                "pages/my/merchant/merchant-home/order-list/index",
-                "pages/my/merchant/merchant-home/order2-list/index",
-                "pages/my/merchant/merchant-home/order2-list/order-deils/index",
-                "pages/my/merchant/merchant-home/account/index",
-                "pages/my/merchant/merchant-home/account/password/index",
-                "pages/my/merchant/merchant-home/account/mobile/index",
-                "pages/my/merchant/comments/hotel/index",
-                "pages/my/merchant/comments/hotel/comment-detail/index",
-                "pages/my/merchant/room-manage/index",
-                "pages/my/merchant/room-manage/room-edit/index",
-                "pages/my/merchant/code-verify/index",
-                "pages/homestay/homestay-order2/index",
-                "pages/my/my-order/index",
-                "pages/my/my-order/order-detail/index",
-                "pages/my/my-order/my-refund/index",
-                "pages/my/my-order/my-refund/refund-detail/index"
-            ]
-        },
-        {
-            "root": "nova-diypage",
-            "name": "DIYPAGE",
-            "pages": [
-                "pages/index/index"
-            ]
-        }
-    ],
-    "window": {
-        "navigationStyle": "custom",
-        "navigationBarTitleText": "",
-        "navigationBarTextStyle": "black",
-        "navigationBarBackgroundColor": "#f6f5fa",
-        "backgroundColor": "#f6f5fa",
-        "enablePullDownRefresh": false
-    },
-    "permission": {
-        "scope.userLocation": {
-            "desc": "你的位置信息将用于小程序位置接口的效果展示"
-        }
+  "pages": [
+    "index"
+  ],
+  "subpackages": [
+    {
+      "root": "nova-tourism",
+      "name": "tourism",
+      "pages": [
+        "pages/index/index",
+        "pages/homestay/homestay-detail/index",
+        "pages/my/my-card/index",
+        "pages/my/my-wallet/index",
+        "pages/homestay/homestay-order/index",
+        "pages/homestay/customer/select-customer/index",
+        "pages/homestay/customer/customer-info/index",
+        "pages/collect/collect-detail/index",
+        "pages/my/merchant/login/index",
+        "pages/my/merchant/merchant-home/index",
+        "pages/my/merchant/merchant-home/store-withdraw/index",
+        "pages/my/merchant/merchant-home/order-list/index",
+        "pages/my/merchant/merchant-home/order2-list/index",
+        "pages/my/merchant/merchant-home/order2-list/order-deils/index",
+        "pages/my/merchant/merchant-home/account/index",
+        "pages/my/merchant/merchant-home/account/password/index",
+        "pages/my/merchant/merchant-home/account/mobile/index",
+        "pages/my/merchant/comments/hotel/index",
+        "pages/my/merchant/comments/hotel/comment-detail/index",
+        "pages/my/merchant/room-manage/index",
+        "pages/my/merchant/room-manage/room-edit/index",
+        "pages/my/merchant/code-verify/index",
+        "pages/homestay/homestay-order2/index",
+        "pages/my/my-order/index",
+        "pages/my/my-order/order-detail/index",
+        "pages/my/my-order/my-refund/index",
+        "pages/my/my-order/my-refund/refund-detail/index",
+        "pages/my/my-wallet/loose-change/index"
+      ]
     },
-    "requiredPrivateInfos": [
-      "chooseLocation"
-    ],
-    "usingComponents": {
-        "nav": "plugin://fm-plugin/fm-nav",
-        "get-phone-number-btn": "components/getPhone/index",
-        "search": "/components/search/search",
-        "payment": "/components/nova-payment/payment",
-        "address": "/components/address/index",
-        "upload": "/components/upload/index",
-        "van-icon": "@vant/weapp/icon/index",
-        "van-button": "@vant/weapp/button/index",
-        "van-tabbar": "@vant/weapp/tabbar/index",
-        "van-tabbar-item": "@vant/weapp/tabbar-item/index",
-        "van-empty": "@vant/weapp/empty/index",
-        "van-loading": "@vant/weapp/loading/index"
-    },
-    "sitemapLocation": "sitemap.json",
-    "plugins": {
-        "fm-plugin": {
-            "version": "0.1.1",
-            "provider": "wx56d559d35ae6e502",
-            "export": "exportToPlugin.js",
-            "genericsImplementation": {
-                "fm-auth": {
-                    "get-phone-number-btn": "components/getPhone/index"
-                }
-            }
+    {
+      "root": "nova-diypage",
+      "name": "DIYPAGE",
+      "pages": [
+        "pages/index/index"
+      ]
+    }
+  ],
+  "window": {
+    "navigationStyle": "custom",
+    "navigationBarTitleText": "",
+    "navigationBarTextStyle": "black",
+    "navigationBarBackgroundColor": "#f6f5fa",
+    "backgroundColor": "#f6f5fa",
+    "enablePullDownRefresh": false
+  },
+  "permission": {
+    "scope.userLocation": {
+      "desc": "你的位置信息将用于小程序位置接口的效果展示"
+    }
+  },
+  "requiredPrivateInfos": [
+    "chooseLocation"
+  ],
+  "usingComponents": {
+    "nav": "plugin://fm-plugin/fm-nav",
+    "get-phone-number-btn": "components/getPhone/index",
+    "search": "/components/search/search",
+    "payment": "/components/nova-payment/payment",
+    "address": "/components/address/index",
+    "upload": "/components/upload/index",
+    "van-icon": "@vant/weapp/icon/index",
+    "van-button": "@vant/weapp/button/index",
+    "van-tabbar": "@vant/weapp/tabbar/index",
+    "van-tabbar-item": "@vant/weapp/tabbar-item/index",
+    "van-empty": "@vant/weapp/empty/index",
+    "van-loading": "@vant/weapp/loading/index"
+  },
+  "sitemapLocation": "sitemap.json",
+  "plugins": {
+    "fm-plugin": {
+      "version": "0.1.1",
+      "provider": "wx56d559d35ae6e502",
+      "export": "exportToPlugin.js",
+      "genericsImplementation": {
+        "fm-auth": {
+          "get-phone-number-btn": "components/getPhone/index"
         }
+      }
     }
+  }
 }

+ 504 - 474
nova-tourism/pages/homestay/homestay-detail/index.js

@@ -4,483 +4,513 @@ const company = getApp().globalData.company
 import dateServ from '../../../service/date';
 Page({
 
-    /**
-     * 页面的初始数据
-     */
-    data: {
-        //屏幕高度
-        statusBarHeight: 0, // 状态栏高度
-        screenHeight: 0, // 屏幕高度
-        customHeight: 0, // 自定义导航栏高度(如小程序右上角胶囊按钮)
-        bottomNavHeight: 0, // 底部导航栏高度
-        contentHeight: 0, // 可用内容高度
-        //  轮播图数组
-        imageUrls: [],
-        index: 1,
-        //
-        decodedDateStart: '',
-        decodedDateEnd: '',
-        objectId: "",
-        daysBetween: 0,
-        istoday: null,
-        storeList: [],
-        roomList: [],
-
-        //地图
-        longitude: 0,
-        latitude: 0,
-        markers: [],
-
-        //
-        start: '',
-        end: '',
-
-        //
-        show: false,
-        date_start1: '',
-        date_end1: '',
-
-    },
-
-    /**
-     * 生命周期函数--监听页面加载
-     */
-    onLoad: function (options) {
-        // 计算
-        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
-            })
-            console.log(this.data.bottomNavHeight);
-        } else {
-            this.setData({
-                bottomNavHeight: 40
-            })
-        }
-
-        this.setData({
-            statusBarHeight,
-            screenHeight,
-            customHeight,
-            contentHeight
-        });
-
-        const {
-            objectId,
-            date_start,
-            date_end,
-            daysBetween,
-            istoday,
-            start,
-            end,
-        } = options;
-        console.log(options);
-        // 解码接收到的参数
-        const decodedDateStart = decodeURIComponent(date_start);
-        const decodedDateEnd = decodeURIComponent(date_end);
-        const Start = decodeURIComponent(start);
-        const End = decodeURIComponent(end);
-        this.setData({
-            decodedDateStart,
-            decodedDateEnd,
-            objectId,
-            daysBetween,
-            istoday,
-            start: Start,
-            end: End,
-        })
-        console.log('istoday', this.data.istoday);
-        this.hanshu()
-    },
-    async hanshu() {
-        await this.gethomestay()
-        await this.getroom()
-        //   await this.getpic()
-        await this.getcurrentdate()
-    },
-
-    /**
-     * 生命周期函数--监听页面初次渲染完成
-     */
-    onReady: function () {
-
-    },
-
-    /**
-     * 生命周期函数--监听页面显示
-     */
-    onShow: function () {
-
-    },
-
-    /**
-     * 生命周期函数--监听页面隐藏
-     */
-    onHide: function () {
-
-    },
-
-    /**
-     * 生命周期函数--监听页面卸载
-     */
-    onUnload: function () {
-
-    },
-
-    /**
-     * 页面相关事件处理函数--监听用户下拉动作
-     */
-    onPullDownRefresh: function () {
-
-    },
-
-    /**
-     * 页面上拉触底事件的处理函数
-     */
-    onReachBottom: function () {
-
-    },
-
-    /**
-     * 用户点击右上角分享
-     */
-    onShareAppMessage: function () {
+  /**
+   * 页面的初始数据
+   */
+  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, //选中的房间
+  },
+
+  /**
+   * 生命周期函数--监听页面加载
+   */
+  onLoad: function (options) {
+    // 计算
+    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
+      })
+      console.log(this.data.bottomNavHeight);
+    } else {
+      this.setData({
+        bottomNavHeight: 40
+      })
+    }
 
-    },
+    this.setData({
+      statusBarHeight,
+      screenHeight,
+      customHeight,
+      contentHeight
+    });
+
+    const {
+      objectId,
+      date_start,
+      date_end,
+      daysBetween,
+      istoday,
+      start,
+      end,
+    } = options;
+    console.log(options);
+    // 解码接收到的参数
+    const decodedDateStart = decodeURIComponent(date_start);
+    const decodedDateEnd = decodeURIComponent(date_end);
+    const Start = decodeURIComponent(start);
+    const End = decodeURIComponent(end);
+    this.setData({
+      decodedDateStart,
+      decodedDateEnd,
+      objectId,
+      daysBetween,
+      istoday,
+      start: Start,
+      end: End,
+    })
+    console.log('istoday', this.data.istoday);
+    this.hanshu()
+  },
+
+  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
+    });
+  },
+  async hanshu() {
+    await this.gethomestay()
+    await this.getroom()
+    //   await this.getpic()
+    await this.getcurrentdate()
+  },
+
+
+  /**
+   * 生命周期函数--监听页面初次渲染完成
+   */
+  onReady: function () {
+
+  },
+
+  /**
+   * 生命周期函数--监听页面显示
+   */
+  onShow: function () {
+
+  },
+
+  /**
+   * 生命周期函数--监听页面隐藏
+   */
+  onHide: function () {
+
+  },
+
+  /**
+   * 生命周期函数--监听页面卸载
+   */
+  onUnload: function () {
+
+  },
+
+  /**
+   * 页面相关事件处理函数--监听用户下拉动作
+   */
+  onPullDownRefresh: function () {
+
+  },
+
+  /**
+   * 页面上拉触底事件的处理函数
+   */
+  onReachBottom: function () {
+
+  },
+
+  /**
+   * 用户点击右上角分享
+   */
+  onShareAppMessage: function () {
+
+  },
+  //随轮播图变化而变化
+  onSwiperChange: function (event) {
+    const currentIndex = event.detail.current; // 获取当前索引
+    this.setData({
+      index: currentIndex + 1
+    })
+  },
     //随轮播图变化而变化
-    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
+      })
     },
-    //获取名宿信息
-    async gethomestay() {
-        let ShopStore = new Parse.Query('ShopStore');
-        ShopStore.equalTo('company', company);
-        ShopStore.equalTo('type', "stay");
-        ShopStore.equalTo('objectId', this.data.objectId);
-        ShopStore.notEqualTo('isDeleted', "true");
-        ShopStore.include('location');
-
-        let store = await ShopStore.find();
-        let storeListPromises = store.map(async item => {
-            let storeItem = item.toJSON();
-            storeItem.iscollect = await this.iscollect(storeItem.objectId); // 等待iscollect的结果
-            return storeItem;
-        });
-
-        let storeList = await Promise.all(storeListPromises); // 等待所有的Promise完成
-
-        this.setData({
-            storeList
-        });
-        this.setData({
-            imageUrls: storeList[0].image
-        })
-        this.Getlocation()
-        console.log(this.data.storeList);
-    },
-    //获取房间信息
-    async getroom() {
-        let room = new Parse.Query('ShopRoom');
-        room.equalTo('company', company);
-        room.equalTo('shop', this.data.objectId);
-        room.equalTo('isEnabled', 'true');
-        room.include('benefitMap');
-        room.notEqualTo('isDeleted', 'true');
-
-        let room2 = await room.find();
-        // 使用 Promise.all 来处理异步操作
-        let roomList = await Promise.all(room2.map(async item => {
-            let roomItem = item.toJSON();
-            let count = await this.checkOrderCount(roomItem.objectId, this.data.start, this.data.end);
-            console.log(count, roomItem.total);
-            roomItem.isroom = count < roomItem.total; // 简化判断
-            return roomItem;
-        }));
-        // 对 roomList 进行排序
-        roomList.sort(this.compareFunction);
-
-        this.setData({
-            roomList
-        });
-        console.log('房间', this.data.roomList);
-    },
-    //排序
-    compareFunction(a, b) {
-        // 先比较 isroom 的值
-        if (a.isroom !== b.isroom) {
-            return a.isroom ? -1 : 1;
-        }
-        // 如果 isroom 相同,再比较 index 是否有值
-        const hasIndexA = a.index !== undefined;
-        const hasIndexB = b.index !== undefined;
-        if (hasIndexA !== hasIndexB) {
-            return hasIndexA ? -1 : 1;
-        }
-        // 如果 index 都有值或者都没值,按 index 大小排序(都没值时顺序其实不变)
-        return (a.index || 0) - (b.index || 0);
-    },
-    async checkOrderCount(roomId, start, end) {
-        const startTime = new Date(start);
-        const endTime = new Date(end);
-        let startTime2 = dateServ.changeDateTime(startTime, '14:00:00')
-        let endTime2 = dateServ.changeDateTime(endTime, '12:00:00')
-        let Order = new Parse.Query("RoomOrder")
-        Order.equalTo("room", roomId)
-        Order.equalTo("company", company)
-        Order.exists("status")
-        Order.notContainedIn('status', [400, 601, 700,800,103])
-        Order.lessThan("startTime", endTime2);
-        Order.greaterThan("endTime", startTime2); 
-        Order.select("startTime", "endTime")
-        let count = await Order.count()
-        return count
-    },
-    //收藏功能
-    async iscollect(object) {
-        const currentUser = Parse.User.current();
-        let Collect = new Parse.Query('DramaShopCollect');
-        Collect.equalTo('company', company);
-        Collect.equalTo('user', currentUser.id);
-        Collect.equalTo('homestayStore', object);
-        Collect.equalTo('isCollect', 'true');
-        Collect.notEqualTo('isDeleted', "true");
-        let collect = await Collect.first();
-        if (collect) {
-            return true
-        } else {
-            return false
-        }
-    },
-    //获取轮播图
-    // async getpic() {
-    //     let Banner = new Parse.Query('Banner');
-    //     Banner.equalTo('company', company);
-    //     Banner.equalTo('store', this.data.objectId);
-    //     Banner.equalTo('isEnabled', 'true');
-    //     Banner.notEqualTo('isDeleted', 'true');
-    //     Banner.select('image');
-
-    //     let Banner2 = await Banner.find();
-
-    //     // 提取 image 属性并存储到 imageUrls 中
-    //     let imageUrls = Banner2.map(item => item.get('image')); // 使用 get() 方法获取 image 属性
-
-    //     this.setData({
-    //         imageUrls // 将提取的 imageUrls 存储到组件状态中
-    //     });
-
-    //     console.log(this.data.imageUrls); // 输出 imageUrls
-    // },
-
-
-    //获取当前位置信息
-    Getlocation() {
-        // 假设 this.storeList[0].location 是一个 Parse.GeoPoint 对象
-        if (this.data.storeList[0].location) {
-            const storeLocation = this.data.storeList[0].location;
-            console.log('地址存在');
-            // 从 GeoPoint 对象中获取经纬度
-            const latitude = storeLocation.latitude; // 纬度
-            const longitude = storeLocation.longitude; // 经度
-
-            console.log('获取到的经纬度:', latitude, longitude); // 添加日志
-
-            // 调用 API 解析地址
-            wx.request({
-                url: 'https://api.map.baidu.com/reverse_geocoding/v3/?ak=sHZTomd7grslfP7sPKB8tRgT49FK9TEu&output=json&coordtype=gcj02&location=' + latitude + ',' + longitude,
-                data: {},
-                header: {
-                    'Content-Type': 'application/json'
-                },
-                success: (ops) => { // 使用箭头函数
-                    console.log(ops);
-                    const address = ops.data.result.formatted_address;
-                    this.setData({
-                        address: address,
-                        latitude: latitude, // 保证 latitude 被设置
-                        longitude: longitude, // 保证 longitude 被设置
-                        markers: [{ // 设置 markers
-                            id: 1,
-                            latitude: latitude,
-                            longitude: longitude,
-                            iconPath: 'https://file-cloud.fmode.cn/13WZ0W7u3l/20240724/7ebg0k104325941.png?imageView2/1/w/200/h/200', // 自定义标记图标
-                            width: 20,
-                            height: 20,
-                            // callout: {
-                            //     content: this.data.storeList[0].storeName, // 可以显示解析出的地址
-                            //     color: '#ffffff',
-                            //     bgColor: '#7F56B2',
-                            //     padding: 4,
-                            //     fontSize: 8,
-                            //     borderRadius: 3,
-                            //     display: 'ALWAYS'
-                            // }
-                        }]
-                    });
-                    // console.log(this.data.address);
-                },
-                fail: function (resq) {
-                    wx.showModal({
-                        title: '信息提示',
-                        content: '请求失败',
-                        showCancel: false,
-                        confirmColor: '#f37938'
-                    });
-                },
-                complete: function () {}
-            });
-        }
-
-    },
-    //点击预定
-    navigate(e) {
-        const objectId = e.currentTarget.dataset.id;
-        // let currentUser = Parse.User.current()
-        // currentUser = currentUser.toJSON()
-        // console.log(currentUser, currentUser.idcard);
-
-        // if (currentUser.idcard) {
-        //     // 构造要传递的信息
-        //     const info = {
-        //         objectId: objectId,
-        //         date_start: this.data.start,
-        //         date_end: this.data.end,
-        //     };
-        //     // console.log('info',info);
-
-        //     // 将信息转为查询字符串
-        //     var queryString = Object.keys(info)
-        //         .map(key => `${encodeURIComponent(key)}=${encodeURIComponent(info[key])}`)
-        //         .join('&');
-        //     console.log(queryString);
-        //     wx.navigateTo({
-        //         url: `../homestay-order/index?${queryString}`
-        //     })
-        // } else {
-        // wx.showToast({
-        //     title: '请先进行实名认证',
-        //     icon: 'none'
-        // })
-        //实名
-        // wx.navigateTo({
-        //     url: `/common-page/pages/info/cauth/cauth?themeColor=#FFE300`
-        // })
-
-        // 构造要传递的信息
-        const info = {
-            objectId: objectId,
-            date_start: this.data.start,
-            date_end: this.data.end,
-        };
-        console.log('info', info);
-
-        // 将信息转为查询字符串
-        var queryString = Object.keys(info)
-            .map(key => `${encodeURIComponent(key)}=${encodeURIComponent(info[key])}`)
-            .join('&');
-        console.log(queryString);
-        wx.navigateTo({
-            url: `../homestay-order2/index?${queryString}`
-        })
-        // }
-
-    },
-
-
-    //获取今日明日日期
-    getcurrentdate() {
-        const today = new Date();
-        const tomorrow = new Date();
-        tomorrow.setDate(today.getDate() + 1);
-
-        this.setData({
-            date_start1: this.formatDate(today),
-            date_end1: this.formatDate(tomorrow),
-        });
-        console.log(this.data.start, this.data.end);
-    },
-    //转换日期
-    formatDate(date) {
-        date = new Date(date);
-        return `${date.getMonth() + 1}月${date.getDate()}日`;
-    },
-    // 计算两个日期之间的天数
-    calculateDaysBetween(startDate, endDate) {
-        const start = new Date(startDate);
-        const end = new Date(endDate);
-        const timeDifference = end - start; // 计算时间差(毫秒)
-        const daysDifference = timeDifference / (1000 * 3600 * 24); // 转换为天数
-        return daysDifference; // 返回天数差
-    },
-    //开日历
-    onDisplay() {
-        this.setData({
-            show: true
-        });
-    },
-    //关日历
-    onClose() {
-        this.setData({
-            show: false
-        });
-    },
-    //选好日期点击完成后
-    onConfirm(event) {
-        const [start, end] = event.detail;
-        const daysBetween = this.calculateDaysBetween(start, end); // 计算天数差
-        this.setData({
-            show: false,
-            start,
-            end,
-            decodedDateStartart: `${this.formatDate(start)} `,
-            decodedDateEnd: `${this.formatDate(end)}`,
-            daysBetween
-        });
-        if (this.data.decodedDateStartart.trim() == this.data.date_start1.trim() && this.data.decodedDateEnd.trim() == this.data.date_end1.trim()) {
-            this.setData({
-                istoday: 'true'
-            })
-            console.log(this.data.istoday);
-        } else {
-            this.setData({
-                istoday: 'false'
-            })
-            console.log(this.data.istoday);
-        }
-        this.getroom()
-        console.log(`入住日期: ${this.data.decodedDateStartart}, 离店日期: ${this.data.decodedDateEnd}, 天数差: ${daysBetween}天`);
-    },
-    //拨打电话
-    phone() {
-        let phone = this.data.storeList[0].mobile
-        console.log(phone);
-        wx.makePhoneCall({
-            phoneNumber: phone
-        })
-    },
-    callMap() {
-        if (this.data.storeList[0].location) {
-            const latitude = this.data.storeList[0].location.latitude
-            const longitude = this.data.storeList[0].location.longitude
-            wx.openLocation({
-                name: this.data.storeList[0].storeName,
-                latitude,
-                longitude,
-                scale: 18
-            })
-        }
+  //获取名宿信息
+  async gethomestay() {
+    let ShopStore = new Parse.Query('ShopStore');
+    ShopStore.equalTo('company', company);
+    ShopStore.equalTo('type', "stay");
+    ShopStore.equalTo('objectId', this.data.objectId);
+    ShopStore.notEqualTo('isDeleted', "true");
+    ShopStore.include('location');
+
+    let store = await ShopStore.find();
+    let storeListPromises = store.map(async item => {
+      let storeItem = item.toJSON();
+      storeItem.iscollect = await this.iscollect(storeItem.objectId); // 等待iscollect的结果
+      return storeItem;
+    });
+
+    let storeList = await Promise.all(storeListPromises); // 等待所有的Promise完成
+
+    this.setData({
+      storeList
+    });
+    this.setData({
+      imageUrls: storeList[0].image
+    })
+    this.Getlocation()
+    console.log(this.data.storeList);
+  },
+  //获取房间信息
+  async getroom() {
+    let room = new Parse.Query('ShopRoom');
+    room.equalTo('company', company);
+    room.equalTo('shop', this.data.objectId);
+    room.equalTo('isEnabled', 'true');
+    room.include('benefitMap');
+    room.notEqualTo('isDeleted', 'true');
+
+    let room2 = await room.find();
+    // 使用 Promise.all 来处理异步操作
+    let roomList = await Promise.all(room2.map(async item => {
+      let roomItem = item.toJSON();
+      let count = await this.checkOrderCount(roomItem.objectId, this.data.start, this.data.end);
+      console.log(count, roomItem.total);
+      roomItem.isroom = count < roomItem.total; // 简化判断
+      return roomItem;
+    }));
+    // 对 roomList 进行排序
+    roomList.sort(this.compareFunction);
+
+    this.setData({
+      roomList
+    });
+    console.log('房间', this.data.roomList);
+  },
+  //排序
+  compareFunction(a, b) {
+    // 先比较 isroom 的值
+    if (a.isroom !== b.isroom) {
+      return a.isroom ? -1 : 1;
+    }
+    // 如果 isroom 相同,再比较 index 是否有值
+    const hasIndexA = a.index !== undefined;
+    const hasIndexB = b.index !== undefined;
+    if (hasIndexA !== hasIndexB) {
+      return hasIndexA ? -1 : 1;
+    }
+    // 如果 index 都有值或者都没值,按 index 大小排序(都没值时顺序其实不变)
+    return (a.index || 0) - (b.index || 0);
+  },
+  async checkOrderCount(roomId, start, end) {
+    const startTime = new Date(start);
+    const endTime = new Date(end);
+    let startTime2 = dateServ.changeDateTime(startTime, '14:00:00')
+    let endTime2 = dateServ.changeDateTime(endTime, '12:00:00')
+    let Order = new Parse.Query("RoomOrder")
+    Order.equalTo("room", roomId)
+    Order.equalTo("company", company)
+    Order.exists("status")
+    Order.notContainedIn('status', [400, 601, 700, 800, 103])
+    Order.lessThan("startTime", endTime2);
+    Order.greaterThan("endTime", startTime2);
+    Order.select("startTime", "endTime")
+    let count = await Order.count()
+    return count
+  },
+  //收藏功能
+  async iscollect(object) {
+    const currentUser = Parse.User.current();
+    let Collect = new Parse.Query('DramaShopCollect');
+    Collect.equalTo('company', company);
+    Collect.equalTo('user', currentUser.id);
+    Collect.equalTo('homestayStore', object);
+    Collect.equalTo('isCollect', 'true');
+    Collect.notEqualTo('isDeleted', "true");
+    let collect = await Collect.first();
+    if (collect) {
+      return true
+    } else {
+      return false
+    }
+  },
+  //获取轮播图
+  // async getpic() {
+  //     let Banner = new Parse.Query('Banner');
+  //     Banner.equalTo('company', company);
+  //     Banner.equalTo('store', this.data.objectId);
+  //     Banner.equalTo('isEnabled', 'true');
+  //     Banner.notEqualTo('isDeleted', 'true');
+  //     Banner.select('image');
+
+  //     let Banner2 = await Banner.find();
+
+  //     // 提取 image 属性并存储到 imageUrls 中
+  //     let imageUrls = Banner2.map(item => item.get('image')); // 使用 get() 方法获取 image 属性
+
+  //     this.setData({
+  //         imageUrls // 将提取的 imageUrls 存储到组件状态中
+  //     });
+
+  //     console.log(this.data.imageUrls); // 输出 imageUrls
+  // },
+
+
+  //获取当前位置信息
+  Getlocation() {
+    // 假设 this.storeList[0].location 是一个 Parse.GeoPoint 对象
+    if (this.data.storeList[0].location) {
+      const storeLocation = this.data.storeList[0].location;
+      console.log('地址存在');
+      // 从 GeoPoint 对象中获取经纬度
+      const latitude = storeLocation.latitude; // 纬度
+      const longitude = storeLocation.longitude; // 经度
+
+      console.log('获取到的经纬度:', latitude, longitude); // 添加日志
+
+      // 调用 API 解析地址
+      wx.request({
+        url: 'https://api.map.baidu.com/reverse_geocoding/v3/?ak=sHZTomd7grslfP7sPKB8tRgT49FK9TEu&output=json&coordtype=gcj02&location=' + latitude + ',' + longitude,
+        data: {},
+        header: {
+          'Content-Type': 'application/json'
+        },
+        success: (ops) => { // 使用箭头函数
+          console.log(ops);
+          const address = ops.data.result.formatted_address;
+          this.setData({
+            address: address,
+            latitude: latitude, // 保证 latitude 被设置
+            longitude: longitude, // 保证 longitude 被设置
+            markers: [{ // 设置 markers
+              id: 1,
+              latitude: latitude,
+              longitude: longitude,
+              iconPath: 'https://file-cloud.fmode.cn/13WZ0W7u3l/20240724/7ebg0k104325941.png?imageView2/1/w/200/h/200', // 自定义标记图标
+              width: 20,
+              height: 20,
+              // callout: {
+              //     content: this.data.storeList[0].storeName, // 可以显示解析出的地址
+              //     color: '#ffffff',
+              //     bgColor: '#7F56B2',
+              //     padding: 4,
+              //     fontSize: 8,
+              //     borderRadius: 3,
+              //     display: 'ALWAYS'
+              // }
+            }]
+          });
+          // console.log(this.data.address);
+        },
+        fail: function (resq) {
+          wx.showModal({
+            title: '信息提示',
+            content: '请求失败',
+            showCancel: false,
+            confirmColor: '#f37938'
+          });
+        },
+        complete: function () {}
+      });
+    }
 
+  },
+  //点击预定
+  navigate(e) {
+    const objectId = e.currentTarget.dataset.id;
+    // let currentUser = Parse.User.current()
+    // currentUser = currentUser.toJSON()
+    // console.log(currentUser, currentUser.idcard);
+
+    // if (currentUser.idcard) {
+    //     // 构造要传递的信息
+    //     const info = {
+    //         objectId: objectId,
+    //         date_start: this.data.start,
+    //         date_end: this.data.end,
+    //     };
+    //     // console.log('info',info);
+
+    //     // 将信息转为查询字符串
+    //     var queryString = Object.keys(info)
+    //         .map(key => `${encodeURIComponent(key)}=${encodeURIComponent(info[key])}`)
+    //         .join('&');
+    //     console.log(queryString);
+    //     wx.navigateTo({
+    //         url: `../homestay-order/index?${queryString}`
+    //     })
+    // } else {
+    // wx.showToast({
+    //     title: '请先进行实名认证',
+    //     icon: 'none'
+    // })
+    //实名
+    // wx.navigateTo({
+    //     url: `/common-page/pages/info/cauth/cauth?themeColor=#FFE300`
+    // })
+
+    // 构造要传递的信息
+    const info = {
+      objectId: objectId,
+      date_start: this.data.start,
+      date_end: this.data.end,
+    };
+    console.log('info', info);
+
+    // 将信息转为查询字符串
+    var queryString = Object.keys(info)
+      .map(key => `${encodeURIComponent(key)}=${encodeURIComponent(info[key])}`)
+      .join('&');
+    console.log(queryString);
+    wx.navigateTo({
+      url: `../homestay-order2/index?${queryString}`
+    })
+    // }
+
+  },
+
+
+  //获取今日明日日期
+  getcurrentdate() {
+    const today = new Date();
+    const tomorrow = new Date();
+    tomorrow.setDate(today.getDate() + 1);
+
+    this.setData({
+      date_start1: this.formatDate(today),
+      date_end1: this.formatDate(tomorrow),
+    });
+    console.log(this.data.start, this.data.end);
+  },
+  //转换日期
+  formatDate(date) {
+    date = new Date(date);
+    return `${date.getMonth() + 1}月${date.getDate()}日`;
+  },
+  // 计算两个日期之间的天数
+  calculateDaysBetween(startDate, endDate) {
+    const start = new Date(startDate);
+    const end = new Date(endDate);
+    const timeDifference = end - start; // 计算时间差(毫秒)
+    const daysDifference = timeDifference / (1000 * 3600 * 24); // 转换为天数
+    return daysDifference; // 返回天数差
+  },
+  //开日历
+  onDisplay() {
+    this.setData({
+      show: true
+    });
+  },
+  //关日历
+  onClose() {
+    this.setData({
+      show: false
+    });
+  },
+  //选好日期点击完成后
+  onConfirm(event) {
+    const [start, end] = event.detail;
+    const daysBetween = this.calculateDaysBetween(start, end); // 计算天数差
+    this.setData({
+      show: false,
+      start,
+      end,
+      decodedDateStartart: `${this.formatDate(start)} `,
+      decodedDateEnd: `${this.formatDate(end)}`,
+      daysBetween
+    });
+    if (this.data.decodedDateStartart.trim() == this.data.date_start1.trim() && this.data.decodedDateEnd.trim() == this.data.date_end1.trim()) {
+      this.setData({
+        istoday: 'true'
+      })
+      console.log(this.data.istoday);
+    } else {
+      this.setData({
+        istoday: 'false'
+      })
+      console.log(this.data.istoday);
+    }
+    this.getroom()
+    console.log(`入住日期: ${this.data.decodedDateStartart}, 离店日期: ${this.data.decodedDateEnd}, 天数差: ${daysBetween}天`);
+  },
+  //拨打电话
+  phone() {
+    let phone = this.data.storeList[0].mobile
+    console.log(phone);
+    wx.makePhoneCall({
+      phoneNumber: phone
+    })
+  },
+  callMap() {
+    if (this.data.storeList[0].location) {
+      const latitude = this.data.storeList[0].location.latitude
+      const longitude = this.data.storeList[0].location.longitude
+      wx.openLocation({
+        name: this.data.storeList[0].storeName,
+        latitude,
+        longitude,
+        scale: 18
+      })
     }
+
+  }
 })

+ 2 - 1
nova-tourism/pages/homestay/homestay-detail/index.json

@@ -2,6 +2,7 @@
   "usingComponents": {
     "van-sticky": "@vant/weapp/sticky/index",
     "van-icon": "@vant/weapp/icon/index",
-    "van-calendar": "@vant/weapp/calendar/index"
+    "van-calendar": "@vant/weapp/calendar/index",
+    "van-popup": "@vant/weapp/popup/index"
   }
 }

+ 232 - 40
nova-tourism/pages/homestay/homestay-detail/index.less

@@ -1,27 +1,31 @@
 /* nova-tourism/pages/homestay/homestay-detail/index.wxss */
-.all{
+.all {
     width: 100vw;
     height: 100vh;
     background-color: #ECECEC;
     position: relative;
     overflow-y: scroll;
     color: #382E2E;
-    font-family: "Microsoft JhengHei", "PingFang SC", "Helvetica Neue", sans-serif; 
+    font-family: "Microsoft JhengHei", "PingFang SC", "Helvetica Neue", sans-serif;
     font-weight: 400;
-    .picturebox{
+
+    .picturebox {
         width: 100%;
         height: 456rpx;
         position: relative;
-        .img{
+
+        .img {
             width: 100%;
             height: 456rpx;
-            image{
+
+            image {
                 width: 100%;
                 height: 100%;
 
             }
         }
-        .numberbox{
+
+        .numberbox {
             position: absolute;
             bottom: 38rpx;
             right: 20rpx;
@@ -37,42 +41,50 @@
         }
 
     }
-    .card{
+
+    .card {
         width: 100%;
         height: auto;
         position: absolute;
         top: 430rpx;
-        .Legendary-Information{
+
+        .Legendary-Information {
             width: 100%;
             height: auto;
             background-color: white;
-            border-radius: 20px; /* 左上角圆角 */
+            border-radius: 20px;
+            /* 左上角圆角 */
             padding-top: 40rpx;
             padding-left: 40rpx;
             padding-right: 40rpx;
             padding-bottom: 20rpx;
-            .info-name{
+
+            .info-name {
                 width: 100%;
                 height: 60rpx;
                 display: flex;
                 align-items: center;
-                .name-tex{
+
+                .name-tex {
                     font-size: 38rpx;
                     font-weight: 700;
                 }
-                .name-pic{
+
+                .name-pic {
                     height: 46rpx;
                     width: 46rpx;
                     margin-left: auto;
                 }
             }
-            .info-intr{
+
+            .info-intr {
                 font-size: 30rpx;
                 width: 100%;
                 height: auto;
                 margin-left: 10rpx;
             }
-            .info-intr2{
+
+            .info-intr2 {
                 margin-top: 10rpx;
                 font-size: 30rpx;
                 width: 100%;
@@ -81,16 +93,19 @@
                 color: skyblue;
                 display: flex;
             }
-            .info-map{
+
+            .info-map {
                 width: 100%;
                 display: flex;
                 align-items: center;
                 margin-top: 20rpx;
-                .map{
+
+                .map {
                     width: 455rpx;
                     height: 146rpx;
                 }
-                .info-call{
+
+                .info-call {
                     width: 156rpx;
                     height: auto;
                     display: flex;
@@ -98,11 +113,13 @@
                     align-items: center;
                     flex-direction: column;
                     margin-left: 35rpx;
-                    image{
+
+                    image {
                         width: 48rpx;
                         height: 48rpx;
                     }
-                    .call-tex{
+
+                    .call-tex {
                         font-size: 24rpx;
                         margin-top: 10rpx;
                     }
@@ -110,7 +127,8 @@
             }
         }
     }
-    .roomcard{
+
+    .roomcard {
         width: 100%;
         height: auto;
         padding-bottom: 40rpx;
@@ -120,7 +138,8 @@
         padding-left: 10rpx;
         padding-right: 10rpx;
         background-color: white;
-        .timebox{
+
+        .timebox {
             width: 100%;
             height: 90rpx;
             background-color: white;
@@ -129,26 +148,31 @@
             position: relative;
             padding-left: 10rpx;
             margin-bottom: 12rpx;
-            .time{
+
+            .time {
                 width: 150rpx;
                 margin-left: 10rpx;
-                .time-tex{
+
+                .time-tex {
                     font-size: 28rpx;
                     color: gray;
 
                 }
-                .time-time{
+
+                .time-time {
                     font-size: 30rpx;
                     font-weight: 600;
                 }
             }
-            .time_tex2{
+
+            .time_tex2 {
                 font-size: 24rpx;
                 margin-left: 20rpx;
                 margin-bottom: 2rpx;
             }
         }
-        .room-card{
+
+        .room-card {
             width: 100%;
             height: 334rpx;
             padding-left: 38rpx;
@@ -159,39 +183,47 @@
             border-radius: 30rpx;
             margin-bottom: 24rpx;
             position: relative;
-            .room-card1{
+
+            .room-card1 {
                 width: 100%;
                 height: auto;
                 display: flex;
-                image{
+
+                image {
                     width: 166rpx;
                     height: 222rpx;
                     margin-right: 20rpx;
                     border-radius: 4rpx;
                 }
-                .room-card-textbox{
+
+                .room-card-textbox {
                     width: 400rpx;
                     height: auto;
-                    .room-card-textbox-titlebox{
+
+                    .room-card-textbox-titlebox {
                         display: flex;
-                        .room-card-textbox-title{
+
+                        .room-card-textbox-title {
                             font-size: 34rpx;
                             font-weight: 700;
                         }
                     }
-                    .room-card-textbox-info{
+
+                    .room-card-textbox-info {
                         font-size: 24rpx;
                         width: 400rpx;
                         height: auto;
                         margin-top: 10rpx;
                         margin-bottom: 20rpx;
                     }
-                    .room-card-textbox-label{
+
+                    .room-card-textbox-label {
                         width: 400rpx;
                         height: auto;
                         display: flex;
                         flex-wrap: wrap;
-                        .room-card-textbox-label2{
+
+                        .room-card-textbox-label2 {
                             width: auto;
                             font-size: 20rpx;
                             margin-right: 20rpx;
@@ -208,7 +240,8 @@
                     }
                 }
             }
-            .room-card2{
+
+            .room-card2 {
                 width: 712rpx;
                 height: 100rpx;
                 display: flex;
@@ -217,7 +250,8 @@
                 bottom: 24rpx;
                 right: 34rpx;
                 align-items: flex-end;
-                .no{
+
+                .no {
                     width: 282rpx;
                     height: 86rpx;
                     display: flex;
@@ -225,12 +259,13 @@
                     align-items: center;
                     font-size: 44rpx;
                     font-weight: 700;
-                    background-color:#1A1A1A ;
+                    background-color: #1A1A1A;
                     color: white;
                     margin-left: 20rpx;
                     border-radius: 10rpx;
                 }
-                .price{
+
+                .price {
                     height: 50rpx;
                     font-size: 40rpx;
                     font-weight: 700;
@@ -238,14 +273,15 @@
                     display: flex;
                     align-items: center;
                 }
-                .submit{
+
+                .submit {
                     width: 86rpx;
                     height: 86rpx;
                     display: flex;
                     justify-content: center;
                     align-items: center;
                     font-size: 48rpx;
-                    background-color:#1A1A1A ;
+                    background-color: #1A1A1A;
                     color: white;
                     font-weight: 700;
                     margin-left: 20rpx;
@@ -253,4 +289,160 @@
             }
         }
     }
+}
+
+.roomBox {
+    background: whitesmoke;
+    .titleBox {
+        width: 100%;
+        border-radius: 20rpx 20rpx 0 0;
+        background: white;
+        padding: 30rpx;
+        display: flex;
+        align-items: center;
+
+        image {
+            width: 48rpx;
+            height: 40rpx;
+        }
+
+        .text {
+            width: 700rpx;
+            font-size: 30rpx;
+            font-weight: bold;
+            text-align: center;
+        }
+    }
+
+    .picturebox {
+        background: white;
+        width: 100%;
+        height: 338rpx;
+        // margin: 10rpx 0;
+        position: relative;
+
+        .img {
+            border-radius: 10rpx;
+            margin: auto;
+            width: 675rpx;
+            height: 338rpx;
+
+            image {
+                border-radius: 10rpx;
+                width: 100%;
+                height: 100%;
+
+            }
+        }
+
+        .numberbox {
+            position: absolute;
+            bottom: 20rpx;
+            right: 60rpx;
+            z-index: 10;
+            color: white;
+            width: 60rpx;
+            height: 37rpx;
+            font-size: 17rpx;
+            display: flex;
+            justify-content: center;
+            align-items: center;
+            background-color: rgba(12, 12, 12, 0.5);
+        }
+
+    }
+
+    .tagBox {
+        padding: 30rpx;
+        background: white;
+        .title {
+            font-size: 30rpx;
+            font-weight: bold;
+        }
+        .tags {
+            font-size: 24rpx;
+            color: black;
+            padding-top: 14rpx;
+            display: flex;
+            flex-wrap: wrap;
+            padding-left: 50rpx;
+            .tag {
+                width: 50%;
+                height: 53rpx;
+            }
+
+            .tag2 {
+                width: 33%;
+                height: 53rpx;
+            }
+        }
+    }
+
+    .serverBox {
+        margin-top: 30rpx;
+    }
+
+    .ruleBox {
+        margin-top: 30rpx;
+
+        .sub_title {
+            font-size: 13rpx;
+            margin-bottom: 20rpx;
+            margin-top: 5rpx;
+        }
+
+        .list {
+            display: flex;
+
+            .key {
+                font-size: 20rpx;
+                font-weight: bold;
+                width: 66rpx;
+                height: 53rpx;
+            }
+
+            .value {
+                font-size: 20rpx;
+            }
+        }
+    }
+
+    .payBox {
+        background: white;
+        width: 100%;
+        display: flex;
+        height: 82rpx;
+
+        .phonBox {
+            width: 288rpx;
+            display: flex;
+            align-items: center;
+            justify-content: space-around;
+            >view{
+                display: flex;
+                align-items: center;
+                justify-content: space-around;
+                image {
+                    width: 47rpx;
+                    height: 48rpx;
+                    margin-right: 20rpx;
+                }
+    
+                text {
+                    font-size: 26rpx;
+                }
+            }
+        
+        }
+
+        .pay {
+            width: 462rpx;
+            font-size: 32rpx;
+            background: #F89B7F;
+            display: flex;
+            justify-content: center;
+            align-items: center;
+            color: white;
+        }
+    }
 }

+ 208 - 105
nova-tourism/pages/homestay/homestay-detail/index.wxml

@@ -1,119 +1,222 @@
 <!--nova-tourism/pages/homestay/homestay-detail/index.wxml-->
 <nav type="back" background-color="#ffffff" frontColor="#000000" title="{{storeList[0].storeName}}" />
 <view class="all" scroll-y="true" bindscroll="onScroll" style="height: {{contentHeight}}rpx;padding-bottom: {{bottomNavHeight}}rpx;">
-    <!-- 轮播图 -->
-    <view class="picturebox">
-        <swiper autoplay="{{true}}" interval="{{3000}}" circular duration="{{500}}" class="img" bindchange="onSwiperChange">
-            <block wx:for="{{imageUrls}}" wx:key="index" wx:for-item="img">
-                <swiper-item class="img">
-                    <image src="{{img}}" mode="aspectFill"></image>
-                </swiper-item>
-            </block>
-        </swiper>
-        <view class="numberbox">{{index}}/{{imageUrls.length}}</view>
+  <!-- 轮播图 -->
+  <view class="picturebox">
+    <swiper autoplay="{{true}}" interval="{{3000}}" circular duration="{{500}}" class="img" bindchange="onSwiperChange">
+      <block wx:for="{{imageUrls}}" wx:key="index" wx:for-item="img">
+        <swiper-item class="img">
+          <image src="{{img}}" mode="aspectFill"></image>
+        </swiper-item>
+      </block>
+    </swiper>
+    <view class="numberbox">{{index}}/{{imageUrls.length}}</view>
+  </view>
+
+  <view class="card">
+    <view class="Legendary-Information">
+      <view class="info-name">
+        <view class="name-tex">{{storeList[0].storeName}}</view>
+        <image class="name-pic" wx:if="{{!storeList[0].iscollect}}" src="https://file-cloud.fmode.cn/EbxZUK5lBI/20241121/2gcp1e030048570.png"></image>
+        <image class="name-pic" wx:if="{{storeList[0].iscollect}}" src="https://file-cloud.fmode.cn/EbxZUK5lBI/20241121/8mp9uj030058190.png?imageView2/1/w/200/h/200"></image>
+      </view>
+      <view class="info-intr">{{storeList[0].desc}}</view>
+      <view class="info-intr2" bindtap="callMap">
+        <van-icon size='36rpx' name="location-o" /> {{storeList[0].storeAddress}}
+      </view>
+      <view class="info-map">
+        <view class="map">
+          <map class="map" enable-zoom="ture" enable-scroll="true" id="map" longitude="{{longitude}}" latitude="{{latitude}}" scale="14" markers="{{markers}}"></map>
+        </view>
+        <view class="info-call" bindtap="phone">
+          <image src="https://file-cloud.fmode.cn/EbxZUK5lBI/20241212/e9muh5104028782.png"></image>
+          <view class="call-tex">联系望仙管家</view>
+        </view>
+      </view>
     </view>
+    <view class="roomcard">
+      <van-sticky z-index='99' offset-top="{{statusBarHeight+customHeight-5}}">
+        <view class="timebox" bindtap="onDisplay">
+          <view class="time">
+            <view class="time-tex" wx:if="{{istoday=='true'}}">今天</view>
+            <view class="time-time">{{decodedDateStart}}</view>
+          </view>
+          <van-icon name="minus" size='30rpx' custom-style='font-weight: 600;margin-bottom: 4rpx;margin-right: 6rpx;' />
+          <view class="time">
+            <view class="time-tex" wx:if="{{istoday=='true'}}">明天</view>
+            <view class="time-time">{{decodedDateEnd}}</view>
+          </view>
+          <view class="time_tex2">共{{daysBetween}}晚</view>
+        </view>
+        <van-calendar show="{{ show }}" show-confirm="{{ true }}" confirm-text="完成" confirm-disabled-text='完成' type="range" bind:close="onClose" bind:confirm="onConfirm" color='#46a9a4' position='bottom' />
+      </van-sticky>
+      <block wx:for="{{roomList}}" wx:key="index">
+        <view class="room-card" wx:if="{{item.isroom}}">
+          <view class="room-card1" data-index="{{index}}" bind:tap="showRoom">
+            <image src="{{item.images[0]}}" mode="aspectFill"></image>
+            <view class="room-card-textbox">
+              <view class="room-card-textbox-titlebox">
+                <view class="room-card-textbox-title">{{item.name}}</view>
+                <van-icon name="arrow" custom-style='margin-top: 8rpx;' />
+              </view>
+              <view class="room-card-textbox-info">
+                <block wx:for="{{item.tags}}" wx:key="index" wx:for-item="tag">
+                  {{tag}}
+                </block>
+              </view>
+              <view class="room-card-textbox-label">
+                <block>
+                  <view class="room-card-textbox-label2" wx:if="{{item.benefitMap.discount.length>0}}">
+                    {{item.benefitMap.discount}}
+                  </view>
+                  <view class="room-card-textbox-label2" wx:if="{{item.benefitMap.gift.length>0}}">
+                    {{item.benefitMap.gift}}
+                  </view>
+                </block>
 
-    <view class="card">
-        <view class="Legendary-Information">
-            <view class="info-name">
-                <view class="name-tex">{{storeList[0].storeName}}</view>
-                <image class="name-pic" wx:if="{{!storeList[0].iscollect}}" src="https://file-cloud.fmode.cn/EbxZUK5lBI/20241121/2gcp1e030048570.png"></image>
-                <image class="name-pic" wx:if="{{storeList[0].iscollect}}" src="https://file-cloud.fmode.cn/EbxZUK5lBI/20241121/8mp9uj030058190.png?imageView2/1/w/200/h/200"></image>
+              </view>
             </view>
-            <view class="info-intr">{{storeList[0].desc}}</view>
-            <view class="info-intr2" bindtap="callMap"><van-icon size='36rpx' name="location-o" /> {{storeList[0].storeAddress}}</view>
-            <view class="info-map">
-                <view class="map" >
-                    <map class="map" enable-zoom="ture" enable-scroll="true" id="map" longitude="{{longitude}}" latitude="{{latitude}}" scale="14" markers="{{markers}}"></map>
-                </view>
-                <view class="info-call" bindtap="phone" >
-                    <image src="https://file-cloud.fmode.cn/EbxZUK5lBI/20241212/e9muh5104028782.png"></image>
-                    <view class="call-tex">联系望仙管家</view>
-                </view>
+          </view>
+          <view class="room-card2">
+            <view class="price">¥{{item.price*daysBetween}}</view>
+            <view class="submit" data-id="{{item.objectId}}" bindtap="navigate">订</view>
+          </view>
+        </view>
+        <!-- 无房 -->
+        <view class="room-card" style="opacity: 0.5;" wx:if="{{!item.isroom}}">
+          <view class="room-card1">
+            <image src="{{item.images[0]}}" mode="aspectFill"></image>
+            <view class="room-card-textbox">
+              <view class="room-card-textbox-titlebox">
+                <view class="room-card-textbox-title">{{item.name}}</view>
+                <van-icon name="arrow" custom-style='margin-top: 8rpx;' />
+              </view>
+              <view class="room-card-textbox-info">
+                <block wx:for="{{item.tags}}" wx:for-item="tag">
+                  {{tag}}
+                </block>
+              </view>
+              <view class="room-card-textbox-label">
+                <block>
+                  <view class="room-card-textbox-label2" wx:if="{{item.benefitMap.discount.length>0}}">
+                    {{item.benefitMap.discount}}
+                  </view>
+                  <view class="room-card-textbox-label2" wx:if="{{item.benefitMap.gift.length>0}}">
+                    {{item.benefitMap.gift}}
+                  </view>
+                </block>
+
+              </view>
             </view>
+          </view>
+          <view class="room-card2">
+            <view class="no">时段无房</view>
+          </view>
         </view>
-        <view class="roomcard">
-            <van-sticky z-index='999' offset-top="{{statusBarHeight+customHeight-5}}">
-                <view class="timebox" bindtap="onDisplay">
-                    <view class="time">
-                        <view class="time-tex" wx:if="{{istoday=='true'}}">今天</view>
-                        <view class="time-time">{{decodedDateStart}}</view>
-                    </view>
-                    <van-icon name="minus" size='30rpx' custom-style='font-weight: 600;margin-bottom: 4rpx;margin-right: 6rpx;' />
-                    <view class="time">
-                        <view class="time-tex" wx:if="{{istoday=='true'}}">明天</view>
-                        <view class="time-time">{{decodedDateEnd}}</view>
-                    </view>
-                    <view class="time_tex2">共{{daysBetween}}晚</view>
-                </view>
-                <van-calendar show="{{ show }}" show-confirm="{{ true }}" confirm-text="完成" confirm-disabled-text='完成' type="range" bind:close="onClose" bind:confirm="onConfirm" color='#46a9a4' position='bottom' />
-            </van-sticky>
-            <block wx:for="{{roomList}}" wx:key="index">
-                <view class="room-card" wx:if="{{item.isroom}}">
-                    <view class="room-card1">
-                        <image src="{{item.images[0]}}" mode="aspectFill"></image>
-                        <view class="room-card-textbox">
-                            <view class="room-card-textbox-titlebox">
-                                <view class="room-card-textbox-title">{{item.name}}</view>
-                                <van-icon name="arrow" custom-style='margin-top: 8rpx;' />
-                            </view>
-                            <view class="room-card-textbox-info">
-                                <block wx:for="{{item.tags}}" wx:for-item="tag">
-                                    {{tag}}
-                                </block>
-                            </view>
-                            <view class="room-card-textbox-label">
-                                <block >
-                                    <view class="room-card-textbox-label2" wx:if="{{item.benefitMap.discount.length>0}}">
-                                        {{item.benefitMap.discount}}
-                                    </view>
-                                    <view class="room-card-textbox-label2" wx:if="{{item.benefitMap.gift.length>0}}">
-                                        {{item.benefitMap.gift}}
-                                    </view>
-                                </block>
+      </block>
+
+    </view>
+  </view>
 
-                            </view>
-                        </view>
-                    </view>
-                    <view class="room-card2">
-                        <view class="price">¥{{item.price*daysBetween}}</view>
-                        <view class="submit" data-id="{{item.objectId}}" bindtap="navigate">订</view>
-                    </view>
-                </view>
-                <!-- 无房 -->
-                <view class="room-card" style="opacity: 0.5;" wx:if="{{!item.isroom}}">
-                    <view class="room-card1">
-                        <image src="{{item.images[0]}}" mode="aspectFill"></image>
-                        <view class="room-card-textbox">
-                            <view class="room-card-textbox-titlebox">
-                                <view class="room-card-textbox-title">{{item.name}}</view>
-                                <van-icon name="arrow" custom-style='margin-top: 8rpx;' />
-                            </view>
-                            <view class="room-card-textbox-info">
-                                <block wx:for="{{item.tags}}" wx:for-item="tag">
-                                    {{tag}}
-                                </block>
-                            </view>
-                            <view class="room-card-textbox-label">
-                                <block>
-                                    <view class="room-card-textbox-label2" wx:if="{{item.benefitMap.discount.length>0}}">
-                                        {{item.benefitMap.discount}}
-                                    </view>
-                                    <view class="room-card-textbox-label2" wx:if="{{item.benefitMap.gift.length>0}}">
-                                        {{item.benefitMap.gift}}
-                                    </view>
-                                </block>
+</view>
 
-                            </view>
-                        </view>
-                    </view>
-                    <view class="room-card2">
-                        <view class="no">时段无房</view>
-                    </view>
-                </view>
-            </block>
 
+<van-popup custom-style="height: 80vh;" round position="bottom" style="z-index: 999;" show="{{ showRoom }}" bind:close="onCloseRoom">
+  <view class="roomBox">
+    <view class="titleBox" style="position: fixed;z-index: 9999;">
+      <image bind:tap="onCloseRoom" src="https://file-cloud.fmode.cn/EbxZUK5lBI/20250221/huih91105813716.png" mode="" />
+      <view class="text">
+        房屋详情
+      </view>
+    </view>
+    <view class="titleBox">
+      <image src="https://file-cloud.fmode.cn/EbxZUK5lBI/20250221/huih91105813716.png" mode="" />
+      <view class="text">
+        房屋详情
+      </view>
+    </view>
+    <block wx:if="{{chickRoom.images.length}}">
+      <view class="picturebox">
+      <swiper autoplay="{{true}}" interval="{{3000}}" circular duration="{{500}}" class="img" bindchange="onRoomChange">
+        <block wx:for="{{chickRoom.images}}" wx:key="index" wx:for-item="img">
+          <swiper-item class="img">
+            <image src="{{img}}" mode="aspectFill"></image>
+          </swiper-item>
+        </block>
+      </swiper>
+      <view class="numberbox">{{roomIndex}}/{{chickRoom.images.length}}</view>
+    </view>
+    </block>
+   
+    <view class="tagBox">
+      <view class="title">{{chickRoom.name}}</view>
+      <view class="tags">
+      <block wx:for="{{chickRoom.tags}}" wx:key="index" wx:for-item="tag">
+        <view class="tag">{{tag}}</view>
+      </block>
+      </view>
+    </view>
+    <view class="serverBox tagBox">
+      <view class="title">服务设施</view>
+      <view class="tags">
+        <view class="tag2">免费停车位</view>
+        <view class="tag2">行李寄存 </view>
+        <view class="tag2">前台接待</view>
+        <view class="tag2">床品1客1换</view>
+        <view class="tag2">免费接站</view>
+        <view class="tag2">团建会议</view>
+        <view class="tag2">提供餐食</view>
+        <view class="tag2"></view>
+        <view class="tag2"></view>
+        <view class="tag2">热水</view>
+        <view class="tag2">独立卫浴</view>
+        <view class="tag2">电吹风</view>
+        <view class="tag2">洗浴用品</view>
+        <view class="tag2">牙具</view>
+        <view class="tag2">投影设备</view>
+        <view class="tag2">卡拉OK</view>
+        <view class="tag2">麻将机</view>
+        <view class="tag2">桌角防护</view>
+        <view class="tag2">壁炉</view>
+        <view class="tag2">智能马桶</view>
+        <view class="tag2">智能窗帘</view>
+      </view>
+    </view>
+    <view class="ruleBox tagBox">
+      <view class="title">预定须知</view>
+      <view class="sub_title">以下规则由房东制定,请仔细阅读并遵守</view>
+      <view class="list">
+        <view class="key">入离</view>
+        <view class="value">12:00后入住,12:00前退房</view>
+      </view>
+      <view class="list">
+        <view class="key">发票</view>
+        <view class="value">发票由民宿经营者(房东)提供</view>
+      </view>
+      <view class="list">
+        <view class="key">退订</view>
+        <view class="value" style="color: #7E9F86;">仅限30分钟内免费取消</view>
+      </view>
+      <view class="list">
+        <view class="key">     </view>
+        <view class="value">
+          <text>订单确认30分钟后,取消订单将扣除当日全部房费(订单需\n等商家确认后生效,订单确认结果以公众号,短信为准,\n如订单不确认将全额退款至您的付款账号)</text>
+        </view>
+      </view>
+    </view>
+    <view class="payBox"></view>
+    <view class="payBox" style="position: fixed;z-index: 99999;bottom: 0rpx;">
+      <view class="phonBox">
+        <view bindtap="phone">
+          <image src="https://file-cloud.fmode.cn/EbxZUK5lBI/20241212/e9muh5104028782.png" mode="" />
+          <text>电话咨询</text>
         </view>
+
+      </view>
+      <view class="pay">
+        <text>优惠0 实付¥{{chickRoom.price||0}}</text>
+      </view>
     </view>
+  </view>
 
-</view>
+</van-popup>

Fișier diff suprimat deoarece este prea mare
+ 0 - 0
nova-tourism/pages/homestay/homestay-detail/index.wxss


+ 8 - 21
nova-tourism/pages/my/my-wallet/index.js

@@ -5,34 +5,21 @@ Page({
      * 页面的初始数据
      */
     data: {
-        statusBarHeight: 0,
-        screenHeight: 0,
-        customHeight: 0,
-        bottomNavHeight: 0,
-        contentHeight: 0,
+    
     },
 
     /**
      * 生命周期函数--监听页面加载
      */
     onLoad: function (options) {
-        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;
-        this.setData({
-            statusBarHeight,
-            screenHeight,
-            customHeight,
-            bottomNavHeight,
-            contentHeight
-        });
+       
     },
-
+    gourl(e) {
+      const url = e.currentTarget.dataset.url;
+      wx.navigateTo({
+          url: `${url}`,
+      });
+  },
     /**
      * 生命周期函数--监听页面初次渲染完成
      */

+ 7 - 0
nova-tourism/pages/my/my-wallet/index.less

@@ -20,8 +20,15 @@
             height: 56rpx;
         }
         .text{
+            width: 690rpx;
             font-size: 32rpx;
             margin-left: 18rpx;
+            display: flex;
+            align-items: center;
+            justify-content: space-between;
+            >view{
+                font-size: 30rpx;
+            }
         }   
     }
 }

+ 6 - 3
nova-tourism/pages/my/my-wallet/index.wxml

@@ -1,9 +1,12 @@
 <!--nova-tourism/pages/my/my-wallet/index.wxml-->
 <nav type="back" background-color="#ffffff" frontColor="#000000" title="钱包" />
-<view class="all" style="height: {{contentHeight}}rpx;">
-    <view class="textbox" style="margin-top: 20rpx;">
+<view class="all" >
+    <view class="textbox" style="margin-top: 20rpx;" data-url="/nova-tourism/pages/my/my-wallet/loose-change/index" bindtap="gourl">
         <image src="https://file-cloud.fmode.cn/EbxZUK5lBI/20241212/qjtn9s104029899.png"></image>
-        <view class="text">零钱</view>
+        <view class="text">
+        零钱
+        <view>¥10000000000.55 <van-icon name="arrow" /></view>
+        </view>
     </view>
     <view class="textbox">
         <image src="https://file-cloud.fmode.cn/EbxZUK5lBI/20241212/mv1h6v104029521.png"></image>

+ 35 - 1
nova-tourism/pages/my/my-wallet/index.wxss

@@ -1 +1,35 @@
-.all{width:100vw;padding-left:20rpx;padding-right:20rpx;color:#382E2E;font-family:'NotoSans-Regular-2',sans-serif;font-weight:400}@font-face{font-family:'NotoSans-Bold-5';src:url('../../../../assets/font/Noto-sans/NotoSans-Bold-5.ttf')}.all .textbox{width:100%;margin-bottom:46rpx;display:flex;align-items:center}.all .textbox image{width:56rpx;height:56rpx}.all .textbox .text{font-size:32rpx;margin-left:18rpx}
+/* nova-tourism/pages/my/my-wallet/index.wxss */
+.all {
+  width: 100vw;
+  padding-left: 20rpx;
+  padding-right: 20rpx;
+  color: #382E2E;
+  font-family: 'NotoSans-Regular-2', sans-serif;
+  font-weight: 400;
+}
+@font-face {
+  font-family: 'NotoSans-Bold-5';
+  src: url('../../../../assets/font/Noto-sans/NotoSans-Bold-5.ttf');
+  /* 字体文件路径 */
+}
+.all .textbox {
+  width: 100%;
+  margin-bottom: 46rpx;
+  display: flex;
+  align-items: center;
+}
+.all .textbox image {
+  width: 56rpx;
+  height: 56rpx;
+}
+.all .textbox .text {
+  width: 690rpx;
+  font-size: 32rpx;
+  margin-left: 18rpx;
+  display: flex;
+  align-items: center;
+  justify-content: space-between;
+}
+.all .textbox .text > view {
+  font-size: 30rpx;
+}

+ 71 - 0
nova-tourism/pages/my/my-wallet/loose-change/index.js

@@ -0,0 +1,71 @@
+// nova-tourism/pages/my/my-wallet/loose-change/index.js
+Page({
+
+  /**
+   * 页面的初始数据
+   */
+  data: {
+
+  },
+
+  /**
+   * 生命周期函数--监听页面加载
+   */
+  onLoad(options) {
+
+  },
+  gourl(e) {
+    const url = e.currentTarget.dataset.url;
+    wx.navigateTo({
+        url: `${url}`,
+    });
+},
+  /**
+   * 生命周期函数--监听页面初次渲染完成
+   */
+  onReady() {
+
+  },
+
+  /**
+   * 生命周期函数--监听页面显示
+   */
+  onShow() {
+
+  },
+
+  /**
+   * 生命周期函数--监听页面隐藏
+   */
+  onHide() {
+
+  },
+
+  /**
+   * 生命周期函数--监听页面卸载
+   */
+  onUnload() {
+
+  },
+
+  /**
+   * 页面相关事件处理函数--监听用户下拉动作
+   */
+  onPullDownRefresh() {
+
+  },
+
+  /**
+   * 页面上拉触底事件的处理函数
+   */
+  onReachBottom() {
+
+  },
+
+  /**
+   * 用户点击右上角分享
+   */
+  onShareAppMessage() {
+
+  }
+})

+ 3 - 0
nova-tourism/pages/my/my-wallet/loose-change/index.json

@@ -0,0 +1,3 @@
+{
+  "usingComponents": {}
+}

+ 34 - 0
nova-tourism/pages/my/my-wallet/loose-change/index.less

@@ -0,0 +1,34 @@
+.moneyBox{
+    margin-top: 100rpx;
+    height: 50vh;
+    display: flex;
+    flex-direction: column;
+    align-items: center;
+    image{
+        width: 150rpx;
+        height: 150rpx;
+    }
+    .subTitle{
+        font-size: 32rpx;
+        color:#382E2E ;
+        margin: 20rpx;
+    }
+    .money{
+        font-size: 74rpx;
+    }
+}
+.btnBox{
+    button{
+        width: 345rpx;
+        height: 95rpx;
+        font-size: 36rpx;
+        margin: 20rpx auto;
+        color: #F0FDF3;
+    }
+    .top_up{
+        background: #69C37F;
+    }
+    .withdraw{
+        background: #2B2B2B;
+    }
+}

+ 12 - 0
nova-tourism/pages/my/my-wallet/loose-change/index.wxml

@@ -0,0 +1,12 @@
+<!--nova-tourism/pages/my/my-wallet/loose-change/index.wxml-->
+<nav type="back" background-color="#ffffff" frontColor="#000000" title="钱包" />
+
+<view class="moneyBox">
+  <image src="https://file-cloud.fmode.cn/EbxZUK5lBI/20241212/qjtn9s104029899.png"></image>
+  <view class="subTitle">我的零钱</view>
+  <view class="money">¥10000000000.66</view>
+</view>
+<view class="btnBox">
+  <button class="top_up">充值</button>
+  <button class="withdraw">提现</button>
+</view>

+ 32 - 0
nova-tourism/pages/my/my-wallet/loose-change/index.wxss

@@ -0,0 +1,32 @@
+.moneyBox {
+  margin-top: 100rpx;
+  height: 50vh;
+  display: flex;
+  flex-direction: column;
+  align-items: center;
+}
+.moneyBox image {
+  width: 150rpx;
+  height: 150rpx;
+}
+.moneyBox .subTitle {
+  font-size: 32rpx;
+  color: #382E2E;
+  margin: 20rpx;
+}
+.moneyBox .money {
+  font-size: 74rpx;
+}
+.btnBox button {
+  width: 345rpx;
+  height: 95rpx;
+  font-size: 36rpx;
+  margin: 20rpx auto;
+  color: #F0FDF3;
+}
+.btnBox .top_up {
+  background: #69C37F;
+}
+.btnBox .withdraw {
+  background: #2B2B2B;
+}

+ 66 - 72
project.private.config.json

@@ -1,79 +1,73 @@
 {
-    "description": "项目私有配置文件。此文件中的内容将覆盖 project.config.json 中的相同字段。项目的改动优先同步到此文件中。详见文档:https://developers.weixin.qq.com/miniprogram/dev/devtools/projectconfig.html",
-    "setting": {},
-    "condition": {
-        "plugin": {
-            "list": []
+  "description": "项目私有配置文件。此文件中的内容将覆盖 project.config.json 中的相同字段。项目的改动优先同步到此文件中。详见文档:https://developers.weixin.qq.com/miniprogram/dev/devtools/projectconfig.html",
+  "setting": {
+    "compileHotReLoad": false
+  },
+  "condition": {
+    "miniprogram": {
+      "list": [
+        {
+          "name": "民宿详细",
+          "pathName": "nova-tourism/pages/homestay/homestay-detail/index",
+          "query": "",
+          "scene": null
         },
-        "game": {
-            "list": []
+        {
+          "name": "卡卷包",
+          "pathName": "nova-tourism/pages/my/my-card/index",
+          "query": "",
+          "scene": null
         },
-        "gamePlugin": {
-            "list": []
+        {
+          "name": "商品详细",
+          "pathName": "nova-tourism/pages/collect/collect-detail/index",
+          "query": "",
+          "scene": null
         },
-        "miniprogram": {
-            "list": [
-                {
-                    "name": "民宿详细",
-                    "pathName": "nova-tourism/pages/homestay/homestay-detail/index",
-                    "query": "",
-                    "scene": null
-                },
-                {
-                    "name": "卡卷包",
-                    "pathName": "nova-tourism/pages/my/my-card/index",
-                    "query": "",
-                    "scene": null
-                },
-                {
-                    "name": "商品详细",
-                    "pathName": "nova-tourism/pages/collect/collect-detail/index",
-                    "query": "",
-                    "scene": null
-                },
-                {
-                    "name": "商户端首页",
-                    "pathName": "nova-tourism/pages/my/merchant/merchant-home/index",
-                    "query": "",
-                    "scene": null
-                },
-                {
-                    "name": "我的订单",
-                    "pathName": "nova-tourism/pages/my/my-order/index",
-                    "query": "active=0",
-                    "scene": null
-                },
-                {
-                    "name": "退款售后",
-                    "pathName": "nova-tourism/pages/my/my-order/my-refund/index",
-                    "query": "",
-                    "scene": null
-                },
-                {
-                    "name": "退款详细",
-                    "pathName": "nova-tourism/pages/my/my-order/my-refund/refund-detail/index",
-                    "query": "",
-                    "scene": null
-                },
-                {
-                    "name": "民宿订单",
-                    "pathName": "nova-tourism/pages/homestay/homestay-order2/index",
-                    "query": "objectId=vhyskK4oxw&date_start=Fri%2520Dec%252013%25202024%252016%253A28%253A58%2520GMT%252B0800%2520(%25E4%25B8%25AD%25E5%259B%25BD%25E6%25A0%2587%25E5%2587%2586%25E6%2597%25B6%25E9%2597%25B4)&date_end=Sat%2520Dec%252014%25202024%252016%253A28%253A58%2520GMT%252B0800%2520(%25E4%25B8%25AD%25E5%259B%25BD%25E6%25A0%2587%25E5%2587%2586%25E6%2597%25B6%25E9%2597%25B4)",
-                    "scene": null
-                },
-                {
-                    "name": "民宿订单",
-                    "pathName": "nova-tourism/pages/homestay/homestay-order2/index",
-                    "query": "objectId=vhyskK4oxw&date_start=Fri%2520Dec%252013%25202024%252016%253A28%253A58%2520GMT%252B0800%2520(%25E4%25B8%25AD%25E5%259B%25BD%25E6%25A0%2587%25E5%2587%2586%25E6%2597%25B6%25E9%2597%25B4)&date_end=Sat%2520Dec%252014%25202024%252016%253A28%253A58%2520GMT%252B0800%2520(%25E4%25B8%25AD%25E5%259B%25BD%25E6%25A0%2587%25E5%2587%2586%25E6%2597%25B6%25E9%2597%25B4)",
-                    "scene": null
-                },
-                {
-                    "name": "物品详细",
-                    "pathName": "nova-tourism/pages/collect/collect-detail/index",
-                    "query": "",
-                    "scene": null
-                }
-            ]
+        {
+          "name": "商户端首页",
+          "pathName": "nova-tourism/pages/my/merchant/merchant-home/index",
+          "query": "",
+          "scene": null
+        },
+        {
+          "name": "我的订单",
+          "pathName": "nova-tourism/pages/my/my-order/index",
+          "query": "active=0",
+          "scene": null
+        },
+        {
+          "name": "退款售后",
+          "pathName": "nova-tourism/pages/my/my-order/my-refund/index",
+          "query": "",
+          "scene": null
+        },
+        {
+          "name": "退款详细",
+          "pathName": "nova-tourism/pages/my/my-order/my-refund/refund-detail/index",
+          "query": "",
+          "scene": null
+        },
+        {
+          "name": "民宿订单",
+          "pathName": "nova-tourism/pages/homestay/homestay-order2/index",
+          "query": "objectId=vhyskK4oxw&date_start=Fri%2520Dec%252013%25202024%252016%253A28%253A58%2520GMT%252B0800%2520(%25E4%25B8%25AD%25E5%259B%25BD%25E6%25A0%2587%25E5%2587%2586%25E6%2597%25B6%25E9%2597%25B4)&date_end=Sat%2520Dec%252014%25202024%252016%253A28%253A58%2520GMT%252B0800%2520(%25E4%25B8%25AD%25E5%259B%25BD%25E6%25A0%2587%25E5%2587%2586%25E6%2597%25B6%25E9%2597%25B4)",
+          "scene": null
+        },
+        {
+          "name": "民宿订单",
+          "pathName": "nova-tourism/pages/homestay/homestay-order2/index",
+          "query": "objectId=vhyskK4oxw&date_start=Fri%2520Dec%252013%25202024%252016%253A28%253A58%2520GMT%252B0800%2520(%25E4%25B8%25AD%25E5%259B%25BD%25E6%25A0%2587%25E5%2587%2586%25E6%2597%25B6%25E9%2597%25B4)&date_end=Sat%2520Dec%252014%25202024%252016%253A28%253A58%2520GMT%252B0800%2520(%25E4%25B8%25AD%25E5%259B%25BD%25E6%25A0%2587%25E5%2587%2586%25E6%2597%25B6%25E9%2597%25B4)",
+          "scene": null
+        },
+        {
+          "name": "物品详细",
+          "pathName": "nova-tourism/pages/collect/collect-detail/index",
+          "query": "",
+          "scene": null
         }
+      ]
     }
+  },
+  "projectname": "nova-wapp"
 }

Unele fișiere nu au fost afișate deoarece prea multe fișiere au fost modificate în acest diff