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