index.js.bak 3.86 KB
Newer Older
xuzhenghua committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131
import React, { PureComponent } from 'react'
import './coupon.scss'
import classnames from 'classnames'

class Coupon extends PureComponent {

    VOUCHER = 1   //代金券
    FREE = 2  //免单券
    EXPAND = 4    //膨胀全


    pick = () => {
        let {useCoupon, invalid} = this.props
        !invalid && useCoupon && useCoupon(this.props.id)

    }

    GoToUse = () => {
        this.props.useCoupon(this.props.id)
    }
    ExchangeCourse = (e) => {
        this.props.toExchangeCourse(e, this.props.code)
    }

    render() {
        let {
            ctype,
            amount,
            format_expire_time,
            limit_course,
            invalid,
            course_title,
            id,
            code,
            selectedCouponId,
            showUseButton
        } = this.props

        return (
            <li className='coupon' onClick={this.pick}>
                <div className={classnames('coupon-info', invalid ? 'invalid' : `coupon-type${ctype}`)}>
                    <p className='type'>{ctype === this.VOUCHER ? '代金券' : '课程券'}</p>
                    {
                        ctype === this.VOUCHER ? <p className='denomination'>{amount} <span>元</span></p>
                            : <p className='course-title'>{course_title}</p>

                    }
                    <p className='expire'>有效期至:{format_expire_time}</p>
                    {
                        selectedCouponId === id &&
                        <i className={classnames('iconfont icondanseshixintubiao-5', {
                            check: !invalid
                        })}
                        />
                    }
                    <ul>
                        {
                            new Array(19).fill('a').map((item, index) => {
                                return <li key={index}/>
                            })
                        }
                    </ul>
                </div>
                <div className="coupon-des">
                    <span className='limit'>{
                        limit_course === 0 ? '可用于大于代金券金额的课程' : `仅适用于《${course_title}》`
                    }</span>
                    {
                        showUseButton && ctype == this.VOUCHER &&
                        <button
                            className='use'
                            onClick={this.GoToUse}
                        >立即使用
                        </button>
                    }
                    {
                        showUseButton && ctype == this.FREE &&
                        <button
                            className='use'
                            onClick={(e) => this.ExchangeCourse(e)}
                        >立即兑换
                        </button>
                    }

                </div>
            </li>
        )
    }
}

function BaseCoupon(
    {
        pick,
        ctype,
        invalid,
        top,
        VOUCHER,
        FREE,
        EXPAND,
        limitMessage,
        bottomButton
    }) {
    let couponTypes = {
        [VOUCHER]: '代金券',
        [FREE]: '课程券',
        [EXPAND]: '膨胀券'
    }
    return (
        <li className='coupon' onClick={pick}>
            <div className={classnames('coupon-info', invalid ? 'invalid' : `coupon-type${ctype}`)}>
                <p className='type'>{couponTypes[ctype]}</p>
                {top}
                <ul>
                    {
                        new Array(19).fill('a').map((item, index) => {
                            return <li key={index}/>
                        })
                    }
                </ul>
            </div>
            <div className="coupon-des">
                <span className='limit'>
                    {limitMessage}
                </span>
                {bottomButton}
            </div>
        </li>
    )
}

export default Coupon