绿满眶商城微信小程序-uniapp
xiangpei
2025-05-09 c3e6cdbb29580e77444541c7953aca33581a4267
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
<template>
    <view class="wrapper">
        <div class="coupon-empty" v-if="!res">暂无优惠券</div>
        <view class="coupon-List" v-for="(item, index) in couponRes" :key="index">
            <view class="coupon-item">
                <view class="top">
                    <div class="price">
                        <span v-if="item.couponType == 'DISCOUNT'">{{ item.couponDiscount }}折</span>
                        <span v-if="item.couponType == 'PRICE'">¥{{ item.price | unitPrice }}</span>
                    </div>
                    <view class="text">
                        <div class="coupon-List-title">
                            <view v-if="item.scopeType">
                                <span v-if="item.scopeType == 'ALL' && item.storeId == '0'">全平台</span>
                                <span v-if="item.scopeType == 'PORTION_GOODS_CATEGORY'">仅限品类</span>
                                <view v-else>{{
                         item.storeName == "platform" ? "全平台" : item.storeName + "店铺"
                       }}使用</view>
                            </view>
                        </div>
                        <div>满{{ item.consumeThreshold | unitPrice }}可用</div>
                    </view>
                    <view class="lingqu-btn" @click="getCoupon(item, index)">
                        <div :class="yhqFlag[index] ? 'cur' : ''">
                            {{ yhqFlag[index] ? "已领取或领完" : "立即领取" }}
                        </div>
                    </view>
                </view>
                <view class="line"></view>
                <view class="time">{{ item.startTime / 1000 | unixToDate }} - {{ item.endTime / 1000 | unixToDate }}</view>
            </view>
        </view>
    </view>
</template>
 
<script>
    export default {
        data() {
            return {
                yhqFlag: [], //获取优惠券判断是否点击
                couponRes: [],
            };
        },
        props: {
            res: {
                type: null,
                default: "",
            },
        },
        watch: {
            res: {
                handler() {
                    if (this.res && this.res.length != 0) {
                        Object.keys(this.res).forEach((item) => {
                            let key = item.split("-")[0];
                            if (key === "COUPON") {
                                this.couponRes.push(this?.res[item]);
 
                            }
                        });
                    }
                },
                immediate: true,
            },
        },
        methods: {
            // 提交优惠券
            getCoupon(item, index) {
                this.yhqFlag[index] = true;
                this.$emit("getCoupon", item);
            },
        },
    };
</script>
 
<style lang="scss" scoped>
    .coupon-item {
        width: 100%;
        height: 100%;
        display: flex;
        flex-direction: column;
        justify-content: space-between;
    }
 
    .coupon-List {
        display: flex;
        flex-direction: column;
        height: 230rpx;
        background: #e9ebfb;
        margin: 30rpx 0;
        padding: 10rpx 30rpx;
 
        .line {
            height: 1px;
            background: #fff;
            margin: 0 20rpx;
            position: relative;
 
            &:before,
            &:after {
                content: "";
                display: block;
                width: 15rpx;
                height: 30rpx;
                background: #fff;
                position: absolute;
                top: -15rpx;
            }
 
            &:before {
                left: -50rpx;
            }
 
            &:after {
                right: -50rpx;
            }
        }
 
        .time {
            flex: 1;
            font-size: 24rpx;
            align-items: center;
            display: flex;
            align-items: center;
        }
    }
 
    .top {
        height: 140rpx;
        display: flex;
 
        .price {
            width: 33%;
            justify-content: center;
            color: #6772e5;
            font-size: 40rpx;
            display: flex;
 
            height: 100%;
            align-items: center;
 
            span {
                font-size: 50rpx;
            }
        }
 
        .text {
            width: 33%;
            display: flex;
            flex-direction: column;
            justify-content: center;
            font-size: 26rpx;
            color: 333;
            margin-left: 40rpx;
 
            .coupon-List-title {
                font-size: 30rpx;
                font-weight: bold;
            }
        }
 
        .lingqu-btn {
            display: flex;
            align-items: center;
            margin-left: 40rpx;
 
            text {
                width: 140rpx;
                height: 40rpx;
                text-align: center;
                line-height: 40rpx;
                color: #fff;
                background: #6772e5;
                border-radius: 5px;
                font-size: 26rpx;
 
                &.cur {
                    background: none;
                    transform: rotate(45deg) translate(10rpx, -46rpx);
                }
            }
        }
    }
</style>