<template>
    <view :class="theme_view">
        <view class="padding-bottom padding-horizontal-main">
            <view class="coupon-card oh pr flex-row">
                <view class="card-left flex-col jc-sa align-c" :class="propStatusType > 3 ? 'failure cr-grey-9' : 'cr-white'">
                    <view class="price">
                        <text v-if="propData.type == '0'" class="symbol text-size">{{ currency_symbol }}</text>
                        <text class="num text-size-xxl">{{ propData.discount_value }}</text>
                        <text v-if="propData.type !== '0'" class="unit text-size-md">{{ propData.type_unit }}</text>
                    </view>
                    <text v-if="(propData.desc || null) != null" class="desc text-size-xs single-text">{{ propData.desc }}</text>
                </view>
                <view class="card-right flex-1 flex-width flex-row jc-sb align-c" :class="propStatusType > 3 ? 'failure cr-grey-9' : ''">
                    <view class="card-info flex-1 flex-width padding-right-main" :class="propStatusType > 3 ? 'failure cr-grey-9' : 'cr-black'">
                        <view class="title text-size-lg single-text" :class="propData.time_start">{{ propData.use_limit_type_name }}</view>
                        <view v-if="propStartTime && propEndTime" class="date text-size-xs cr-grey-9 single-text padding-top-sm">{{ propStartTime }}-{{ propEndTime }}</view>
                        <view v-if="propIsProgress && propData.process_data" class="progress padding-top-sm flex-row align-c">
                            <block v-if="propData.process_data.type == 0">
                                <text class="text-size-xs cr-grey-9"> {{ propData.process_data.msg }} </text>
                            </block>
                            <block v-else>
                                <progress class="flex-1" :percent="propData.process_data.value" stroke-width="6" activeColor="#FF7004" backgroundColor="#fff" border-radius="3" />
                                <view class="percent text-size-xss cr-grey-9 padding-left-main"> {{ propData.process_data.msg }} </view>
                            </block>
                        </view>
                        <view v-if="propData.expire_tips" class="padding-top-sm text-size-xs cr-red">{{ propData.expire_tips }}</view>
                    </view>
                    <view class="card-type">
                        <!-- 按钮状态 0-领取，1-已领取，2-已抢完，3-去使用,4-已使用，5-已过期 -->
                        <view v-if="propStatusType == 0" class="card-btn dis-inline-block cr-white" @tap="receive_event">{{ propStatusOperableName || this.$t('coupon-card.coupon-card.m9316y') }}</view>
                        <view v-else-if="propStatusType == 1" class="card-btn dis-inline-block cr-red br-red received">{{ propStatusOperableName || this.$t('coupon-card.coupon-card.m9316y') }}</view>
                        <view v-else-if="propStatusType == 2" class="card-btn dis-inline-block cr-white robbed">{{ propStatusOperableName || this.$t('coupon-card.coupon-card.m9316y') }}</view>
                        <view v-else-if="propStatusType == 3" :data-value="home_page_url" @tap="url_event" class="cp">
                            <view class="card-btn dis-inline-block cr-white">
                                {{ propStatusOperableName || this.$t('coupon-card.coupon-card.m9316y') }}
                            </view>
                        </view>
                        <view v-else-if="propStatusType == 4" class="card-image pa top-0 right-0">
                            <image class="image" :src="coupon_static_url + 'coupon-used.png'" mode="scaleToFill"></image>
                        </view>
                        <view v-else-if="propStatusType == 5" class="card-image pa top-0 right-0">
                            <image class="image" :src="coupon_static_url + 'coupon-expire.png'" mode="scaleToFill"></image>
                        </view>
                        <view v-else @tap="receive_event">{{$t('coupon-card.coupon-card.j318xx')}}</view>
                    </view>
                </view>
                <view class="card-circle-top" :style="{ background: `${propBg}` }"></view>
                <view class="card-circle-bottom" :style="{ background: `${propBg}` }"></view>
            </view>
        </view>
    </view>
</template>

<script>
    const app = getApp();
    var coupon_static_url = app.globalData.get_static_url('coupon', true);
    var tabbar_pages = app.globalData.app_tabbar_pages();
    export default {
        name: 'coupon-card',
        props: {
            propData: {
                type: Object,
                default: () => {
                    return {
                        // id: "0",
                        // // 领取数量
                        // already_send_count: 0,
                        // // 总数
                        // process_data: {
                        //     type: 1, // 0 无限制
                        //     value: 20,
                        //     msg: "已领20%",
                        // },
                        // // 日期有效日期 // 2023.08.30-2023.09.1
                        // date: "",
                        // expire_tips: "",
                        // time_start: "",
                        // time_end: "",
                    };
                },
            },
            // 监听
            propRandom: {
                type: Number,
                default: 0,
            },
            // 半圆背景
            propBg: {
                type: String,
                default: '#fff',
            },
            // 进度条
            propIsProgress: {
                type: Boolean,
                default: false,
            },
            // 是否可重复领取
            propRepeatedClaim: {
                type: Boolean,
                default: false,
            },
            // 是否可点击
            propDisabled: {
                type: Boolean,
                default: false,
            },
            // 下标
            propIndex: {
                type: [Number,String],
                default: 0,
            },
            // 按钮状态 0-领取，1-已领取，2-已抢完，3-去使用,4-已使用，5-已过期
            propStatusType: {
                type: Number,
                default: 0,
            },
            // 按钮名称： 领取 已领取 已抢完 去使用
            propStatusOperableName: {
                type: String,
                default: '',
            },
            // 优惠券有效期
            propStartTime:{
                type: String,
                default: '',
            },
            propEndTime:{
                type: String,
                default: '',
            }
        },
        data() {
            return {
                theme_view: app.globalData.get_theme_value_view(),
                coupon_static_url: coupon_static_url + 'app/',
                // 符号
                currency_symbol: app.globalData.currency_symbol(),
                // 首页地址
                home_page_url: tabbar_pages[0],
                // 缓存key
                cache_key: 'cache_plugins_coupon_receive_key',
            };
        },
        methods: {
            // 领取
            receive_event(e) {
                uni.setStorageSync(this.cache_key, {
                    index: this.propIndex,
                    value: this.propData.id
                });
                this.$emit('call-back');
            },

            // url事件
            url_event(e) {
                app.globalData.url_event(e);
            }
        },
    };
</script>

<style scoped>
    .coupon-card {
        border-radius: 24rpx;
        height: 208rpx;
    }

    .card-left {
        width: 176rpx;
        padding: 24rpx 12rpx;
        background: linear-gradient(95deg, #ff994b 0%, #ff6e00 100%);
    }

    .card-left.failure {
        background: linear-gradient(95deg, #eeeeee 0%, #fafafa 100%);
    }

    .card-right {
        padding: 32rpx 24rpx 32rpx 46rpx;
        background-color: #ffe4d1;
    }

    .card-right.failure {
        background: linear-gradient(95deg, #f8f8f8 0%, #e0dede 100%);
    }

    .card-info.failure {
        padding-right: 116rpx;
    }

    .card-btn {
        width: 116rpx;
        text-align: center;
        padding: 6rpx 0;
        background: linear-gradient(93deg, #ff9747 0%, #ff6e01 100%);
        border-radius: 13px;
    }

    .robbed {
        background: #fbd3b7;
    }

    .received {
        border-radius: 13px;
        background: transparent;
    }

    ::v-deep .uni-progress-bar,
    ::v-deep .uni-progress-inner-bar {
        border-radius: 6rpx;
    }

    .card-circle-top,
    .card-circle-bottom {
        width: 40rpx;
        height: 40rpx;
        background-color: #fff;
        border-radius: 50%;
        position: absolute;
        left: 180rpx;
        z-index: 1;
    }

    .card-circle-top {
        top: -20rpx;
    }

    .card-circle-bottom {
        bottom: -20rpx;
    }

    .card-image .image {
        width: 136rpx;
        height: 108rpx;
    }
</style>
