{"version":3,"sources":["components/coupons/Input/index.js","components/coupons/RedeemBar/index.js","components/coupons/Coupon/index.js","components/coupons/myCoupons/index.js","components/coupons/myPatch/index.js","components/coupons/index.js","common/deposit/end-expansion-alert/index.js"],"names":["Input","props","_this","Object","classCallCheck","this","possibleConstructorReturn","getPrototypeOf","call","clearInput","onChange","state","isFocus","_this2","_this$props","type","placeholder","react_default","a","createElement","className","classnames","custom-input--active","value","onBlur","setState","onFocus","hide","length","onClick","Component","defaultProps","RedeemBar","redeemCode","exchange","coupons_Input","active","Coupon","VOUCHER","FREE","EXPAND","pick","e","useCoupon","invalid","start_amount","id","location","history","code","from","push","concat","stopExpanding","GoToUse","ExchangeCourse","toExchangeCourse","_this$props2","amount","limit_amount","stopPropagation","showAlert","onConfirm","http","post","API","home","then","res","data","endExpansion","coupon_id","toast_default","info","msg","top","bottom","_this$props3","ctype","course_title","showUseButton","format_expire_time","limit_course","Fragment","style","width","Math","round","bind","BaseCoupon","assign","PureComponent","_ref","_couponTypes","selectedCouponId","couponTypes","defineProperty","check","Array","fill","map","item","index","key","withRouter","UseCoupon","connect","couponList","valid_coupons","invalid_coupons","courseId","getParam","courseCouponExchange","courseCouponData","handleChange","target","_this$props$location$","substr","coupon","toConsumableArray","getMyCoupons","getAllCoupons","Promise","all","get","coupons","myCoupons","_coupons","slicedToArray","expansionCoupons","expansion","isArray","course_id","_coupons2","select","PzCoupon","inuse_coupon","PzCoupon2","errno","val","find","_this$state","goBack","reload","toStudy","vCourseId","isHaveVideo","closeFreeCourse","validId","replace","_this$state2","coupons_RedeemBar","Content","purpose","FreeCouponCourse","rest","objectWithoutProperties","coupons_Coupon","src","image_name","alt","course_expire","v_course_id","is_is_start","WithFullSize","UsePatch","couponAmount","checkedIndex","compound","assertThisInitialized","success","setTimeout","getPatchList","list","desc","_this3","coupon_amount","myPatch_Coupon","myAmount","match","common","title","arrow","react_router_dom","to","pathname","url","search","objectSpread","activeClassName","react_router","exact","path","component","myPatch","__webpack_exports__","_ref$onCancel","onCancel","content","react__WEBPACK_IMPORTED_MODULE_2___default","antd_mobile_lib_modal__WEBPACK_IMPORTED_MODULE_1___default","alert","text","onPress","color"],"mappings":"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","file":"mrstatic/js/coupons.65262c13.chunk.js","sourcesContent":["import React, { Component } from 'react';\nimport './input.scss'\n\nimport classnames from 'classnames'\n\nclass Input extends Component {\n\n    constructor(props) {\n        super(props);\n        this.state = {\n            isFocus: false\n        }\n    }\n\n    clearInput = () => {\n        this.props.onChange('')\n    }\n\n    render() {\n        let {type, placeholder} = this.props\n        const { isFocus } = this.state;\n        return (\n            <div className='custom-input-wrapper'>\n                <input\n                    type={type}\n                    className={classnames('custom-input',{'custom-input--active': isFocus})}\n                    placeholder={placeholder}\n                    onChange={this.props.onChange}\n                    value={this.props.value}\n                    onBlur={() => {\n                        this.setState({\n                            isFocus: false\n                        })\n                    }}\n                    onFocus={() => {\n                        this.setState({\n                            isFocus: true\n                        })\n                    }}\n                />\n                <i\n                    className={classnames('iconfont icondanseshixintubiao-3', {\n                        hide: this.props.value.length === 0\n                    })}\n                    onClick={this.clearInput}\n                />\n            </div>\n        );\n    }\n}\n\n\nInput.defaultProps = {type: 'text', placeholder: ''}\n\nexport default Input;","import React, { Component } from 'react';\nimport './exchange-bar.scss'\nimport Input from '../Input'\nimport classnames from 'classnames'\n\nclass RedeemBar extends Component {\n    state = {}\n\n    render() {\n        const {onChange, redeemCode, exchange} = this.props\n        return (\n            <div className=\"exchange-bar\">\n                <Input\n                    placeholder={'请输入优惠码'}\n                    onChange={onChange}\n                    value={redeemCode}\n                />\n                <button className={classnames({\n                    active: redeemCode && redeemCode.length > 0\n                })} onClick={exchange}>兑换\n                </button>\n            </div>\n        );\n    }\n}\n\nexport default RedeemBar;","import React, { PureComponent } from 'react'\nimport './coupon.scss'\nimport classnames from 'classnames'\nimport { http } from \"@/utils\"\nimport showAlert from '@common/deposit/end-expansion-alert'\nimport { Toast } from 'antd-mobile'\nimport { withRouter } from \"react-router-dom\"\n\n\nclass Coupon extends PureComponent {\n\n  VOUCHER = 1   //代金券\n  FREE = 2  //免单券\n  EXPAND = 4    //膨胀全\n\n\n  pick = (e) => {\n    let {useCoupon, invalid, start_amount, id, location, history, code} = this.props\n    const {state} = location\n    if(state && state.from && state.from === '/my' && typeof start_amount !== 'undefined'){\n      history.push(`/expand/index?deposit_code=${code}`)\n      return\n    }\n    if (start_amount) {\n      this.stopExpanding(id, e)\n    } else {\n      !invalid && useCoupon && useCoupon(this.props.id)\n    }\n\n  }\n\n  GoToUse = () => {\n    this.props.useCoupon(this.props.id)\n  }\n  ExchangeCourse = (e) => {\n    this.props.toExchangeCourse(e, this.props.code)\n  }\n\n  stopExpanding = (id, e) => {\n    const {amount, limit_amount} = this.props\n    e.stopPropagation()\n    showAlert({\n      amount,\n      limit_amount,\n      onConfirm: () => {\n        http.post(`${API.home}/m/end_expansion`, {\n          id\n        })\n          .then(res => {\n            const {data} = res\n            if (data.code == 200) {\n              this.props.endExpansion(id, data.data.coupon_id)\n            } else {\n              Toast.info(data.msg)\n            }\n          })\n      }\n    })\n\n  }\n\n  render() {\n    let {\n      ctype,\n      amount,\n      course_title,\n      showUseButton,\n      id,\n      format_expire_time,\n      start_amount,\n      limit_amount,\n      limit_course\n    } = this.props\n\n    let top, bottom\n\n    switch (ctype) {\n      case this.VOUCHER:\n        top = (\n          <>\n            <p className='denomination'>{amount} <span>元</span></p>\n            <p className='expire'>有效期至:{format_expire_time}</p>\n          </>\n\n        )\n        bottom = (\n          <>\n              <span className={'limit'}>{limit_course == 0 ? '可用于大于代金券金额的课程': `仅适用于《${course_title}》`}</span>\n            {\n              showUseButton && ctype == this.VOUCHER &&\n              <button\n                className='use'\n                onClick={this.GoToUse}\n              >立即使用\n              </button>\n            }\n          </>\n\n        )\n        break\n      case this.FREE:\n        top = (\n          <>\n            <p className='course-title'>{course_title}</p>\n            <p className='expire'>有效期至:{format_expire_time}</p>\n\n          </>\n        )\n        bottom = (\n          <>\n            <span className={'limit'}>{`仅适用于《${course_title}》`}</span>\n            {\n              showUseButton && ctype == this.FREE &&\n              <button\n                className='use'\n                onClick={(e) => this.ExchangeCourse(e)}\n              >立即兑换\n              </button>\n            }\n          </>\n\n        )\n        break\n      case this.EXPAND:\n        if (!start_amount) {\n          top = (\n            <>\n              <p className='denomination'>{amount} <span>元</span></p>\n              <p className='expire'>有效期至:{format_expire_time}</p>\n            </>\n          )\n\n        } else {\n          top = (\n            <>\n              <div className=\"progress-container\">\n                <p className='denomination'>{amount} <span>元</span></p>\n                <div className={'progress-bar-container'}>\n                                    <span className={'progress-bar'}\n                                          style={{width: `${Math.round((amount - start_amount) / limit_amount * 100)}%`}}\n                                    ></span>\n                </div>\n                <div className={'money'}>\n                  <span>{start_amount}元</span>\n                  <span>{limit_amount}元</span>\n                </div>\n              </div>\n            </>\n          )\n        }\n        bottom = (\n          <>\n            <span className={'limit'}>全场通用</span>\n            {\n              start_amount\n              && <button className='stop-expanding'\n                         onClick={this.stopExpanding.bind(this, id)}>立即结束膨胀</button>\n            }\n          </>\n\n        )\n        break\n    }\n\n    return (\n      <BaseCoupon\n        {...this.props}\n        top={top}\n        VOUCHER={this.VOUCHER}\n        FREE={this.FREE}\n        EXPAND={this.EXPAND}\n        pick={this.pick}\n        bottom={bottom}\n      />\n    )\n  }\n}\n\nfunction BaseCoupon(\n  {\n    pick,\n    ctype,\n    invalid,\n    top,\n    VOUCHER,\n    FREE,\n    EXPAND,\n    selectedCouponId,\n    id,\n    bottom\n  }) {\n  let couponTypes = {\n    [VOUCHER]: '代金券',\n    [FREE]: '课程券',\n    [EXPAND]: '膨胀券'\n  }\n  return (\n    <li className='coupon' onClick={pick}>\n      <div className={classnames('coupon-info', invalid ? 'invalid' : `coupon-type${ctype}`)}>\n        <p className='type'>{couponTypes[ctype]}</p>\n        {top}\n        {\n          selectedCouponId === id &&\n          <i className={classnames('iconfont icondanseshixintubiao-5', {\n            check: !invalid\n          })}\n          />\n        }\n        <ul>\n          {\n            new Array(19).fill('a').map((item, index) => {\n              return <li key={index}/>\n            })\n          }\n        </ul>\n      </div>\n      <div className=\"coupon-des\">\n        {bottom}\n      </div>\n    </li>\n  )\n}\n\nexport default withRouter(Coupon)\n","import React, { PureComponent } from 'react'\nimport './index.scss'\n\nimport RedeemBar from \"../RedeemBar\"\nimport Coupon from '../Coupon'\nimport { http, getParam } from '@/utils'\nimport { WithFullSize } from '@/HOCs'\nimport { Toast } from 'antd-mobile'\nimport { connect } from 'react-redux'\n\n@connect()\nclass UseCoupon extends PureComponent {\n\n  state = {\n    selectedCouponId: 0,\n    redeemCode: '',\n    couponList: [],\n    valid_coupons: [],\n    invalid_coupons: [],\n    courseId: getParam('id'),\n    showUseButton: false,\n    courseCouponExchange: false, // 课程券兑换弹窗\n    courseCouponData: '' // 兑换课程信息\n  }\n\n  componentDidMount() {\n    const {history, location} = this.props\n\n    const {state} = this.props.location\n    if (state && state.from) {\n      if (state.from === '/my') {\n        this.getMyCoupons()\n        this.setState({\n          showUseButton: true\n        })\n      } else {\n        if (!this.state.courseId) {\n          location.state && location.state.from ? history.replace(location.state.from) : history.goBack()\n        }\n        this.getAllCoupons()\n      }\n    }\n  }\n\n  handleChange = e => {\n    let value = e ? e.target.value : ''\n    this.setState({redeemCode: value})\n  }\n\n  // 兑换\n  exchange = () => {\n    const {location: {state = {}}} = this.props\n    if (this.state.redeemCode !== '') {\n      http.post(`${API.home}/m/coupon/exchange`, {\n        code: this.state.redeemCode,\n        type: state.from.substr(1)\n      })\n        .then(res => {\n          const data = res.data\n          if (data.code === 200) {\n            // 如果从我的页面进来,点击兑换直接兑换成功课程,弹出弹窗\n            // 如果从订单页面进来,点击兑换兑换成券\n            const coupon = data.data\n\n            if (state.from === '/my') {\n              if (coupon['ctype'] == 2) {\n                this.setState({\n                  courseCouponData: coupon,\n                  courseCouponExchange: true,\n                  redeemCode: ''\n                })\n              } else {\n                this.setState({\n                  couponList: [...this.state.couponList, coupon],\n                  redeemCode: ''\n                })\n                Toast.info('兑换成功')\n                this.getMyCoupons()\n              }\n            }\n            if (state.from === '/order') {\n              /*const coupon = data.data\n\n              if (coupon['ctype'] == 2\n                && coupon['limit_course'] != this.state.courseId) {\n                this.setState({\n                  invalid_coupons: [...this.state.invalid_coupons, coupon],\n                  showUseButton: null,\n                  redeemCode: ''\n                })\n              } else {\n                this.setState({\n                  valid_coupons: [...this.state.valid_coupons, coupon],\n                  redeemCode: ''\n                })\n              }*/\n              Toast.info('兑换成功')\n              this.getAllCoupons()\n            }\n\n          } else {\n            Toast.info(data.msg)\n          }\n        })\n    } else {\n      Toast.info('请输入兑换码')\n    }\n  }\n\n  getMyCoupons = () => {\n    Promise.all([\n      http.get(`${API.home}/m/coupon/expansion`),\n      http.get(`${API.home}/m/coupon/all`)\n    ]).then((coupons) => {\n      let myCoupons = []\n      const [expansionCoupons, allCoupons] = coupons\n      const {data: all} = allCoupons\n      const {data: expansion} = expansionCoupons\n      if (expansion.code == 200) {\n        Array.isArray(expansion.data)\n        && (expansion.data = expansion.data.map(item => (item.ctype = 4, item)))\n        && (myCoupons = myCoupons.concat(expansion.data))\n      } else {\n        Toast.info(expansion.msg)\n      }\n      if (all.code == 200) {\n        Array.isArray(all.data) && (myCoupons = myCoupons.concat(all.data))\n      } else {\n        Toast.info(all.msg)\n      }\n\n      this.setState({\n        couponList: myCoupons\n      })\n    })\n  }\n\n  getAllCoupons = () => {\n    Promise.all([\n      http.get(`${API.home}/m/coupon/expansion`),\n      http.post(`${API.home}/m/coupon/select`, {course_id: this.state.courseId})\n    ]).then((coupons) => {\n      const [expansionCoupons, selectCoupons] = coupons\n      const {data: select} = selectCoupons\n      const {data: expansion} = expansionCoupons\n      let PzCoupon = Array.isArray(expansion.data) ? expansion.data : []\n      if (expansion.code == 200) {\n        Array.isArray(expansion.data)\n        && (expansion.data = expansion.data.map(item => (item.ctype = 4, item)))\n        && (this.setState({\n          valid_coupons: this.state.valid_coupons.concat(expansion.data)\n        }))\n      } else {\n        Toast.info(expansion.msg)\n      }\n      if (select.code === 200) {\n        const inuse_coupon = select.data['inuse_coupon']\n        let PzCoupon2 = inuse_coupon\n            ? [...inuse_coupon, ...select.data.valid_coupons]\n            : select.data.valid_coupons\n        this.setState({\n          valid_coupons: PzCoupon.concat(PzCoupon2),\n          invalid_coupons: select.data.invalid_coupons,\n          selectedCouponId: inuse_coupon.length ? inuse_coupon[0].id : 0\n        })\n\n      } else {\n        Toast.info(data.msg)\n      }\n    })\n  }\n\n  // 立即兑换课程\n  toExchangeCourse = (e, code) => {\n    e.stopPropagation()\n    http.post(`${API['base-api']}/pay/miandan/${code}`, {}).then(res => {\n      const data = res.data\n      if (data.errno === 200) {\n        this.setState({\n          courseCouponExchange: true,\n          courseCouponData: res.data.data\n        })\n        this.getMyCoupons()\n      } else {\n        Toast.info(data.msg)\n      }\n    })\n  }\n\n  useCoupon = val => {\n    const {history} = this.props\n    const coupon = this.state.couponList.find(item => item.id === val)\n\n    if (val) {\n      if (this.state.showUseButton) {\n\n        if (coupon['limit_course'] === 0) {\n          history.push(`/classify`)\n        } else {\n          history.push(`/detail?id=${coupon['limit_course']}`)\n          return false\n        }\n\n      } else {\n\n        const {courseId, selectedCouponId} = this.state\n\n        if (selectedCouponId === val) {\n\n\n          http.post(`${API.home}/m/coupon/cancel`, {\n            course_id: courseId\n          }).then(res => {\n            const data = res.data\n            if (data.code === 200) {\n\n\n              this.setState({\n                selectedCouponId: 0\n              })\n\n\n            } else {\n              Toast.info(data.msg)\n            }\n          })\n\n\n        } else {\n          http.post(`${API.home}/m/coupon/use`, {\n            course_id: this.state.courseId,\n            coupon_id: val\n          })\n            .then(res => {\n              const data = res && res.data\n              if (data.code === 200) {\n\n                this.setState({selectedCouponId: val})\n                this.props.history.goBack()\n\n\n              } else {\n                Toast.info(data.msg)\n              }\n            })\n\n        }\n\n\n      }\n\n    } else {\n      Toast.info('未知错误')\n      location.reload()\n    }\n\n  }\n\n  // 开始学习\n  toStudy = (vCourseId, isHaveVideo) => {\n    const {history} = this.props\n    if (isHaveVideo == 0) {\n      Toast.info('尚未开课,开课后立即上传课程~', 2)\n    } else {\n      history.push(`/play/video?id=${vCourseId}`)\n    }\n    this.setState({\n      courseCouponExchange: false\n    })\n  }\n\n  // 关闭弹窗\n  closeFreeCourse = () => {\n    this.setState({\n      courseCouponExchange: false\n    })\n  }\n\n  endExpansion = (id, validId) => {\n    this.setState({\n      valid_coupons: this.state.valid_coupons.map(item => {\n        if (item.id === id) {\n          delete item.start_amount\n          item.id = validId\n        }\n        return item\n      })\n    })\n  }\n\n\n  render() {\n    const {state} = this.props.location\n    const {showUseButton, selectedCouponId} = this.state\n    return (\n      <div className='use-coupon'>\n        <RedeemBar onChange={this.handleChange}\n                   exchange={this.exchange}\n                   redeemCode={this.state.redeemCode}/>\n        <div className=\"coupons-area\">\n          <Content\n            coupons={\n              state\n              && state.from\n              && state.from === '/my'\n                ? this.state.couponList\n                : this.state.valid_coupons\n            }\n            showUseButton={showUseButton}\n            selectedCouponId={selectedCouponId}\n            select={this.select}\n            useCoupon={this.useCoupon}\n            toExchangeCourse={this.toExchangeCourse}\n            endExpansion={this.endExpansion}\n          />\n          {\n            this.state.invalid_coupons.length > 0 &&\n            (\n              <>\n                <div className='invalid-title'>- 不可使用的优惠券 -</div>\n                <Content\n                  coupons={this.state.invalid_coupons}\n                  selectedCouponId={selectedCouponId}\n                  select={this.select}\n                  purpose={'use'}\n                  invalid={'invalid'}\n                />\n              </>\n            )\n          }\n        </div>\n        {\n          this.state.courseCouponExchange &&\n          <FreeCouponCourse toStudy={this.toStudy} closeFreeCourse={this.closeFreeCourse}\n                            courseCouponData={this.state.courseCouponData}/>\n        }\n      </div>\n    )\n  }\n}\n\nfunction Content({coupons, ...rest}) {\n  if (coupons.length === 0) {\n    return (\n      <div className='empty'>\n        <p>暂无可使用的优惠券</p>\n      </div>\n    )\n  }\n  return (\n    <ul>\n      {\n        coupons.map(item => {\n          return (\n              item.id &&\n            <Coupon\n              key={item.id}\n              {...item}\n              id={item.id}\n              {...rest}\n            />\n          )\n        })\n      }\n    </ul>\n  )\n}\n\nfunction FreeCouponCourse(props) {\n  const {toStudy, closeFreeCourse, courseCouponData} = props\n  return (\n    <div className=\"free-coupon-box\">\n      <div className=\"free-coupon-content\">\n        <div className=\"coures-content-success\"><i className={'iconfont icondanseshixintubiao-5'}/></div>\n        <div className=\"coures-content-title\">恭喜你课程兑换成功!赶快去学习吧~</div>\n        <img className=\"coures-content-img\" src={courseCouponData.image_name} alt=\"\"/>\n        {\n          courseCouponData.course_expire != 0 &&\n          <div className=\"coures-content-tip\"><i\n            className={'iconfont icondanseshixintubiao-8'}/><span>课程有效期:自今日起{courseCouponData.course_expire}天内,请在有效期内学习该课程哦~</span>\n          </div>\n        }\n\n        <a className='toStudy'\n           onClick={() => toStudy(courseCouponData.v_course_id, courseCouponData.is_is_start)}>去学习</a>\n      </div>\n      <div className=\"free-coupon-close\">\n        <i className={'iconfont iconiconfront-2'} onClick={() => closeFreeCourse()}/>\n      </div>\n    </div>\n  )\n}\n\nexport default WithFullSize(UseCoupon)\n","import React, {PureComponent} from 'react';\nimport './index.scss'\n\nimport {http, getParam} from '@/utils'\nimport {WithFullSize} from '@/HOCs'\nimport {Toast} from 'antd-mobile'\nimport {HeaderBar} from \"@/common\";\n\nclass UsePatch extends PureComponent {\n    constructor(props) {\n        super(props);\n        this.state = {\n            success: false,\n            checkedIndex: 0,\n            list: [\n                {\n                    amount: 10,\n                    desc: '兑换后7日内有效',\n                    type: '代金券'\n                },\n                {\n                    amount: 20,\n                    desc: '兑换后7日内有效',\n                    type: '代金券'\n                },\n                {\n                    amount: 50,\n                    desc: '兑换后7日内有效',\n                    type: '代金券'\n                },\n                {\n                    amount: 100,\n                    desc: '兑换后7日内有效',\n                    type: '代金券'\n                }\n            ],\n            couponAmount: '',  // 碎片额度\n        };\n    }\n\n    componentDidMount() {\n        this.getPatchList()\n    }\n\n    // 选中\n    select = (index, item) => {\n        if (this.state.couponAmount >= item.amount) {\n            this.setState({\n                checkedIndex: index\n            })\n        }\n    }\n\n    // 合成\n    compound = () => {\n        const _this = this\n        if (this.state.couponAmount >= 10) {\n            http.post(`${API.home}/sys/red_packet/compose`, {type: _this.state.checkedIndex + 1}).then((res) => {\n                if (res.data.code === 200) {\n                    _this.setState({\n                        success: true\n                    })\n                    setTimeout(() => {\n                        _this.getPatchList()\n                    }, 2000)\n\n                } else {\n                    Toast.info(res.data.msg, 2)\n                }\n            })\n        }\n    }\n\n    getPatchList() {\n        http.get(`${API.home}/sys/red_packet/balance`).then((res) => {\n            if (res.data.code === 200) {\n                this.setState({\n                    couponAmount: res.data.data.coupon_amount,\n                    success: false\n                })\n            } else {\n                Toast.info(res.data.msg, 2)\n            }\n        })\n    }\n\n    render() {\n        return (\n            <div className='my-patch'>\n                <div className={'couponAmount'}>\n                    代金券碎片余额:<span>{this.state.couponAmount}元</span>\n                </div>\n\n                <Coupon data={this.state.list}\n                        myAmount={this.state.couponAmount}\n                        select={this.select}\n                        checkedIndex={this.state.checkedIndex}/>\n                <div className=\"compound-button--compose\">\n                <button\n                    className={`compound ${this.state.couponAmount >= 10 ? 'disable-active' : 'disable'}`}\n                    onClick={this.compound}>合成\n                </button>\n                </div>\n\n                <div className=\"patch-desc\">\n                    <p className={'title'}><i></i><span>代金券碎片说明</span><i></i></p>\n                    <p className={'desc-item'}>1. 碎片可通过“分享课程领取红包”获得,也可通过线上活动获得,具体请关注官网信息;</p>\n                    <p className={'desc-item'}>2. 碎片在购课时不能单独使用,可合成完整代金券后用代金券抵扣现金;</p>\n                    <p className={'desc-item'}>3. 碎片合成代金券后7日内有效。</p>\n                </div>\n                \n                {\n                    this.state.success &&\n                    <div className=\"success\">\n                        兑换成功\n                    </div>\n                }\n            </div>\n        );\n    }\n}\n\nfunction Coupon(props) {\n    const {data, myAmount, select, checkedIndex} = props\n    return (\n        <div className={'coupons'}>\n            {\n                data && data.length > 0 && data.map((item, index) => {\n                    return (\n                        <div className='items-box' key={index} onClick={() => select(index, item)}>\n                            <div className={`coupon-info ${myAmount >= item.amount ? 'active' : null}`}>\n                                <div className=\"type\">{item.type}</div>\n                                <div className={'amount'}><span>{item.amount}</span>元</div>\n\n                                {\n                                    myAmount >= item.amount &&\n                                    <i className={`checkout ${index === checkedIndex ? 'iconfont icondanseshixintubiao-5' : 'nochecked'}`}\n                                    />\n                                }\n                                <ul>\n                                    {\n                                        new Array(19).fill('a').map((item, index) => {\n                                            return <li key={index}/>\n                                        })\n                                    }\n                                </ul>\n                            </div>\n\n                            <div className={'coupon-des'}>\n                                {item.desc}\n                            </div>\n                        </div>\n                    )\n                })\n            }\n        </div>\n    )\n}\n\n\nexport default WithFullSize(UsePatch);","import React, { Component } from 'react'\nimport { NavLink, Route, Switch, Redirect } from \"react-router-dom\"\nimport myCoupons from \"./myCoupons\"\nimport myPatch from './myPatch'\nimport { HeaderBar } from \"@/common\";\nimport './coupons.scss'\n\n\nclass coupons extends Component {\n    render() {\n        const {match, location} = this.props;\n        return (\n            <div className={'coupons-box'}>\n                <HeaderBar title='优惠券' arrow={true}/>\n                <section id='coupons'>\n                    <div className='tab'>\n                        <div>\n                            <NavLink to={{\n                                pathname: `${match.url}/my-coupon`,\n                                search: location.search,\n                                state: {...this.props.location.state}\n                            }}\n                                     replace\n                                     activeClassName='tab-active'\n                            >我的优惠券</NavLink>\n                        </div>\n                        <div>\n                            <NavLink to={{\n                                pathname: `${match.url}/my-patch`,\n                                search: location.search,\n                                state: {...this.props.location.state}\n                            }}\n                                     replace\n                                     activeClassName='tab-active'\n                            >碎片合成</NavLink>\n                        </div>\n                    </div>\n                    <div className=\"btm-border\"></div>\n\n                    <div className=\"coupons-container\">\n                        <Switch>\n                            <Redirect exact from='/coupons' to={{\n                                pathname: 'coupons/my-coupon', search: location.search, state: {\n                                    from: this.props.location.state && this.props.location.state.from\n                                }\n                            }}/>\n                            <Route path={`${this.props.match.path}/my-coupon`} component={myCoupons}/>\n                            <Route path={`${this.props.match.path}/my-patch`} component={myPatch}/>\n                        </Switch>\n                    </div>\n                </section>\n            </div>\n        )\n    }\n\n}\n\nexport default coupons;\n","import React from 'react'\nimport { Modal } from 'antd-mobile'\nimport './index.scss'\n\nexport default function ({\n                             amount,\n                             limit_amount,\n                             onCancel = () => {\n                             },\n                             onConfirm\n                         }) {\n    const content = (\n        <>\n            <div className=\"end-expansion-alert-ques\">\n                {`你的${amount}元优惠券正在膨胀中,\n                确定要结束膨胀吗?`}\n            </div>\n            <div className=\"end-expansion-alert-hint\">\n                {`离${limit_amount}元只差一点点了!继续膨胀,优惠更多哦`}\n            </div>\n        </>\n    )\n    Modal.alert('温馨提示', content, [\n        {text: '再考虑下', onPress: onCancel, style: {color: '#333'}},\n        {text: '确定结束膨胀', onPress: onConfirm}\n    ])\n}\n"],"sourceRoot":""}