Browse Source

mingsu page

邹能昇 3 months ago
parent
commit
1551c95301
2 changed files with 141 additions and 22 deletions
  1. 137 20
      nova-tourism/components/homestay/index.js
  2. 4 2
      nova-tourism/components/homestay/index.wxml

+ 137 - 20
nova-tourism/components/homestay/index.js

@@ -15,18 +15,18 @@ Component({
         customHeight: 0,
         bottomNavHeight: 0,
         contentHeight: 0,
-        
+
         date_start: '',
         date_end: '',
         date_start1: '',
         date_end1: '',
-        istoday:true,
-        daysBetween:1,
+        istoday: true,
+        daysBetween: 1,
         show: false,
         //店铺数据
-        storeList:[],
+        storeList: [],
         //价格
-        price:211
+        price: 211
     },
     lifetimes: {
         detached: function () {},
@@ -59,7 +59,7 @@ Component({
             const today = new Date();
             const tomorrow = new Date();
             tomorrow.setDate(today.getDate() + 1);
-            
+
             this.setData({
                 date_start: this.formatDate(today),
                 date_end: this.formatDate(tomorrow),
@@ -103,14 +103,14 @@ Component({
                 date_end: `${this.formatDate(end)}`,
                 daysBetween
             });
-            if(this.data.date_start.trim()==this.data.date_start1.trim()&&this.data.date_end.trim()==this.data.date_end1.trim()){
+            if (this.data.date_start.trim() == this.data.date_start1.trim() && this.data.date_end.trim() == this.data.date_end1.trim()) {
                 this.setData({
-                    istoday:true
+                    istoday: true
                 })
                 console.log(this.data.istoday);
-            }else{
+            } else {
                 this.setData({
-                    istoday:false
+                    istoday: false
                 })
                 console.log(this.data.istoday);
             }
@@ -120,21 +120,21 @@ Component({
         gourl(e) {
             const url = e.currentTarget.dataset.url;
             const id = e.currentTarget.dataset.id;
-        
+
             // 构造要传递的信息
             const info = {
                 objectId: id,
                 date_start: this.data.date_start,
                 date_end: this.data.date_end,
                 daysBetween: this.data.daysBetween,
-                istoday:this.data.istoday,
+                istoday: this.data.istoday,
             };
-        
+
             // 将信息转为查询字符串
             const queryString = Object.keys(info)
                 .map(key => `${encodeURIComponent(key)}=${encodeURIComponent(info[key])}`)
                 .join('&');
-        
+
             // 使用查询字符串跳转
             wx.navigateTo({
                 url: `${url}?${queryString}`,
@@ -146,20 +146,137 @@ Component({
             ShopStore.equalTo('company', company);
             ShopStore.equalTo('type', "stay");
             ShopStore.notEqualTo('isDeleted', "true");
-            
+
             let store = await ShopStore.find();
-            let storeList = store.map(item => {
+            let storeListPromises = store.map(async item => {
                 let storeItem = item.toJSON();
                 // 为每一项添加价格属性
-                storeItem.price = storeItem.perCapita*this.data.daysBetween; 
+                storeItem.price = storeItem.perCapita * this.data.daysBetween;
+                storeItem.iscollect = await this.iscollect(storeItem.objectId); // 等待iscollect的结果
                 return storeItem;
             });
-            
+
+            let storeList = await Promise.all(storeListPromises); // 等待所有的Promise完成
+
             this.setData({
                 storeList
             });
-            
+
             console.log(this.data.storeList);
-        }
+        },
+        //收藏功能
+        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 submit(e) {
+            const object = e.currentTarget.dataset.id
+            console.log(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.notEqualTo('isDeleted', "true");
+            let collect = await Collect.first();
+
+            await this.changeiscollect(object)
+
+            if (collect) {
+                collect.set('isCollect', true)
+                try {
+                    let saveDate = await collect.save();
+                    console.log(saveDate);
+                    console.log("收藏成功1");
+                } catch (error) {
+                    console.error("保存数据时出现错误:", error);
+                }
+            } else {
+                //user
+                const currentUser = Parse.User.current();
+                let userquery2 = new Parse.Query('_User');
+                userquery2.equalTo('company', company);
+                userquery2.equalTo('objectId', currentUser.id);
+                userquery2.notEqualTo('isDeleted', true)
+                let user2 = await userquery2.first();
+                //店铺
+                let Collect3 = new Parse.Query('ShopStore');
+                Collect3.equalTo('company', company);
+                Collect3.equalTo('objectId', object);
+                Collect3.notEqualTo('isDeleted', "true");
+                let collect3 = await Collect3.first();
+
+                let companyPointer = Parse.Object.extend('Company').createWithoutData(company);
+                let Comment = new Parse.Object('DramaShopCollect');
+                Comment.set('company', companyPointer);
+                Comment.set('homestayStore', collect3.toPointer());
+                Comment.set('user', user2.toPointer());
+                Comment.set('isCollect', true);
+                try {
+                    let saveDate2 = await Comment.save();
+                    console.log(saveDate2);
+                    console.log("收藏成功");
+                } catch (error) {
+                    console.error("保存数据时出现错误:", error);
+                }
+            }
+
+        },
+        // 点击收藏后把storeList中对应的isCollect变成true
+        changeiscollect(objectId) {
+            // 创建一个新的 storeList 数组,以确保视图更新
+            const updatedStoreList = this.data.storeList.map(item => {
+                if (item.objectId === objectId) {
+                    return {
+                        ...item,
+                        iscollect: !item.iscollect // 切换 iscollect 的值
+                    };
+                }
+                return item; // 返回未修改的项
+            });
+
+            // 更新 storeList
+            this.setData({
+                storeList: updatedStoreList
+            });
+
+            console.log('修改成功', objectId);
+        },
+        //点击取消
+        async cancle(e) {
+            const object = e.currentTarget.dataset.id
+            const currentUser = Parse.User.current();
+            let Collect = new Parse.Query('DramaShopCollect');
+            Collect.equalTo('company', company);
+            Collect.equalTo('user', currentUser.id);
+            Collect.equalTo('isCollect', true);
+            Collect.equalTo('homestayStore', object);
+            Collect.notEqualTo('isDeleted', "true");
+            let collect = await Collect.first();
+
+            await this.changeiscollect(object)
+            if (collect) {
+                collect.set('isCollect', false)
+                try {
+                    let saveDate = await collect.save();
+                    console.log(saveDate);
+                    console.log("取消成功");
+                } catch (error) {
+                    console.error("保存数据时出现错误:", error);
+                }
+            }
+        },
     }
 });

+ 4 - 2
nova-tourism/components/homestay/index.wxml

@@ -36,7 +36,8 @@
                 <view class="textobx">
                     <view class="title" data-id="{{item.objectId}}" data-url="../../pages/homestay/homestay-detail/index" bindtap="gourl">
                         <view class="til">{{item.storeName}}</view>
-                        <image class="collect" src="https://file-cloud.fmode.cn/EbxZUK5lBI/20241121/2gcp1e030048570.png?imageView2/1/w/200/h/200"></image>
+                        <image class="collect" wx:if="{{!item.iscollect}}" src="https://file-cloud.fmode.cn/EbxZUK5lBI/20241121/2gcp1e030048570.png?imageView2/1/w/200/h/200"></image>
+                        <image class="collect" wx:if="{{item.iscollect}}" src="https://file-cloud.fmode.cn/EbxZUK5lBI/20241121/8mp9uj030058190.png?imageView2/1/w/200/h/200"></image>
                     </view>
 
                     <view class="miaosu" wx:if="{{item.desc}}" data-id="{{item.objectId}}" data-url="../../pages/homestay/homestay-detail/index" bindtap="gourl">
@@ -50,7 +51,8 @@
                                 {{item.price}}
                             </view>
                         </view>
-                        <view class="soucang">收藏</view>
+                        <view class="soucang" wx:if="{{!item.iscollect}}" data-id="{{item.objectId}}" bindtap="submit" >收藏</view>
+                        <view class="soucang" wx:if="{{item.iscollect}}" data-id="{{item.objectId}}" bindtap="cancle" >取消</view>
                     </view>
                 </view>
             </view>