You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							515 lines
						
					
					
						
							17 KiB
						
					
					
				
			
		
		
	
	
							515 lines
						
					
					
						
							17 KiB
						
					
					
				| <template> | |
|   <view class="bargain"> | |
|     <!-- 在header上加 on 为请求支援 --> | |
|     <view :class="[bargainPartake != userInfo.uid ? 'header on' : 'header']"> | |
|       <view class="people">{{ lookCount }}人查看 丨 {{ shareCount }}人分享 丨 {{ userCount }}人参与</view> | |
|       <!-- 帮助砍价、帮砍成功:--> | |
|       <view class="pictxt acea-row row-center-wrapper" v-if="bargainPartake != userInfo.uid"> | |
|         <view class="pictrue"> | |
|           <image :src="bargainUserInfo.avatar" /> | |
|         </view> | |
|         <view class="text"> | |
|           {{ bargainUserInfo.nickname }} | |
|           <text>邀请您帮忙砍价</text> | |
|         </view> | |
|       </view> | |
|       <count-down | |
|         :is-day="true" | |
|         :tip-text="'倒计时 '" | |
|         :day-text="' 天 '" | |
|         :hour-text="' 时 '" | |
|         :minute-text="' 分 '" | |
|         :second-text="' 秒'" | |
|         :datatime="datatime" | |
|       ></count-down> | |
|     </view> | |
|     <view class="wrapper"> | |
|       <view class="pictxt acea-row row-between-wrapper"> | |
|         <view class="pictrue"> | |
|           <image :src="bargain.image" /> | |
|         </view> | |
|         <view class="text acea-row row-column-around"> | |
|           <view class="line2" v-text="bargain.title"></view> | |
|           <view class="money font-color-red"> | |
|             已砍至: ¥ | |
|             <text class="num" v-text="price"></text> | |
|           </view> | |
|           <view class="acea-row row-middle"> | |
|             <view class="successNum" v-text="'原价' + bargain.price"></view> | |
|             <view class="successNum" v-text="'已有' + bargainSumCount + '人砍价成功'"></view> | |
|           </view> | |
|         </view> | |
|       </view> | |
|       <view class="cu-progress acea-row row-middle round margin-top"> | |
|         <view | |
|           class="acea-row row-middle bg-red" | |
|           :style="{ width: loading ? pricePercent + '%' : '' }" | |
|         ></view> | |
|       </view> | |
|       <view class="balance acea-row row-between-wrapper"> | |
|         <view v-text="'已砍' + alreadyPrice + '元'"></view> | |
|         <view v-if="surplusPrice === 0">砍价成功</view> | |
|         <view v-else v-text="'还剩' + surplusPrice + '元'"></view> | |
|       </view> | |
|       <!-- 帮助砍价、帮砍成功:--> | |
|       <!--<view class='bargainSuccess'><text class='iconfont icon-xiaolian'></text>已成功帮助好友砍价</view>--> | |
|       <view class="bargainBnts"> | |
|         <view | |
|           class="bargainBnt" | |
|           @click="goPoster" | |
|           v-if="bargainPartake === userInfo.uid && surplusPrice > 0" | |
|         >邀请好友帮砍价</view> | |
|         <view | |
|           class="bargainBnt" | |
|           @click="getBargainHelp" | |
|           v-else-if="bargainPartake != userInfo.uid" | |
|         >帮好友砍一刀</view> | |
|         <view class="bargainBnt" @click="getBargainStart" v-if="bargainPartake != userInfo.uid">开启砍价</view> | |
|         <view | |
|           class="bargainBnt" | |
|           @click="goPay" | |
|           v-if="surplusPrice === 0 && bargainPartake === userInfo.uid && userBargainStatus === 1" | |
|         >立即支付</view> | |
|         <view class="bargainBnt on" @click="goList">抢更多商品</view> | |
|       </view> | |
|       <view class="tip"> | |
|         已有 | |
|         <text class="font-color-red" v-text="helpCount"></text>位好友成功帮您砍价 | |
|       </view> | |
|       <view class="lock"></view> | |
|     </view> | |
|     <view class="bargainGang"> | |
|       <view class="title font-color-red acea-row row-center-wrapper"> | |
|         <view class="pictrue"> | |
|           <image :src="$VUE_APP_RESOURCES_URL+'/images/left.png'" /> | |
|         </view> | |
|         <view class="titleCon">砍价帮</view> | |
|         <view class="pictrue on"> | |
|           <image :src="$VUE_APP_RESOURCES_URL+'/images/left.png'" /> | |
|         </view> | |
|       </view> | |
|       <view class="list"> | |
|         <view | |
|           class="item acea-row row-between-wrapper" | |
|           v-for="(item, bargainHelpListIndex) in bargainHelpList" | |
|           :key="bargainHelpListIndex" | |
|         > | |
|           <view class="pictxt acea-row row-between-wrapper"> | |
|             <view class="pictrue"> | |
|               <image :src="item.avatar" /> | |
|             </view> | |
|             <view class="text"> | |
|               <view class="name line1" v-text="item.nickname"></view> | |
|               <view class="line1" v-text="item.add_time"></view> | |
|             </view> | |
|           </view> | |
|           <view class="money font-color-red"> | |
|             <text class="iconfont icon-kanjia"></text> | |
|             砍掉{{ item.price }}元 | |
|           </view> | |
|         </view> | |
|       </view> | |
|       <view | |
|         class="load font-color-red" | |
|         v-if="!helpListStatus && !helpListLoading" | |
|         @click="getBargainHelpList" | |
|       >点击加载更多</view> | |
|       <view class="lock"></view> | |
|     </view> | |
|     <view class="goodsDetails"> | |
|       <view class="title font-color-red acea-row row-center-wrapper"> | |
|         <view class="pictrue"> | |
|           <image :src="$VUE_APP_RESOURCES_URL+'/images/left.png'" /> | |
|         </view> | |
|         <view class="titleCon">商品详情</view> | |
|         <view class="pictrue on"> | |
|           <image :src="$VUE_APP_RESOURCES_URL+'/images/left.png'" /> | |
|         </view> | |
|       </view> | |
|       <view class="conter" v-html="bargain.description"></view> | |
|       <view class="lock"></view> | |
|     </view> | |
|     <view class="goodsDetails"> | |
|       <view class="title font-color-red acea-row row-center-wrapper"> | |
|         <view class="pictrue"> | |
|           <image :src="$VUE_APP_RESOURCES_URL+'/images/left.png'" /> | |
|         </view> | |
|         <view class="titleCon">活动规则</view> | |
|         <view class="pictrue on"> | |
|           <image :src="$VUE_APP_RESOURCES_URL+'/images/left.png'" /> | |
|         </view> | |
|       </view> | |
|       <view class="conter" v-html="bargain.rule"></view> | |
|     </view> | |
|     <view class="bargainTip" :class="active === true ? 'on' : ''"> | |
|       <view class="pictrue"> | |
|         <image :src="$VUE_APP_RESOURCES_URL+'/images/bargainBg.jpg'" /> | |
|         <view class="iconfont icon-guanbi" @click="close"></view> | |
|       </view> | |
|       <view class="cutOff" v-if="bargainPartake === userInfo.uid"> | |
|         您已砍掉 | |
|         <text class="font-color-red" v-text="bargainHelpPrice"></text>元,听说分享次数越多砍价成功的机会越大哦! | |
|       </view> | |
|       <view class="cutOff on" v-else> | |
|         <view class="help font-color-red" v-text="'成功帮砍' + bargainHelpPrice + '元'"></view>,您也可以砍价低价拿哦,快去挑选心仪的商品吧~ | |
|       </view> | |
|       <view class="tipBnt" @click="goPoster" v-if="bargainPartake === userInfo.uid">邀请好友帮砍价</view> | |
|       <view class="tipBnt" @click="getBargainStart" v-else>我也要参与</view> | |
|     </view> | |
|     <view class="mask" @touchmove.prevent :hidden="active === false" @click="close"></view> | |
|   </view> | |
| </template> | |
| <script> | |
| import CountDown from "@/components/CountDown"; | |
| import { | |
|   getBargainDetail, | |
|   getBargainShare, | |
|   getBargainStart, | |
|   getBargainHelp, | |
|   getBargainHelpPrice, | |
|   getBargainHelpList, | |
|   getBargainHelpCount, | |
|   getBargainStartUser | |
| } from "@/api/activity"; | |
| import { postCartAdd } from "@/api/store"; | |
| import { mapGetters } from "vuex"; | |
| import {} from "@/libs/wechat"; | |
| import { isWeixin, parseQuery, handleQrCode } from "@/utils/index"; | |
|  | |
| const NAME = "DargainDetails"; | |
|  | |
| export default { | |
|   name: "DargainDetails", | |
|   components: { | |
|     CountDown | |
|   }, | |
|   props: {}, | |
|   data: function() { | |
|     return { | |
|       price: 0, | |
|       bargainId: 0, //砍价编号 | |
|       bargainPartake: 0, //参与砍价 | |
|       bargain: [], //砍价产品信息 | |
|       partake: null, | |
|       bargainSumCount: 0, //砍价成功人数 | |
|       activeMsg: "", | |
|       active: false, | |
|       loading: false, | |
|       datatime: 0, | |
|       lookCount: 0, //查看人数 | |
|       shareCount: 0, //分享人数 | |
|       userCount: 0, //参与人数 | |
|       bargainHelpPrice: 0, //砍掉金额 | |
|       bargainHelpList: [], | |
|       helpListStatus: false, //砍价列表是否获取完成 false 未完成 true 完成 | |
|       helpListLoading: false, //当前接口是否请求完成 false 完成 true 未完成 | |
|       page: 1, //页码 | |
|       limit: 2, //数量 | |
|       helpCount: 0, //砍价帮总人数 | |
|       surplusPrice: 0, //剩余金额 | |
|       alreadyPrice: 0, //已砍掉价格 | |
|       pricePercent: 0, //砍价进度条 | |
|       bargainUserInfo: [], //砍价 开启砍价用户信息 | |
|       userBargainStatus: 2 //砍价状态 | |
|     }; | |
|   }, | |
|   computed: mapGetters(["userInfo", "isLogin"]), | |
|   // watch: { | |
|   //   $yroute: function(n) { | |
|   //     var that = this; | |
|   //     if (n.name === NAME) { | |
|   //       that.mountedStart(); | |
|   //     } | |
|   //   } | |
|   // }, | |
|   mounted: function() { | |
|     var that = this; | |
|     that.mountedStart(); | |
|     setTimeout(function() { | |
|       that.loading = true; | |
|     }, 500); | |
|   }, | |
|   methods: { | |
|     mountedStart: function() { | |
|       var that = this; | |
|       let url = handleQrCode(); | |
|       if (url) { | |
|         that.bargainId = url.bargainId; | |
|         that.partake = url.uid; | |
|       } else { | |
|         that.bargainId = that.$yroute.query.id; | |
|         that.partake = parseInt(that.$yroute.query.partake); | |
|       } | |
|       if ( | |
|         this.partake === undefined || | |
|         this.partake <= 0 || | |
|         isNaN(this.partake) | |
|       ) { | |
|         that.bargainPartake = that.userInfo.uid; | |
|         // that.$yrouter.push({ | |
|         //   path: "/pages/activity/DargainDetails/index", | |
|         //   query: { id: that.bargainId, partake: that.bargainPartake } | |
|         // }); | |
|       } else { | |
|         that.bargainPartake = parseInt(this.partake); | |
|       } | |
|       that.getBargainHelpCountStart(); | |
|       that.getBargainDetail(); | |
|       that.getBargainShare(0); | |
|       if (that.bargainPartake === that.userInfo.uid) that.getBargainStart(); | |
|       else that.getBargainStartUser(); | |
|     }, | |
|     updateTitle() { | |
|       // document.title = this.bargain.title || this.$yroute.meta.title; | |
|     }, | |
|     goPay: function() { | |
|       var data = {}; | |
|       var that = this; | |
|       data.productId = that.bargain.productId; | |
|       data.cartNum = that.bargain.num; | |
|       data.uniqueId = ""; | |
|       data.bargainId = that.bargainId; | |
|       data.new = 1; | |
|       postCartAdd(data) | |
|         .then(res => { | |
|           that.$yrouter.push({ | |
|             path: "/pages/order/OrderSubmission/index", | |
|             query: { id: res.data.cartId } | |
|           }); | |
|         }) | |
|         .catch(err => { | |
|           uni.showToast({ | |
|             title: err.msg || err.response.data.msg, | |
|             icon: "none", | |
|             duration: 2000 | |
|           }); | |
|         }); | |
|     }, | |
|     goPoster: function() { | |
|       var that = this; | |
|       that.getBargainShare(that.bargainId); | |
|       this.$yrouter.push({ | |
|         path: "/pages/activity/Poster/index", | |
|         query: { id: that.bargainId, type: 2 } | |
|       }); | |
|     }, | |
|     goList: function() { | |
|       this.$yrouter.push({ | |
|         path: "/pages/activity/GoodsBargain/index" | |
|       }); | |
|     }, | |
|     //砍价分享 | |
|     //bargainId 0  获取 查看人数 分享人数 参与人数 | |
|     //bargainId 砍价产品编号 添加分享次数  获取 查看人数 分享人数 参与人数 | |
|     getBargainShare: function(bargainId) { | |
|       var that = this; | |
|       getBargainShare({ bargainId: bargainId }).then(res => { | |
|         that.lookCount = res.data.lookCount; | |
|         that.shareCount = res.data.shareCount; | |
|         that.userCount = res.data.userCount; | |
|       }); | |
|     }, | |
|     // 获取产品详情 | |
|     getBargainDetail: function() { | |
|       var that = this; | |
|       getBargainDetail(that.bargainId) | |
|         .then(res => { | |
|           that.$set(that, "bargain", res.data.bargain); | |
|           that.updateTitle(); | |
|           that.datatime = that.bargain.stopTime; | |
|           that.getBargainHelpCount(); | |
|         }) | |
|         .catch(res => { | |
|           uni.showToast({ | |
|             title: res.msg, | |
|             icon: "none", | |
|             duration: 2000 | |
|           }); | |
|         }); | |
|     }, | |
|     //开启砍价 | |
|     getBargainStart: function() { | |
|       var that = this; | |
|       getBargainStart({ bargainId: that.bargainId }) | |
|         .then(() => { | |
|           that.bargainPartake = that.userInfo.uid; | |
|           that.getBargainHelp(); | |
|         }) | |
|         .catch(res => { | |
|           uni.showToast({ | |
|             title: res.msg, | |
|             icon: "none", | |
|             duration: 2000 | |
|           }); | |
|         }); | |
|     }, | |
|     //参与砍价 | |
|     getBargainHelp: function() { | |
|       var that = this; | |
|       if ( | |
|         that.surplusPrice === 0 && | |
|         that.bargainPartake !== that.userInfo.uid | |
|       ) { | |
|         return uni.showToast({ | |
|           title: "好友已经砍价成功", | |
|           icon: "success", | |
|           duration: 2000 | |
|         }); | |
|       } | |
|       var data = { | |
|         bargainId: that.bargainId, | |
|         bargainUserUid: that.bargainPartake | |
|       }; | |
|       getBargainHelp(data) | |
|         .then(res => { | |
|           that.activeMsg = res.data.status; | |
|           if ( | |
|             res.data.status === "SUCCESSFUL" && | |
|             that.bargainPartake !== that.userInfo.uid | |
|           ) { | |
|             uni.showToast({ | |
|               title: "您已经砍过了", | |
|               icon: "none", | |
|               duration: 2000 | |
|             }); | |
|             return; | |
|           } | |
|           that.helpListStatus = false; | |
|           that.page = 1; | |
|           that.bargainHelpList = []; | |
|           that.getBargainHelpPrice(); | |
|         }) | |
|         .catch(res => { | |
|           uni.showToast({ | |
|             title: res.msg, | |
|             icon: "none", | |
|             duration: 2000 | |
|           }); | |
|         }); | |
|     }, | |
|     //获取砍掉的金额 | |
|     getBargainHelpPrice: function() { | |
|       var that = this; | |
|       getBargainHelpPrice({ | |
|         bargainId: that.bargainId, | |
|         bargainUserUid: that.bargainPartake | |
|       }) | |
|         .then(res => { | |
|           that.bargainHelpPrice = res.data.price; | |
|           that.getBargainHelpCount(); | |
|           that.getBargainHelpList(); | |
|           switch (that.activeMsg) { | |
|             case "SUCCESSFUL": | |
|               break; | |
|             case "SUCCESS": | |
|               that.active = true; | |
|               break; | |
|           } | |
|         }) | |
|         .catch(res => { | |
|           uni.showToast({ | |
|             title: res.msg, | |
|             icon: "none", | |
|             duration: 2000 | |
|           }); | |
|         }); | |
|     }, | |
|     //砍价帮 | |
|     getBargainHelpList: function() { | |
|       var that = this; | |
|       if (that.helpListLoading === true) return; | |
|       if (that.helpListStatus === true) return; | |
|       that.helpListLoading = true; | |
|       getBargainHelpList({ | |
|         bargainId: that.bargainId, | |
|         bargainUserUid: that.bargainPartake, | |
|         page: that.page, | |
|         limit: that.limit | |
|       }) | |
|         .then(res => { | |
|           that.helpListStatus = res.data.length < that.limit; | |
|           that.helpListLoading = false; | |
|           that.page++; | |
|           that.bargainHelpList.push.apply(that.bargainHelpList, res.data); | |
|         }) | |
|         .catch(res => { | |
|           uni.showToast({ | |
|             title: res.msg, | |
|             icon: "none", | |
|             duration: 2000 | |
|           }); | |
|         }); | |
|     }, | |
|     getBargainHelpCountStart: function() { | |
|       var that = this; | |
|       getBargainHelpCount({ | |
|         bargainId: that.bargainId, | |
|         bargainUserUid: that.bargainPartake | |
|       }) | |
|         .then(() => {}) | |
|         .catch(() => { | |
|           // that.$yrouter.push({ | |
|           //   path: "/pages/activity/DargainDetails/index", | |
|           //   query: { id: that.bargainId, partake: that.userInfo.uid } | |
|           // }); | |
|         }); | |
|     }, | |
|     getBargainHelpCount: function() { | |
|       var that = this; | |
|       getBargainHelpCount({ | |
|         bargainId: that.bargainId, | |
|         bargainUserUid: that.bargainPartake | |
|       }) | |
|         .then(res => { | |
|           that.userBargainStatus = res.data.status; | |
|           that.helpCount = res.data.count; | |
|           that.surplusPrice = res.data.price; | |
|           that.alreadyPrice = res.data.alreadyPrice; | |
|           that.pricePercent = res.data.pricePercent; | |
|           that.price = (that.bargain.price - that.alreadyPrice).toFixed(2); | |
|         }) | |
|         .catch(() => { | |
|           that.bargainPartake = that.userInfo.uid; | |
|           // that.$yrouter.push({ | |
|           //   path: "/pages/activity/DargainDetails/index", | |
|           //   query: { id: that.bargainId, partake: that.userInfo.uid } | |
|           // }); | |
|         }); | |
|     }, | |
|     getBargainStartUser: function() { | |
|       var that = this; | |
|       getBargainStartUser({ | |
|         bargainId: that.bargainId, | |
|         bargainUserUid: that.bargainPartake | |
|       }) | |
|         .then(res => { | |
|           that.bargainUserInfo = res.data; | |
|           that.getBargainHelpList(); | |
|         }) | |
|         .catch(res => { | |
|           uni.showToast({ | |
|             title: res.msg, | |
|             icon: "none", | |
|             duration: 2000 | |
|           }); | |
|         }); | |
|     }, | |
|     close: function() { | |
|       this.active = false; | |
|     } | |
|   }, | |
|   onShareAppMessage() { | |
|     return { | |
|       path: `/pages/activity/DargainDetails/index/?id=${this.$yroute.query.id}&partake=${this.userInfo.uid}` | |
|     }; | |
|   } | |
| }; | |
| </script> | |
|  | |
| <style> | |
| .bargainBnts { | |
|   display: flex; | |
|   align-items: center; | |
|   flex-direction: column; | |
| } | |
| </style>
 | |
| 
 |