123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176 |
- <template>
- <view class="">
- <!-- 未领取,已领取 -->
- <view class="coupon-wrap" :style="gradientColor" :class="{ 'gray-wrap': state === 3 || state === 2 || couponData.status_code == 'cannot_get' }">
- <view class="coupon-item u-flex u-row-between">
- <view class="coupon-left u-flex-col ">
- <view class="sum-box">
- <text class="unit " :style="{ color: priceColor }">¥</text>
- <text class="sum " :style="{ color: priceColor }">{{ couponData.amount }}</text>
- <text class="sub " :style="{ color: priceColor }">{{ couponData.name }}</text>
- </view>
- <view class="notice " :style="{ color: color }">满{{ couponData.enough }}元可用</view>
- <view class="notice" :style="{ color: color }">
- 有效期:{{ $u.timeFormat(couponData.usetime.start, 'yyyy-mm-dd') }} 至 {{ $u.timeFormat(couponData.usetime.end, 'yyyy-mm-dd') }}
- </view>
- </view>
- <view class="coupon-right u-flex-col">
- <button class="get-btn" :style="{ color: btnTextColor }" v-if="state === 0" @tap.stop="getCoupon">{{ stateMap[couponData.status_code] || '立即领取' }}</button>
- <button class="get-btn" :style="{ color: btnTextColor }" v-if="state === 1">去使用</button>
- <button class="get-btn" :style="{ color: btnTextColor }" v-if="state === 2">暂不可用</button>
- <button class="get-btn" v-if="state === 3">{{ stateMap[couponData.status_code] }}</button>
- <view class="surplus-num" :style="{ color: color }" v-if="state === 0">仅剩{{ stock }}张</view>
- </view>
- </view>
- </view>
- </view>
- </template>
- <script>
- /**
- * shoproCoupon-优惠券
- * @property {Number} state - 0:立即领取,1:去使用,2:查看详情,3:已失效。
- * @property {Object} couponData - 优惠劵数据。
- * @property {String} gradientColor - 渐变色。
- */
- export default {
- components: {},
- data() {
- return {
- stock: 0,
- stateMap: {
- can_use: '立即使用',
- used: '已使用',
- expired: '已失效',
- cannot_use: '暂不可用',
- can_get: '立即领取',
- cannot_get: '已领取'
- }
- };
- },
- props: {
- state: 0, //0:立即领取,1:去使用,2:查看详情,3:已失效。
- couponData: {},
- gradientColor: {
- type: String,
- default: ''
- },
- color: {
- type: String,
- default: ''
- },
- btnTextColor: {
- type: String,
- default: ''
- },
- priceColor: {
- type: String,
- default: ''
- }
- },
- computed: {},
- created() {
- this.$nextTick(() => {
- this.stock = this.couponData.stock;
- });
- },
- methods: {
- getCoupon() {
- let that = this;
- that.$http(
- 'coupons.get',
- {
- id: that.couponData.id
- },
- '领取中...'
- ).then(res => {
- if (res.code === 1) {
- that.stock -= 1;
- that.$u.toast('领取成功');
- }
- });
- }
- }
- };
- </script>
- <style lang="scss" scoped>
- // 失效
- .gray-wrap {
- -webkit-filter: grayscale(1); /* Webkit */
- filter: gray; /* IE6-9 */
- filter: grayscale(1); /* W3C */
- }
- // 未领取,已领取
- .coupon-wrap {
- mask: url($IMG_URL+'/imgs/coupon_bg1.png');
- -webkit-mask-box-image: url($IMG_URL+'/imgs/coupon_bg1.png');
- mask-size: 100% 100%;
- position: relative;
- border-radius: 10rpx;
- width: 710rpx;
- height: 170rpx;
- background: linear-gradient(to right, $u-type-warning-disabled, $u-type-warning);
- .coupon-item {
- width: 100%;
- height: 168rpx;
- border-radius: 10rpx;
- .coupon-left {
- height: 100%;
- justify-content: center;
- padding-left: 40rpx;
- .unit {
- font-size: 24rpx;
- color: #fff;
- }
- .sum {
- font-size: 55rpx;
- font-weight: bold;
- color: #fff;
- line-height: 55rpx;
- padding-right: 10rpx;
- }
- .sub {
- font-size: 26rpx;
- color: #fff;
- }
- .notice {
- font-size: 22rpx;
- color: rgba(#fff, 0.7);
- margin-top: 6rpx;
- }
- }
- .coupon-right {
- height: 100%;
- width: 220rpx;
- justify-content: center;
- align-items: center;
- .get-btn {
- width: 142rpx;
- height: 54rpx;
- background: #ffffff;
- border-radius: 27rpx;
- padding: 0;
- font-size: 24rpx;
- font-weight: 500;
- color: $u-type-warning;
- }
- .surplus-num {
- font-size: 22rpx;
- font-weight: 500;
- color: #fff;
- margin-top: 14rpx;
- }
- }
- }
- }
- </style>
|