{"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","qid","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","window","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","singleBox","setItem","_this2$props","addCourseToCart","ß","_this2$state$course$c","course_title","image_name","_this2$state$course$c2","browser","isWeixin","shareData","desc","link","location","origin","imgUrl","_res$data2","nonce_str","signature","timestamp","wx","config","debug","jsApiList","ready","hideAllNonBaseMenuItem","showMenuItems","menuList","updateAppMessageShareData","success","updateTimelineShareData","isvip","wxShare","logo","_this$props$location$","prevProps","_this$state$course$co","_this$state2","href","undefined","_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_xzh_dnmp_www_mr_julyedu_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_0__","_Users_xzh_dnmp_www_mr_julyedu_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__","_Users_xzh_dnmp_www_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_xzh_dnmp_www_mr_julyedu_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_2__","_Users_xzh_dnmp_www_mr_julyedu_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4__","_Users_xzh_dnmp_www_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_xzh_dnmp_www_mr_julyedu_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_assertThisInitialized__WEBPACK_IMPORTED_MODULE_6__","showSingleBox","toBuyAll","zerobuyReceive","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.a3063ba1.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={`/campTest?keshi_id=${item.video_id}&qid=${item.practice.qid}`} 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={`/campResolve?keshi_id=${item.video_id}&qid=${item.practice.qid}`} 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\n wxShare({\n title: `课程详情页`,\n content: `课程详情页`,\n link: 'http://m.julyedu.com/detail?id=151',\n logo: 'https://julyedu-img-public.oss-cn-beijing.aliyuncs.com/Public/Image/home/4aaf78c7d2.png',\n });\n\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 // payCallback = () => {\n //\n // };\n // weixinPay = (weixin_code) => {\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 }\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 let share = this.state.share;\n this.setState({\n share: !share,\n });\n let shareData = {\n title: `【仅剩${number}个名额】我${price}元拼了《${course_title}》`,\n desc: course_title, // 分享描述\n link: location.origin + `/detail??id=${course_id}`, // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致\n imgUrl: image_name, // 分享图标\n };\n\n http.post(`${API['base-api']}/m/sale/signature`).then(res => {\n const {nonce_str, signature, timestamp} = res.data;\n wx.config({\n \"debug\": false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。\n \"appId\": 'wx23dac6775ac82877', // 必填,公众号的唯一标识\n \"timestamp\": timestamp, // 必填,生成签名的时间戳\n \"nonceStr\": nonce_str, // 必填,生成签名的随机串\n \"signature\": signature, // 必填,签名\n jsApiList: [\n 'hideMenuItems',\n 'showMenuItems',\n 'updateAppMessageShareData',\n 'updateTimelineShareData',\n 'onMenuShareWeibo',\n 'onMenuShareAppMessage',\n ], // 必填,需要使用的JS接口列表\n });\n });\n wx.ready(function () { //需在用户可能点击分享按钮前就先调用\n wx.hideAllNonBaseMenuItem();\n wx.showMenuItems({\n menuList: ['menuItem:share:appMessage', 'menuItem:share:timeline'] // 要显示的菜单项,所有menu项见附录3\n });\n wx.updateAppMessageShareData({\n ...shareData,\n success: function () {\n // 设置成功\n }\n })\n wx.updateTimelineShareData({\n ...shareData,\n success: function () {\n // 设置成功\n }\n })\n });\n } else {\n Toast.info('请在微信中使用分享功能!', 2);\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 = this.props.location && this.props.location.state? this.props.location.state.href : undefined;\n const { location: { state = {}} } = this.props;\n if(state.oid) {\n href='/classify'\n }\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":""}