import React, { PureComponent } from "react" import "./index.scss" import { http } from "src/utils" import { WithFullSize } from "src/HOCs" import { Toast } from "antd-mobile" class UsePatch extends PureComponent { constructor(props) { super(props) this.state = { success: false, checkedIndex: 0, list: [ { amount: 10, desc: "兑换后7日内有效", type: "代金券", }, { amount: 20, desc: "兑换后7日内有效", type: "代金券", }, { amount: 50, desc: "兑换后7日内有效", type: "代金券", }, { amount: 100, desc: "兑换后7日内有效", type: "代金券", }, ], couponAmount: "", // 碎片额度 } } componentDidMount() { this.getPatchList() } // 选中 select = (index, item) => { if (this.state.couponAmount >= item.amount) { this.setState({ checkedIndex: index, }) } } // 合成 compound = () => { const _this = this if (this.state.couponAmount >= 10) { http .post(`${API.home}/sys/red_packet/compose`, { type: _this.state.checkedIndex + 1, }) .then((res) => { if (res.data.code === 200) { _this.setState({ success: true, }) setTimeout(() => { _this.getPatchList() }, 2000) } else { Toast.info(res.data.msg, 2) } }) } } getPatchList() { http.get(`${API.home}/sys/red_packet/balance`).then((res) => { if (res.data.code === 200) { this.setState({ couponAmount: res.data.data.coupon_amount, success: false, }) } else { Toast.info(res.data.msg, 2) } }) } render() { return ( <div className="my-patch"> <div className={"couponAmount"}> 代金券碎片余额:<span>{this.state.couponAmount}元</span> </div> <Coupon data={this.state.list} myAmount={this.state.couponAmount} select={this.select} checkedIndex={this.state.checkedIndex} /> <div className="compound-button--compose"> <button className={`compound ${ this.state.couponAmount >= 10 ? "disable-active" : "disable" }`} onClick={this.compound} > 合成 </button> </div> <div className="patch-desc"> <p className={"title"}> <i></i> <span>代金券碎片说明</span> <i></i> </p> <p className={"desc-item"}> 1. 碎片可通过“分享课程领取红包”获得,也可通过线上活动获得,具体请关注官网信息; </p> <p className={"desc-item"}> 2. 碎片在购课时不能单独使用,可合成完整代金券后用代金券抵扣现金; </p> <p className={"desc-item"}>3. 碎片合成代金券后7日内有效。</p> </div> {this.state.success && <div className="success">兑换成功</div>} </div> ) } } function Coupon(props) { const { data, myAmount, select, checkedIndex } = props return ( <div className={"coupons"}> {data && data.length > 0 && data.map((item, index) => { return ( <div className="items-box" key={index} onClick={() => select(index, item)} > <div className={`coupon-info ${ myAmount >= item.amount ? "active" : null }`} > <div className="type">{item.type}</div> <div className={"amount"}> <span>{item.amount}</span>元 </div> {myAmount >= item.amount && ( <i className={`checkout ${ index === checkedIndex ? "iconfont icondanseshixintubiao-5" : "nochecked" }`} /> )} <ul> {new Array(19).fill("a").map((item, index) => { return <li key={index} /> })} </ul> </div> <div className={"coupon-des"}>{item.desc}</div> </div> ) })} </div> ) } export default WithFullSize(UsePatch)