diff --git a/pages/activity/DargainDetails/index.vue b/pages/activity/DargainDetails/index.vue index e179f13..f55180f 100644 --- a/pages/activity/DargainDetails/index.vue +++ b/pages/activity/DargainDetails/index.vue @@ -1,645 +1,631 @@ <template> - <view class="bargain on"> - <!-- 在header上加 on 为请求支援 --> - <!-- 当前登录的用户和url上携带的用户id不一致视为被邀请砍价 --> - <view class="wrapper bargain-box on user" v-if="bargainUserInfo && bargainUid != userInfo.uid"> - <!-- <view class="people"> + <view class="bargain on"> + <!-- 在header上加 on 为请求支援 --> + <!-- 当前登录的用户和url上携带的用户id不一致视为被邀请砍价 --> + <view class="wrapper bargain-box on user" v-if="bargainUserInfo && bargainUid != userInfo.uid"> + <!-- <view class="people"> {{ bargainShare.lookCount }}人查看 丨 {{ bargainShare.shareCount }}人分享 丨 {{ bargainShare.userCount }}人参与 </view> --> - <!-- 帮助砍价、帮砍成功:--> - <view class="pictxt acea-row row-center-wrapper "> - <div class="bargain-header"> - <view class="pictrue"><image :src="bargainUserInfo.avatar" /></view> - <view class="text"> - {{ bargainUserInfo.nickname }} - <text>邀请您帮忙砍价</text> - </view> - </div> - </view> - </view> - <view class="wrapper bargain-box time on"> - <div class="pictxt "> - <count-down - :isDay="true" - :tipText="'倒计时 '" - :dayText="' 天 '" - :hourText="' 时 '" - :minuteText="' 分 '" - :secondText="' 秒'" - :datatime="goodsDetail.stopTime" - ></count-down> - </div> - </view> - <view class="wrapper bargain-box bargain-product"> - <view class="pictxt acea-row row-between-wrapper" @click="openAlone"> - <view class="pictrue"> - <image :src="goodsDetail.image" /> - <view class="bargain_view"> - 查看商品 - <view class="iconfont icon-jiantou iconfonts"></view> - </view> - </view> - <view class="text acea-row row-column-around"> - <view class="line2" v-text="goodsDetail.title"></view> - <view class="money font-color-red"> - 已砍至: ¥ - <text class="num" v-text="bargainHelpCount.remainingPrice"></text> - </view> - <view class="acea-row row-middle"> - <view class="successNum" v-text="'原价' + goodsDetail.price"></view> - <view class="successNum" v-text="'已有' + bargainSumCount + '人砍价成功'"></view> - </view> - </view> - </view> + <!-- 帮助砍价、帮砍成功:--> + <view class="pictxt acea-row row-center-wrapper "> + <div class="bargain-header"> + <view class="pictrue"><image :src="bargainUserInfo.avatar"/></view> + <view class="text"> + {{ bargainUserInfo.nickname }} + <text>邀请您帮忙砍价</text> + </view> + </div> + </view> + </view> + <view class="wrapper bargain-box time on"> + <div class="pictxt "> + <count-down :isDay="true" :tipText="'倒计时 '" :dayText="' 天 '" :hourText="' 时 '" :minuteText="' 分 '" :secondText="' 秒'" :datatime="goodsDetail.stopTime"></count-down> + </div> + </view> + <view class="wrapper bargain-box bargain-product"> + <view class="pictxt acea-row row-between-wrapper" @click="openAlone"> + <view class="pictrue"> + <image :src="goodsDetail.image" /> + <view class="bargain_view"> + 查看商品 + <view class="iconfont icon-jiantou iconfonts"></view> + </view> + </view> + <view class="text acea-row row-column-around"> + <view class="line2" v-text="goodsDetail.title"></view> + <view class="money font-color-red"> + 已砍至: ¥ + <text class="num" v-text="bargainHelpCount.remainingPrice"></text> + </view> + <view class="acea-row row-middle"> + <view class="successNum" v-text="'原价' + goodsDetail.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: bargainHelpCount.pricePercent + '%' }"></view> - </view> + <!-- 砍价进度条 --> + <view class="cu-progress acea-row row-middle round margin-top"> + <view class="acea-row row-middle bg-red" :style="{ width: bargainHelpCount.pricePercent + '%' }"></view> + </view> - <!-- 砍价进度条下的金额 --> - <view class="balance acea-row row-between-wrapper"> - <view v-text="'已砍' + bargainHelpCount.alreadyPrice + '元'"></view> - <view v-if="bargainHelpCount.price === 0">砍价成功</view> - <view v-else v-text="'还剩' + bargainHelpCount.price + '元'"></view> - </view> + <!-- 砍价进度条下的金额 --> + <view class="balance acea-row row-between-wrapper"> + <view v-text="'已砍' + bargainHelpCount.alreadyPrice + '元'"></view> + <view v-if="bargainHelpCount.price === 0">砍价成功</view> + <view v-else v-text="'还剩' + bargainHelpCount.price + '元'"></view> + </view> - <!-- 砍价成功:--> - <!-- + <!-- 砍价成功:--> + <!-- surplusPrice 砍价剩余金额为0 bargainUid 砍价人为发起砍价用户 userBargainStatus 砍价状态为 --> - <view class="bargainSuccess" v-if="pay"> - <span class="iconfont icon-xiaolian"></span> - 恭喜您砍价成功,快去支付吧~ - </view> + <view class="bargainSuccess" v-if="pay"> + <span class="iconfont icon-xiaolian"></span> + 恭喜您砍价成功,快去支付吧~ + </view> - <!-- 参与砍价按钮 同一人--> - <view v-if="participate" class="bargainBnt" @click="goParticipate">立即发起砍价</view> + <!-- 参与砍价按钮 同一人--> + <view v-if="participate" class="bargainBnt" @click="goParticipate">立即发起砍价</view> - <!-- 邀请好友按钮 --> - <view v-if="inviteFriends" class="bargainBnt" @click="goPoster">邀请好友帮砍价</view> + <!-- 邀请好友按钮 --> + <view v-if="inviteFriends" class="bargainBnt" @click="goPoster">邀请好友帮砍价</view> - <!-- 帮砍好友砍按钮 --> - <view v-if="helpFriendsBargain" class="bargainBnt" @click="getBargainHelp">帮好友砍一刀</view> + <!-- 帮砍好友砍按钮 --> + <view v-if="helpFriendsBargain" class="bargainBnt" @click="getBargainHelp">帮好友砍一刀</view> - <!-- 发起砍价按钮 非同一人--> - <view v-if="bargain" class="bargainBnt" @click="getBargainStart">我也要砍价</view> + <!-- 发起砍价按钮 非同一人--> + <view v-if="bargain" class="bargainBnt" @click="getBargainStart">我也要砍价</view> - <!-- 支付按钮 --> - <view class="bargainBnt" @click="goPay" v-if="pay">立即支付</view> + <!-- 支付按钮 --> + <view class="bargainBnt" @click="goPay" v-if="pay">立即支付</view> - <view class="bargainBnt on" @click="goList">抢更多商品</view> - <view class="tip"> - 已有 - <span class="font-color-red" v-text="bargainHelpCount.count"></span> - 位好友成功帮您砍价 - </view> - <view class="lock"></view> - </view> - <view class="bargainGang bargain-box"> - <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" @click="getBargainHelpList">点击加载更多</view> - <view class="lock"></view> - </view> - <view class="goodsDetails bargain-box"> - <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="goodsDetail.description"></view> - <view class="lock"></view> - </view> - <view class="goodsDetails bargain-box"> - <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="goodsDetail.rule"></view> - </view> - <view class="bargainTip" :class="active === true ? 'on' : ''"> - <view class="cutOff" v-if="bargainUid === 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="bargainUid === userInfo.uid">邀请好友帮砍价</view> - <view class="tipBnt" @click="getBargainStart" v-else>我也要参与</view> - </view> - <view class="mask" @touchmove.prevent :hidden="active === false" @click="close"></view> - </view> + <view class="bargainBnt on" @click="goList">抢更多商品</view> + <view class="tip"> + 已有 + <span class="font-color-red" v-text="bargainHelpCount.count"></span> + 位好友成功帮您砍价 + </view> + <view class="lock"></view> + </view> + <view class="bargainGang bargain-box"> + <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" @click="getBargainHelpList">点击加载更多</view> + <view class="lock"></view> + </view> + <view class="goodsDetails bargain-box"> + <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="goodsDetail.description"></view> + <view class="lock"></view> + </view> + <view class="goodsDetails bargain-box"> + <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="goodsDetail.rule"></view> + </view> + <view class="bargainTip" :class="active === true ? 'on' : ''"> + <view class="cutOff" v-if="bargainUid === 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="bargainUid === 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'; +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'; +const NAME = 'DargainDetails' export default { - name: 'DargainDetails', - components: { - CountDown - }, - props: {}, - data: function() { - return { - bargainId: 0, //砍价编号 - bargainSumCount: 0, //砍价成功人数 - activeMsg: '', - active: false, - bargainHelpPrice: 0, //砍掉金额 - bargainHelpList: [], - helpListStatus: false, //砍价列表是否获取完成 false 未完成 true 完成 - page: 1, //页码 - limit: 2, //数量 - pricePercent: 0, //砍价进度条 - bargainShare: {}, // 砍价分享的消息 - bargainHelpCount: {}, // 砍价的信息数据 - goodsDetail: {}, // 商品的详情 - bargainUserInfo: [], // 开启砍价用户信息 - bargainUid: 0, // 参与砍价的用户 - pay: false, // 支付 - bargain: false, // 发起砍价 - participate: false, // 参与砍价 - inviteFriends: false, // 邀请好友 - helpFriendsBargain: false, // 帮好友砍 - bargainSuccess: false, // 帮好友砍价成功 - mainBargainSuccess: false // 砍价成功 - }; - }, - computed: mapGetters(['userInfo', 'isLogin']), - mounted: function() { - this.mountedStart(); - }, - methods: { - // 开始处理砍价逻辑 - mountedStart: function() { - var that = this; - let url = handleQrCode(); - // bargainId 砍价商品id - // bargainUid 发起砍价人 - if (url) { - // 通过二维码进来 - that.bargainId = url.bargainId; - that.bargainUid = url.partake; - } else { - // 正常途径进来 - that.bargainId = that.$yroute.query.id; - that.bargainUid = that.$yroute.query.partake; - } - if (this.bargainUid == 0 || !this.bargainUid) { - // url未携带用户uid,填上登录用户uid,跳转 - that.bargainUid = that.userInfo.uid; - } - console.log(this); + name: 'DargainDetails', + components: { + CountDown, + }, + props: {}, + data: function() { + return { + bargainId: 0, //砍价编号 + bargainSumCount: 0, //砍价成功人数 + activeMsg: '', + active: false, + bargainHelpPrice: 0, //砍掉金额 + bargainHelpList: [], + helpListStatus: false, //砍价列表是否获取完成 false 未完成 true 完成 + page: 1, //页码 + limit: 2, //数量 + pricePercent: 0, //砍价进度条 + bargainShare: {}, // 砍价分享的消息 + bargainHelpCount: {}, // 砍价的信息数据 + goodsDetail: {}, // 商品的详情 + bargainUserInfo: [], // 开启砍价用户信息 + bargainUid: 0, // 参与砍价的用户 + pay: false, // 支付 + bargain: false, // 发起砍价 + participate: false, // 参与砍价 + inviteFriends: false, // 邀请好友 + helpFriendsBargain: false, // 帮好友砍 + bargainSuccess: false, // 帮好友砍价成功 + mainBargainSuccess: false, // 砍价成功 + } + }, + computed: mapGetters(['userInfo', 'isLogin']), + mounted: function() { + this.mountedStart() + }, + methods: { + // 开始处理砍价逻辑 + mountedStart: function() { + var that = this + let url = handleQrCode() + // bargainId 砍价商品id + // bargainUid 发起砍价人 + if (url) { + // 通过二维码进来 + that.bargainId = url.bargainId + that.bargainUid = url.partake + } else { + // 正常途径进来 + that.bargainId = that.$yroute.query.id + that.bargainUid = that.$yroute.query.partake + } + if (this.bargainUid == 0 || !this.bargainUid) { + // url未携带用户uid,填上登录用户uid,跳转 + that.bargainUid = that.userInfo.uid + } + console.log(this) - // 获取商品详情 - that.getBargainDetail(); - // 砍价数据统计 - that.getBargainShare(0); - if (that.bargainUid !== that.userInfo.uid) { - that.getBargainStartUser(); - } - }, - // 发起砍价 - goParticipate() { - //发起人和当前用户为同一人 - if (this.bargainUid === this.userInfo.uid) { - // 变更为当前用户砍价页面 - this.getBargainStart(); - } else { - // 发起人与当前用户非同一人,变更为发起人的砍价页面 - this.getBargainStartUser(); - } - this.getBargainHelpCount(); - }, - // 查看商品 - openAlone: function() { - this.$yrouter.push({ - path: '/pages/shop/GoodsCon/index', - query: { - id: this.goodsDetail.productId - } - }); - }, - // 砍价完成,去支付 - goPay: function() { - var data = {}; - var that = this; - data.productId = that.goodsDetail.productId; - data.cartNum = that.goodsDetail.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 || err.response.data.message, - 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.bargainShare = res.data; - }); - }, - // 获取产品详情 - getBargainDetail: function() { - var that = this; - uni.showLoading({ - title: '加载中', - mask: true - }); - getBargainDetail(that.bargainId) - .then(res => { - uni.hideLoading(); - that.goodsDetail = res.data.bargain; - that.goodsDetail.description = that.goodsDetail.description.replace(/\<img/gi, '<img style="max-width:100%;height:auto;"'); - that.goodsDetail.rule = that.goodsDetail.rule.replace(/\<img/gi, '<img style="max-width:100%;height:auto;"'); - that.goodsDetail.stopTime = that.goodsDetail.stopTime / 1000; - that.getBargainHelpCount(); - }) - .catch(res => { - uni.hideLoading(); - uni.showToast({ - title: res.msg, - icon: 'none', - duration: 2000 - }); - }); - }, - // 开启砍价-发起人与当前用户非同一人 - getBargainStart: function() { - var that = this; - getBargainStart({ - bargainId: that.bargainId - }) - .then(() => { - that.bargainUid = that.userInfo.uid; - that.getBargainHelp(); - that.getBargainHelpCount(); - }) - .catch(res => { - uni.showToast({ - title: res.msg, - icon: 'none', - duration: 2000 - }); - }); - }, - // 参与砍价 - getBargainHelp: function() { - var that = this; - if (this.bargainHelpCount.price === 0 && that.bargainUid !== that.userInfo.uid) { - return uni.showToast({ - title: '好友已经砍价成功', - icon: 'success', - duration: 2000 - }); - } - var data = { - bargainId: that.bargainId, - bargainUserUid: that.bargainUid - }; - getBargainHelp(data) - .then(res => { - that.activeMsg = res.data.status; - if (res.data.status === 'SUCCESSFUL' && that.bargainUid !== 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.bargainUid - }) - .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.helpListStatus === true) return; - getBargainHelpList({ - bargainId: that.bargainId, - bargainUserUid: that.bargainUid, - page: that.page, - limit: that.limit - }) - .then(res => { - that.helpListStatus = res.data.length < that.limit; - that.page++; - if (res.data) { - that.bargainHelpList.push.apply(that.bargainHelpList, res.data); - } - }) - .catch(err => { - if (!err.msg) { - return; - } - uni.showToast({ - title: err.msg || err.response.data.msg || err.response.data.message, - icon: 'none', - duration: 2000 - }); - }); - }, - // 砍价 砍价帮总人数、剩余金额、进度条、已经砍掉的价格 - getBargainHelpCount: function() { - getBargainHelpCount({ - bargainId: this.bargainId, - bargainUserUid: this.bargainUid - }) - .then(res => { - // 剩余砍价金额,显示已砍至¥** 使用 = 商品价格 - 已经砍掉的金额 - let remainingPrice = (this.goodsDetail.price - res.data.alreadyPrice).toFixed(2); - this.bargainHelpCount = { - ...res.data, - remainingPrice - }; - this.handleButtonStatus(); - }) - .catch(err => { - if (!err.msg) { - return; - } - uni.showToast({ - title: err.msg || err.response.data.msg || err.response.data.message, - icon: 'none', - duration: 2000 - }); - }); - }, - // 判断是否可以支付 - handleButtonStatus() { - // 砍价按钮分为 - // 1.参与砍价 ==> 发起人与当前用户为同一人 && 未参与 - if (this.bargainUid === this.userInfo.uid && this.bargainHelpCount.status == 0) { - this.participate = true; - } else { - this.participate = false; - } + // 获取商品详情 + that.getBargainDetail() + // 砍价数据统计 + that.getBargainShare(0) + if (that.bargainUid !== that.userInfo.uid) { + that.getBargainStartUser() + } + }, + // 发起砍价 + goParticipate() { + //发起人和当前用户为同一人 + if (this.bargainUid === this.userInfo.uid) { + // 变更为当前用户砍价页面 + this.getBargainStart() + } else { + // 发起人与当前用户非同一人,变更为发起人的砍价页面 + this.getBargainStartUser() + } + this.getBargainHelpCount() + }, + // 查看商品 + openAlone: function() { + this.$yrouter.push({ + path: '/pages/shop/GoodsCon/index', + query: { + id: this.goodsDetail.productId, + }, + }) + }, + // 砍价完成,去支付 + goPay: function() { + var data = {} + var that = this + data.productId = that.goodsDetail.productId + data.cartNum = that.goodsDetail.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 || err.response.data.message, + 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.bargainShare = res.data + }) + }, + // 获取产品详情 + getBargainDetail: function() { + var that = this + uni.showLoading({ + title: '加载中', + mask: true, + }) + getBargainDetail(that.bargainId) + .then(res => { + uni.hideLoading() + that.goodsDetail = res.data.bargain + that.goodsDetail.description = that.goodsDetail.description.replace(/\<img/gi, '<img style="max-width:100%;height:auto;"') + that.goodsDetail.rule = that.goodsDetail.rule.replace(/\<img/gi, '<img style="max-width:100%;height:auto;"') + that.goodsDetail.stopTime = that.goodsDetail.stopTime / 1000 + that.getBargainHelpCount() + }) + .catch(res => { + uni.hideLoading() + uni.showToast({ + title: res.msg, + icon: 'none', + duration: 2000, + }) + }) + }, + // 开启砍价-发起人与当前用户非同一人 + getBargainStart: function() { + var that = this + getBargainStart({ + bargainId: that.bargainId, + }) + .then(() => { + that.bargainUid = that.userInfo.uid + that.getBargainHelp() + that.getBargainHelpCount() + }) + .catch(res => { + uni.showToast({ + title: res.msg, + icon: 'none', + duration: 2000, + }) + }) + }, + // 参与砍价 + getBargainHelp: function() { + var that = this + if (this.bargainHelpCount.price === 0 && that.bargainUid !== that.userInfo.uid) { + return uni.showToast({ + title: '好友已经砍价成功', + icon: 'success', + duration: 2000, + }) + } + var data = { + bargainId: that.bargainId, + bargainUserUid: that.bargainUid, + } + getBargainHelp(data) + .then(res => { + that.activeMsg = res.data.status + if (res.data.status === 'SUCCESSFUL' && that.bargainUid !== 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.bargainUid, + }) + .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.helpListStatus === true) return + getBargainHelpList({ + bargainId: that.bargainId, + bargainUserUid: that.bargainUid, + page: that.page, + limit: that.limit, + }) + .then(res => { + that.helpListStatus = res.data.length < that.limit + if (that.page == 1) { + that.bargainHelpList = [] + } + that.page++ + if (res.data) { + that.bargainHelpList.push.apply(that.bargainHelpList, res.data) + } + }) + .catch(err => { + if (!err.msg) { + return + } + uni.showToast({ + title: err.msg || err.response.data.msg || err.response.data.message, + icon: 'none', + duration: 2000, + }) + }) + }, + // 砍价 砍价帮总人数、剩余金额、进度条、已经砍掉的价格 + getBargainHelpCount: function() { + getBargainHelpCount({ + bargainId: this.bargainId, + bargainUserUid: this.bargainUid, + }) + .then(res => { + // 剩余砍价金额,显示已砍至¥** 使用 = 商品价格 - 已经砍掉的金额 + let remainingPrice = (this.goodsDetail.price - res.data.alreadyPrice).toFixed(2) + this.bargainHelpCount = { + ...res.data, + remainingPrice, + } + this.handleButtonStatus() + }) + .catch(err => { + if (!err.msg) { + return + } + uni.showToast({ + title: err.msg || err.response.data.msg || err.response.data.message, + icon: 'none', + duration: 2000, + }) + }) + }, + // 判断是否可以支付 + handleButtonStatus() { + // 砍价按钮分为 + // 1.参与砍价 ==> 发起人与当前用户为同一人 && 未参与 + if (this.bargainUid === this.userInfo.uid && this.bargainHelpCount.status == 0) { + this.participate = true + } else { + this.participate = false + } - // 2.邀请好友 ==> 发起人与当前用户同一人 && 已参与未过期 && 剩余金额>0 - if (this.bargainUid === this.userInfo.uid && this.bargainHelpCount.status == 1 && this.bargainHelpCount.price > 0) { - this.inviteFriends = true; - } else { - this.inviteFriends = false; - } + // 2.邀请好友 ==> 发起人与当前用户同一人 && 已参与未过期 && 剩余金额>0 + if (this.bargainUid === this.userInfo.uid && this.bargainHelpCount.status == 1 && this.bargainHelpCount.price > 0) { + this.inviteFriends = true + } else { + this.inviteFriends = false + } - // 3.帮好友砍价 ==> 发起人与当前用户非一人 && 未参与未过期 && 剩余金额>0 && 为砍价 - if ( - this.bargainUid != this.userInfo.uid && - this.bargainHelpCount.status == 1 && - // this.bargainHelpCount.userBargainStatus && - this.bargainHelpCount.price > 0 - ) { - this.helpFriendsBargain = true; - } else { - this.helpFriendsBargain = false; - } + // 3.帮好友砍价 ==> 发起人与当前用户非一人 && 未参与未过期 && 剩余金额>0 && 为砍价 + if ( + this.bargainUid != this.userInfo.uid && + this.bargainHelpCount.status == 1 && + // this.bargainHelpCount.userBargainStatus && + this.bargainHelpCount.price > 0 + ) { + this.helpFriendsBargain = true + } else { + this.helpFriendsBargain = false + } - // 4.支付 ==> 发起人与当前用户同一人 && 已参与未过期 && 剩余金额<=0 - if (this.bargainUid === this.userInfo.uid && this.bargainHelpCount.status == 1 && this.bargainHelpCount.price <= 0) { - this.pay = true; - } else { - this.pay = false; - } + // 4.支付 ==> 发起人与当前用户同一人 && 已参与未过期 && 剩余金额<=0 + if (this.bargainUid === this.userInfo.uid && this.bargainHelpCount.status == 1 && this.bargainHelpCount.price <= 0) { + this.pay = true + } else { + this.pay = false + } - // 5.砍价人发起新的砍价 ==> 发起人与当前用户非一人 && 未参与 - if (this.bargainUid != this.userInfo.uid) { - this.bargain = true; - } else { - this.bargain = false; - } + // 5.砍价人发起新的砍价 ==> 发起人与当前用户非一人 && 未参与 + if (this.bargainUid != this.userInfo.uid) { + this.bargain = true + } else { + this.bargain = false + } - // 砍价弹窗 - // 1.发起人砍价成功 ==> 发起人与当前用户同一人 && 已参与未过期 - // 2.砍价人砍价成功 ==> 发起人与当前用户非一人 && 已参与未过期 - // 3.已砍价 ==> 已参与 && 砍价状态为 true - }, - // 获取开启砍价用户信息 - // 参与砍价,为同一人发起砍价后 - getBargainStartUser: function() { - var that = this; - getBargainStartUser({ - bargainId: that.bargainId, - bargainUserUid: that.bargainUid - }) - .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: function() { - return { - title: this.storeInfo.title, - imageUrl: this.storeInfo.image, - path: 'pages/activity/DargainDetails/index?id=' + this.storeInfo.id + '&spread=' + uni.getStorageSync('uid'), - success(res) { - uni.showToast({ - title: '分享成功' - }); - }, - fail(res) { - uni.showToast({ - title: '分享失败', - icon: 'none' - }); - } - }; - } - }, - onShareAppMessage() { - return { - path: `/pages/activity/DargainDetails/index/?id=${this.$yroute.query.id}&partake=${this.userInfo.uid}` - }; - } -}; + // 砍价弹窗 + // 1.发起人砍价成功 ==> 发起人与当前用户同一人 && 已参与未过期 + // 2.砍价人砍价成功 ==> 发起人与当前用户非一人 && 已参与未过期 + // 3.已砍价 ==> 已参与 && 砍价状态为 true + }, + // 获取开启砍价用户信息 + // 参与砍价,为同一人发起砍价后 + getBargainStartUser: function() { + var that = this + getBargainStartUser({ + bargainId: that.bargainId, + bargainUserUid: that.bargainUid, + }) + .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: function() { + return { + title: this.storeInfo.title, + imageUrl: this.storeInfo.image, + path: 'pages/activity/DargainDetails/index?id=' + this.storeInfo.id + '&spread=' + uni.getStorageSync('uid'), + success(res) { + uni.showToast({ + title: '分享成功', + }) + }, + fail(res) { + uni.showToast({ + title: '分享失败', + icon: 'none', + }) + }, + } + }, + }, + onShareAppMessage() { + return { + path: `/pages/activity/DargainDetails/index/?id=${this.$yroute.query.id}&partake=${this.userInfo.uid}`, + } + }, +} </script> <style lang="less"> .bargain { - &.on { - .bargain-box { - background: #fff; - width: auto; - margin: 0 20rpx; - border: 0; - } + &.on { + .bargain-box { + background: #fff; + width: auto; + margin: 0 20rpx; + border: 0; + } - .header { - height: auto; - text-align: left; + .header { + height: auto; + text-align: left; - .time { - text-align: left; - font-size: 24rpx; + .time { + text-align: left; + font-size: 24rpx; - margin: 0; - padding: 0; - padding: 20rpx; - width: auto; - height: auto; - } - } - } + margin: 0; + padding: 0; + padding: 20rpx; + width: auto; + height: auto; + } + } + } } page { - background-color: #f5f5f5 !important; + background-color: #f5f5f5 !important; } .bargainBnt_hui { - font-size: 0.3 * 100rpx; - font-weight: bold; - color: #fff; - width: 6 * 100rpx; - height: 0.8 * 100rpx; - border-radius: 0.4 * 100rpx; - background: #bbb; - text-align: center; - line-height: 0.8 * 100rpx; - margin-top: 0.32 * 100rpx; + font-size: 0.3 * 100rpx; + font-weight: bold; + color: #fff; + width: 6 * 100rpx; + height: 0.8 * 100rpx; + border-radius: 0.4 * 100rpx; + background: #bbb; + text-align: center; + line-height: 0.8 * 100rpx; + margin-top: 0.32 * 100rpx; } .bargain_view { - left: 0; - right: 0; - height: 0.48 * 100rpx; - background: rgba(0, 0, 0, 0.5); - opacity: 1; - border-radius: 0 0 0.06 * 100rpx 0.06 * 100rpx; - position: absolute; - bottom: 0; - font-size: 0.22 * 100rpx; - color: #fff; - text-align: center; - line-height: 0.48 * 100rpx; + left: 0; + right: 0; + height: 0.48 * 100rpx; + background: rgba(0, 0, 0, 0.5); + opacity: 1; + border-radius: 0 0 0.06 * 100rpx 0.06 * 100rpx; + position: absolute; + bottom: 0; + font-size: 0.22 * 100rpx; + color: #fff; + text-align: center; + line-height: 0.48 * 100rpx; } .iconfonts { - font-size: 0.22 * 100rpx; + font-size: 0.22 * 100rpx; } </style> diff --git a/pages/activity/GoodsGroup/index.vue b/pages/activity/GoodsGroup/index.vue index 930b04e..dac8abb 100644 --- a/pages/activity/GoodsGroup/index.vue +++ b/pages/activity/GoodsGroup/index.vue @@ -2,7 +2,7 @@ <view class="page_box"> <view class="content_box"> <scroll-view class="scroll-box" scroll-y enable-back-to-top scroll-with-animation @scrolltolower="loadMore"> - <view class="group-wrap" :style="`background: url('${$VUE_APP_RESOURCES_URL}/images/index-bg.png') no-repeat;`"> + <view class="group-wrap" :style="{ background: background }"> <view class="group-head x-bc"> <text class="group-head__title">爆款拼团</text> <text class="group-head__notice">省钱省心限时拼</text> @@ -63,7 +63,11 @@ export default { this.getGrouponList() }, onPullDownRefresh() {}, - computed: {}, + computed: { + background() { + return `url('${this.$VUE_APP_RESOURCES_URL}/images/index-bg.png') no-repeat` + }, + }, methods: { // 路由跳转 jump(path, parmas) { diff --git a/pages/user/ChangePassword/index.vue b/pages/user/ChangePassword/index.vue index 3d6b517..e5c0a2d 100644 --- a/pages/user/ChangePassword/index.vue +++ b/pages/user/ChangePassword/index.vue @@ -13,12 +13,7 @@ </view> <view class="item acea-row row-between-wrapper"> <input type="text" placeholder="填写验证码" class="codeIput" v-model="captcha" /> - <button - class="code font-color-red" - :disabled="disabled" - :class="disabled === true ? 'on' : ''" - @click="code" - >{{ text }}</button> + <button class="code font-color-red" :disabled="disabled" :class="disabled === true ? 'on' : ''" @click="code">{{ text }}</button> </view> </view> <view class="confirmBnt bg-color-red" @click="confirm">确认修改</view> @@ -26,124 +21,115 @@ </template> <style scoped lang="less"> .ChangePassword .phone input { - width: 2*100rpx; + width: 2 * 100rpx; text-align: center; } </style> <script> // import { mapGetters } from "vuex"; -import sendVerifyCode from "@/mixins/SendVerifyCode"; -import attrs, { required, alpha_num, chs_phone } from "@/utils/validate"; -import { validatorDefaultCatch } from "@/utils/dialog"; -import { registerReset, registerVerify, getUserInfo } from "@/api/user"; +import sendVerifyCode from '@/mixins/SendVerifyCode' +import attrs, { required, alpha_num, chs_phone } from '@/utils/validate' +import { validatorDefaultCatch } from '@/utils/dialog' +import { registerReset, registerVerify, getUserInfo } from '@/api/user' export default { - name: "ChangePassword", + name: 'ChangePassword', components: {}, props: {}, data: function() { return { - password: "", - password2: "", - captcha: "", - phone: "", //隐藏几位数的手机号; - yphone: "" //手机号; - }; + password: '', + password2: '', + captcha: '', + phone: '', //隐藏几位数的手机号; + yphone: '', //手机号; + } }, mixins: [sendVerifyCode], // computed: mapGetters(["userInfo"]), mounted: function() { - this.getUserInfo(); + this.getUserInfo() }, methods: { getUserInfo: function() { - let that = this; + let that = this getUserInfo().then(res => { - that.yphone = res.data.phone; - let reg = /^(\d{3})\d*(\d{4})$/; - that.phone = that.yphone.replace(reg, "$1****$2"); - }); + that.yphone = res.data.phone + let reg = /^(\d{3})\d*(\d{4})$/ + that.phone = that.yphone.replace(reg, '$1****$2') + }) }, async confirm() { - let that = this; - const { password, password2, captcha } = that; + let that = this + const { password, password2, captcha } = that try { await that .$validator({ - password: [ - required(required.message("密码")), - attrs.range([6, 16], attrs.range.message("密码")), - alpha_num(alpha_num.message("密码")) - ], - captcha: [ - required(required.message("验证码")), - alpha_num(alpha_num.message("验证码")) - ] + password: [required(required.message('密码')), attrs.range([6, 16], attrs.range.message('密码')), alpha_num(alpha_num.message('密码'))], + captcha: [required(required.message('验证码')), alpha_num(alpha_num.message('验证码'))], }) - .validate({ password, captcha }); + .validate({ password, captcha }) } catch (e) { - return validatorDefaultCatch(e); + return validatorDefaultCatch(e) } - if (password !== password2) return uni.showToast({ - title: '两次密码不一致', - icon: "none", - duration: 2000 - }); + if (password !== password2) + return uni.showToast({ + title: '两次密码不一致', + icon: 'none', + duration: 2000, + }) registerReset({ account: that.yphone, captcha: that.captcha, - password: that.password + password: that.password, }) .then(res => { uni.showToast({ title: res.msg, - icon: "none", - duration: 2000 - }); + icon: 'none', + duration: 2000, + }) // that.$yrouter.push({ path: "/pages/user/Login/index" }); }) .catch(res => { - uni.showToast({ - title: res.msg, - icon: "none", - duration: 2000 - }); - }); + uni.showToast({ + title: res.msg, + icon: 'none', + duration: 2000, + }) + }) }, async code() { - let that = this; - const { yphone } = that; + let that = this + const { yphone } = that try { await that .$validator({ - yphone: [ - required(required.message("手机号码")), - chs_phone(chs_phone.message()) - ] + yphone: [required(required.message('手机号码')), chs_phone(chs_phone.message())], }) - .validate({ yphone }); + .validate({ yphone }) } catch (e) { - return validatorDefaultCatch(e); + return validatorDefaultCatch(e) } registerVerify({ phone: yphone }) .then(res => { uni.showToast({ title: res.msg, - icon: "none", - duration: 2000 - }); - that.sendCode(); + icon: 'none', + duration: 2000, + }) + that.sendCode() }) .catch(res => { - uni.showToast({ - title: res.msg, - icon: "none", - duration: 2000 - }); - }); - } - } -}; + uni.showToast({ + title: res.msg, + icon: 'none', + duration: 2000, + }) + }) + }, + }, +} </script> diff --git a/pages/user/User/index.vue b/pages/user/User/index.vue index e85563f..5d5e077 100644 --- a/pages/user/User/index.vue +++ b/pages/user/User/index.vue @@ -128,7 +128,7 @@ </template> <script> import { mapState, mapGetters, mapMutations, mapActions } from 'vuex' -import { getUserInfo, getMenuUser, bindingPhone } from '@/api/user' +import { getUserInfo, getMenuUser, bindingPhone, wxappBindingPhone } from '@/api/user' import { isWeixin, VUE_APP_RESOURCES_URL } from '@/utils' import cookie from '@/utils/store/cookie' import SwitchWindow from '@/components/SwitchWindow'