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.
 
 
 

198 lines
5.3 KiB

<template>
<uni-popup ref="popup" type="center">
<view class="rule-popup">
<view class="rule-popup-title">优惠券详细规则</view>
<view class="rule-popup-content">
<view class="rule-item">
<view class="rule-label">名称</view>
<view class="rule-value">{{couponData.stockName || ''}}</view>
</view>
<!-- <view class="rule-item" v-if="couponData.comment">
<view class="rule-label">备注</view>
<view class="rule-value">{{couponData.comment}}</view>
</view> -->
<view class="rule-item">
<view class="rule-label">类型</view>
<view class="rule-value">{{getStockTypeText(couponData)}}</view>
</view>
<view class="rule-item">
<view class="rule-label">优惠内容</view>
<view class="rule-value">{{getDiscountText(couponData)}}</view>
</view>
<view class="rule-item" v-if="couponData.transactionMinimum">
<view class="rule-label">消费门槛</view>
<view class="rule-value">{{couponData.transactionMinimum}}元可用</view>
</view>
<view class="rule-item" v-if="couponData.goodsName">
<view class="rule-label">适用范围</view>
<view class="rule-value">{{couponData.goodsName}}</view>
</view>
<view class="rule-item">
<view class="rule-label">有效期</view>
<view class="rule-value">{{getValidTimeText(couponData)}}</view>
</view>
<!-- <view class="rule-item" v-if="couponData.maxCouponsPerUser">
<view class="rule-label">领取限制</view>
<view class="rule-value">每人最多可领{{couponData.maxCouponsPerUser}}</view>
</view> -->
<view class="rule-item">
<view class="rule-label">特别说明</view>
<view class="rule-value">单笔订单仅限使用1张优惠券优惠券仅限用户本人使用不可赠送不可提现不得找零</view>
</view>
</view>
<view class="rule-popup-close" @click="close">关闭</view>
</view>
</uni-popup>
</template>
<script>
export default {
name: 'CouponRulePopup',
data() {
return {
couponData: {}
}
},
methods: {
// 打开弹窗
open(couponData = {}) {
this.couponData = couponData;
this.$refs.popup.open();
},
// 关闭弹窗
close() {
this.$refs.popup.close();
},
// 获取批次类型文本
getStockTypeText(coupon) {
if (!coupon || !coupon.stockType) return '';
const typeMap = {
'PNORMAL': '平台满减券',
'PDISCOUNT': '平台折扣券',
'PTRAIL': '平台体验券',
'NORMAL': '微信满减券',
'DISCOUNT': '微信折扣券',
'EXCHANGE': '微信换购券'
};
return typeMap[coupon.stockType] || coupon.stockType;
},
// 获取优惠券折扣文本
getDiscountText(coupon) {
if (!coupon || !coupon.stockType) return '';
if (coupon.stockType === 'PNORMAL') {
// 平台满减券
if (coupon.discountAmount && coupon.transactionMinimum) {
return `${coupon.transactionMinimum}元减${coupon.discountAmount}`;
} else if (coupon.discountAmount) {
return `${coupon.discountAmount}`;
}
return '满减优惠';
} else if (coupon.stockType === 'PDISCOUNT') {
// 平台折扣券
if (coupon.discountPercent) {
return `${coupon.discountPercent / 10}折优惠`;
}
return '折扣优惠';
} else if (coupon.stockType === 'PTRAIL') {
// 平台体验券
return '免费体验';
} else if (coupon.stockType === 'NORMAL') {
// 微信满减券
if (coupon.discountAmount && coupon.transactionMinimum) {
return `${coupon.transactionMinimum}元减${coupon.discountAmount}`;
}
return '满减优惠';
} else if (coupon.stockType === 'DISCOUNT') {
// 微信折扣券
if (coupon.discountPercent) {
return `${coupon.discountPercent}折优惠`;
}
return '折扣优惠';
} else if (coupon.stockType === 'EXCHANGE') {
// 微信换购券
return '换购优惠';
}
return '';
},
// 获取有效期文本
getValidTimeText(coupon) {
if (!coupon) return '';
const beginTime = coupon.availableBeginTime ? coupon.availableBeginTime.slice(0, 16).replace('T', ' ') : '';
const endTime = coupon.availableEndTime ? coupon.availableEndTime.slice(0, 16).replace('T', ' ') : '';
if (beginTime && endTime) {
return `${beginTime}${endTime}`;
} else if (endTime) {
return `截止至 ${endTime}`;
} else if (beginTime) {
return `${beginTime} 开始生效`;
}
// 如果有领取后生效天数
if (coupon.availableDayAfterReceive) {
return `领取后${coupon.availableDayAfterReceive}天开始生效`;
}
return '长期有效';
}
}
}
</script>
<style lang="scss" scoped>
.rule-popup {
width: 600rpx;
background-color: #FFFFFF;
border-radius: 16rpx;
overflow: hidden;
}
.rule-popup-title {
height: 100rpx;
line-height: 100rpx;
text-align: center;
font-size: 32rpx;
font-weight: 600;
color: #FFFFFF;
background-color: #FFAA48;
}
.rule-popup-content {
padding: 30rpx;
}
.rule-item {
display: flex;
margin-bottom: 20rpx;
}
.rule-label {
width: 140rpx;
font-size: 28rpx;
color: #666666;
flex-shrink: 0;
}
.rule-value {
flex: 1;
font-size: 28rpx;
color: #333333;
line-height: 40rpx;
}
.rule-popup-close {
height: 90rpx;
line-height: 90rpx;
text-align: center;
font-size: 30rpx;
color: #FFAA48;
border-top: 1px solid #EEEEEE;
}
</style>