| New file |
| | |
| | | <template> |
| | | <view> |
| | | <view :class="join?'page1':'page'"> |
| | | <image class="logo1" :src="bankCardStyle.logo"></image> |
| | | <view class="douyu-txt page-title">刷<text>{{info.bankCardName}}</text></view> |
| | | <view class="douyu-txt page-title">最高可得{{info.totalDiscount/100}}元礼包</view> |
| | | <view class="detils-title">刷{{info.bankCardName}},累积笔数获礼包 <navigator class="detail" |
| | | url="/pages/pay/shuaKa/introduce">详情 |
| | | </navigator> |
| | | </view> |
| | | <view v-if="join" class="step-box"> |
| | | <view class="step"> |
| | | <view class="step-title">本活动剩余<text>{{diffDay}}</text>天</view> |
| | | <scroll-view :scroll-into-view="`step-item-${current-1}`" class="step-item-box" |
| | | scroll-with-animation scroll-x> |
| | | <view :id="`step-item-${i}`" class="jmy-flex step-item" v-for="(item,i) in milepost" :key="i"> |
| | | <view @click="stepClick(i)" class="jmy-text-center"> |
| | | <image class="step-icon" |
| | | :src="item.lackBrushCount>0?'/static/shuaka/pay-by-card-step.png':'/static/shuaka/pay-by-card-step-act.png'"> |
| | | </image> |
| | | <view :class="['step-item-title',{'step-item-title-act':current==i}]"> |
| | | {{item.nodeName}} |
| | | </view> |
| | | </view> |
| | | <view v-if="item.lackBrushCount==0&&item.curt&&i<milepost.length-1" |
| | | class="step-line step-line-cur"></view> |
| | | <view v-else-if="item.lackBrushCount>0&&i<milepost.length-1" |
| | | class="step-line step-line-next"> |
| | | </view> |
| | | <view v-else-if="item.lackBrushCount==0&&i<milepost.length-1" class="step-line"></view> |
| | | </view> |
| | | </scroll-view> |
| | | </view> |
| | | <swiper @change="bindchange" next-margin="62rpx" style="height: calc(100vh - 600rpx);" :current="current"> |
| | | <swiper-item v-for="(post,i) in milepost" :key="i"> |
| | | <scroll-view scroll-y="true" style="height: calc(100% - 40rpx);"> |
| | | <view class="coupon-box"> |
| | | <view class="jmy-flex coupon-box-title"> |
| | | <image src="/static/shuaka/coupon-title-left.png"></image> |
| | | <view v-if="post.lackBrushCount==0">你已获得以下优惠券</view> |
| | | <view v-else> |
| | | <view v-if="post.nodeNumOfMin-post.lackBrushCount"> |
| | | 已刷{{post.nodeNumOfMin-post.lackBrushCount}}笔</view> |
| | | <view>再刷<text style="color: #D31F28;">{{post.lackBrushCount}}</text>笔可解锁以下优惠券 |
| | | </view> |
| | | </view> |
| | | |
| | | <image src="/static/shuaka/coupon-title-right.png"></image> |
| | | </view> |
| | | <view v-for="(item,i) in post.lackBrushCount==0?post.coupIdsMap:post.coupIds" :key="i" |
| | | :class="['coupon',post.lackBrushCount==0?'coupon-get':'coupon-lock' ]"> |
| | | <view class="num"> |
| | | <view> |
| | | <text class="unit">¥</text> |
| | | <text class="money">{{parseFloat(item.discount/100)}}</text> |
| | | </view> |
| | | <view class="condition"> |
| | | 满{{parseFloat((item.threshold_value||item.thresholdValue)/100)}}元使用 |
| | | </view> |
| | | </view> |
| | | <view class="info"> |
| | | <view class="title">{{item.name}}</view> |
| | | <view v-if="item.validityDay" class="validity"> |
| | | 有效期:领取后{{item.validityDay}}天</view> |
| | | <view v-else class="validity"> |
| | | 有效期至:{{$u.timeFormat(item.out_time||item.validityEndTime, 'yyyy-mm-dd hh:MM')}} |
| | | </view> |
| | | </view> |
| | | <image v-if="post.lackBrushCount!=0" class="lock-icon" |
| | | src="/static/shuaka/pay-by-card-lock.png" mode=""></image> |
| | | </view> |
| | | </view> |
| | | </scroll-view> |
| | | </swiper-item> |
| | | </swiper> |
| | | |
| | | <!-- <view @click="checkNotice" :class="['notice',{'check':notice}]">通知我参与活动进展</view> --> |
| | | </view> |
| | | <image v-else @click="joinActivity" class="btn" src="/static/shuaka/pay-by-card-btn.png"></image> |
| | | </view> |
| | | <u-popup :show="popup" @close="popup=false;getDto()" mode="center" bgColor="transparent"> |
| | | <view class="popup"> |
| | | <view class="popup-title">恭喜获得</view> |
| | | <view class="jmy-flex popup-sub-title"> |
| | | <image src="/static/shuaka/coupon-title-left.png"></image> |
| | | <view>已获<text>{{couponIds.length}}</text>张优惠券</view> |
| | | <image src="/static/shuaka/coupon-title-right.png"></image> |
| | | </view> |
| | | <scroll-view class="scroll-view" scroll-y> |
| | | <view v-for="(item,i) in couponIds" :key="i" class="coupon1"> |
| | | <view class="num"> |
| | | <view> |
| | | <text class="unit">¥</text> |
| | | <text class="money">{{parseFloat(item.discount/100)}}</text> |
| | | </view> |
| | | <view class="condition">满{{parseFloat(item.threshold_value/100)}}元使用</view> |
| | | </view> |
| | | <view class="info"> |
| | | <view class="title">{{item.name}}</view> |
| | | <view v-if="item.validityDay" class="validity"> |
| | | 有效期:领取后{{item.validityDay}}天</view> |
| | | <view v-else class="validity"> |
| | | 有效期至:{{$u.timeFormat(item.out_time||item.validityEndTime, 'yyyy-mm-dd hh:MM')}}</view> |
| | | </view> |
| | | </view> |
| | | </scroll-view> |
| | | <navigator class="popup-btn jmy-flex" url="/pages/myCard/myCard">查看卡包</navigator> |
| | | </view> |
| | | <image @click="popup=false;getDto()" class="popup-close" src="/static/shuaka/popup-close.png"></image> |
| | | </u-popup> |
| | | </view> |
| | | </template> |
| | | |
| | | <script> |
| | | import { |
| | | bankCardStyle, |
| | | } from '@/common/api/index' |
| | | import { |
| | | activityInfo, |
| | | signActivity, |
| | | myBrushDetail |
| | | } from '@/common/api/shuaka' |
| | | export default { |
| | | data() { |
| | | return { |
| | | brushCount: 0, |
| | | bankCardStyle: { |
| | | color: '', |
| | | logo: '' |
| | | }, //银行卡风格 |
| | | current: 0, |
| | | join: false, |
| | | notice: true, |
| | | popup: false, |
| | | couponList: [], |
| | | couponIds: [], |
| | | info: { |
| | | bankCardName: '', |
| | | totalDiscount: 0, |
| | | milepost: [] |
| | | }, |
| | | milepost: [], |
| | | diffDay: 0, |
| | | }; |
| | | }, |
| | | onLoad() { |
| | | //获取银行卡风格配置 |
| | | bankCardStyle().then(res => { |
| | | try { |
| | | res.logo = this.$utils.getGoodsImg(res.logo, '2') |
| | | } catch (e) { |
| | | //TODO handle the exception |
| | | res.logo = '' |
| | | } |
| | | this.bankCardStyle = res |
| | | // console.log(this.bankCardStyle); |
| | | }).catch(() => { |
| | | uni.hideLoading() |
| | | }) |
| | | /* 活动详情 */ |
| | | activityInfo().then(res => { |
| | | this.info = res |
| | | }) |
| | | this.getDto() |
| | | }, |
| | | methods: { |
| | | getDto() { |
| | | uni.showLoading() |
| | | /* 参与信息 */ |
| | | myBrushDetail().then(res => { |
| | | uni.hideLoading() |
| | | if (res) { |
| | | this.diffDay = this.$utils.getDiffDay(res.taskStartTime, res.taskEndTime) |
| | | this.join = true |
| | | this.brushCount = Number(res.brushCount) |
| | | res.milePost.map((item, i) => { |
| | | if (item.lackBrushCount == 0) { |
| | | this.current = i |
| | | } |
| | | }) |
| | | res.milePost[this.current].curt = true |
| | | if (res.milePost[this.current].lackBrushCount == 0) { |
| | | this.couponList = res.milePost[this.current].coupIdsMap |
| | | } else { |
| | | this.couponList = res.milePost[this.current].coupIds |
| | | } |
| | | |
| | | this.milepost = res.milePost |
| | | } |
| | | }).catch(() => { |
| | | uni.hideLoading() |
| | | }) |
| | | }, |
| | | stepClick(i) { |
| | | const cur = this.milepost[i] |
| | | if (cur.lackBrushCount == 0) { |
| | | this.couponList = cur.coupIdsMap |
| | | } else { |
| | | this.couponList = cur.coupIds |
| | | } |
| | | this.current = i |
| | | }, |
| | | bindchange({ |
| | | detail: { |
| | | current |
| | | } |
| | | }) { |
| | | this.current = current |
| | | }, |
| | | joinActivity() { |
| | | signActivity().then(res => { |
| | | if (res.isOk) { |
| | | if (this.couponIds) { |
| | | this.couponIds = res.couponIds |
| | | this.popup = true |
| | | } else { |
| | | this.join = true |
| | | uni.showToast({ |
| | | icon: 'success', |
| | | title: '参与成功' |
| | | }) |
| | | } |
| | | } else { |
| | | uni.showToast({ |
| | | icon: 'none', |
| | | title: res.reason |
| | | }) |
| | | } |
| | | }) |
| | | }, |
| | | checkNotice() { |
| | | this.notice = !this.notice |
| | | }, |
| | | closePopup() { |
| | | this.popup = !this.popup |
| | | }, |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | @font-face { |
| | | font-family: "DOUYU"; |
| | | src: url("https://zhkj.jinmingyuan.com:8443/sftpxcx/jrstq/font/DOUYU.ttf"); |
| | | } |
| | | |
| | | .jmy-flex { |
| | | display: flex; |
| | | align-items: center; |
| | | } |
| | | |
| | | .jmy-flex-nowrap { |
| | | flex-wrap: nowrap; |
| | | } |
| | | |
| | | .jmy-text-center { |
| | | text-align: center; |
| | | } |
| | | |
| | | |
| | | .douyu-txt { |
| | | font-family: "DOUYU"; |
| | | } |
| | | |
| | | .page { |
| | | min-height: 100vh; |
| | | background-image: url('~@/static/shuaka/pay-by-card-bg.png'); |
| | | background-position: center top; |
| | | background-color: #FDEDDE; |
| | | background-size: 100% auto; |
| | | background-repeat: no-repeat; |
| | | } |
| | | |
| | | .page1 { |
| | | min-height: 100vh; |
| | | background-image: url('~@/static/shuaka/pay-by-card-bg-top.png'); |
| | | background-position: center top; |
| | | background-color: #F8F9F9; |
| | | background-size: 100% auto; |
| | | background-repeat: no-repeat; |
| | | } |
| | | |
| | | .logo1 { |
| | | box-sizing: border-box; |
| | | padding: 10rpx; |
| | | width: 90rpx; |
| | | height: 90rpx; |
| | | background-color: #ffffff; |
| | | border-radius: 45rpx; |
| | | margin: 30rpx 30rpx 0; |
| | | } |
| | | |
| | | .page-title { |
| | | font-size: 60rpx; |
| | | font-weight: 400; |
| | | color: #6670E7; |
| | | text-align: center; |
| | | line-height: 1.3; |
| | | } |
| | | |
| | | .page-title text { |
| | | color: #FB5B4A; |
| | | } |
| | | |
| | | .detils-title { |
| | | width: 590rpx; |
| | | height: 65rpx; |
| | | line-height: 65rpx; |
| | | margin: 20rpx auto; |
| | | background-image: url('~@/static/shuaka/pay-by-card-dto-ttitle-bg.png'); |
| | | background-size: cover; |
| | | color: #6670E7; |
| | | font-size: 25rpx; |
| | | font-weight: 400; |
| | | text-align: center; |
| | | } |
| | | |
| | | .detail { |
| | | display: inline-block; |
| | | font-size: 28rpx; |
| | | color: #FB5B4A; |
| | | margin-left: 30rpx; |
| | | } |
| | | |
| | | .detail::after { |
| | | content: ''; |
| | | display: inline-block; |
| | | width: 10rpx; |
| | | height: 10rpx; |
| | | border-top: 1rpx solid #FB5B4A; |
| | | border-right: 1rpx solid #FB5B4A; |
| | | transform: rotate(45deg); |
| | | position: relative; |
| | | bottom: 4rpx; |
| | | } |
| | | |
| | | .demo { |
| | | display: block; |
| | | width: 683rpx; |
| | | height: 708rpx; |
| | | margin: auto; |
| | | } |
| | | |
| | | .btn { |
| | | position: fixed; |
| | | bottom: 30rpx; |
| | | bottom: calc(24rpx + constant(safe-area-inset-bottom)); |
| | | /* 兼容 iOS < 11.2 */ |
| | | bottom: calc(24rpx + env(safe-area-inset-bottom)); |
| | | /* 兼容 iOS >= 11.2 */ |
| | | left: 0; |
| | | width: 703rpx; |
| | | height: 137rpx; |
| | | } |
| | | |
| | | .step-box { |
| | | flex: 1; |
| | | background-color: #F8F9F9; |
| | | display: flex; |
| | | flex-direction: column; |
| | | } |
| | | |
| | | .step { |
| | | background-color: #ffffff; |
| | | } |
| | | |
| | | .step-title { |
| | | font-size: 28rpx; |
| | | color: #7B4324; |
| | | font-weight: 500; |
| | | text-align: center; |
| | | padding: 20rpx; |
| | | } |
| | | |
| | | .step-title text { |
| | | color: #D31F28; |
| | | font-weight: 700; |
| | | } |
| | | |
| | | .step-icon { |
| | | width: 70rpx; |
| | | height: 70rpx; |
| | | } |
| | | |
| | | .step-item-title { |
| | | font-size: 22rpx; |
| | | font-weight: 400; |
| | | color: #7B4324; |
| | | } |
| | | |
| | | .step-item-title-act { |
| | | color: #FB5B4A; |
| | | } |
| | | |
| | | .step-line { |
| | | background-image: linear-gradient(to right, #FFA91E 0, #FFA91E 100%); |
| | | width: 117rpx; |
| | | height: 4rpx; |
| | | border-radius: 2rpx; |
| | | position: relative; |
| | | top: -20rpx; |
| | | } |
| | | |
| | | .step-line-cur { |
| | | background-image: linear-gradient(to right, #FFA91E 0, #FFA91E 50%, #EFEFEF 51%, #EFEFEF 100%); |
| | | } |
| | | |
| | | .step-line-next { |
| | | background-image: linear-gradient(to right, #EFEFEF 0, #EFEFEF 100%); |
| | | } |
| | | |
| | | .step-item-box { |
| | | background-color: #ffffff; |
| | | white-space: nowrap; |
| | | } |
| | | |
| | | .step-item { |
| | | display: inline-flex; |
| | | padding-bottom: 20rpx; |
| | | } |
| | | |
| | | .step-item-box .step-item:first-child { |
| | | padding-left: 40rpx; |
| | | } |
| | | |
| | | .step-item-box .step-item:last-child { |
| | | padding-right: 40rpx; |
| | | } |
| | | |
| | | .coupon-box { |
| | | width: 652rpx; |
| | | margin: 32rpx; |
| | | border-radius: 10rpx; |
| | | border: 1rpx solid rgba(255, 177, 166, 1); |
| | | background: linear-gradient(180.4deg, rgba(255, 255, 255, 1) 0%, rgba(255, 253, 249, 1) 100%); |
| | | } |
| | | |
| | | .coupon-box-title { |
| | | justify-content: center; |
| | | text-align: center; |
| | | margin: 20rpx; |
| | | font-size: 28rpx; |
| | | font-weight: 400; |
| | | color: #333; |
| | | } |
| | | |
| | | .coupon-box-title image { |
| | | width: 132rpx; |
| | | height: 21rpx; |
| | | } |
| | | |
| | | .coupon-box-title text { |
| | | font-size: 28rpx; |
| | | font-weight: 400; |
| | | color: #333; |
| | | margin: 0 10rpx; |
| | | } |
| | | |
| | | .coupon { |
| | | width: 598rpx; |
| | | height: 180rpx; |
| | | background-size: cover; |
| | | margin: 20rpx auto; |
| | | display: flex; |
| | | align-items: center; |
| | | } |
| | | |
| | | .lock-icon { |
| | | width: 58rpx; |
| | | height: 58rpx; |
| | | margin-left: 15rpx; |
| | | } |
| | | |
| | | .coupon-get { |
| | | background-image: url('~@/static/shuaka/pay-by-card-coupon-get.png'); |
| | | } |
| | | |
| | | .coupon-lock { |
| | | background-image: url('~@/static/shuaka/pay-by-card-coupon-lock.png'); |
| | | } |
| | | |
| | | .num { |
| | | color: #D31F28; |
| | | width: 150rpx; |
| | | text-align: center; |
| | | display: flex; |
| | | flex-direction: column; |
| | | justify-content: center; |
| | | } |
| | | |
| | | .coupon-lock .num { |
| | | color: #CBCBCB; |
| | | } |
| | | |
| | | .unit { |
| | | font-size: 36rpx; |
| | | font-weight: 900; |
| | | } |
| | | |
| | | .money { |
| | | line-height: 1; |
| | | font-size: 64rpx; |
| | | font-weight: 900; |
| | | } |
| | | |
| | | .condition { |
| | | font-size: 20rpx; |
| | | font-weight: 400; |
| | | } |
| | | |
| | | .info { |
| | | width: 360rpx; |
| | | display: flex; |
| | | flex-direction: column; |
| | | justify-content: center; |
| | | padding: 0 10rpx; |
| | | } |
| | | |
| | | .title { |
| | | font-size: 26rpx; |
| | | font-weight: 400; |
| | | color: #333; |
| | | overflow: hidden; |
| | | text-overflow: ellipsis; |
| | | /* white-space:nowrap; */ |
| | | display: -webkit-box; |
| | | -webkit-line-clamp: 2; |
| | | -webkit-box-orient: vertical; |
| | | } |
| | | |
| | | .coupon-lock .title { |
| | | opacity: 0.33; |
| | | } |
| | | |
| | | .validity { |
| | | margin-top: 15rpx; |
| | | font-size: 20rpx; |
| | | font-weight: 400; |
| | | color: #999; |
| | | } |
| | | |
| | | .coupon-lock .validity { |
| | | opacity: 0.33; |
| | | } |
| | | |
| | | .notice { |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | font-size: 24rpx; |
| | | line-height: 1; |
| | | font-weight: 400; |
| | | color: #333; |
| | | margin-bottom: 40rpx; |
| | | } |
| | | |
| | | .notice::before { |
| | | box-sizing: border-box; |
| | | display: inline-block; |
| | | content: ''; |
| | | margin-right: 10rpx; |
| | | width: 28rpx; |
| | | height: 28rpx; |
| | | border: 1px solid #999; |
| | | border-radius: 4rpx; |
| | | transition: all 0.3s; |
| | | } |
| | | |
| | | .notice.check::before { |
| | | border: none; |
| | | background-image: url('~@/static/shuaka/notice-check.png'); |
| | | background-size: cover; |
| | | transition: all 0.3s; |
| | | } |
| | | |
| | | |
| | | .popup { |
| | | box-sizing: border-box; |
| | | width: 632rpx; |
| | | height: 935rpx; |
| | | background-image: url('~@/static/shuaka/pay-by-card-modal-bg.png'); |
| | | background-size: cover; |
| | | padding: 210rpx 40rpx 20rpx; |
| | | } |
| | | |
| | | .popup-close { |
| | | display: block; |
| | | margin: 40rpx auto 0; |
| | | width: 64rpx; |
| | | height: 64rpx; |
| | | } |
| | | |
| | | .popup-title { |
| | | font-size: 42rpx; |
| | | font-weight: 700; |
| | | color: #F2281F; |
| | | text-align: center; |
| | | line-height: 1; |
| | | margin-top: 20rpx; |
| | | } |
| | | |
| | | .popup-sub-title { |
| | | justify-content: center; |
| | | margin: 20rpx 0 10rpx; |
| | | color: #B36C44; |
| | | font-size: 28rpx; |
| | | } |
| | | |
| | | .popup-sub-title view { |
| | | margin: 0 10rpx; |
| | | } |
| | | |
| | | .popup-sub-title text { |
| | | color: #D31F28; |
| | | } |
| | | |
| | | .popup-sub-title image { |
| | | width: 132rpx; |
| | | height: 21rpx; |
| | | } |
| | | |
| | | .popup-btn { |
| | | margin: 20rpx auto 0; |
| | | width: 478rpx; |
| | | height: 88rpx; |
| | | border-radius: 44rpx; |
| | | background-color: rgba(238, 68, 82, 1); |
| | | font-size: 36rpx; |
| | | font-weight: 500; |
| | | color: #fff; |
| | | justify-content: center; |
| | | } |
| | | |
| | | .scroll-view { |
| | | height: 435rpx; |
| | | } |
| | | |
| | | .coupon1 { |
| | | width: 508rpx; |
| | | height: 145rpx; |
| | | background-image: url('~@/static/shuaka/pay-by-card-coupon.png'); |
| | | background-size: cover; |
| | | margin: 20rpx auto; |
| | | display: flex; |
| | | align-items: center; |
| | | } |
| | | |
| | | .coupon1 .num { |
| | | height: 110rpx; |
| | | border-right: 1rpx dashed #FA969A; |
| | | } |
| | | |
| | | .coupon1 .unit { |
| | | font-size: 24rpx; |
| | | } |
| | | |
| | | .coupon1 .money { |
| | | font-size: 50rpx; |
| | | } |
| | | |
| | | .coupon1 .condition { |
| | | font-size: 20rpx; |
| | | } |
| | | |
| | | .coupon1 .title { |
| | | text-align: left; |
| | | font-size: 24rpx; |
| | | } |
| | | |
| | | .coupon1 .validity { |
| | | font-size: 20rpx; |
| | | } |
| | | </style> |