|
|
- <template>
- <view class="new-user-page">
- <!-- 背景图片 -->
- <image class="bg-image"
- src="https://image.hhlm1688.com/2025/08/08168577fd3c2c428785038ee249736e54Rectangle 9031@3x.png"
- mode="aspectFill" />
-
- <!-- 顶部标题图片 -->
- <image class="title-image" src="https://image.hhlm1688.com/2025/08/07767f2fc0a686433bb9e3f90bc6e60990Group%201000001612@3x.png"
- mode="widthFix" />
-
- <!-- 优惠券内容图片 -->
- <image class="coupon-content-image"
- :src="NewUserCoupon.couponPoster || image" mode="widthFix" />
-
- <!-- 立即领取/立即使用按钮 -->
- <view class="receive-btn" @click="handleButtonClick">
- {{ isReceived ? '立即使用' : '立即领取' }}
- </view>
-
- <!-- 下单方式选择弹窗 -->
- <order-type-select-popup ref="orderTypeSelectPopup" />
- </view>
- </template>
-
- <script>
- import { getToken } from '@/utils/auth'
- import OrderTypeSelectPopup from '@/pages_order/components/OrderTypeSelectPopup.vue'
- import { mapState } from 'vuex'
- import { receiveCoupon } from "@/api/system/user"
-
- export default {
- name: 'NewUserCouponPage',
- components: {
- OrderTypeSelectPopup
- },
- data() {
- return {
- isReceived: false, // 优惠券是否已领取
- image : '',
- }
- },
- computed : {
- ...mapState(['NewUserCoupon']),
- },
- methods: {
- // 处理按钮点击
- handleButtonClick() {
- if (this.isReceived) {
- // 已领取,点击立即使用,打开选择下单方式弹窗
- this.openOrderTypePopup()
- } else {
- // 未领取,点击立即领取
- this.receiveCoupon()
- }
- },
-
- // 领取优惠券
- receiveCoupon() {
- let data = {
- stockId: this.NewUserCoupon.id,
- }
- receiveCoupon(data).then(res => {
- if (res.code == 200) {
- uni.showToast({
- title: '领取成功!',
- icon: 'success',
- duration: 2000
- })
- // 更新状态为已领取
- this.isReceived = true
- }
- }).catch(err => {
- uni.showToast({
- title: '领取优惠券失败',
- icon: 'none'
- })
- })
- },
-
- // 打开下单方式选择弹窗
- openOrderTypePopup() {
- this.$refs.orderTypeSelectPopup.open()
- },
-
- // 暂不领取
- skipReceive() {
- uni.navigateBack()
- }
- }
- }
- </script>
-
- <style lang="scss" scoped>
- .new-user-page {
- position: relative;
- width: 100vw;
- height: 100vh;
- display: flex;
- flex-direction: column;
- align-items: center;
- justify-content: center;
- overflow: hidden;
- }
-
- .bg-image {
- position: absolute;
- top: 0;
- left: 0;
- width: 100%;
- height: 100%;
- z-index: 1;
- }
-
- .title-image {
- position: relative;
- z-index: 2;
- width: 280rpx;
- margin-bottom: 40rpx;
- margin-top: -200rpx;
- }
-
- .coupon-content-image {
- position: relative;
- z-index: 2;
- width: 600rpx;
- margin-bottom: 80rpx;
- }
-
- .receive-btn {
- position: relative;
- z-index: 2;
- width: 600rpx;
- height: 80rpx;
- background: linear-gradient(135deg, #FFB13F 0%, #FF8C00 100%);
- color: #FFFFFF;
- font-size: 32rpx;
- font-weight: bold;
- border-radius: 40rpx;
- display: flex;
- align-items: center;
- justify-content: center;
- box-shadow: 0 8rpx 20rpx rgba(255, 177, 63, 0.4);
- margin-bottom: 40rpx;
-
- &:active {
- transform: scale(0.95);
- transition: transform 0.1s;
- }
- }
-
- .skip-btn {
- position: relative;
- z-index: 2;
- width: 200rpx;
- height: 60rpx;
- background: rgba(255, 255, 255, 0.8);
- color: #666;
- font-size: 28rpx;
- border-radius: 30rpx;
- display: flex;
- align-items: center;
- justify-content: center;
-
- &:active {
- background: rgba(255, 255, 255, 0.6);
- transition: background 0.1s;
- }
- }
- </style>
|