<template> <view class="group-con"> <view class="tui-goods-item" v-if="storeCombination"> <image :src="storeCombination.image" class="tui-goods-img"></image> <view class="tui-goods-center"> <view class="tui-goods-name">{{ storeCombination.title }}</view> <view class="tui-price__box"> <view class="tui-goods-price"> <view class="tui-size-24">¥</view> <view class="tui-price-large">{{ storeCombination.price.split('.')[0] }}</view> <view class="tui-size-24">.{{ storeCombination.price.split('.')[1] }}</view> <!-- <text>已拼2020件</text> --> </view> <view class="tui-price-tag">{{ storeCombination.people }}人团</view> </view> </view> </view> <view class="tui-group__box tui-mtop__20"> <tui-divider backgroundColor="#fff" width="70%" gradual> <view class="tui-divider__content"> <text v-if="pinkBool == 0">进行中</text> <text v-if="pinkBool == 1">拼团成功</text> <text v-if="pinkBool == -1">拼团失败</text> </view> </tui-divider> <view class="tui-group__title" v-if="pinkBool == 0"> <text>还差</text> <text class="tui-color__red">{{ count }}</text> <text>人,赶快邀请好友来拼团吧</text> </view> <view class="tui-group-countdown" v-if="pinkBool == 0"> <view class="tui-countdown-right">剩余</view> <count-down :isDay="true" :tipText="'倒计时 '" :dayText="' 天 '" :hourText="' 时 '" :minuteText="' 分 '" :secondText="' 秒'" :datatime="pinkT.stopTime"></count-down> <view class="tui-countdown-left">结束</view> </view> <view class="tui-user__box"> <view class="tui-user__item"> <view class="tui-avatar__box tui-size"> <image class="tui-size" :src="pinkT.avatar"></image> <view class="tui-team__leader">团长</view> </view> <!-- <view class="tui-nickname">不许人间见白头</view> --> </view> <view class="tui-user__item" v-for="(item, index) in Array(storeCombination.people-1)" :key="index"> <view class="tui-avatar__box tui-size" v-if="pinkAll[index]"><image class="tui-size" :src="pinkAll[index].avatar"></image></view> <view class="tui-avatar__box tui-user__none" v-else><image class="tui-size" :src="`${$VUE_APP_RESOURCES_URL}/images/vacancy.png`"></image></view> <!-- <view class="tui-nickname">小可爱本人</view> --> </view> </view> <view class="tui-btn__box"> <tui-button type="danger" height="88rpx" shadow shape="circle" v-if="userBool === 1 && isOk == 0 && pinkBool === 0" @click="goPoster">邀请好友参团</tui-button> <tui-button type="warning" height="88rpx" shadow shape="circle" v-else-if="userBool === 0 && pinkBool === 0 && count > 0" @click="pay">我要参团</tui-button> <tui-button type="danger" height="88rpx" shadow shape="circle" v-if="pinkBool === 1 || pinkBool === -1" @click="goDetail(storeCombination.id)">再次开团</tui-button> <tui-button type="warning" height="88rpx" shadow shape="circle" @click="getCombinationRemove" v-if="userBool === 1 && pinkBool === 0">取消开团</tui-button> <tui-button type="danger" height="88rpx" shadow shape="circle" v-if="pinkBool === 1" @click="goOrder">查看订单信息</tui-button> </view> </view> </view> </template> <script> import CountDown from '@/components/CountDown' import { getCombinationPink, getCombinationRemove } from '@/api/activity' import { postCartAdd } from '@/api/store' import { isWeixin, parseQuery, handleQrCode } from '@/utils/index' const NAME = 'GroupRule' export default { name: NAME, components: { CountDown, }, props: {}, data: function() { return { currentPinkOrder: '', //当前拼团订单 isOk: 0, //判断拼团是否完成 pinkBool: 0, //判断拼团是否成功|0=失败,1=成功 userBool: 0, //判断当前用户是否在团内|0=未在,1=在 pinkAll: [], //团员 pinkT: {}, //团长信息 storeCombination: {}, //拼团产品 pinkId: 0, uniqueId: '', count: 0, //拼团剩余人数 iShidden: false, userInfo: {}, } }, watch: { $yroute(n) { var that = this if (n.name === NAME) { that.pinkId = that.$yroute.query.id that.getCombinationPink() } }, }, mounted: function() { var that = this let url = handleQrCode() if (url) { that.pinkId = url.pinkId } else { that.pinkId = that.$yroute.query.id } that.getCombinationPink() }, methods: { pay: function() { var that = this var data = {} data.productId = that.storeCombination.productId data.cartNum = that.pinkT.totalNum data.uniqueId = that.uniqueId data.combinationId = that.storeCombination.id data.new = 1 postCartAdd(data) .then(res => { that.$yrouter.push({ path: '/pages/order/OrderSubmission/index', query: { id: res.data.cartId, pinkid: that.pinkId, }, }) }) .catch(err => { uni.showToast({ title: err.msg || err.response.data.msg || err.response.data.message, icon: 'none', duration: 2000, }) }) }, goPoster: function() { var that = this this.$yrouter.push({ path: '/pages/activity/Poster/index', query: { id: that.pinkId, type: 1, }, }) }, goOrder: function() { var that = this this.$yrouter.push({ path: '/pages/order/OrderDetails/index', query: { id: that.currentPinkOrder, }, }) }, //拼团列表 goList: function() { this.$yrouter.push({ path: '/pages/activity/GoodsGroup/index', }) }, //拼团详情 goDetail: function(id) { this.$yrouter.push({ path: '/pages/activity/GroupDetails/index', query: { id, }, }) }, //拼团信息 getCombinationPink: function() { var that = this getCombinationPink(that.pinkId).then(res => { that.$set(that, 'storeCombination', res.data.storeCombination) that.$set(that, 'pinkT', res.data.pinkT) that.$set(that, 'pinkAll', res.data.pinkAll) that.$set(that, 'count', res.data.count) that.$set(that, 'userBool', res.data.userBool) that.$set(that, 'pinkBool', res.data.pinkBool) that.$set(that, 'isOk', res.data.isOk) that.$set(that, 'currentPinkOrder', res.data.currentPinkOrder) that.$set(that, 'uniqueId', res.data.uniqueId) that.$set(that, 'userInfo', res.data.userInfo) }) }, //拼团取消 getCombinationRemove: function() { var that = this getCombinationRemove({ id: that.pinkId, cid: that.storeCombination.id, }) .then(res => { uni.showToast({ title: res.msg, icon: 'none', duration: 2000, }) }) .catch(res => { uni.showToast({ title: res.msg, icon: 'none', duration: 2000, }) }) }, lookAll: function() { this.iShidden = !this.iShidden }, }, } </script> <style lang="less"> .tips-warp { text-align: center; margin-top: 20rpx; } .tui-goods-item { width: 100%; padding: 20rpx 25rpx; box-sizing: border-box; display: flex; justify-content: space-between; background-color: #fff; } .tui-goods-img { width: 180rpx; height: 180rpx; display: block; flex-shrink: 0; } .tui-goods-center { flex: 1; padding: 12rpx 12rpx; box-sizing: border-box; display: flex; flex-direction: column; justify-content: space-between; } .tui-goods-name { word-break: break-all; overflow: hidden; text-overflow: ellipsis; display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; font-size: 26rpx; line-height: 32rpx; } .tui-price__box { width: 100%; display: flex; align-items: center; justify-content: space-between; } .tui-goods-price { width: 100%; display: flex; align-items: flex-end; font-size: 24rpx; color: #eb0909; } .tui-goods-price text { font-size: 24rpx; line-height: 24rpx; color: #999; padding-left: 20rpx; } .tui-size-24 { font-size: 24rpx; line-height: 24rpx; } .tui-price-large { font-size: 32rpx; line-height: 30rpx; font-weight: 500; } .tui-price-tag { height: 38rpx; border: 1rpx solid #eb0909; border-radius: 6rpx; display: flex; align-items: center; justify-content: center; font-size: 24rpx; line-height: 24rpx; transform: scale(0.8); transform-origin: 100% center; border-radius: 6rpx; padding: 0 8rpx; color: #eb0909; flex-shrink: 0; } .tui-mtop__20 { margin-top: 20rpx; } .tui-divider__content { display: flex; align-items: center; } .tui-divider__content image { width: 36rpx; height: 36rpx; margin-right: 20rpx; } .tui-divider__content text { font-size: 34rpx; line-height: 34rpx; color: #000000; font-weight: bold; } .tui-group__time { font-size: 24rpx; font-weight: 400; color: #999; text-align: center; } .tui-group__box { width: 100%; padding: 50rpx 25rpx; box-sizing: border-box; background-color: #fff; } .tui-group__title { width: 100%; font-size: 34rpx; line-height: 34rpx; font-weight: 500; text-align: center; } .tui-color__red { color: #eb0909; } .tui-group-countdown { display: flex; align-items: center; justify-content: center; font-size: 24rpx; color: #666666; padding-top: 20rpx; } .tui-countdown-right { padding-right: 6rpx; } .tui-countdown-left { padding-left: 6rpx; } .tui-user__box { width: 100%; display: flex; align-items: center; justify-content: center; padding-top: 60rpx; } .tui-user__item { max-width: 128rpx; margin: 0 40rpx; } .tui-size { width: 100rpx; height: 100rpx; border-radius: 50%; } .tui-avatar__box { position: relative; border: 4rpx solid #eb0909; } .tui-user__none { width: 108rpx; height: 108rpx; border: 0; } .tui-avatar__box image { display: block; width: 100%; height: 100%; } .tui-team__leader { position: absolute; width: 64rpx; height: 28rpx; font-size: 24rpx; background-color: #eb0909; color: #fff; display: flex; align-items: center; justify-content: center; border-radius: 30px; left: 50%; top: -14rpx; transform: translateX(-50%); z-index: 10; } .tui-nickname { font-size: 24rpx; color: #999; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; text-align: center; padding-top: 12rpx; } .tui-btn__box { padding-top: 60rpx; } .tni-cell { height: 20rpx; } .tui-group__text { width: 100%; display: flex; align-items: center; } .tui-group-title { font-size: 30rpx; line-height: 30rpx; padding-left: 16rpx; border-left: 2px solid #eb0909; box-sizing: border-box; } .tui-sub__info { font-size: 26rpx; padding-right: 30rpx; } .tui-group__start .tui-group-title { border-left: 0; padding-left: 0; } .tui-group__start .tui-sub__info { padding-right: 0; } .tui-step__box { width: 100%; height: 210rpx; background: #fff; padding: 0 60rpx; display: flex; align-items: center; justify-content: space-between; box-sizing: border-box; } .tui-step-item { display: flex; align-items: center; justify-content: center; flex-direction: column; font-size: 26rpx; color: #666666; } .tui-step-item image { width: 64rpx; height: 55rpx; flex-shrink: 0; } .tui-step-item image:first-child { width: 60rpx !important; } .tui-step-arrow { height: 90rpx; } .tui-step-arrow image { width: 11rpx; height: 20rpx; flex-shrink: 0; } .tui-step-text { line-height: 26rpx; padding-top: 24rpx; } .tui-between { justify-content: space-between; } .tui-btn__box .tui-btn { margin-bottom: 30rpx !important; } /*拼团玩法介绍 modal*/ .tui-modal__title { text-align: center; font-weight: bold; padding-bottom: 8rpx; } .tui-modal__p { font-size: 26rpx; color: #888; padding-top: 20rpx; } .tui-modal__btn { width: 100%; padding: 60rpx 0 20rpx; display: flex; justify-content: center; } .tui-hot__title { font-size: 30rpx; line-height: 30rpx; color: #333; font-weight: bold; } /*========商品 start======*/ .tui-product__box { width: 100%; padding: 0 25rpx 60rpx 25rpx; box-sizing: border-box; } .tui-product-list { display: flex; justify-content: space-between; flex-direction: row; flex-wrap: wrap; box-sizing: border-box; } .tui-product-container { flex: 1; margin-right: 10rpx; } .tui-product-container:last-child { margin-right: 0; } .tui-pro-item { width: 100%; margin-bottom: 10rpx; background: #fff; box-sizing: border-box; border-radius: 12rpx; overflow: hidden; transition: all 0.15s ease-in-out; } .tui-flex-list { display: flex; margin-bottom: 1rpx !important; } .tui-pro-img { width: 100%; display: block; flex-shrink: 0; background-color: #f5f5f5; } .tui-proimg-list { width: 280rpx; height: 280rpx !important; flex-shrink: 0; border-radius: 12rpx; } .tui-pro-content { flex: 1; display: flex; flex-direction: column; justify-content: space-between; box-sizing: border-box; padding: 20rpx; } .tui-pro-tit { color: #2e2e2e; font-size: 26rpx; word-break: break-all; overflow: hidden; text-overflow: ellipsis; display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; } .tui-price__box { width: 100%; display: flex; align-items: center; padding-top: 12rpx; } .tui-price { display: flex; align-items: flex-end; color: #eb0909; } .tui-price__small { font-size: 24rpx; line-height: 24rpx; } .tui-price__large { font-size: 34rpx; line-height: 32rpx; font-weight: 600; } .tui-price__original { font-size: 24rpx; line-height: 24rpx; text-decoration: line-through; color: #999; padding-top: 10rpx; padding-left: 12rpx; } .tui-group-btn { max-width: 312rpx; height: 48rpx; border-radius: 6rpx; background: #eb0909; display: flex; align-items: center; padding: 4rpx; margin-top: 10rpx; box-sizing: border-box; } .tui-flex-btn { height: 100%; flex: 1; text-align: center; font-size: 26rpx; line-height: 26rpx; font-weight: 400; color: #fff; display: flex; align-items: center; justify-content: center; } .tui-flex-btn:first-child { background: #fff; } .tui-group-text { font-size: 25rpx; line-height: 25rpx; transform: scale(0.8); transform-origin: 0 center; padding-top: 30rpx; color: #999; } .tui-color-red { color: #eb0909; } /*======商品======= end*/ </style>