109 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Vue
		
	
	
			
		
		
	
	
			109 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Vue
		
	
	
| <template>
 | |
|   <su-popup
 | |
|     :show="show"
 | |
|     type="bottom"
 | |
|     round="20"
 | |
|     @close="emits('close')"
 | |
|     showClose
 | |
|     backgroundColor="#f2f2f2"
 | |
|   >
 | |
|     <view class="model-box">
 | |
|       <view class="title ss-m-t-16 ss-m-l-20 ss-flex">优惠券</view>
 | |
|       <scroll-view
 | |
|         class="model-content"
 | |
|         scroll-y
 | |
|         :scroll-with-animation="false"
 | |
|         :enable-back-to-top="true"
 | |
|       >
 | |
|         <view class="subtitle ss-m-l-20">可使用优惠券</view>
 | |
|         <view v-for="item in state.couponInfo" :key="item.id">
 | |
|           <s-coupon-list :data="item">
 | |
|             <template #default>
 | |
|               <button
 | |
|                 class="ss-reset-button card-btn ss-flex ss-row-center ss-col-center"
 | |
|                 :class="
 | |
|                   item.get_status != 'can_get' && item.get_status != 'can_use' ? 'boder-btn' : ''
 | |
|                 "
 | |
|                 @click.stop="getBuy(item.id)"
 | |
|                 :disabled="item.get_status != 'can_get' && item.get_status != 'can_use'"
 | |
|               >
 | |
|                 {{ item.get_status_text }}
 | |
|               </button>
 | |
|             </template>
 | |
|           </s-coupon-list>
 | |
|         </view>
 | |
|       </scroll-view>
 | |
|     </view>
 | |
|   </su-popup>
 | |
| </template>
 | |
| <script setup>
 | |
|   import { computed, reactive } from 'vue';
 | |
|   const props = defineProps({
 | |
|     modelValue: {
 | |
|       type: Object,
 | |
|       default() {},
 | |
|     },
 | |
|     show: {
 | |
|       type: Boolean,
 | |
|       default: false,
 | |
|     },
 | |
|   });
 | |
|   const emits = defineEmits(['get', 'close']);
 | |
|   const state = reactive({
 | |
|     couponInfo: computed(() => props.modelValue),
 | |
|     currentValue: -1,
 | |
|     couponId: '',
 | |
|   });
 | |
|   const getBuy = (id) => {
 | |
|     emits('get', id);
 | |
|   };
 | |
|   //立即领取
 | |
| </script>
 | |
| <style lang="scss" scoped>
 | |
|   .model-box {
 | |
|     height: 60vh;
 | |
|     .title {
 | |
|       font-size: 36rpx;
 | |
|       height: 80rpx;
 | |
|       font-weight: bold;
 | |
|       color: #333333;
 | |
|     }
 | |
|     .subtitle {
 | |
|       font-size: 26rpx;
 | |
|       font-weight: 500;
 | |
|       color: #333333;
 | |
|     }
 | |
|   }
 | |
|   .model-content {
 | |
|     height: 54vh;
 | |
|   }
 | |
|   .modal-footer {
 | |
|     width: 100%;
 | |
|     height: 120rpx;
 | |
|     background: #fff;
 | |
|   }
 | |
|   .confirm-btn {
 | |
|     width: 710rpx;
 | |
|     margin-left: 20rpx;
 | |
|     height: 80rpx;
 | |
|     background: linear-gradient(90deg, var(--ui-BG-Main), var(--ui-BG-Main-gradient));
 | |
|     border-radius: 40rpx;
 | |
|     color: #fff;
 | |
|   }
 | |
|   // 优惠券按钮
 | |
|   .card-btn {
 | |
|     // width: 144rpx;
 | |
|     padding: 0 16rpx;
 | |
|     height: 50rpx;
 | |
|     border-radius: 40rpx;
 | |
|     background: linear-gradient(90deg, var(--ui-BG-Main), var(--ui-BG-Main-gradient));
 | |
|     color: #ffffff;
 | |
|     font-size: 24rpx;
 | |
|     font-weight: 400;
 | |
|   }
 | |
|   .boder-btn {
 | |
|     background: linear-gradient(90deg, var(--ui-BG-Main-opacity-4), var(--ui-BG-Main-light));
 | |
|     color: #fff !important;
 | |
|   }
 | |
| </style>
 |