coupons.de75fd45.chunk.js.map 45.3 KB
Newer Older
xuzhenghua committed
1
{"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","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.de75fd45.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    } = 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'}>可用于大于代金券金额的课程</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":""}