Files
2026-04-14 16:54:04 +08:00

116 lines
2.6 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<view class="coupon-order flex-col">
<scroll-view style="background-color: #F6F6F6" scroll-y="true" :style="{height: type == 0 ? '750rpx' : '852rpx'}">
<view class="coupon-list">
<view v-for="(item, index) in coupons" :key="index" class="m-b-20 bg-white" @tap="onSelect(item.id)">
<view class="coupon-item flex">
<view class="price white flex-col col-center">
<view class="xl">
<price-format :subscript-size="34" :first-size="60" :second-size="50"
:price="item.money" :weight="500"></price-format>
</view>
<view>{{item.condition_type_desc}}</view>
</view>
<view class="flex row-between flex-1">
<view class="info m-l-20">
<view class="bold md bold m-b-10 line-1">{{item.coupon_name}}</view>
<view class="xxs lighter m-b-10">{{item.user_time_desc}}</view>
<view class="xxs lighter">{{item.use_scene_desc}}</view>
</view>
<u-checkbox shape="circle" v-if="type == 0" :value="selectId == item.id"></u-checkbox>
</view>
</view>
<view class="xs" v-if="item.use_goods_desc && type == 1" style="padding: 14rpx 20rpx">
{{item.use_goods_desc}}
</view>
</view>
</view>
<view v-if="coupons.length == 0" class="flex-col col-center" style="padding-top: 50rpx">
<image class="img-null" src="/static/images/coupon_null.png"></image>
<text class="muted">暂无优惠券</text>
</view>
</scroll-view>
<view v-if="type == 0">
<view class="bg-primary btn white flex row-center br60 mb10 lg" @tap="onConfirmCoupon">
确定
</view>
</view>
</view>
</template>
<script>
export default {
data() {
return {
coupons: [],
selectId: ""
};
},
props: {
list: {
type: Array,
default: () => []
},
type: {
type: Number
},
couponId: [Number, String]
},
watch: {
list: {
handler(val) {
this.coupons = val
},
immediate: true,
},
couponId: {
handler(val) {
this.selectId = val
},
immediate: true,
}
},
methods: {
onSelect(id) {
const {
coupons,
type,
selectId
} = this;
if (type == 1) return;
this.selectId = id == selectId ? "" : id
},
onConfirmCoupon() {
this.$emit("change", this.selectId)
}
}
};
</script>
<style scoped>
.coupon-order .coupon-list {
padding: 20rpx 24rpx;
}
.coupon-order .coupon-item {
position: relative;
height: 200rpx;
background-image: url(../../static/images/coupon_bg.png);
background-size: 100% 100%;
}
.coupon-order .coupon-item .price {
width: 200rpx;
}
.coupon-order .btn {
margin: 10rpx 20rpx;
height: 82rpx;
}
</style>