{"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.646b9e4c.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":""}