| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183 |
- <script setup lang="ts">
- import { useUserStore } from '~/stores/user'
- import {toRefs} from "vue";
- import {couponTypeFilter} from "~/utils/filter";
- const props = defineProps({
- //弹窗是否弹起
- couponModal: {
- type: Boolean,
- default: false
- },
- newPeopleCouponList: {
- type: Array,
- default: []
- }
- })
- const { couponModal } = toRefs(props)
- const { userInfo } = useUserStore()
- //关闭弹窗
- const emit = defineEmits(['onCloseSucceeded'])
- const handleClose = async()=>{
- emit('onCloseSucceeded')
- }
- const getTime = (time: string) => {
- let reg = new RegExp('-', 'g') //g代表全部
- return time ? time.split(' ')[0].substring(2, 10) : ''
- }
- </script>
- <template>
- <!-- 新人礼弹窗 -->
- <div class="coupon_modal" @touchmove.stop.prevent="moveStop" v-if="couponModal">
- <div class="mask"></div>
- <div class="_container">
- <div class="_tit alimama">新人专属大礼包</div>
- <div class="_look oppoSans-R">优惠券将发放至个人账户,可在“我的优惠券”查看</div>
- <div class="_box cursors">
- <div class="_item acea-row row-middle" v-for="item in newPeopleCouponList" :key="item.id">
- <div class="_price_box">
- <div class="_price line-heightOne"><span class="text-20px">¥</span>{{ item.money }}</div>
- <div class="_man">满{{ item.minPrice }}可用</div>
- </div>
- <div class="flex-1 _desc">
- <div v-if="item.category === 3" class="_text line1 line-heightOne oppoSans-M">全平台通用</div>
- <div v-else class="_text line1 line-heightOne oppoSans-M">
- 仅限指定{{ couponTypeFilter(item.category) }}可用
- </div>
- <div v-if="item.isFixedTime" class="_end line1 line-heightOne oppoSans-M">
- {{ getTime(item.useStartTime) + ' ~ ' + getTime(item.useEndTime) + '可用' }}
- </div>
- <div v-else class="_end line1 line-heightOne">{{ '领取后' + item.day + '天内可用' }}</div>
- </div>
- </div>
- </div>
- <div class="_btn cursors" @click="handleClose()"></div>
- <span class="guanbi iconfont icon-danchuangguanbi cursors" @click="handleClose()"></span>
- </div>
- </div>
- </template>
- <style lang="scss" scoped>
- .mask {
- position: fixed;
- top: 0;
- left: 0;
- right: 0;
- bottom: 0;
- background-color: rgba(0, 0, 0, 0.5);
- z-index: 100;
- }
- .coupon_modal {
- ._container {
- position: fixed;
- left: 50%;
- top: 50%;
- transform: translate(-50%, -50%);
- width: 370px;
- height: 459px;
- background-size: cover;
- background: url('@/assets/images/coupon_modal_bg.png');
- background-repeat: no-repeat;
- z-index: 330;
- ._tit {
- text-align: center;
- // height: 42px;
- font-size: 26px;
- font-weight: 600;
- color: #ffe9be;
- // line-height: 42px;
- text-shadow: 0px 2px 2px rgba(0, 0, 0, 0.2);
- margin-top: 137px;
- }
- ._look {
- text-align: center;
- font-size: 12px;
- color: #fff;
- margin: 10px auto 18px;
- }
- ._box {
- width: 370px;
- height: 166px;
- margin: auto;
- padding: 0 26px;
- overflow-y: scroll;
- overflow-x: hidden;
- ._item {
- width: 318px;
- height: 82px;
- background: url('@/assets/images/coupon_item_bg.png');
- }
- }
- ._item {
- width: 100%;
- height: 140px;
- border-radius: 14px;
- background-size: cover;
- padding: 17px 0;
- ._price_box {
- width: 118px;
- padding: 0 15px;
- text-align: center;
- border-right: 1px dashed #e6e6e6;
- ._price {
- font-size: 32px;
- color: #e93323;
- font-weight: 600;
- }
- ._man {
- font-size: 12px;
- color: #666;
- margin-top: 5px;
- }
- }
- ._desc {
- padding: 0 18px;
- width: 80px;
- ._text {
- //width: 280px;
- font-size: 18px;
- color: #282828;
- }
- ._end {
- //width: 280px;
- margin-top: 12px;
- font-size: 12px;
- color: #999;
- }
- }
- ~ ._item {
- margin-top: 12px;
- }
- }
- ._btn {
- width: 188px;
- height: 44px;
- background-size: cover;
- background: url('@/assets/images/coupon_modal_btn.png');
- margin: 23px auto 0;
- }
- .guanbi {
- font-size: 24px;
- color: #fff;
- position: absolute;
- top: 12px;
- right: -53px;
- }
- }
- }
- </style>
|