{"version":3,"sources":["components/detail/bargain/image/kanjia_icon.png","components/detail/bargain/image/kanjia_cg_icon.png","components/detail/bargain/bargainInfo/index.js","components/detail/bargain/index.js","components/detail/group/index.js","components/detail/outline/index.js","components/detail/shareRank/index.js","components/detail/audition/index.js","components/detail/btnstatus/index.js","components/detail/carousel/index.js","components/detail/index.js","components/bargainMiddlePage/image/kanjia_icon.png","components/detail/overlay/index.js","components/detail/single/index.js","components/detail/single/singleSuccess.js","components/bargainMiddlePage/ranking/index.js"],"names":["module","exports","__webpack_require__","p","BargainInfo","state","mobile","code","isBargain","handleChange","e","_e$target","target","name","value","_this","setState","Object","defineProperty","sendCode","console","log","validateTel","http","post","concat","API","phone_num","then","res","data","toast_default","a","info","errno","msg","handleClick","home","objectSpread","props","iWantBargain","_this$state","this","react_default","createElement","className","list_default","type","onChange","placeholder","maxLength","htmlFor","id","onClick","react_router_dom","to","Component","Bargain","classCallCheck","possibleConstructorReturn","getPrototypeOf","call","getBargainRankList","courseId","list","outList","getBargainInfo","getParam","barInfo","bargain_status","getMore","isShowMore","boxHide","val","toArtifact","isShowOverlay","status","useArtifact","toKanjia","toCart","course_id","history","push","continueBargain","_this$state$barInfo","bargain_code","user","uid","parent_uid","_res$data","user_status","close","kanjiaIcon","require","limitPeople","bargainCode","time","BargainIntro","limit_people","BargainStatus","overlay","bargainInfo","Artifact","UseArtifact","ranking","icon","flex_default","direction","justify","Item","thirdRow","btn","_useState","useState","_useState2","slicedToArray","day","setDay","_useState3","_useState4","hour","setHour","_useState5","_useState6","min","setMin","_useState7","_useState8","sec","setSec","is_artifact","invit_num","date","end_time","now","Date","setInterval","differenceInSeconds","differenceInMinutes","differenceInHours","differenceInDays","bargain_price","String","padStart","assist_num","src","avatar_file","alt","user_name","amount","compose","connect","withRouter","Group","closeMore","toPay","pdd_order_id","_this$props","courseInfo","group_status","group","alreadyIn","invitedFriends","hideMbc","formatTimeByMillisecond","millisecond","hours","minutes","seconds","parseInt","pdd_price","number","countdown","now_groupon_list","nextProps","course_info","pdd_group_info","length","map","item","_this2","_this$props$courseInf","_this3","groupInfo","groupon_member","groupSuccessMbc","member","ary","num","groupTip","key","Math","random","avatar","user_type","now_groupon_total","index","person_num","Fragment","OutLine","htmlDecode","content","replace","tabchange","tab","getList","get","stageInfo","introduce","white_space_default","tabs_default","tabs","title","initialPage","teachers","course_hour","start_time","dangerouslySetInnerHTML","__html","intro","stage_name","lesson","is_aist","class_status","toAudition","toSingleset","class_price","video_auth","is_video","v_course_id","video_id","is_open","is_baoming","point","practice","is_tested","pathname","search","qid","from","window","location","ShareRank","getRankList","rankingslice","slice","getCode","share","dist_first","dist_first_level_ti","dist_code","openRanking","shareRank","colse","head_imgurl","align","bind","Audition","auditionBox","common","text","BtnStatus","signUpNow","hasError","cidArr","JSON","stringify","Number","simpleCourse","simple","formatDate","split","tobuy","bargainStatus","keyToGroup","bargainToOrder","bargain","cancel","isbuy","in_cart","_nextProps$data","_nextProps$user","is_bargain","_this$props2","_this$props2$user","_this$state$courseInf","price1","price","aist_start_time","CancelBargain","getCourses","Carouselw","timer","clearTimeout","wing_blank_default","carousel_default","vertical","dots","autoplay","infinite","live_msg","Detail","payCallback","assertThisInitialized","singMess","parse","localStorage","getItem","intervalPayStatus","clearInterval","singleType","nowPrice","now_price","laterPrice","three_day_later_price","isPdd","is_pdd","isweixinPay","weixin_code","onBridgeReady","WeixinJSBridge","invoke","appId","timeStamp","nonceStr","package","signType","paySign","err_msg","alert","document","addEventListener","attachEvent","check","oid","payCallBack","fetchCourseInfo","course","wxShare","course_title","desc","index_description","link","encodeURI","origin","imgUrl","image_name","singleBox","setItem","_this2$props","addCourseToCart","ß","_this2$state$course","self_oid","isvip","_this$props$location$","browser","isWeixin","prevProps","_this$state$course$co","_this$state2","href","_this$props$location$2","arrow","cart","toHref","components_detail_carousel","simpledescription","price0","course_qq","vip_range","service","detail_audition","single","vcourseId","videoId","singleSuccess","is_dist","detail_shareRank","detail_group","detail_bargain","detail_outline","detail_btnstatus","dispatch","bindActionCreators","root","body","documentElement","events","Overlay","_Users_fe_frontCode_mr_julyedu_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_0__","_Users_fe_frontCode_mr_julyedu_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__","_Users_fe_frontCode_mr_julyedu_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__","preventScroll","preventDefault","overlayBox","forEach","passive","removeEventListener","_this4","ReactDom","createPortal","react__WEBPACK_IMPORTED_MODULE_5___default","ref","el","style","top","scrollY","children","Single","_Users_fe_frontCode_mr_julyedu_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_2__","_Users_fe_frontCode_mr_julyedu_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4__","_Users_fe_frontCode_mr_julyedu_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5__","payType","toBuy","videoID","orderId","order_id","alipayPay","weixinPay","antd_mobile_lib_toast__WEBPACK_IMPORTED_MODULE_1___default","encodeURIComponent","toLowerCase","url","_Users_fe_frontCode_mr_julyedu_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_assertThisInitialized__WEBPACK_IMPORTED_MODULE_6__","showSingleBox","toBuyAll","zerobuyReceive","success","zerogroupBuy","getOrderId","groupOrderId","getOrderStatus","getTime","endTime","toGroup","nextContext","_this5","s","m","h","react__WEBPACK_IMPORTED_MODULE_8___default","toLearn","react__WEBPACK_IMPORTED_MODULE_7___default","Ranking","MoreList","img"],"mappings":"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","file":"static/js/detail.48995e3a.chunk.js","sourcesContent":["module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAMAAAC7IEhfAAAA51BMVEUAAAD3yyr4zCr60jD61DT4zSz4zi360C770jL93jn94UH3yin4yyz4ziz4zi34zS361TX50i/50jD61DP72Dj61jP+4kH+4ED4zCv3zCz4zSz4zS350jL61jb61jT6zir50DH83Dz71DP83Dj+5ET2zDD50C77zyj93j/930H82zv3yir3yCj/6072xib3yyv/6kz2xiT/7lD/8FL2wyL2xCP/8VT/7E//8lb83T74zS32wiH/81b/6Er71zj94kT72zz50zP+5kj84EH/9Vj+5Uf61TX50TH83j/4zy//9Ff3xyb0vBpXStORAAAAK3RSTlMA8+yrk9q7gTsdBPfnysGyoJ+IhWhMFg3w5d7QvKSbmI9eWich+nxTRjARluH5lgAAAm5JREFUOMt1lddi4jAQRYVp6b1vspvdZKvG6pI7NjWQ7P9/T7BFQBBzXnjw0YyvxhJonZ1fzcODRuPgsNndQVvZPW9DCca4/Lk7e6rV/rUwIdiBcNy6+uz98DjgDYDffN/0WsTR3Kpf171j13MB3Vn38Fb0/cr7BpsdgeIl6uTD++16FDQhMQanu1okuv4JjpbAkMZm4JoEX9vGxFmNJ9Eoy1KGyeodaPJQelfUWZz0RpIJIYeEa0WAx7RaDrtz8Yw4TWIh/JIgm0b5hOayp6s8rbnoOQV5njK/QozGLJ+lr0NeFbhBaMeNzPsi8C1hL+E9IwcAlfkHdcGdbWSsxoTpFy+FEZlNoM/RsStC5NuKwYD1BybzBbMiv0df3NaQTM1H45hJwURmN/StjTx3KupFBkIGzJfFbFIWN2NSieCh/bURMynHPSl8EfmSlZULZR81UMMRk2nqh5P/UeiznJUvK8SMf4ie07hvAjPmhA8My6rs6VBji+eEIYTJQL5omvRNFZ6ZAMgi5R1qLieoopCFQ1Xu0kBW0UWs6aLIEeqSZWITCEF5uaQIfV+mWayW3c7sCG1jw8IiqeYwGYWSFW+cLsXL5UehpimTzL4TxMOoDwpWXmMPoUeySCzm81DUfudcu6ec6vLQ7gLYrWZm7Dx1AXhGc044xjpKWbU1dR5VTXu4MGCdj9hrrnEtBK4W1w7BfCZefcrrG6sLtOCUUB73KKe1om1sOQJMFKn39CFy6BBcD/CjPeRyuuXa0w9og4v9zyro/YuaG/wUr6uEw8kzquPp8dbe9fayv239RdvYu+x22vO/D6/dOb9cD/EONO7gZ+bVU9IAAAAASUVORK5CYII=\"","module.exports = __webpack_public_path__ + \"static/media/kanjia_cg_icon.81a489ac.png\";","import React, {Component} from 'react';\nimport {InputItem, List} from \"antd-mobile\";\nimport './bargain-info.scss'\nimport {validateTel} from \"@/utils\";\nimport {Toast} from 'antd-mobile'\nimport { http } from \"@/utils\";\nimport {Link} from \"react-router-dom\";\n\n\nclass BargainInfo extends Component {\n\n state = {\n mobile: '',\n code: '',\n isBargain: true\n }\n\n handleChange = e => {\n\n let {name, value} = e.target\n\n this.setState({\n [name]: value\n })\n }\n\n sendCode = () => {\n\n console.log(validateTel(this.state.mobile));\n\n if (!validateTel(this.state.mobile)) {\n Toast.info('请输入正确的手机号')\n return\n }\n\n\n http.post(`${API['base-api']}/sys/bind_send_sms`, {\n phone_num: this.state.mobile\n }).then(res => {\n if (res.data.code == 200) {\n Toast.info('验证码发送成功', 2, null, false)\n } else if (res.data.errno === 410) {\n Toast.info('该手机号已注册,请使用该手机号登录,发起砍价。', 3, null, false)\n this.setState({\n isBargain: false\n })\n } else {\n Toast.info(res.data.msg)\n }\n })\n }\n\n handleClick = () => {\n if (!this.state.code) {\n Toast.info('请填写验证码')\n return\n }\n\n http.post(`${API.home}/m/user/bindMobile`, {\n ...this.state\n }).then(res => {\n if (res.data.code == 200) {\n Toast.info('绑定手机号成功', 2, null, false)\n this.props.iWantBargain()\n } else {\n Toast.info(res.data.msg)\n }\n })\n\n }\n\n\n render() {\n let {mobile, code} = this.state\n return (\n <div className={'bargain-bind-phone'}>\n <div className=\"title\">绑定手机,先砍一刀</div>\n <List className={'list'}>\n <input type=\"tel\" onChange={this.handleChange} name='mobile' placeholder='手机号' maxLength={11}/>\n <label htmlFor=\"code\">\n <input type=\"tel\" id='code' onChange={this.handleChange} name='code' placeholder='验证码'\n maxLength={6}/>\n <div className={'send-code'} onClick={this.sendCode}>发送验证码</div>\n </label>\n </List>\n {\n this.state.isBargain &&\n <button onClick={this.handleClick}\n className={validateTel(mobile) && code ? 'active' : ''}>先砍一刀</button>\n }\n {\n !this.state.isBargain &&\n <Link className='button active' to={`/passport/login`}>去登录</Link>\n }\n </div>\n );\n }\n}\n\nexport default BargainInfo","import React, { Component, useState } from 'react'\nimport './bargain.scss'\nimport { Flex, Toast } from \"antd-mobile\"\nimport Overlay from '../overlay'\nimport BargainInfo from './bargainInfo'\nimport {differenceInSeconds, differenceInMinutes, differenceInHours, differenceInDays} from \"date-fns\"\nimport { api, getParam, http } from \"@/utils\"\nimport Ranking from \"@/components/bargainMiddlePage/ranking\"\nimport { compose } from \"redux\"\nimport { withRouter } from 'react-router-dom'\nimport {connect} from \"react-redux\";\n\n\nclass Bargain extends Component {\n constructor(props) {\n super(props)\n this.state = {\n isShowOverlay: false,\n kanjiaIcon: require('./image/kanjia_icon.png'),\n info: '',\n outList: [],\n list: [],\n limitPeople: '',\n status: '',\n bargainCode: '',\n time: '',\n barInfo: {}\n }\n }\n\n componentDidMount() {\n this.getBargainInfo();\n }\n\n // 获取助理好友\n getBargainRankList = (id, type) => {\n let data = {\n courseId: id,\n type: type\n }\n http.post(`${API.home}/m/bargain/rankList`, data).then((res) => {\n if (res.data.code === 200) {\n this.setState({\n list: res.data.data.list,\n outList: res.data.data.list[0]\n })\n } else {\n Toast.info(res.data.msg, 2)\n }\n })\n }\n\n\n //获取砍价信息\n getBargainInfo = () => {\n let data = {\n courseId: getParam('id')\n }\n http.post(`${API.home}/m/bargain/courseDetail`, data).then((res) => {\n if (res.data.code === 200) {\n this.setState({\n barInfo: res.data.data,\n // info: res.data.data,\n // limitPeople: res.data.data.limit_people,\n // bargainCode: res.data.data.bargain_code\n })\n if (res.data.data.bargain_status === 0) {\n this.getBargainRankList(getParam('id'), 0)\n }\n } else {\n Toast.info(res.data.msg, 2)\n }\n })\n }\n\n // 查看更多\n getMore = () => {\n this.setState({\n isShowMore: true\n })\n }\n\n // 自组件传给父组件的boxHide\n boxHide = (val) => {\n this.setState({isShowMore: val})\n }\n\n // 领取砍价神器\n toArtifact = () => {\n let data = {\n courseId: getParam('id')\n }\n http.post(`${API.home}/m/bargain/receiveLimit`, data).then((res) => {\n if (res.data.code === 200) {\n this.setState({\n isShowOverlay: true,\n status: 1,\n })\n } else {\n Toast.info(res.data.msg, 2)\n }\n })\n }\n\n // 使用砍价神器\n useArtifact = () => {\n this.toKanjia(getParam('id'), 2, 0)\n }\n\n // 加入购物车\n toCart = () => {\n let data = {\n course_id: getParam('id')\n }\n http.post(`${API.home}/m/cart/add`, data).then((res) => {\n if (res.data.code === 200 || res.data.code === 15001) {\n this.props.history.push('/shopcart')\n } else {\n Toast.info(res.data.msg, 2);\n }\n })\n }\n // 继续砍价\n continueBargain = () => {\n const { barInfo = {} } = this.state;\n const code = barInfo.bargain_code;\n this.props.history.push(`/bargain-middle-page?id=${getParam('id')}&bargaincode=${code}&is_originator=1`)\n }\n\n // 我要砍价\n iWantBargain = () => {\n const {user} = this.props\n const uid = user && user.data && user.data.uid\n if(!uid){\n this.props.history.push('/passport/login')\n } else {\n this.toKanjia(getParam('id'), 1, 0)\n }\n }\n\n // 砍价接口\n toKanjia = (id, type, uid) => {\n let data = {\n course_id: id,\n type: type, // 1 用户自己砍价 2 使用砍价神器 3 好友助力砍价 4 好友第二次助力\n parent_uid: uid // 被助力人id 【自己本人操作传0】\n }\n const { history } = this.props;\n http.post(`${API.home}/m/bargain/toBargain`, data).then((res) => {\n const { data: { data, code } } = res;\n if (code === 200) {\n if (type === 2) {\n this.setState({\n isShowOverlay: true,\n status: 2,\n })\n } else {\n if (data.user_status === 2) {\n this.setState({\n isShowOverlay: true,\n status: 3,\n })\n } else {\n history.push(`/bargain-middle-page?id=${getParam('id')}&bargaincode=${data.bargain_code}&is_originator=1`)\n }\n }\n } else {\n Toast.info(res.data.msg, 2)\n }\n })\n }\n\n\n // 关闭弹窗\n close = () => {\n this.setState({\n isShowOverlay: false,\n status: '',\n })\n }\n\n render() {\n const { list, outList, barInfo } = this.state;\n const {user} = this.props\n const uid = user && user.data && user.data.uid\n return (\n <div className={'bargain-func'}>\n\n {/*bargain_status 砍价状态 0-砍价中,1砍价结束,待支付,2砍价过期(没有砍价记录没有砍价信息),3已购买*/}\n {\n (barInfo.bargain_status === 2 || !uid) &&\n <BargainIntro limitPeople={barInfo.limit_people} iWantBargain={this.iWantBargain}/>\n }\n {\n (barInfo.bargain_status === 0 || barInfo.bargain_status === 1) && uid &&\n <BargainStatus\n info={barInfo}\n outList={outList}\n getMore={this.getMore}\n toArtifact={this.toArtifact}\n useArtifact={this.useArtifact}\n continueBargain={this.continueBargain}\n />\n }\n\n\n {\n this.state.isShowOverlay &&\n <Overlay>\n {/*绑定手机号*/}\n {\n this.state.status === 3 &&\n <BargainInfo iWantBargain={this.iWantBargain}/>\n }\n\n\n {/*领取砍价神器*/}\n {\n this.state.status === 1 &&\n <Artifact useArtifact={this.useArtifact}/>\n }\n {/*使用砍价神器*/}\n {\n this.state.status === 2 &&\n <UseArtifact toCart={this.toCart}/>\n }\n\n {\n this.state.status !== 0 &&\n <i onClick={this.close} className={'iconfont iconiconfront-2 bargain-close'}></i>\n }\n\n </Overlay>\n\n }\n\n\n {/*更多好友砍价*/}\n <Ranking\n list={list}\n icon={this.state.kanjiaIcon}\n limitPeople={barInfo.limit_people}\n isShowMore={this.state.isShowMore}\n boxHide={this.boxHide}\n />\n\n </div>\n )\n }\n}\n\nfunction BargainIntro(props) {\n return (\n <div className=\"intro-outer\">\n <div className=\"intro-inner\">\n <Flex direction={'column'} justify={'center'} className={'intro-wrapper'}>\n <p>\n 邀请\n <span className={'indicator'}>{props.limitPeople}位</span>\n 好友帮忙砍价可获得\n <span className={'indicator'}>【砍价神器】</span>\n </p>\n <p>一刀绝杀,砍爆底价</p>\n <Flex.Item>\n <button onClick={props.iWantBargain}>我要砍价</button>\n </Flex.Item>\n </Flex>\n </div>\n </div>\n )\n}\n\nfunction BargainStatus(props) {\n\n const [day, setDay] = useState(0)\n const [hour, setHour] = useState(0)\n const [min, setMin] = useState(0)\n const [sec, setSec] = useState(0)\n\n\n let thirdRow, btn\n // is_artifact\t 0-再邀请多少人可以使用 1-可以使用未领取 2-已领取 3-已使用\n if (props.info.is_artifact === 0) {\n thirdRow =\n <div>再邀请<span className={'indicator'}>{props.info.invit_num}</span>位好友助力即可获得<span\n className={'indicator'}>【砍价神器】</span></div>\n } else if (props.info.is_artifact === 1) {\n thirdRow = <div>恭喜你获得<span className={'indicator'}>【砍价神器】</span></div>\n btn = <button onClick={props.toArtifact}>立即领取</button>\n } else if (props.info.is_artifact === 2) {\n thirdRow = <div>恭喜你获得<span className={'indicator'}>【砍价神器】</span></div>\n btn = <button onClick={props.useArtifact}>立即使用</button>\n }\n\n\n let date = props.info.end_time * 1000\n let now = Date.now()\n setInterval(() => {\n date -= 1000\n setSec(differenceInSeconds(new Date(date), now) % 60)\n setMin(differenceInMinutes(new Date(date), now) % 60)\n setHour(differenceInHours(new Date(date), now) % 24)\n setDay(differenceInDays(new Date(date), now) % 24)\n\n }, 1000)\n\n\n return (\n <div className=\"status-outer\">\n\n {\n props.info.bargain_status === 0 &&\n <div className=\"status-inner\">\n\n <Flex direction={'column'}>\n <div className={'first-row'}>\n <div>\n 已砍<span className={'indicator'}>{props.info.bargain_price}元</span>\n <span className={'time hour'}>{String(hour).padStart(2, 0)}</span> : \n <span className={'time min'}>{String(min).padStart(2, 0)}</span> : \n <span className={'time sec'}>{String(sec).padStart(2, 0)}</span>\n <span className='over'>后砍价结束</span>\n </div>\n <div onClick={props.getMore}>{props.info.assist_num}位好友助力></div>\n </div>\n\n <div className=\"sec-row\">\n <div>\n <img\n src={props.outList.avatar_file}\n alt=\"\"/>\n <span className='name'>{props.outList.user_name}</span>\n </div>\n <div>\n <div>砍掉<span className={'indicator'}>{props.outList.amount}元</span></div>\n <button onClick={props.continueBargain}>继续砍价</button>\n </div>\n </div>\n <div className=\"third-row\">\n {thirdRow}\n {btn}\n </div>\n </Flex>\n </div>\n }\n\n {\n props.info.bargain_status === 1 &&\n <div className=\"status-inner status-over\">\n\n <Flex direction={'column'}>\n <div className={'first-row'}>\n <div>\n 已砍<span className={'indicator'}>{props.info.bargain_price}元</span>\n <span className='bargain-over'>\n 砍价结束\n </span>\n </div>\n <div onClick={props.getMore}>{props.info.assist_num}位好友助力></div>\n </div>\n <div className=\"time-tobuy\">\n 砍价金额将于\n <span className={'time hour'}>{String(day).padStart(2, 0)}</span><span\n className={'unit'}> 天 </span>\n <span className={'time min'}>{String(hour).padStart(2, 0)}</span><span\n className={'unit'}> 时 </span>\n <span className={'time sec'}>{String(min).padStart(2, 0)}</span><span\n className={'unit'}>分</span>\n 后清零,请尽快完成支付\n </div>\n </Flex>\n </div>\n }\n </div>\n )\n}\n\n\n{/*领取砍价神器*/\n}\n\nfunction Artifact(props) {\n return (\n <div className='artifact-box'>\n <p className='top-tip'>恭喜你获得【砍价神器】!</p>\n <p className='middle-tip'>\n 您可以使用\n <span className={'indicator'}>【砍价神器】</span>\n 再砍一刀\n </p>\n <button className='use-artifact' onClick={props.useArtifact}>立即使用</button>\n </div>\n )\n}\n\nfunction UseArtifact(props) {\n return (\n <div className='use-artifact-box'>\n <img className='top-img' src={require('./image/kanjia_cg_icon.png')} alt=\"\"/>\n <p className='top-tip'>厉害了,又砍掉了10元!</p>\n <p className='middle-tip'>\n 你已经砍了\n <span className={'indicator'}>109元</span>\n 没见过你这么能砍的人...\n </p>\n <p className='btm-tip'>\n 不能再砍了哦~\n </p>\n <button className='tubuy' onClick={props.toCart}>去支付</button>\n </div>\n )\n}\n\n\nexport default compose(\n connect(\n state => ({\n user: state.user\n }),\n null\n ),\n withRouter\n)(Bargain)\n","import React, { Component } from 'react'\nimport './index.scss'\nimport { getParam, http } from \"@/utils\"\nimport { connect } from \"react-redux\"\nimport { Flex } from 'antd-mobile'\nimport {browser} from \"@/utils\"\nimport {Toast} from 'antd-mobile'\n\n\nclass Group extends Component {\n constructor(props) {\n super(props)\n this.state = {\n isShowMore: false,\n alreadyIn: false,\n pdd_price: 0,\n number: 0,\n data: {},\n countdown: props.countdown,\n now_groupon_list: [],\n }\n console.log(props);\n }\n\n // 查看更多\n getMore = () => {\n this.setState({\n isShowMore: true\n })\n }\n\n // 关闭更多窗口\n closeMore = () => {\n this.setState({\n isShowMore: false\n })\n }\n\n toPay = (pdd_order_id) => {\n const {courseInfo, history} = this.props;\n if (courseInfo.group_status === 3) {\n history.push(\n `/order?id=${getParam('id')}`, \n {\n group: 1,\n pdd_order_id\n }\n );\n } else {\n this.setState({\n isShowMore: false,\n alreadyIn: true\n });\n }\n }\n\n invitedFriends = () => {\n this.setState({\n isShowMore: false,\n alreadyIn: false,\n });\n this.props.invitedFriends();\n }\n\n componentWillReceiveProps(nextProps) {\n if (nextProps.courseInfo && nextProps.courseInfo.courseInfo && nextProps.courseInfo.courseInfo.course_info && nextProps.courseInfo.courseInfo.course_info.pdd_group_info) {\n let now_groupon_list = nextProps.courseInfo.courseInfo.course_info.pdd_group_info.now_groupon_list;\n if (now_groupon_list && now_groupon_list.length > 0) {\n now_groupon_list.map(item => {\n item.end_time -= 1;\n return item;\n });\n this.setState({\n now_groupon_list,\n })\n }\n }\n this.setState({\n countdown: nextProps.countdown\n })\n }\n\n componentDidMount() {\n const { courseInfo={} } = this.props;\n if (courseInfo.pdd_group_info) {\n let now_groupon_list = courseInfo.pdd_group_info.now_groupon_list;\n if (now_groupon_list && now_groupon_list.length > 0) {\n setInterval(() => {\n now_groupon_list.map(item => {\n item.end_time -= 1;\n return item;\n });\n this.setState({\n now_groupon_list,\n })\n }, 1000);\n }\n }\n }\n\n hideMbc = () => {\n this.setState({\n alreadyIn: false\n });\n }\n\n formatTimeByMillisecond = (millisecond) => {\n let date = millisecond * 1000,\n hours = 0,\n minutes = 0,\n seconds = 0;\n date -= 1000;\n hours = `${parseInt(date / (60 * 60 * 1000))}`.padStart(2, 0);\n minutes = `${parseInt((date - hours * 3600000) / 60000)}`.padStart(2, 0);\n seconds = `${parseInt((date - hours * 3600000 - minutes * 60000) / 1000)}`.padStart(2, 0);\n return `${hours}:${minutes}:${seconds}`;\n }\n\n render() {\n const { courseInfo } = this.props;\n const { alreadyIn, countdown, now_groupon_list } = this.state;\n let groupInfo = '', \n groupon_member = '', \n group_status = -1, \n groupSuccessMbc = null;\n if (courseInfo) {\n groupInfo = courseInfo.pdd_group_info;\n groupon_member = groupInfo.groupon_member;\n group_status = courseInfo.group_status;\n }\n if (group_status === 4) {\n if (groupon_member.member) {\n const { number } = groupon_member;\n let ary = [], num = number;\n while (num != 0) {\n ary.push(num);\n num--;\n }\n let groupTip = (<div className='group-user-list'>\n <Flex justify='center' className='imgList'>\n {\n groupon_member.member.map(item => {\n return (\n <div className='imgContainer' key={Math.random()}>\n <img className='imgname' src={item.avatar} alt='' />\n {\n item.user_type === 1 ? (\n <div className='leaderFlag'>\n <span>团长</span>\n </div>\n ) : null\n }\n </div>);\n })\n }\n {\n ary.map(item => {\n return (<div className='imgContainer' key={Math.random()}>\n <div className='imgname'>\n <i className='iconfont iconwode-xianxing no-body'></i>\n </div>\n </div>)\n })\n }\n </Flex>\n </div>);\n groupSuccessMbc = <div className='groupSuccessMbc' onClick={this.hideMbc}>\n <div className='content'>\n <p>你已参团</p>\n {groupTip}\n <div className='group-btn' onClick={this.invitedFriends}>邀请好友参团 {countdown} 后结束</div>\n <p className='dec'>分享到3个群后,成团率高达98%</p>\n </div>\n </div>;\n }\n\n }\n\n return (\n <div className='group-box'>\n <div className=\"group-title\">\n <span>{groupInfo.now_groupon_total}人正在开团,可直接参与</span>\n <span className='more' onClick={this.getMore}>\n 查看更多\n <i className='iconfont iconiconfront-70'></i>\n </span>\n\n </div>\n <ul className=\"group-list\">\n {\n groupInfo.now_groupon_list && groupInfo.now_groupon_list.length > 0 && groupInfo.now_groupon_list.map((item, index) => {\n return (\n <li key={index} className='group-item'>\n <img className='avatar' src={item.avatar} alt=\"\" />\n <div className='user-name text-overflow-one'>\n {item.user_name}\n </div>\n <div className='group-status'>\n <p>还差<span className='red'>{item.number}人</span>拼成</p>\n <p>剩余 {this.formatTimeByMillisecond(item.end_time)}</p>\n </div>\n <span onClick={() => { this.toPay(item.pdd_order_id) }} className='topay'>去参团</span>\n </li>\n )\n })\n }\n </ul>\n <div className=\"group-dec\">\n <span>\n <i className='iconfont iconiconfront-1'></i>\n ·好友参团 ·人满成交 ·人不满退款\n </span>\n <span className='allNum'>{`累计${groupInfo.person_num}人成团`}</span>\n </div>\n {\n (alreadyIn && group_status === 4) && (\n <>\n {groupSuccessMbc}\n </>\n )\n\n }\n {/*更多*/}\n {\n this.state.isShowMore &&\n <div className=\"moreMbc\">\n <div className=\"content\">\n <div className=\"title-box\">\n 正在拼团\n </div>\n <ul className='more-group-list'>\n {\n groupInfo.now_groupon_list && groupInfo.now_groupon_list.length > 0 && groupInfo.now_groupon_list.map((item, index) => {\n return (\n <li key={index} className='group-item'>\n <img className='avatar' src={item.avatar} alt=\"\" />\n <div className='user-name'>\n <p className='name text-overflow-one'>{item.user_name}</p>\n <p className='time'>剩余 {this.formatTimeByMillisecond(item.end_time)}</p>\n </div>\n <p className='group-status'>还差{item.number}人</p>\n <span onClick={() => { this.toPay(item.pdd_order_id) }} className='topay'>去参团</span>\n </li>\n )\n })\n }\n </ul>\n <div className='more-group-dec'>\n 仅显示10个正在开团的人\n </div>\n <i onClick={this.closeMore} className={'iconfont iconiconfront-2 close'}></i>\n </div>\n\n </div>\n }\n\n </div>\n )\n }\n}\n\n// export default connect(\n// state => ({ courseInfo: state }),\n// null\n// )(Group)\n\nexport default Group;\n","import React, {Component} from 'react'\nimport {Link} from 'react-router-dom'\nimport {Tabs, WhiteSpace} from 'antd-mobile'\nimport './index.scss'\nimport {api, getParam, http} from \"@/utils\"\nimport {Toast} from 'antd-mobile'\n\n\nclass OutLine extends Component {\n constructor(props) {\n super(props)\n this.state = {\n stageInfo: []\n }\n }\n\n htmlDecode = (content) => {\n // let e = document.createElement('div');\n // e.innerHTML = content;\n // return e.childNodes.length === 0 ? \"\" : e.childNodes[0].nodeValue;\n if(content) {\n content = content.replace(/</g , '<');\n content = content.replace(/>/g , '>');\n content = content.replace(/&gt;/g , '');\n content = content.replace(/"/g , '\"');\n content = content.replace(/&nbsp;/g , '');\n }\n return content;\n }\n\n tabchange = (tab, index) => {\n if(index === 1) {\n this.getList()\n }\n };\n\n // 获取大纲数据\n getList = () => {\n http.get(`${API.home}/m/course/syllabuses/${getParam('id')}`).then((res) => {\n if (res.data.code === 200) {\n this.setState({\n stageInfo: res.data.data\n })\n } else {\n Toast.info(res.data.msg, 2)\n }\n })\n }\n\n render() {\n const tabs = [\n {title: '介绍'},\n {title: '大纲'}\n ];\n let introduce = ''\n if (this.props.data) {\n introduce = this.props.data\n }\n return (\n <div className='course-detail'>\n <WhiteSpace/>\n <Tabs tabs={tabs}\n initialPage={0}\n onChange={(tab, index) => { this.tabchange(tab, index) }}\n >\n {/*介绍*/}\n <div className='introduce'>\n <p>讲师:{introduce.teachers}</p>\n <p>课时:{introduce.course_hour}</p>\n <p>时间:{introduce.start_time}</p>\n <div className='dec' dangerouslySetInnerHTML={{__html: this.htmlDecode(introduce.intro)}}></div>\n </div>\n {/*大纲*/}\n <div className='outline'>\n {\n this.state.stageInfo && this.state.stageInfo.length > 0 && this.state.stageInfo.map((item, index) => {\n return (\n <div className='stagebox' key={index}>\n <h1 className='stage text-overflow-1'>{item.stage_name}</h1>\n {\n item.lesson.map((item, index) => {\n return (\n <ul key={index}>\n <h2 className='classhour'>\n <span className='title text-overflow-1'>{item.name}</span>\n {/*\n class_status\n 0-未购买未开单集购买\n 1-未购买已开单集购买\n 2-已购买直播结束已上传视频\n 3-已购买未开课、已购买直播结束\n 4-已购买直播中\n 5-可试听且有试听权限\n 6-可试听但无试听权限\n */}\n { // 试听\n !introduce.is_aist && item.class_status === 6 &&\n <span className='btn-right-10 audition'\n onClick={this.props.toAudition}>试听\n <i className='iconfont iconcelluar'></i>\n </span>\n }\n { // 未购买未开单集购买:上锁标志,点击提示购买\n !introduce.is_aist && item.class_status === 0 &&\n <i className='iconfont iconiconfront-74 icon-right-22'></i>\n }\n { // 未购买已开单集购买:显示单集价格,点击购买单集\n !introduce.is_aist && item.class_status === 1 &&\n <span className='btn-right-10 singleset'\n onClick={e => this.props.toSingleset(item)}>¥ {item.class_price}</span>\n }\n {\n !introduce.is_aist && item.class_status === 4 &&\n item.video_auth === 1 && item.is_video === 4 &&\n <span className='live icon-right-22'>正在直播<i\n className='iconfont icondanseshixintubiao-23'></i></span>\n }\n {\n // 已购买直播结束已上传视频:正常播放按钮,点击播放课程\n !introduce.is_aist && item.class_status === 2 &&\n <Link to={`/play/video?id=${introduce.v_course_id + '&video_id=' + item.video_id}`} className='iconfont icondanseshixintubiao-23 icon-right-22'></Link>\n }\n\n {\n // 返现课程 是返现课程 未开课 已开课 是返现课程 未开课 已开课 已练习\n introduce.is_aist && item.is_open && introduce.is_baoming === 1 &&\n <Link to={`/play/video?id=${introduce.v_course_id + '&video_id=' + item.video_id}`} className='aist aist_open'></Link>\n\n }\n\n {\n // 返现课程 是返现课程 未开课 已开课 是返现课程 未开课 已开课 已练习\n introduce.is_aist && (!item.is_open || introduce.is_baoming === 0) &&\n\n <i className='aist iconfont iconiconfront-74'></i>\n }\n </h2>\n {\n item.point && item.point.length > 0 && item.point.map((item, index) => {\n const type = (\n <span>\n {\n item.type === 1 &&\n <span>知识点{index + 1}:</span>\n }\n {\n item.type === 2 &&\n <span className='red'>实战项目:</span>\n }\n </span>\n )\n\n return (\n <li className='points text-overflow-1'\n key={index}>{type}{item.name}</li>\n )\n\n })\n }\n {\n <>\n {\n introduce.is_aist && item.practice.title !== \"\" && (!item.is_open || introduce.is_baoming === 0) &&\n <span className='camp camp_test' key={index}>\n <span>课后练习:{item.practice.title}</span>\n <i className='exam exam_close' />\n </span>\n }\n {\n introduce.is_aist && item.practice.title !== \"\" && item.is_open && introduce.is_baoming === 1 && !item.practice.is_tested &&\n <Link to={{\n pathname: `/campTest`,\n search: `?keshi_id=${item.video_id}&qid=${item.practice.qid}`,\n state: {from: `/detail${window.location.search}`}\n }} className='camp camp_test' key={index}>\n <span>课后练习:{item.practice.title}</span>\n </Link>\n }\n {\n introduce.is_aist && item.practice.title !== \"\" && item.is_open && introduce.is_baoming === 1 && item.practice.is_tested &&\n <Link to={{\n pathname: `/campResolve`,\n search: `?keshi_id=${item.video_id}&qid=${item.practice.qid}`,\n state: {from: `/detail${window.location.search}`}\n }} className='camp camp_test' key={index}>\n <span>课后练习:{item.practice.title}</span>\n <i className='exam exam_open' />\n </Link>\n }\n </>\n }\n </ul>\n )\n })\n }\n </div>\n )\n })\n }\n </div>\n </Tabs>\n <WhiteSpace/>\n </div>\n );\n }\n\n}\n\nexport default OutLine;","import React, {Component} from 'react'\nimport './index.scss'\nimport {getParam, http} from \"@/utils\"\nimport {Toast, Flex} from 'antd-mobile'\nimport {connect} from \"react-redux\"\nimport {withRouter} from 'react-router-dom'\nimport {compose} from \"redux\"\n\nclass ShareRank extends Component {\n constructor(props) {\n super(props)\n this.state = {\n list: [], // 分销排行榜\n rankingslice: [], // 分销排行榜前两名\n code: '', // 分销code\n shareRank: false\n }\n }\n\n componentDidMount() {\n this.getRankList()\n this.getCode()\n }\n\n // 获取排行榜\n getRankList = () => {\n http.get(`${API.home}/dist/rankList/${getParam('id')}`).then((res) => {\n if (res.data.code === 200) {\n this.setState({\n list: res.data.data,\n rankingslice: res.data.data.slice(0, 2)\n })\n } else {\n Toast.info(res.data.msg, 2)\n }\n })\n }\n\n // 获取分销码\n getCode = () => {\n const {user} = this.props\n const uid = user && user.data && user.data.uid\n if (!uid) return\n let data = {\n course_id: getParam('id')\n }\n http.post(`${API.home}/dist/createCode`, data).then((res) => {\n if (res.data.code === 200) {\n this.setState({\n code: res.data.data.code\n })\n } else {\n Toast.info(res.data.msg, 2)\n }\n })\n }\n\n // 点击分销跳转到海报页\n share = (info) => {\n const {user} = this.props\n const uid = user && user.data && user.data.uid\n if (!uid) {\n this.props.history.push('/passport/login')\n } else {\n const courseId = getParam('id')\n const dist_first = info.dist_first_level_ti\n const uid = info.uid\n const dist_code = this.state.code\n this.props.history.push(`/shareposter?courseId=${courseId}&dist_first=${dist_first}&uid=${uid}&dist_code=${dist_code}`)\n }\n }\n\n\n // 打开分销排行榜弹窗\n openRanking = () => {\n this.setState({\n shareRank: true\n })\n }\n\n // 关闭弹窗\n colse = () => {\n this.setState({\n shareRank: false\n })\n }\n\n render() {\n const { courseInfo: info = '' } = this.props;\n // let info = ''\n // if (this.props.courseInfo && this.props.courseInfo.courseInfo && this.props.courseInfo.courseInfo.course_info) {\n // info = this.props.courseInfo.courseInfo.course_info\n // }\n return (\n <div className='share-ranking'>\n <Flex className='share-container' justify='between'>\n <Flex className='share-list'>\n <span className=\"title\">排行榜:</span>\n <div className='ranking-box' onClick={this.openRanking}>\n {\n this.state.rankingslice && this.state.rankingslice.length > 0 && this.state.rankingslice.map((item, index) => {\n return (\n <span key={index} className=\"ranking-mess\">\n <img src={item.head_imgurl} alt=\"\"/>\n <i>{item.amount}元</i>\n </span>\n )\n })\n }\n\n\n </div>\n </Flex>\n <Flex className='share-money' justify='between' align='center'>\n <img onClick={this.openRanking} className=\"ranking-ellipsis\"\n src=\"https://julyedu-img.oss-cn-beijing.aliyuncs.com/Image/train/ellipsis.png\" alt=\"\"/>\n <button className=\"share\" onClick={this.share.bind(this, info)}>分享赚{info.dist_first_level_ti}元\n </button>\n </Flex>\n </Flex>\n\n\n {\n this.state.shareRank &&\n <div className=\"shareMbc\">\n <div className=\"content\">\n <div className=\"title-box\">\n <span className=\"lable\">赚钱排行榜</span>\n <span className=\"tips\">只展示前9名用户</span>\n </div>\n <ul>\n {\n this.state.list && this.state.list.length > 0 && this.state.list.map((item, index) => {\n return (\n <li key={index}>\n <img src={item.head_imgurl} alt=\"\"/>\n <span className='course-title'>{item.user_name}</span>\n <span className='course-price'>{item.amount}元</span>\n </li>\n )\n })\n }\n </ul>\n <div className='shareBtn'>\n <button onClick={this.share.bind(this, info)}>分享赚{info.dist_first_level_ti}元</button>\n </div>\n <i onClick={this.colse} className={'iconfont iconiconfront-2 close'}></i>\n </div>\n\n </div>\n }\n </div>\n );\n }\n}\n\nexport default compose(\n connect(\n state => ({\n // courseInfo: state,\n user: state.user\n }),\n null\n ),\n withRouter\n)(ShareRank)\n","import React, {Component} from 'react'\nimport './index.scss'\nimport {CallApp} from '../../../common'\n\n\nclass Audition extends Component {\n constructor(props) {\n super(props);\n }\n\n colse = () => {\n this.props.boxHide(false);\n }\n\n render() {\n return (\n <div>\n {\n this.props.auditionBox &&\n <div className='popup-box'>\n <div className='content audition-box'>\n <p className='audition-header'>当前页面不支持试听</p>\n <p className='audition-dec'>请前往APP试听</p>\n <CallApp className='btn btn-18B4ED' text='立即前往'></CallApp>\n </div>\n <i onClick={this.colse} className={'iconfont iconiconfront-2 close'}></i>\n </div>\n }\n </div>\n );\n }\n\n}\n\nexport default Audition;\n","import React, { Component } from 'react'\nimport { getParam, http } from \"@/utils\"\nimport { Toast } from 'antd-mobile'\nimport { Link } from 'react-router-dom'\nimport { getCourses } from \"@/components/detail/actions\"\nimport { connect } from \"react-redux\"\nimport './index.scss'\nimport Overlay from '../overlay'\n\n\nclass BtnStatus extends Component {\n constructor(props) {\n super(props)\n this.state = {\n isbuy: 1,\n is_baoming: 0,\n group_status: 3,\n in_cart: false,\n countdown: 0,\n barInfo: {}\n }\n\n }\n\n componentDidMount() {\n // this.getBargainInfo()\n this.group = false;\n }\n\n\n // componentDidUpdate(prevProps) {\n // let {courseInfo} = this.props\n // let {courseInfo: prevCourseInfo} = prevProps\n // if (courseInfo && courseInfo.is_bargain) {\n // if (prevCourseInfo && courseInfo.is_bargain !== prevCourseInfo.is_bargain) {\n // this.getBargainInfo()\n // }\n // }\n // }\n\n componentWillReceiveProps(nextProps) {\n const { data = {}, user = {}} = nextProps;\n if(data.is_bargain && user.data && user.data.uid) {\n this.getBargainInfo();\n }\n // if(nextProps.data && nextProps.data.is_bargain) {\n // this.getBargainInfo()\n // }\n this.setState({\n courseInfo: data,\n countdown: nextProps.countdown,\n });\n }\n\n // // 加入购物车 type:1 加入购物车,2加入购物车并跳转到购物车页面去支付\n // toCart = (type) => {\n // const { history, addCourseToCart } = this.props;\n // let data = {\n // course_id: getParam('id')\n // };\n // http.post(`${API.home}/m/cart/add`, data).then((res) => {\n // if (res.data.code === 200) {\n // if (type === 1) {\n // Toast.info('已加入购物车', 2)\n // // this.props.getCourses()\n // // document.location.reload()\n // addCourseToCart();\n // } else {\n // history.replace('/shopcart');ß\n // }\n // } else if (res.data.code === 15001) {\n // history.replace('/shopcart');\n // } else if (res.data.code === 4030) {\n // history.replace('/passport');\n // } else {\n // Toast.info(res.data.msg, 2);\n // }\n // })\n // };\n // 返现课程的立即购买\n signUpNow = () => {\n if(this.props.user.hasError) {\n // 未登录 去登陆\n this.props.history.push('/passport');\n }else{\n let cidArr = JSON.stringify([Number(getParam('id'))]);\n http.get(`${API['base-api']}/m/cart/addtopreorder/${cidArr}?type=1`).then((res) => {\n if (res.data.errno === 0) {\n this.props.history.push(\"/order?id=\" + res.data.data[0], {type: 1});\n } else {\n Toast.info(res.data.msg, 2);\n }\n })\n }\n };\n // 普通课程的立即报名 要模拟结算过程\n simpleCourse = () => {\n if(this.props.user.hasError) {\n // 未登录 去登陆\n this.props.history.push('/passport');\n }else{\n http.get(`${API['base-api']}/m/cart/addtopreorder/[${getParam('id')}]`).then((res) => {\n if (res.data.errno === 0) {\n this.props.history.push(`/order?id=${getParam('id')}`, {simple: 1})\n } else {\n Toast.info(res.data.msg, 2);\n }\n })\n }\n };\n // 格式化开课时间\n formatDate = (date) => {\n let ary = date.split('-');\n return `${ary[1]}月${ary[2]}日开课`;\n };\n // 直接购买\n tobuy = () => {\n const {user} = this.props;\n const {barInfo} = this.state;\n const uid = user && user.data && user.data.uid\n if (!uid) {\n this.props.history.push('/passport/login')\n } else {\n if (barInfo.bargain_status === 2) {\n // this.toCart(2)\n // 新需求 不需要加入购物车 直接走普通课程的立即报名流程 跳到订单页\n this.simpleCourse();\n } else {\n // 取消砍价记录\n this.setState({\n isShowOverlay: true,\n bargainStatus: 1,\n })\n }\n }\n };\n // 一键开团\n keyToGroup = () => {\n if(this.props.user.hasError) {\n // 未登录 去登陆\n this.props.history.push('/passport');\n return;\n }\n this.props.history.push(`/order?id=${getParam('id')}`, {group: 1})\n };\n // 砍完价去支付\n bargainToOrder = () => {\n if(this.props.user.hasError) {\n // 未登录 去登陆\n this.props.history.push('/passport');\n }else{\n http.get(`${API['base-api']}/m/cart/addtopreorder/[${getParam('id')}]`).then((res) => {\n if (res.data.errno === 0) {\n this.props.history.push(`/order?id=[${getParam('id')}]`, {bargain: 1});\n } else {\n Toast.info(res.data.msg, 2);\n }\n })\n }\n };\n\n // 取消砍价\n cancel = () => {\n let data = {\n courseId: getParam('id')\n }\n http.post(`${API.home}/m/bargain/cancel`, data).then((res) => {\n if (res.data.code === 200) {\n this.setState({\n isShowOverlay: false,\n bargainStatus: '',\n })\n http.get(`${API['base-api']}/m/cart/addtopreorder/[${getParam('id')}]`).then((res) => {\n if (res.data.errno === 0) {\n this.props.history.push(`/order?id=[${getParam('id')}]`, {simple: 1});\n } else {\n Toast.info(res.data.msg, 2);\n }\n })\n // window.location.href = '/shopcart'\n // this.props.history.push(`/order?id=[${getParam('id')}]`, {simple: 1})\n } else {\n Toast.info(res.data.msg, 2)\n }\n })\n }\n close = () => {\n this.setState({\n isShowOverlay: false,\n bargainStatus: '',\n })\n }\n // 砍价接口\n toKanjia = () => {\n const {user, history} = this.props;\n const uid = user && user.data && user.data.uid;\n const course_id = getParam('id');\n if (!uid) {\n this.props.history.push('/passport/login')\n } else {\n let data = {\n course_id,\n type: 1, // 1 用户自己砍价 2 使用砍价神器 3 好友助力砍价 4 好友第二次助力\n parent_uid: 0 // 被助力人id 【自己本人操作传0】\n }\n http.post(`${API.home}/m/bargain/toBargain`, data).then((res) => {\n const {data, code, msg} = res.data;\n if (code === 200) {\n history.push(`/bargain-middle-page?id=${course_id}&bargaincode=${data.bargain_code}&is_originator=1`)\n } else {\n Toast.info(msg, 2)\n }\n })\n }\n }\n\n\n //获取砍价信息\n getBargainInfo = () => {\n const {user} = this.props\n const uid = user && user.data && user.data.uid\n let data = {\n courseId: getParam('id')\n }\n http.post(`${API.home}/m/bargain/courseDetail`, data).then((res) => {\n if (res.data.code === 200) {\n this.setState({\n barInfo: res.data.data\n })\n } else {\n Toast.info(res.data.msg, 2)\n }\n })\n }\n\n render() {\n // data 课程信息;barInfo 砍价信息\n const { user = {}, toCart } = this.props;\n const { countdown ,barInfo, courseInfo: info = {}} = this.state;\n const uid = user.data && user.data.uid;\n return (\n <div>\n {/*正常购买*/}\n {\n info.is_baoming === 0 && info.group_status !== 3 &&\n <div className='btns-box'>\n <Link className='consult consult-s' to=\"https://q.url.cn/AB8aue?_type=wpa&qidian=true\">\n <i className='iconfont iconerji'></i>\n <span>课程咨询</span>\n </Link>\n {\n info.in_cart &&\n <Link to='/shopcart' className='btn btn-s bg-FCCD05'>去购物车结算</Link>\n }\n {\n !info.in_cart &&\n <button className='btn btn-s bg-FCCD05' onClick={e => toCart(1)}>加入购物车</button>\n\n }\n <span className='btn btn-s bg-FD7700' onClick={e => this.simpleCourse()}>立即报名</span>\n </div>\n }\n\n {/*已购买*/}\n {\n info.is_baoming === 1 &&\n <div className='btns-box'>\n <Link className='consult consult-m' to=\"https://q.url.cn/AB8aue?_type=wpa&qidian=true\">\n <i className='iconfont iconerji' />\n <span>课程咨询</span>\n </Link>\n <Link to={`/play/video?id=${info.v_course_id}`} className='btn btn-m bg-09f'>开始学习</Link>\n </div>\n }\n {/*拼团 未开团*/}\n {\n info.is_baoming === 0 && info.group_status === 3 &&\n <div className='btns-box'>\n <Link className='consult consult-s' to=\"https://q.url.cn/AB8aue?_type=wpa&qidian=true\">\n <i className='iconfont iconerji'></i>\n <span>课程咨询</span>\n </Link>\n <button className='btn btn-s bg-F4AAA7' onClick={this.simpleCourse}>\n <span>{`¥ ${info.price1}`}</span>\n <span>直接购买</span>\n </button>\n <button className='btn btn-s bg-E02E24'>\n <span onClick={this.keyToGroup}>\n <span>{`¥ ${info.pdd_group_info.price}`}</span>\n <span>一键开团</span>\n </span>\n </button>\n </div>\n\n }\n {/*拼团 已开团*/}\n {\n info.is_baoming === 0 && info.group_status === 4 &&\n <div className='btns-box'>\n <Link className='consult consult-s' to=\"https://q.url.cn/AB8aue?_type=wpa&qidian=true\">\n <i className='iconfont iconerji'></i>\n <span>课程咨询</span>\n </Link>\n <div className='btn btn-l bg-E02E24' onClick={this.props.invitedFriends}>\n 邀请好友参团 {countdown} 后结束\n </div>\n </div>\n }\n\n {/*砍价*/}\n {\n info.is_baoming === 0 && this.props.data && this.props.data.is_bargain &&\n <div className='btns-box'>\n <Link className='consult consult-s' to=\"https://q.url.cn/AB8aue?_type=wpa&qidian=true\">\n <i className='iconfont iconerji'></i>\n <span>课程咨询</span>\n </Link>\n <button className='btn btn-s bg-F4AAA7'>\n <span>¥{info.price1}</span>\n <span onClick={this.tobuy}>直接购买</span>\n </button>\n {\n (barInfo.bargain_status === 2 || !uid) &&\n <button className='btn btn-s bg-E02E24' onClick={this.toKanjia}>\n 我要砍价\n </button>\n }\n {\n (barInfo.bargain_status === 0 || barInfo.bargain_status === 1) && (uid) &&\n <button className='btn btn-s bg-E02E24'>\n <span>¥{barInfo.amount}</span>\n <span onClick={this.bargainToOrder}>去支付</span>\n </button>\n }\n </div>\n }\n\n {/*特殊课程*/}\n {\n this.state.isbuy === 20 &&\n <div className='btns-box'>\n <Link className='consult-l' to=\"https://q.url.cn/AB8aue?_type=wpa&qidian=true\">\n <i className='iconfont iconerji'></i>\n <span>课程咨询</span>\n </Link>\n </div>\n }\n\n {/*特训营课程 未登录 未报名*/}\n {\n (info.is_aist && (this.props.user.hasError || info.is_baoming === 0)) &&\n <div className='btns-box'>\n <Link className='consult consult-m' to=\"https://q.url.cn/AB8aue?_type=wpa&qidian=true\">\n <i className='iconfont iconerji'></i>\n <span>课程咨询</span>\n </Link>\n\n <button className='btn sign-up-now' onClick={e => this.signUpNow()}>\n <span>立即报名</span>\n </button>\n </div>\n }\n {/*特训营课程 登陆且已报名*/}\n {\n info.is_aist && !this.props.user.hasError && info.is_baoming === 1 &&\n <div className='btns-box'>\n <Link className='consult consult-m' to=\"https://q.url.cn/AB8aue?_type=wpa&qidian=true\">\n <i className='iconfont iconerji'></i>\n <span>课程咨询</span>\n </Link>\n\n {\n info.aist_start_time === \"\" ?\n (\n <Link to={`/play/video?id=${info.v_course_id}`} className='btn btn-m learn-now'>\n <span>开始学习</span>\n </Link>\n\n ) : (\n <button className='btn btn-m wait-open' >\n <span>{this.formatDate(info.aist_start_time)}</span>\n </button>\n )\n }\n </div>\n }\n\n\n {\n this.state.isShowOverlay &&\n <Overlay>\n {/*引导关注公众号*/}\n {\n this.state.bargainStatus === 1 &&\n <CancelBargain close={this.close} cancel={this.cancel}/>\n }\n\n <i onClick={this.close} className={'iconfont iconiconfront-2 bargain-close'}></i>\n </Overlay>\n\n }\n </div>\n )\n }\n}\n\n\nfunction CancelBargain(props) {\n return (\n <div className='cancel-bargain'>\n <p className='top-img'><i className='iconfont icondanseshixintubiao-8'></i></p>\n <p className='tip-mess'>您已发起砍价,直接购买将清除已砍金额。直接购买可使用优惠券~</p>\n <div className=\"btns\">\n <button onClick={props.close}>取消</button>\n <button onClick={props.cancel}>确定</button>\n </div>\n </div>\n )\n}\n\nexport default connect(\n state => ({\n user: state.user\n }),\n {getCourses}\n)(BtnStatus)\n","import React, {Component} from 'react'\nimport {Carousel, WingBlank} from 'antd-mobile'\n\nimport './index.scss'\nimport {api, getParam, http} from \"@/utils\"\n\n// 课程页面滚动广告\nclass Carouselw extends Component {\n constructor(props) {\n super(props)\n this.state = {\n list: []\n }\n }\n\n componentDidMount() {\n const _this = this\n _this.getList()\n this.timer = setInterval(function () {\n _this.getList()\n }, 10000);\n\n }\n\n componentWillUnmount() {\n this.timer && clearTimeout(this.timer);\n }\n\n // 获取课程接口\n getList = () => {\n let data = {\n course_id: getParam('id')\n }\n http.post(`${API.home}/m/course/barrages`, data).then((res) => {\n if (res.data.code === 200) {\n this.setState({\n list: res.data.data,\n });\n }\n })\n }\n\n render() {\n return (\n <WingBlank>\n <Carousel className=\"my-carousel\"\n vertical\n dots={false}\n autoplay\n infinite\n >\n {\n this.state.list &&\n <div className=\"v-item text-overflow-one\">\n <img src={this.state.list.avatar} alt=\"\"/>\n {this.state.list.user_name} {this.state.list.live_msg}\n </div>\n }\n\n </Carousel>\n </WingBlank>\n )\n }\n}\n\nexport default Carouselw","import React, {Component} from 'react'\nimport './index.scss'\nimport Bargain from './bargain'\nimport Group from './group'\nimport OutLine from './outline'\nimport {HeaderBar, CallApp} from '../../common'\nimport ShareRank from \"./shareRank\"\nimport Audition from \"./audition\"\nimport Single from \"./single\"\nimport SingleSuccess from './single/singleSuccess';\nimport BtnStatus from \"./btnstatus\"\nimport Carouselw from \"./carousel\"\nimport {connect} from \"react-redux\"\nimport {getCourses, addCourseToCart} from \"./actions\"\nimport {getParam, http, browser,wxShare} from \"@/utils\"\nimport {Toast} from 'antd-mobile'\nimport {compose, bindActionCreators} from \"redux\";\n\nclass Detail extends Component {\n\n courseId\n\n constructor(props) {\n super(props)\n this.state = {\n isbuy: 0,\n isvip: 0,\n auditionBox: false,\n\n singleBox: false,\n singleType: 1,\n\n shareRank: false,\n singMess: '',\n barInfo: '',\n share: false,\n countdown: '00:00:00',\n outList: [],\n list: [],\n course: {},\n\n nowPrice: 0,\n laterPrice: 0,\n isPdd: 0, // 是否是拼团课程 控制首次单集购买后的 全集购买 接口: 拼团课程走拼团接口,否则直接走购买接口\n }\n }\n\n componentDidMount() {\n this.fetchCourseInfo();\n const { location: { state = {} } } = this.props;\n if(state.oid) {\n this.check(state.oid);\n }\n if (getParam('is_class') === 1 || getParam('weixinpay')) {\n this.payCallback()\n }\n if (browser.isWeixin) {\n this.isweixinPay()\n }\n }\n\n componentDidUpdate(prevProps) {\n if(prevProps.user.hasError !== this.props.user.hasError){\n this.fetchCourseInfo()\n }\n }\n\n payCallback =() => {\n const _this = this;\n if(!getParam('oid')) {\n return;\n }else{\n this.setState({\n singMess: JSON.parse(window.localStorage.getItem('singMess'))\n })\n _this.intervalPayStatus = setInterval(function () {\n http.get(`${API['base-api']}/m/orderState/oid/${getParam('oid')}`).then(res => {\n if (res.data.errno === 401) {\n clearInterval(_this.intervalPayStatus);\n _this.intervalPayStatus = null;\n // 获取课程类型\n http.get(`${API['base-api']}/class_order_status/${getParam('oid')}`).then((res) => {\n if (Number(res.data.data.errno) === 200) {\n // 正常购买单集成功\n _this.setState({\n singleType: 6,\n })\n } else if (Number(res.data.data.errno) === 201) {\n // 0元参团\n _this.setState({\n singleType: 4,\n })\n } else if (Number(res.data.data.errno) === 202) {\n // 0元购\n _this.setState({\n singleType: 3,\n })\n } else if (Number(res.data.data.errno) === 203) {\n // 三天内特价\n _this.setState({\n nowPrice: res.data.data.data.now_price,\n laterPrice: res.data.data.data.three_day_later_price,\n singleType: 2,\n isPdd: res.data.data.data.is_pdd,\n })\n } else {\n Toast.info(res.data.data.msg, 2)\n }\n })\n }\n })\n }, 1000)\n }\n };\n isweixinPay =()=> {\n let _this = this;\n let weixin_code = getParam('code');\n if (weixin_code) {\n if (!getParam('oid')) {\n return\n } else {\n // this.props.weixinPay(weixin_code)\n this.setState({\n singMess: JSON.parse(window.localStorage.getItem('singMess'))\n });\n http.get(`${API['base-api']}/pay/wxpay/pub_charge/oid/${getParam('oid')}/code/${weixin_code}`).then((res) => {\n if (res.data.errno === 0) {\n const data = res.data.data;\n function onBridgeReady() {\n WeixinJSBridge.invoke(\n 'getBrandWCPayRequest', {\n \"appId\": data.appId, //公众号名称,由商户传入\n \"timeStamp\": data.timeStamp, //时间戳,自1970年以来的秒数\n \"nonceStr\": data.nonceStr, //随机串\n \"package\": data.package,\n \"signType\": data.signType, //微信签名方式:\n \"paySign\": data.paySign //微信签名\n },\n function (res) {\n if (res.err_msg == \"get_brand_wcpay_request:ok\") {\n Toast.info('支付成功', 2);\n _this.intervalPayStatus = setInterval(function () {\n http.get(`${API['base-api']}/m/orderState/oid/${getParam('oid')}`).then(res => {\n if (res.data.errno === 401) {\n clearInterval(_this.intervalPayStatus);\n _this.intervalPayStatus = null;\n // 获取课程类型\n http.get(`${API['base-api']}/class_order_status/${getParam('oid')}`).then((res) => {\n if (Number(res.data.data.errno) === 200) {\n // 正常购买单集成功\n _this.setState({\n singleType: 6,\n })\n } else if (Number(res.data.data.errno) === 201) {\n // 0元参团\n _this.setState({\n singleType: 4,\n })\n } else if (Number(res.data.data.errno) === 202) {\n // 0元购\n _this.setState({\n singleType: 3,\n })\n } else if (Number(res.data.data.errno) === 203) {\n // 三天内特价\n _this.setState({\n nowPrice: res.data.data.data.now_price,\n laterPrice: res.data.data.data.three_day_later_price,\n singleType: 2,\n isPdd: res.data.data.data.is_pdd,\n })\n } else {\n Toast.info(res.data.data.msg, 2)\n }\n })\n }\n })\n }, 1000)\n } else {\n alert('支付失败')\n }\n }\n )\n }\n if (typeof WeixinJSBridge == \"undefined\") {\n if (document.addEventListener) {\n document.addEventListener('WeixinJSBridgeReady', onBridgeReady, false)\n } else if (document.attachEvent) {\n document.attachEvent('WeixinJSBridgeReady', onBridgeReady)\n document.attachEvent('onWeixinJSBridgeReady', onBridgeReady)\n }\n } else {\n onBridgeReady()\n }\n } else {\n Toast.info(res.data.msg, 2)\n }\n })\n }\n }\n }\n\n // 判断支付是否成功\n check = (oid) => {\n this.setState({\n singMess: JSON.parse(window.localStorage.getItem('singMess'))\n })\n http.get(`${API['base-api']}/class_order_status/${oid}`).then((res) => {\n if (Number(res.data.data.errno) === 200) {\n // 正常购买单集成功\n this.setState({\n singleType: 6\n })\n } else if (Number(res.data.data.errno) === 201) {\n // 0元参团\n this.setState({\n singleType: 4\n })\n } else if (Number(res.data.data.errno) === 202) {\n // 0元购\n this.setState({\n singleType: 3\n })\n } else if (Number(res.data.data.errno) === 203) {\n // 三天内特价\n this.setState({\n nowPrice: res.data.data.data.now_price,\n laterPrice: res.data.data.data.three_day_later_price,\n singleType: 2,\n isPdd: res.data.data.data.is_pdd,\n\n })\n } else {\n Toast.info(res.data.data.msg, 2)\n }\n })\n }\n\n payCallBack = (singleType, nowPrice, laterPrice) => {\n // Toast.info(singleType, 2);\n const _this = this;\n if(singleType === 2) {\n _this.setState({\n singleType,\n nowPrice,\n laterPrice\n })\n }else{\n _this.setState({\n singleType,\n })\n }\n };\n fetchCourseInfo = () => {\n const id = getParam('id');\n http.get(`${API.home}/m/course/detail/${id}`).then((res) => {\n const {data, code} = res.data;\n if (code === 200) {\n this.setState({\n course: data\n });\n if (data.course_info) {\n let course_info = data.course_info;\n if (course_info.group_status === 3 || course_info.group_status === 4) {\n let endTime = course_info.pdd_group_info.groupon_member.end_time;\n let date = endTime * 1000,\n hours = 0,\n minutes = 0,\n seconds = 0;\n setInterval(() => {\n date -= 1000\n hours = `${parseInt(date / (60 * 60 * 1000))}`.padStart(2, 0);\n minutes = `${parseInt((date - hours * 3600000) / 60000)}`.padStart(2, 0);\n seconds = `${parseInt((date - hours * 3600000 - minutes * 60000) / 1000)}`.padStart(2, 0);\n this.setState({\n countdown: `${hours}:${minutes}:${seconds}`\n });\n }, 1000)\n }\n wxShare({\n title: course_info.course_title,\n desc: course_info.index_description,\n link: encodeURI(location.origin + '/detail?id=' + getParam('id')),\n imgUrl:course_info.image_name\n });\n }\n\n }\n });\n }\n\n // 点击子组件试听按钮\n toAudition = () => {\n const {user} = this.props\n const uid = user && user.data && user.data.uid\n if (!uid) {\n this.props.history.push('/passport/login')\n } else {\n this.setState({\n auditionBox: true,\n })\n }\n }\n // 点击子组件单集购买按钮\n toSingleset = (item) => {\n const {user} = this.props\n const uid = user && user.data && user.data.uid\n if (!uid) {\n this.props.history.push('/passport/login')\n } else {\n this.setState({\n singleBox: true,\n singleType: 1,\n singMess: item\n });\n window.localStorage.setItem('singMess', JSON.stringify(item))\n }\n }\n\n // componentWillReceiveProps(nextProps) {\n // let _this = this;\n // if (nextProps.courseInfo.course_info) {\n // let courseInfo = nextProps.courseInfo.course_info;\n // if (courseInfo.group_status === 3 || courseInfo.group_status === 4) {\n // let endTime = courseInfo.pdd_group_info.groupon_member.end_time;\n // let date = endTime * 1000,\n // hours = 0,\n // minutes = 0,\n // seconds = 0;\n // setInterval(() => {\n // date -= 1000\n // hours = `${parseInt(date / (60 * 60 * 1000))}`.padStart(2, 0);\n // minutes = `${parseInt((date - hours * 3600000) / 60000)}`.padStart(2, 0);\n // seconds = `${parseInt((date - hours * 3600000 - minutes * 60000) / 1000)}`.padStart(2, 0);\n // _this.setState({\n // countdown: `${hours}:${minutes}:${seconds}`\n // });\n // }, 1000)\n // }\n // }\n // }\n\n // 加入购物车 type:1 加入购物车,2加入购物车并跳转到购物车页面去支付\n toCart = (type) => {\n const { history, addCourseToCart } = this.props;\n let data = {\n course_id: getParam('id')\n };\n http.post(`${API.home}/m/cart/add`, data).then((res) => {\n if (res.data.code === 200) {\n if (type === 1) {\n Toast.info('已加入购物车', 2)\n // this.props.getCourses()\n // document.location.reload()\n addCourseToCart();\n this.fetchCourseInfo();\n } else {\n history.replace('/shopcart');ß\n }\n } else if (res.data.code === 15001) {\n history.replace('/shopcart');\n } else if (res.data.code === 4030) {\n history.replace('/passport');\n } else {\n Toast.info(res.data.msg, 2);\n }\n })\n };\n\n invitedFriends = () => {\n // const {course_title, image_name, course_id, pdd_group_info, pdd_group_info: {groupon_member, groupon_member: {number}, price}} = this.state.course.course_info;\n // if (browser.isWeixin) {\n // wxShare({\n // title: `【仅剩${number}个名额】我${price}元拼了《${course_title}》`,\n // desc: course_title,\n // link: location.href,\n // imgUrl: image_name,\n // });\n // } else {\n // Toast.info('请在微信中使用分享功能!', 2);\n // }\n const { history } = this.props;\n const { course = {} } = this.state;\n if(course.course_info && course.course_info.self_oid) {\n history.push(`/togroup?id=${course.course_info.self_oid}`);\n }\n }\n\n // 自组件传给父组件的boxHide\n boxHide = (val) => {\n this.setState({\n auditionBox: val,\n singleBox: val,\n singleType: 1\n })\n this.props.history.push(`/detail?id=${getParam('id')}`);\n\n }\n\n render() {\n const { course: { course_info={} }, barInfo, singleBox, singleType } = this.state;\n let courseInfo = '',\n service = '',\n number = 0,\n endTime = 0;\n // if (this.props.courseInfo.course_info) {\n // courseInfo = this.props.courseInfo.course_info;\n // service = courseInfo.service;\n if (course_info.group_status === 3 || course_info.group_status === 4) {\n number = course_info.pdd_group_info.groupon_member.number;\n }\n // }\n const {share, countdown, list, outList} = this.state;\n let href = '';\n const { location: { state = {}} } = this.props;\n if(state.to && state.to === 'classify') {\n href = '/classify'\n }\n if(state.oid) {\n href='/classify'\n }\n if(getParam('dist_code')) {\n href='/'\n }\n return (\n <div>\n <div className='detail-box'>\n <HeaderBar\n title='课程详情'\n arrow={true}\n cart={true}\n toHref={href}\n />\n <CallApp className='toapp' />\n\n {/*弹幕*/}\n <Carouselw />\n\n {/*课程*/}\n <div className='course-content'>\n <div className='cover'>\n <img src={course_info.image_name} alt=\"\" />\n {\n course_info.is_aist &&\n <span className='return_cash' />\n }\n </div>\n <div className=\"info\">\n <p className='title'>{course_info.course_title}</p>\n <p className='contact text-overflow-2'>{course_info.simpledescription}</p>\n <div className='des'>\n {\n course_info.is_baoming === 0 &&\n <p className=\"course-price\">\n <span className=\"new\">¥{course_info.price1}</span>\n <span className=\"old\">¥{course_info.price0}</span>\n </p>\n }\n {\n course_info.is_baoming === 1 &&\n <span className=\"isbuy\">已购买</span>\n }\n </div>\n </div>\n </div>\n\n {/*正常课程已购买时显示*/}\n {\n course_info.is_baoming === 1 &&\n <div className='group'>\n 上课QQ群:{course_info.course_qq},加群请备注您的学号:{course_info.uid}\n </div>\n }\n\n {/*vip课程显示*/}\n {\n course_info.vip_range &&\n <div className=\"vip\">\n <p>已开通年会员:{course_info.vip_range}</p>\n <p>年会员QQ群:{course_info.course_qq},加群请备注您的学号:{course_info.uid}</p>\n </div>\n }\n\n {/*服务承诺*/}\n <div className='promise'>\n <label>服务承诺</label>\n <p>\n {\n course_info.service && course_info.service.length > 0 && course_info.service.map((item, index) => {\n return (\n <span key={index}> {item} </span>\n )\n })\n }\n </p>\n </div>\n\n {/*试听弹窗*/}\n <Audition auditionBox={this.state.auditionBox} boxHide={this.boxHide}/>\n\n {/*单集购买弹窗*/}\n {\n singleBox &&\n <Single\n singleType={this.state.singleType}\n singleBox={this.state.singleBox}\n boxHide={this.boxHide}\n data={this.state.singMess}\n vcourseId={course_info.v_course_id}\n videoId={this.state.singMess.video_id}\n title={course_info.course_title}\n check={this.check}\n courseId={course_info.course_id}\n />}\n {/* 单集购买成功弹窗 */}\n {\n singleType !== 1 &&\n <SingleSuccess\n boxHide={this.boxHide}\n data={this.state.singMess}\n singleType={singleType}\n vcourseId={course_info.v_course_id}\n videoId={this.state.singMess.video_id}\n nowPrice={this.state.nowPrice}\n isPdd={this.state.isPdd}\n laterPrice={this.state.laterPrice}\n courseId={course_info.course_id}\n />\n }\n {/*payCallback={this.payCallback}*/}\n {/*weixinPay = {this.weixinPay}*/}\n\n {/*分享赚钱*/}\n {\n course_info.is_dist &&\n <ShareRank courseInfo={course_info} />\n }\n\n {/**\n * 拼团\n * is_aist: 是否AI特训营\n * group_status: 团状态,3:课程有小团 用户没参加小团;4:用户参加了小团\n */}\n {\n !course_info.is_aist && (course_info.group_status === 3 || course_info.group_status === 4) &&\n <Group\n courseInfo={course_info}\n history={this.props.history}\n countdown={countdown}\n invitedFriends={this.invitedFriends}\n />\n }\n\n {/*砍价*/}\n {\n course_info.is_baoming === 0 && (!course_info.is_aist) && course_info.is_bargain &&\n <Bargain />\n }\n\n {/*课程介绍、大纲*/}\n <OutLine\n data={course_info}\n toAudition={this.toAudition}\n toSingleset={this.toSingleset}\n />\n\n {/*课程按钮*/}\n {\n course_info &&\n <BtnStatus\n countdown={countdown}\n data={course_info}\n user={this.props.user}\n invitedFriends={this.invitedFriends}\n // addCourseToCart={this.props.addCourseToCart}\n toCart={this.toCart}\n history={this.props.history}\n />}\n\n {\n share ? (\n <div\n className='groupSuccessMbc'\n onClick={() => {\n this.setState({share: false})\n }}\n >\n <div className='tipContent'>\n {`还差${number}人,分享到3个群,成团率高达98%`}\n </div>\n <div className='tipArrow'>\n <i className='iconfont iconyindao' />\n </div>\n </div>\n ) : null\n }\n </div>\n </div>\n )\n }\n\n}\n\nconst mapStateToProps = (state) => {\n return {\n // courseInfo: state.courseInfo,\n user: {\n ...state.user\n }\n }\n}\n\n// const mapDispatchToProps = {\n// fetchCoursesListIfNeeded\n// }\nconst mapDispatchToProps = (dispatch) => {\n return bindActionCreators(\n {\n getCourses,\n addCourseToCart\n },\n dispatch\n )\n}\n\n\nexport default connect(mapStateToProps, mapDispatchToProps)(Detail)","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAMAAAC7IEhfAAAA51BMVEUAAAD3yyr4zCr60jD61DT4zSz4zi360C770jL93jn94UH3yin4yyz4ziz4zi34zS361TX50i/50jD61DP72Dj61jP+4kH+4ED4zCv3zCz4zSz4zS350jL61jb61jT6zir50DH83Dz71DP83Dj+5ET2zDD50C77zyj93j/930H82zv3yir3yCj/6072xib3yyv/6kz2xiT/7lD/8FL2wyL2xCP/8VT/7E//8lb83T74zS32wiH/81b/6Er71zj94kT72zz50zP+5kj84EH/9Vj+5Uf61TX50TH83j/4zy//9Ff3xyb0vBpXStORAAAAK3RSTlMA8+yrk9q7gTsdBPfnysGyoJ+IhWhMFg3w5d7QvKSbmI9eWich+nxTRjARluH5lgAAAm5JREFUOMt1lddi4jAQRYVp6b1vspvdZKvG6pI7NjWQ7P9/T7BFQBBzXnjw0YyvxhJonZ1fzcODRuPgsNndQVvZPW9DCca4/Lk7e6rV/rUwIdiBcNy6+uz98DjgDYDffN/0WsTR3Kpf171j13MB3Vn38Fb0/cr7BpsdgeIl6uTD++16FDQhMQanu1okuv4JjpbAkMZm4JoEX9vGxFmNJ9Eoy1KGyeodaPJQelfUWZz0RpIJIYeEa0WAx7RaDrtz8Yw4TWIh/JIgm0b5hOayp6s8rbnoOQV5njK/QozGLJ+lr0NeFbhBaMeNzPsi8C1hL+E9IwcAlfkHdcGdbWSsxoTpFy+FEZlNoM/RsStC5NuKwYD1BybzBbMiv0df3NaQTM1H45hJwURmN/StjTx3KupFBkIGzJfFbFIWN2NSieCh/bURMynHPSl8EfmSlZULZR81UMMRk2nqh5P/UeiznJUvK8SMf4ie07hvAjPmhA8My6rs6VBji+eEIYTJQL5omvRNFZ6ZAMgi5R1qLieoopCFQ1Xu0kBW0UWs6aLIEeqSZWITCEF5uaQIfV+mWayW3c7sCG1jw8IiqeYwGYWSFW+cLsXL5UehpimTzL4TxMOoDwpWXmMPoUeySCzm81DUfudcu6ec6vLQ7gLYrWZm7Dx1AXhGc044xjpKWbU1dR5VTXu4MGCdj9hrrnEtBK4W1w7BfCZefcrrG6sLtOCUUB73KKe1om1sOQJMFKn39CFy6BBcD/CjPeRyuuXa0w9og4v9zyro/YuaG/wUr6uEw8kzquPp8dbe9fayv239RdvYu+x22vO/D6/dOb9cD/EONO7gZ+bVU9IAAAAASUVORK5CYII=\"","import React, { Component } from 'react';\nimport ReactDom from \"react-dom\";\n\nimport './overlay.scss'\n\nconst root = document.body || document.documentElement\n\nconst events = ['touchmove', 'mousewheel']\n\nclass Overlay extends Component {\n constructor(props) {\n super(props);\n this.overlayBox = null\n }\n\n preventScroll = e => {\n e.preventDefault()\n }\n\n componentDidMount() {\n events.forEach(item => {\n this.overlayBox.addEventListener(item, this.preventScroll, {\n passive: false\n })\n })\n }\n\n componentWillUnmount() {\n events.forEach(item => {\n this.overlayBox.removeEventListener(item, this.preventScroll)\n })\n }\n\n render() {\n return ReactDom.createPortal(\n (<div className={'overlay'}\n ref={el => this.overlayBox = el}\n style={{top: `${window.scrollY}px`}}\n >{this.props.children}</div>),\n root\n )\n }\n}\n\nexport default Overlay;","import React, { Component } from 'react'\nimport './index.scss'\nimport { getParam, http, browser } from \"@/utils\";\nimport { Toast } from 'antd-mobile';\nimport { Link, withRouter } from \"react-router-dom\";\nimport { compose } from \"redux\";\nimport { connect } from \"react-redux\";\nimport { differenceInHours, differenceInMinutes, differenceInSeconds } from \"date-fns\";\n\n\nclass Single extends Component {\n constructor(props) {\n super(props)\n this.state = {\n // status: 1,\n orderId: '',\n nowPrice: '',\n laterPrice: '',\n hour: '',\n min: '',\n sec: '',\n endTime: '',\n groupOrderId: '',\n payType: '0', // 1支付宝 0微信\n // singleBox: false,\n showSingleBox: false,\n }\n }\n\n componentDidMount() {\n // if (getParam('is_class') === 1 || getParam('weixinpay')) {\n // console.log(0);\n // this.payCallback()\n // }\n // if (browser.isWeixin) {\n // this.isweixinPay()\n // }\n }\n\n componentWillReceiveProps(nextProps, nextContext) {\n // console.log(nextProps);\n // this.setState({\n // singleBox: nextProps.singleBox\n // })\n }\n\n // 选择支付方式\n check = (type) => {\n this.setState({\n payType: type\n })\n }\n\n // 确定购买\n toBuy = () => {\n const { courseId } = this.props;\n const videoID = this.props.data.video_id || this.props.data.id;\n http.get(`${API.home}/sys/createClassOrder/${videoID}`).then((res) => {\n if (res.data.code === 200) {\n this.setState({\n orderId: res.data.data.order_id\n })\n this.state.payType === '1' ? this.alipayPay(res.data.data.order_id, courseId) : this.weixinPay(res.data.data.order_id)\n } else {\n Toast.info(res.data.msg, 2)\n }\n })\n }\n // 微信支付\n weixinPay = (orderId) => {\n // 微信内部-支付\n if (browser.isWeixin) {\n window.location.href = \"https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx23dac6775ac82877&redirect_uri=\" + encodeURIComponent(window.location.href + \"&aa=bb&oid=\" + orderId).toLowerCase() + \"&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect\";\n } else {\n // 微信外部-支付\n http.get(`${API['base-api']}/pay/wxpay/wap_charge/oid/${orderId}`).then((res) => {\n if (res.data.errno === 0) {\n window.location.href = res.data.data.url + \"&redirect_url=\" + encodeURIComponent(window.location.href + \"&weixinpay=1&oid=\" + orderId).toLowerCase();\n } else {\n Toast.info(res.data.msg, 2)\n }\n })\n }\n }\n // 支付宝支付\n alipayPay = (orderId, courseId) => {\n http.get(`${API['base-api']}/pay/alipay/wap_charge_new/oid/${orderId}`).then((res) => {\n if (res.data.errno === 0) {\n window.location = res.data.data.url;\n courseId && window.localStorage.setItem('payCourse', courseId);\n } else {\n Toast.info(res.data.msg, 2)\n }\n })\n }\n\n // 微信内部支付\n isweixinPay = () => {\n let _this = this;\n let weixin_code = getParam('code')\n if (weixin_code) {\n if (!getParam('oid')) {\n return\n } else {\n http.get(`${API['base-api']}/pay/wxpay/pub_charge/oid/${getParam('oid')}/code/${weixin_code}`).then((res) => {\n if (res.data.errno === 0) {\n const data = res.data.data;\n\n function onBridgeReady() {\n WeixinJSBridge.invoke(\n 'getBrandWCPayRequest', {\n \"appId\": data.appId, //公众号名称,由商户传入\n \"timeStamp\": data.timeStamp, //时间戳,自1970年以来的秒数\n \"nonceStr\": data.nonceStr, //随机串\n \"package\": data.package,\n \"signType\": data.signType, //微信签名方式:\n \"paySign\": data.paySign //微信签名\n },\n function (res) {\n if (res.err_msg == \"get_brand_wcpay_request:ok\") {\n Toast.info('支付成功', 2);\n _this.intervalPayStatus = setInterval(function () {\n http.get(`${API['base-api']}/m/orderState/oid/${getParam('oid')}`).then(res => {\n if (res.data.errno === 401) {\n clearInterval(_this.intervalPayStatus);\n _this.intervalPayStatus = null;\n // 获取课程类型\n http.get(`${API['base-api']}/class_order_status/${getParam('oid')}`).then((res) => {\n if (Number(res.data.data.errno) === 200) {\n // 正常购买单集成功\n this.setState({\n status: 6,\n showSingleBox: true,\n })\n } else if (Number(res.data.data.errno) === 201) {\n // 0元参团\n this.setState({\n status: 4,\n showSingleBox: true,\n })\n } else if (Number(res.data.data.errno) === 202) {\n // 0元购\n this.setState({\n status: 3,\n showSingleBox: true,\n })\n } else if (Number(res.data.data.errno) === 203) {\n // 三天内特价\n this.setState({\n nowPrice: res.data.data.data.now_price,\n laterPrice: res.data.data.data.three_day_later_price,\n status: 2,\n showSingleBox: true,\n })\n } else {\n Toast.info(res.data.data.msg, 2)\n }\n })\n }\n })\n }, 1000)\n } else {\n alert('支付失败')\n }\n }\n )\n }\n\n if (typeof WeixinJSBridge == \"undefined\") {\n if (document.addEventListener) {\n document.addEventListener('WeixinJSBridgeReady', onBridgeReady, false)\n } else if (document.attachEvent) {\n document.attachEvent('WeixinJSBridgeReady', onBridgeReady)\n document.attachEvent('onWeixinJSBridgeReady', onBridgeReady)\n }\n } else {\n onBridgeReady()\n }\n } else {\n Toast.info(res.data.msg, 2)\n }\n })\n }\n }\n }\n\n // 支付完成之后获取状态\n payCallback = () => {\n const _this = this;\n if (!getParam('oid')) {\n return;\n } else {\n _this.intervalPayStatus = setInterval(function () {\n http.get(`${API['base-api']}/m/orderState/oid/${getParam('oid')}`).then(res => {\n if (res.data.errno === 401) {\n clearInterval(_this.intervalPayStatus);\n _this.intervalPayStatus = null;\n // 获取课程类型\n http.get(`${API['base-api']}/class_order_status/${getParam('oid')}`).then((res) => {\n if (Number(res.data.data.errno) === 200) {\n // 正常购买单集成功\n this.setState({\n status: 6,\n showSingleBox: true,\n })\n } else if (Number(res.data.data.errno) === 201) {\n // 0元参团\n this.setState({\n status: 4,\n showSingleBox: true,\n })\n } else if (Number(res.data.data.errno) === 202) {\n // 0元购\n this.setState({\n status: 3,\n showSingleBox: true,\n })\n } else if (Number(res.data.data.errno) === 203) {\n // 三天内特价\n this.setState({\n nowPrice: res.data.data.data.now_price,\n laterPrice: res.data.data.data.three_day_later_price,\n status: 2,\n showSingleBox: true,\n })\n } else {\n Toast.info(res.data.data.msg, 2)\n }\n })\n }\n })\n }, 1000)\n }\n\n }\n\n\n // 特价购买全集\n toBuyAll = () => {\n\n }\n // 0元购买全集\n zerobuyReceive = () => {\n Toast.success('购买全集成功', 3)\n this.colse()\n }\n // 0元参团\n zerogroupBuy = () => {\n this.getOrderId()\n }\n\n // 获取订单号-0元参团\n getOrderId = () => {\n let data = {\n course_id: getParam('id')\n }\n http.post(`${API['base-api']}/pdd/sys`, data).then((res) => {\n if (res.data.errno === 0) {\n this.setState({\n groupOrderId: res.data.data.order_id\n })\n this.getOrderStatus(res.data.data.order_id)\n } else {\n Toast.info(res.data.msg, 2)\n }\n })\n }\n\n // 获取订单状态-0元参团\n getOrderStatus = (id) => {\n http.get(`${API.home}/m/pdd/order_status/${id}`).then((res) => {\n if (res.data.code === 200) {\n this.getTime(res.data.data.pdd_order_id)\n } else {\n Toast.info(res.data.msg, 2)\n }\n })\n }\n // 获取倒计时-0元参团\n getTime = (id) => {\n http.get(`${API.home}/m/pdd_order_end_time/${id}`).then((res) => {\n if (res.data.code === 200) {\n this.setState({\n endTime: res.data.data.end_time,\n status: 7\n })\n } else {\n Toast.info(res.data.msg, 2)\n }\n })\n }\n\n // 邀请好友参团\n toGroup = () => {\n this.props.history.push(`/togroup?id=${this.state.groupOrderId}`)\n }\n\n // 关闭弹窗\n colse = () => {\n this.props.boxHide(false);\n this.setState({\n status: 1\n })\n }\n\n render() {\n const {showSingleBox} = this.state;\n if (this.state.endTime) {\n let date = this.state.endTime * 1000\n let now = Date.now()\n setInterval(() => {\n date -= 1000\n let s = differenceInSeconds(new Date(date), now) % 60,\n m = differenceInMinutes(new Date(date), now) % 60,\n h = differenceInHours(new Date(date), now) % 24\n this.setState({\n hour: h,\n min: m,\n sec: s,\n })\n }, 1000)\n }\n const {singleType} = this.props;\n return (\n singleType === 1 &&\n <div>\n <div className='popup-box'>\n <div className='content singleset-payment'>\n <div className='price-box'>\n <span>实付款:</span>\n <p>{this.props.data.class_price}元</p>\n </div>\n <div className='course-info'>\n <p className='text-overflow-1'><span>课程:</span>\n {this.props.title}\n </p>\n <p className='text-overflow-1'><span>课时:</span>\n {this.props.data.name}\n </p>\n </div>\n <div className='payment-type'>\n <label>支付方式:</label>\n {\n !browser.isWeixin &&\n <p onClick={this.check.bind(this, '1')}>\n <i className='iconfont iconalipay'></i>\n <span>支付宝</span>\n <i className={`iconfont icondanseshixintubiao-5 redio ${this.state.payType === '1' ? 'redioed' : ''}`}></i>\n </p>\n }\n\n <p onClick={this.check.bind(this, '0')}>\n <i className='iconfont iconweixinzhifu buy'></i>\n <span>微信支付</span>\n <i className={`iconfont icondanseshixintubiao-5 redio ${this.state.payType === '0' ? 'redioed' : ''}`}></i>\n </p>\n </div>\n <div className='btn btn-18B4ED' onClick={this.toBuy}>确认购买</div>\n </div>\n <i onClick={this.colse} className={'iconfont iconiconfront-2 close'}></i>\n </div>\n\n </div>\n\n );\n }\n\n}\n\nexport default compose(\n connect(\n state => ({user: state.user}),\n null\n ),\n withRouter\n)(Single)\n","import React, { Component } from 'react'\nimport './index.scss'\nimport { getParam, http, browser } from \"@/utils\";\nimport { Toast } from 'antd-mobile';\nimport { Link, withRouter } from \"react-router-dom\";\nimport { compose } from \"redux\";\nimport { connect } from \"react-redux\";\nimport { differenceInHours, differenceInMinutes, differenceInSeconds } from \"date-fns\";\n\n\nclass Single extends Component {\n constructor(props) {\n super(props)\n this.state = {\n // status: 1,\n orderId: '',\n nowPrice: '',\n laterPrice: '',\n hour: '',\n min: '',\n sec: '',\n endTime: '',\n groupOrderId: '',\n payType: '0', // 1支付宝 0微信\n // singleBox: false,\n }\n }\n\n componentDidMount() {\n\n }\n\n componentWillReceiveProps(nextProps, nextContext) {\n // console.log(nextProps);\n // this.setState({\n // singleBox: nextProps.singleBox\n // })\n }\n\n // 选择支付方式\n check = (type) => {\n this.setState({\n payType: type\n })\n }\n\n // 确定购买\n toBuy = () => {\n const videoID = this.props.data.video_id || this.props.data.id;\n http.get(`${API.home}/sys/createClassOrder/${videoID}`).then((res) => {\n if (res.data.code === 200) {\n this.setState({\n orderId: res.data.data.order_id\n })\n this.state.payType === '1' ? this.alipayPay(res.data.data.order_id) : this.weixinPay(res.data.data.order_id)\n } else {\n Toast.info(res.data.msg, 2)\n }\n })\n }\n // 微信支付\n weixinPay = (orderId) => {\n // 微信内部-支付\n if (browser.isWeixin) {\n window.location.href = \"https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx23dac6775ac82877&redirect_uri=\" + encodeURIComponent(window.location.href + \"&aa=bb&oid=\" + orderId).toLowerCase() + \"&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect\";\n } else {\n // 微信外部-支付\n http.get(`${API['base-api']}/pay/wxpay/wap_charge/oid/${orderId}`).then((res) => {\n if (res.data.errno === 0) {\n window.location.href = res.data.data.url + \"&redirect_url=\" + encodeURIComponent(window.location.href + \"&weixinpay=1&oid=\" + orderId).toLowerCase();\n } else {\n Toast.info(res.data.msg, 2)\n }\n })\n }\n }\n // 支付宝支付\n alipayPay = (orderId) => {\n const courseId = getParam('id');\n http.get(`${API['base-api']}/pay/alipay/wap_charge_new/oid/${orderId}`).then((res) => {\n if (res.data.errno === 0) {\n window.location = res.data.data.url;\n courseId && window.localStorage.setItem('payCourse', courseId);\n } else {\n Toast.info(res.data.msg, 2)\n }\n })\n }\n\n // 特价购买全集\n toBuyAll = (vcourseId) => {\n if(Number(this.props.isPdd) === 1) {\n this.props.history.push(`/order?id=${this.props.courseId}`, {group: 1})\n }else{\n let cidArr = JSON.stringify([Number(vcourseId)]);\n http.get(`${API['base-api']}/m/cart/addtopreorder/${cidArr}`).then((res) => {\n if (res.data.errno === 0) {\n this.props.history.push(\"/order?id=\" + res.data.data[0], {simple: 1});\n } else {\n Toast.info(res.data.msg, 2);\n }\n })\n }\n }\n // 0元购买全集\n zerobuyReceive = () => {\n Toast.success('购买全集成功', 3)\n this.colse()\n }\n // 0元参团\n zerogroupBuy = () => {\n this.getOrderId()\n }\n\n // 获取订单号-0元参团\n getOrderId = () => {\n let data = {\n course_id: getParam('id')\n }\n http.post(`${API['base-api']}/pdd/sys`, data).then((res) => {\n if (res.data.errno === 0) {\n this.setState({\n groupOrderId: res.data.data.order_id\n })\n this.getOrderStatus(res.data.data.order_id)\n } else {\n Toast.info(res.data.msg, 2)\n }\n })\n }\n\n // 获取订单状态-0元参团\n getOrderStatus = (id) => {\n http.get(`${API.home}/m/pdd/order_status/${id}`).then((res) => {\n if (res.data.code === 200) {\n this.getTime(res.data.data.pdd_order_id)\n } else {\n Toast.info(res.data.msg, 2)\n }\n })\n }\n // 获取倒计时-0元参团\n getTime = (id) => {\n http.get(`${API.home}/m/pdd_order_end_time/${id}`).then((res) => {\n if (res.data.code === 200) {\n this.setState({\n endTime: res.data.data.end_time,\n status: 7\n })\n } else {\n Toast.info(res.data.msg, 2)\n }\n })\n }\n\n // 邀请好友参团\n toGroup = () => {\n this.props.history.push(`/togroup?id=${this.state.groupOrderId}`)\n }\n\n toLearn = (vcourseId, videoID) => {\n this.props.boxHide(false);\n this.props.history.push(`/play/video?id=${vcourseId}&video_id=${videoID}`);\n }\n\n\n // 关闭弹窗\n colse = () => {\n this.props.boxHide(false);\n this.setState({\n status: 1\n })\n }\n\n render() {\n let {singleBox} = this.state;\n if (this.state.endTime) {\n let date = this.state.endTime * 1000\n let now = Date.now()\n setInterval(() => {\n date -= 1000\n let s = differenceInSeconds(new Date(date), now) % 60,\n m = differenceInMinutes(new Date(date), now) % 60,\n h = differenceInHours(new Date(date), now) % 24\n this.setState({\n hour: h,\n min: m,\n sec: s,\n })\n }, 1000)\n }\n const { singleType } = this.props;\n console.log(this.props);\n const videoID = this.props.data.video_id || this.props.data.id;\n return (\n <div className='popup-box'>\n {\n singleType === 2 &&\n <div className='content payment-success'>\n <div className=\"header\">\n <i className='iconfont icondanseshixintubiao-5'></i>\n <span>购买成功</span>\n </div>\n <div className=\"dec\">· 3天内购买全集,可直接抵扣该集费用,{this.props.nowPrice}元购买。</div>\n <div className=\"dec\">· 超过3天,按照未购集数/全部集数等比例计费,{this.props.laterPrice}元购买全集。</div>\n <span onClick={()=>this.toLearn(this.props.vcourseId,videoID)} className='btn btn-18B4ED'>开始学习</span>\n <div className='btn btn-FF4000' onClick={()=>{this.toBuyAll(this.props.courseId)}}>¥{this.props.nowPrice}购买全集\n </div>\n </div>\n }\n {\n singleType === 3 &&\n <div className='content zero'>\n <div className=\"header\">\n <i className='iconfont icondanseshixintubiao-5'></i>\n <span>购买成功</span>\n </div>\n <div className=\"dec\">· 恭喜您获得0元拼团购买剩余课时的机会。</div>\n <div className='btn btn-FF4000' onClick={this.zerogroupBuy}>0元参团</div>\n </div>\n }\n {\n singleType === 4 &&\n <div className='content zero'>\n <div className=\"header\">\n <i className='iconfont icondanseshixintubiao-5'></i>\n <span>购买成功</span>\n </div>\n <div className=\"dec\">· 恭喜您获得0元购买剩余课时的机会。</div>\n <div className='btn btn-FF4000' onClick={this.zerobuyReceive}>0元购</div>\n </div>\n }\n {\n singleType === 6 &&\n <div className='content zero'>\n <div className=\"header\">\n <i className='iconfont icondanseshixintubiao-5'></i>\n <span>购买成功</span>\n </div>\n {/*<Link to={`/play/video?id=${this.props.vcourseId}&video_id=${videoID}`} className='btn btn-18B4ED'>去学习</Link>*/}\n <span onClick={()=>this.toLearn(this.props.vcourseId,videoID)} className='btn btn-18B4ED'>去学习</span>\n </div>\n }\n {\n singleType === 7 &&\n <div className='content group'>\n <div className=\"header\">\n <i className='iconfont icondanseshixintubiao-5'></i>\n <span>参团成功</span>\n </div>\n <div className='group-img'>\n <img src={this.props.user.data.avatar} alt=\"\"/>\n <img\n src=\"https://julyedu-cdn.oss-cn-beijing.aliyuncs.com/images/weekend/train7/ellipsis.png\"\n alt=\"\"/>\n <img\n src=\"https://julyedu-cdn.oss-cn-beijing.aliyuncs.com/images/weekend/train7/ellipsis.png\"\n alt=\"\"/>\n\n </div>\n <div className='btn-l btn-FF4000' onClick={this.toGroup}>\n 剩余{String(this.state.hour).padStart(2, 0)}:{String(this.state.min).padStart(2, 0)}:{String(this.state.sec).padStart(2, 0)}\n 邀请好友参团\n </div>\n </div>\n }\n <i onClick={this.colse} className={'iconfont iconiconfront-2 close'}></i>\n </div>\n\n );\n }\n\n}\n\nexport default compose(\n connect(\n state => ({user: state.user}),\n null\n ),\n withRouter\n)(Single)\n","import React, {Component} from 'react'\nimport './index.scss'\n\nclass Ranking extends Component {\n\n constructor(props) {\n super(props)\n this.state = {\n kanjiaIcon: require('../image/kanjia_icon.png')\n }\n }\n\n // 关闭更多窗口\n closeMore = () => {\n this.props.boxHide(false);\n }\n\n render() {\n return (\n <div className={'ranking-box'}>\n {\n this.props.isShowMore &&\n <MoreList list={this.props.list} limitPeople={this.props.limitPeople} closeMore={this.closeMore}\n img={this.props.icon}/>\n }\n </div>\n );\n }\n}\n\nfunction MoreList(props) {\n return (\n <div className=\"moreMbc\">\n <div className=\"content\">\n <div className=\"title-box\">\n 好友助力详情\n </div>\n <ul className='more-bargain-list'>\n {\n props.list && props.list.length > 0 && props.list.map((item, index) => {\n return (\n <li key={index} className='bargain-item'>\n <img className='avatar' src={item.avatar_file} alt=\"\"/>\n <p className='name'>{item.user_name}</p>\n <p className='bargain-status'>\n <img className='kanjia-icon' src={props.img} alt=\"\"/>\n 砍掉<span className={'price'}>{item.amount}</span>\n </p>\n </li>\n )\n })\n }\n </ul>\n <div className='more-bargain-dec'>\n 超过{props.limitPeople}位好友助力可获得【砍价神器】\n </div>\n </div>\n <i onClick={props.closeMore} className={'iconfont iconiconfront-2 close'}></i>\n </div>\n )\n}\n\nexport default Ranking"],"sourceRoot":""}