123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155 |
- <template>
- <app-layout>
- <view class="page">
- <!-- <view class="mb-24 tip">注: 优惠券只能抵消商品金额,不能抵消运费。</view> -->
- <view class="mb-24 tip">注: 优惠券只能抵用报名金额</view>
- <view class="mb-24">
- <app-button @click="setData(0)" type="general" round color="#999">不使用优惠券</app-button>
- </view>
- <template v-if="list !== null">
- <view v-if="!list.length" class="no-data">暂无可用优惠券</view>
- <view v-else class="main-center dir-top-nowrap list">
- <view v-for="(item,index) in list"
- :key="index"
- @click="setData(item.id)"
- class="dir-left-nowrap item"
- :style="'background-image: url(' + couponBackground + ')'">
- <view class="box-grow-0 cross-center item-left">
- <view>
- <view v-if="item.type==1">{{item.discount}}折</view>
- <view v-else>¥{{item.sub_price}}</view>
- <view class="desc">满{{item.coupon_min_price}}元可用</view>
- <view style="font-size: 10px" v-if="item.discount_limit">优惠上限:¥{{item.discount_limit}}</view>
- </view>
- </view>
- <view class="box-grow-1 cross-center item-right">
- <view>
- <view>{{item.coupon_data.name}}</view>
- <view class="date-time">{{item.start_time}}~{{item.end_time}}</view>
- <view class="scope" v-if="item.coupon_data.appoint_type == 3">全场通用</view>
- <view class="scope" v-else>限品类</view>
- </view>
- </view>
- </view>
- </view>
- </template>
- </view>
- </app-layout>
- </template>
- <script>
- import {mapState} from 'vuex';
- import AppLoading from '../../components/basic-component/app-loading/app-loading.vue';
- export default {
- name: 'coupon-pick',
- components: {AppLoading},
- data() {
- return {
- mchIndex: null,
- list: null,
- };
- },
- computed: {
- ...mapState({
- couponBackground: state => state.mallConfig.__wxapp_img.mall.coupon_enable_bg,
- }),
- },
- onLoad(options) {
- console.log('onLoad->', options);
- this.mchIndex = options.mchIndex;
- this.loadData();
- },
- methods: {
- loadData() {
- uni.showLoading({
- mask: true,
- title: '加载中',
- });
- this.$request({
- url: this.$api.order.usable_coupon_list,
- method: 'post',
- data: {
- form_data: JSON.stringify(this.$store.state.orderSubmit.formData.list[this.mchIndex]),
- }
- }).then(response => {
- uni.hideLoading();
- if (response.code === 0) {
- this.list = response.data.list;
- } else {
- }
- }).catch(e => {
- uni.hideLoading();
- });
- },
- setData(data) {
- const formData = this.$store.state.orderSubmit.formData;
- formData.list[this.mchIndex].user_coupon_id = data;
- this.$store.commit('orderSubmit/mutSetFormData', formData);
- uni.navigateBack();
- },
- }
- }
- </script>
- <style scoped lang="scss">
- .mb-24 {
- margin-bottom: #{24rpx};
- }
- .page {
- padding: #{24rpx};
- .tip {
- font-size: $uni-font-size-general-one;
- color: $uni-general-color-two;
- }
- .no-data {
- padding: #{100rpx};
- text-align: center;
- color: $uni-general-color-three;
- background: $uni-weak-color-two;
- border-radius: #{16rpx};
- }
- }
- .list {
- .item {
- background-size: 100% 100%;
- width: 100%;
- height: #{152rpx};
- margin-bottom: #{24rpx};
- .item-left {
- width: 28.45%;
- overflow: hidden;
- text-align: center;
- color: #fff;
- view {
- width: 100%;
- }
- .desc {
- font-size: $uni-font-size-weak-one;
- padding-top: #{12rpx};
- }
- }
- .item-right {
- padding: #{24rpx};
- .date-time {
- font-size: $uni-font-size-weak-two;
- color: $uni-general-color-two;
- }
- .scope {
- font-size: $uni-font-size-weak-two;
- color: $uni-general-color-one;
- }
- }
- }
- }
- </style>
|