{"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/barrage/index.js","components/detail/deposit/index.js","components/detail/followQRcode/index.js","components/detail/redPacket/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","../node_modules/react-copy-to-clipboard/lib/index.js","../node_modules/react-copy-to-clipboard/lib/Component.js","../node_modules/copy-to-clipboard/index.js","../node_modules/toggle-selection/index.js"],"names":["module","exports","__webpack_require__","p","BargainInfo","state","mobile","code","num","isBargain","isFocus","bindInfo","isTip","seconds","isTimer","handleChange","e","_e$target","target","name","value","_this","setState","Object","defineProperty","sendCode","country","props","_this$state","test","toast_default","a","info","http","post","concat","API","area_code","phone_num","then","res","_res$data","data","errno","msg","timer","window","setInterval","console","log","clearInterval","handleClick","isValid","arguments","length","undefined","_this$props","iWantBargain","_this$state2","type","is_valid","_res$data2","tip_info","_this2","this","_this$props2","toClose","_this$state3","bool","react_default","createElement","Fragment","className","onClick","classnames","active","react_router_dom","to","getParam","onChange","onFocus","onBlur","placeholder","maxLength","id","Component","Bargain","classCallCheck","possibleConstructorReturn","getPrototypeOf","call","judgePopupTypeFromCountry","delCountryNum","from","isShowOverlay","status","getBargainRankList","params","home","list","outList","getBargainInfo","isFetch","courseId","_res$data$msg","barInfo","bargain_status","bargain_code","getMore","isShowMore","boxHide","val","toArtifact","useArtifact","toKanjia","toCart","course_id","history","push","continueBargain","_this$state$barInfo","user","uid","parent_uid","user_status","price","amount","sum","bargain_price","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","differenceInSeconds","differenceInMinutes","differenceInHours","differenceInDays","String","padStart","assist_num","src","avatar_file","alt","user_name","compose","connect","withRouter","Group","closeMore","toPay","pdd_order_id","courseInfo","group_status","group","alreadyIn","invitedFriends","hideMbc","formatTimeByMillisecond","millisecond","hours","minutes","parseInt","pdd_price","number","countdown","now_groupon_list","nextProps","course_info","pdd_group_info","map","item","_this$props$courseInf","_this3","groupInfo","groupon_member","groupSuccessMbc","member","ary","groupTip","key","Math","random","avatar","user_type","now_groupon_total","index","person_num","OutLine","htmlDecode","content","replace","getList","get","stageInfo","changeTab","tab","introduce","white_space_default","lib","tabs_default","tabs","title","initialPage","swipeable","onTabClick","teachers","course_hour","start_time","dangerouslySetInnerHTML","__html","intro","stage_name","lesson","is_aist","class_status","toAudition","v_course_id","video_id","toSingleset","class_price","video_auth","is_video","is_open","is_baoming","point","practice","is_tested","pathname","search","qid","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","toStudy","vCourseId","isHaveVideo","expandPay","isexpand","sourcenum","parse","start_timestamp","final_start_time","isbuy","in_cart","_nextProps$data","_nextProps$user","is_bargain","_this$props3","_this$props3$user","_this$state$courseInf","href","is_deposit","deposit_info","is_have_video","price1","aist_start_time","CancelBargain","getCourses","Barrage","setupBarrage","getHours","_i","_periods","start","end","interval","period","setTimeout","isShowBarrage","barageTimer","prevProps","isShow","componentDidUpdate","clearTimeout","wing_blank_default","style","opacity","live_msg","Deposit","deposit_start_time","deposit_end_time","final_end_time","deposit_amount","deduction_amount","low_price","deposit_coupon","FollowQRcode","codeSrc","url","Promise","resolve","QRCode","toDataURL","err","RedPacket","removeStatisticsCookie","cookie","remove","path","domain","fetchShareInfo","share_code","shareInfo","assign","judgePopupType","action","is_overdue","is_receive","judgeReceiveStatus","browser","isWeixin","_res$data3","bindType","txt","desc","receive_type","red_packet_type","receive_status","doneInfo","money","endTime","startCountDown","countdownTimer","floor","handleToShare","userInfo","_res$data4","openTip","is_follow","handleToOpen","_this$state$shareInfo","_res$data5","handleToClose","isOpen","isShare","_this$state$shareInfo2","_res$data6","clickMask","getCaptchaInstance","instance","captchaInstance","onVerify","validate","handleToSend","_ref","tel","isFirst","_this$state$country$n","refresh","_res$data7","receviceAfterBind","_res$data8","toContinueBind","_this$state2$accountI","accountInfo","_this$state2$country$","_res$data9","setRelativeCookie","set","isCopy","command","addEventListener","isWechat","localStorage","getItem","_res$data10","_res$data11","removeItem","removeEventListener","_this$state3$shareInf","_this$state3$shareInf2","_this$state3$shareInf3","cls","popup-mask--no","substr","react_copy_to_clipboard_lib","onCopy","setItem","redPacket_Packet","packetInfo","tip","formik_esm","initialValues","_ref2","errors","onSubmit","values","_ref3","setStatus","setSubmitting","objectSpread","render","_ref4","_ref4$values","_ref5","field","data-bdrs","data-type","Captcha","mrBtm","getInstance","data-status","_ref6","isEmpty","popup-done__title--overtime","detail_followQRcode","PureComponent","Packet","_ref7","cls_content","popup-packet__content--open","popup-packet__content--money","popup-packet__content--fragment","popup-packet__content--late","_packetInfo$tip","lenght","Detail","getBorwerCourse","today_browsed_courses","currentCourseId","includes","countDownTime","startActivity","assertThisInitialized","countDownInterval","countDown","judgeIsRedPacket","isRedPacket","is_show","payCallback","singMess","intervalPayStatus","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","attachEvent","check","oid","payCallBack","fetchCourseInfo","course","is_it_course","course_title","wxShare","index_description","link","encodeURI","origin","imgUrl","image_name","videoId","singleBox","_this2$props","addCourseToCart","ß","_this2$state$course","self_oid","isvip","_this$props$location$","_this$state$course$co","_this$props$location$2","isCent","arrow","cart","toHref","expandActiveToast","detail_barrage","simpledescription","price0","is_pay","contact_type","course_qq","vip_range","is_vip","detail_deposit","service","detail_audition","single","vcourseId","singleSuccess","detail_redPacket","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","_this4","ReactDom","createPortal","react__WEBPACK_IMPORTED_MODULE_5___default","ref","el","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","_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","toGroup","nextContext","_this5","s","m","h","react__WEBPACK_IMPORTED_MODULE_8___default","toLearn","react__WEBPACK_IMPORTED_MODULE_7___default","Ranking","MoreList","img","CopyToClipboard","_extends","i","source","prototype","hasOwnProperty","_createClass","defineProperties","descriptor","enumerable","configurable","writable","Constructor","protoProps","staticProps","_react2","_interopRequireDefault","_copyToClipboard2","obj","__esModule","default","_possibleConstructorReturn","self","ReferenceError","_React$PureComponent","_temp","TypeError","_classCallCheck","_len","args","Array","_key","__proto__","apply","event","options","elem","Children","only","result","subClass","superClass","create","constructor","setPrototypeOf","_inherits","_props","keys","indexOf","_objectWithoutProperties","cloneElement","defaultProps","deselectCurrent","defaultMessage","debug","message","reselectPrevious","range","selection","mark","createRange","getSelection","textContent","all","position","clip","whiteSpace","webkitUserSelect","MozUserSelect","msUserSelect","userSelect","stopPropagation","format","clipboardData","clearData","setData","appendChild","selectNodeContents","addRange","execCommand","Error","error","warn","copyKey","navigator","userAgent","prompt","removeRange","removeAllRanges","removeChild","rangeCount","activeElement","ranges","getRangeAt","tagName","toUpperCase","blur","focus"],"mappings":"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","file":"mrstatic/js/detail.d2976297.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__ + \"mrstatic/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, getParam } from \"@/utils\";\nimport {Link} from \"react-router-dom\";\nimport classnames from 'classnames';\n\n\nclass BargainInfo extends Component {\n\n state = {\n mobile: '',\n code: '',\n num: '86',\n isBargain: true,\n isFocus: false,\n bindInfo: {},\n isTip: false,\n seconds: 60,\n isTimer: false, // 是否开始倒计时\n }\n\n handleChange = e => {\n\n let {name, value} = e.target\n\n this.setState({\n [name]: value\n })\n }\n\n // 获取短信验证码\n sendCode = () => {\n const { country } = this.props;\n let { mobile, isTimer, seconds } = this.state;\n if(!isTimer) {\n if(!/^\\d+$/.test(mobile)){\n Toast.info('请输入正确的手机号');\n return;\n }\n\n // 获取验证码\n http.post(\n `${API['passport-api']}/m/personal/bindPhoneSendCode`,\n {\n area_code: `00${country}`,\n phone_num: mobile\n }\n ).then(res => {\n const { errno, msg } = res.data;\n if(errno === 200) {\n Toast.info('验证码发送成功', 2, null, false);\n \n // 倒计时\n this.timer = window.setInterval(() => {\n console.log(seconds);\n if (seconds <= 0) {\n window.clearInterval(this.timer);\n this.setState({\n isTimer: false,\n seconds: 60\n });\n }else {\n this.setState({\n isTimer: true,\n seconds: --seconds\n });\n }\n }, 1000);\n }else {\n Toast.info(msg);\n }\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 // 绑定手机号\n handleClick = (isValid = 1) => {\n const { country, iWantBargain } = this.props;\n const { code, mobile } = this.state;\n if (!mobile) {\n Toast.info('请填手机号码');\n return;\n }\n if (!code) {\n Toast.info('请填写验证码');\n return;\n }\n\n // is_valid\t是否验证 1:验证(默认),0不验证\n http.post(\n `${API['passport-api']}/m/personal/bindPhone`,\n {\n area_code: `00${country}`,\n phone_num: mobile,\n code: code,\n type: 1,\n is_valid: isValid\n }\n ).then(res => {\n const { errno, data, msg } = res.data;\n if(errno === 200) {\n if(isValid) {\n if(data.tip_info) {\n this.setState({\n isTip: true,\n bindInfo: data.tip_info\n })\n }else {\n iWantBargain();\n }\n }else {\n iWantBargain();\n }\n }else {\n Toast.info(msg);\n }\n });\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 const { country, toClose } = this.props;\n const { mobile, code, isBargain, isFocus, bindInfo, isTip, isTimer, seconds } = this.state;\n const bool = /^\\d+$/.test(mobile);\n return (\n <>\n {/* 该手机号已绑定其他帐号 */}\n {\n isTip &&\n <div className=\"popup-bind popup-bind--bargain\">\n <div className=\"popup-bind__content\">\n <h4 className=\"popup-bind__title\">绑定确认</h4>\n <p className=\"popup-bind__desc\">该手机号已绑定到以下账号,继续绑定将解除以下绑定状态</p>\n <ul className=\"popup-bind__list\">\n {\n bindInfo['email'] &&\n <li className=\"popup-bind__account\">\n\n {/* 邮箱 */}\n <i className=\"iconfont iconduanxin\"></i>\n <p className=\"popup-bind__account--name\">{bindInfo['email']}</p>\n </li>\n }\n {\n bindInfo['wechat_nickname'] &&\n <li className=\"popup-bind__account\">\n\n {/* wechat */}\n <i className=\"icon-wachat\"></i>\n <p className=\"popup-bind__account--name\">{bindInfo['wechat_nickname']}</p>\n </li>\n }\n {\n bindInfo['qq_nickname'] &&\n <li className=\"popup-bind__account\">\n\n {/* qq */}\n <i className=\"icon-qq\"></i>\n <p className=\"popup-bind__account--name\">{bindInfo['qq_nickname']}</p>\n </li>\n }\n {\n bindInfo['sina_nickname'] &&\n <li className=\"popup-bind__account\">\n\n {/* 微博 */}\n <i className=\"icon-sina\"></i>\n <p className=\"popup-bind__account--name\">{bindInfo['sina_nickname']}</p>\n </li>\n }\n </ul>\n <div className=\"popup-bind__button\">\n <button\n className=\"popup-bind__button--cancle\"\n onClick={toClose}>取消</button>\n <button\n className=\"popup-bind__button--confirm\"\n onClick={() => this.handleClick(0)}>继续绑定</button>\n </div>\n </div>\n </div>\n }\n {\n !isTip &&\n <div className=\"bargain-phone-popup\">\n <h2 className=\"bargain-phone-popup__title\">绑定手机,先砍一刀</h2>\n <div \n className={classnames(\n \"bargain-phone-popup__item\",\n {\n 'active': isFocus\n }\n )}\n >\n <Link\n className=\"bargain-phone-popup__button--num\"\n to={`/country?id=${getParam('id')}&from=bargain`}\n >\n +{country}\n <i className=\"iconfont iconiconfront-69\"></i>\n </Link>\n <input \n className=\"bargain-phone-popup__ipt\"\n type=\"tel\" \n onChange={this.handleChange}\n onFocus={() => {\n this.setState({\n isFocus: true\n });\n }} \n onBlur={() => {\n this.setState({\n isFocus: false\n });\n }}\n name='mobile' \n placeholder='手机号' \n maxLength={11}\n />\n </div>\n <div className=\"bargain-phone-popup__item\">\n <input \n type=\"tel\" \n id='code' \n onChange={this.handleChange} \n name='code' \n placeholder='验证码'\n maxLength={6}\n />\n <button \n type=\"button\"\n className={classnames(\n 'bargain-phone-popup__button--send',\n {\n 'active': bool\n }\n )}\n onClick={this.sendCode}\n >\n {isTimer? `重新发送${seconds}s` : '发送验证码'}\n </button>\n </div>\n {\n isBargain\n ? (\n <button \n type=\"button\"\n onClick={() => this.handleClick()}\n className={classnames(\n 'bargain-phone-popup__button--bargain', \n {\n 'active': bool && code\n }\n )}\n >先砍一刀</button>\n )\n : (\n <Link \n className='bargain-phone-popup__button--bargain active'\n to={`/passport/login`}\n >去登录</Link>\n )\n }\n </div>\n }\n </>\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\";\nimport { Object } from 'core-js'\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 country: '86',\n price: 0, // 每次砍价砍掉的价格\n sum: 0 // 累计砍掉的价格\n }\n }\n\n componentDidMount() {\n this.getBargainInfo();\n this.judgePopupTypeFromCountry();\n }\n\n // 选择区号后进入\n judgePopupTypeFromCountry = () => {\n const { country, delCountryNum } = this.props;\n if(country.from && country.from === 'bargain') {\n this.setState({\n country: country.num,\n isShowOverlay: true,\n status: 3,\n });\n\n // 清除\n delCountryNum();\n }\n }\n\n // 获取助理好友\n getBargainRankList = (params = {}) => {\n http.post(`${API.home}/m/bargain/rankList`, params).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 = (isFetch = true) => {\n let data = {\n courseId: getParam('id')\n }\n http.post(`${API.home}/m/bargain/courseDetail`, data).then((res) => {\n const { code, data, msg = '' } = res.data;\n if (code === 200) {\n this.setState({\n barInfo: data,\n // info: res.data.data,\n // limitPeople: res.data.data.limit_people,\n // bargainCode: res.data.data.bargain_code\n });\n if(isFetch) {\n // 砍价状态 0-砍价中,1砍价结束,待支付,2砍价过期(没有砍价记录没有砍价信息),3已购买\n if (data.bargain_status === 0 || data.bargain_status === 1 ) {\n this.getBargainRankList({\n type: 0,\n bargain_code: data.bargain_code\n });\n }\n }\n } else {\n Toast.info(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 this.getBargainInfo(false);\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 { history, user } = this.props\n const uid = user && user.data && user.data.uid;\n if(!uid){\n 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\n // user_status 用户状态 1-关注公众号,2-绑定手机号 3-再砍一刀 (是发起人没有这个字段)\n if(data.user_status === 2) {\n this.setState({\n isShowOverlay: true,\n status: 3,\n });\n }else {\n if(type === 2) {\n this.setState({\n isShowOverlay: true,\n status: 2,\n price: data.amount,\n sum: data.bargain_price\n });\n this.getBargainInfo(false);\n this.getBargainRankList({\n type: 0,\n bargain_code: data.bargain_code\n });\n }else {\n history.push(`/bargain-middle-page?id=${getParam('id')}&bargaincode=${data.bargain_code}&is_originator=1`)\n }\n }\n // if (type === 2) {\n // this.setState({\n // isShowOverlay: true,\n // status: 2,\n // })\n // } else {\n // // user_status 用户状态 1-关注公众号,2-绑定手机号 3-再砍一刀 (是发起人没有这个字段)\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, country, price, sum } = 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 || (getParam('id') === '139' && barInfo.bargain_status === 3) || !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 country={country} iWantBargain={this.iWantBargain} toClose={this.close} />\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 \n price={price}\n sum={sum}\n toCart={this.toCart}\n />\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 const { sum, price } = 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'>厉害了,又砍掉了{price}元!</p>\n <p className='middle-tip'>\n 你已经砍了\n <span className={'indicator'}>{sum}元</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 { getParam, http } from \"@/utils\"\nimport { Toast } from 'antd-mobile'\nimport { StickyContainer } from \"react-sticky\";\nimport {RenderTabBar} from \"@/common\";\n\nclass OutLine extends Component {\n constructor(props) {\n super(props)\n this.state = {\n stageInfo: [],\n tab: 0,\n }\n }\n\n componentDidMount() {\n this.getList()\n }\n\n\n htmlDecode = (content) => {\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 // 获取大纲数据\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 changeTab = (tab, index) => {\n this.setState({\n tab: index\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 <StickyContainer>\n <Tabs tabs={tabs}\n initialPage={0}\n swipeable={false}\n onTabClick={(tab, index) => this.changeTab(tab, index)}\n // renderTabBar={RenderTabBar}\n >\n </Tabs>\n\n {/*介绍*/}\n {\n this.state.tab === 0 ? (\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 ) : null\n }\n {/*大纲*/}\n {\n this.state.tab === 1 ? (\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 || item.class_status === 5) &&\n <span className='btn-right-10 audition'\n onClick={e => this.props.toAudition(introduce.v_course_id, item.video_id)}>试听\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\n to={`/play/video?id=${introduce.v_course_id + '&video_id=' + item.video_id}`}\n 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\n to={`/play/video?id=${introduce.v_course_id + '&video_id=' + item.video_id}`}\n 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 ) : null\n }\n </StickyContainer>\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 toStudy=(vCourseId,isHaveVideo)=>{\n const { history } = this.props;\n if(isHaveVideo == 0){\n Toast.info('尚未开课,开课后立即上传课程~', 2)\n } else {\n history.push(`/play/video?id=${vCourseId}`)\n }\n }\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 // 付定金 付尾款\n expandPay = (info,type)=>{\n // type 等于1是定金 等于2是尾款\n const {user, history} = this.props;\n const uid = user && user.data && user.data.uid;\n if (!uid) {\n this.props.history.push('/passport/login')\n } else {\n if(type == 1){\n this.props.history.push(\n `/deposit-order?oid=${getParam('id')}&source=${1}`,\n {\n id: getParam('id'),\n isexpand: 1,\n sourcenum: 1\n }\n )\n } else {\n let timeStamp = Date.parse(new Date()) / 1000;\n if (timeStamp >= info.start_timestamp) {\n this.props.history.push(\n '/final-deposit-order?source=1',\n {\n id: getParam('id'),\n sourcenum: 1\n\n }\n )\n } else {\n Toast.info(\"付尾款时间将在\" + info.final_start_time + \"开启\",2);\n }\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 <a className='consult consult-s' href=\"https://q.url.cn/AB8aue?_type=wpa&qidian=true\">\n <i className='iconfont iconerji'></i>\n <span>课程咨询</span>\n </a>\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 {/* 定金课程 is_deposit 是否定金课程 0-否 1-付定金 2-付尾款*/}\n {\n info.is_baoming === 0 && info.is_deposit != 0 &&\n <div className='btns-box'>\n <a className='consult consult-m' href=\"https://q.url.cn/AB8aue?_type=wpa&qidian=true\">\n <i className='iconfont iconerji' />\n <span>课程咨询</span>\n </a>\n <div className='btn btn-m bg-FD7700' onClick={()=>this.expandPay(info.deposit_info,info.is_deposit)}>\n {info.is_deposit == 1 ? '立即付定金':'立即付尾款'}\n </div>\n </div>\n }\n\n\n\n {/*已购买*/}\n {\n info.is_baoming === 1 &&\n <div className='btns-box'>\n <a className='consult consult-m' href=\"https://q.url.cn/AB8aue?_type=wpa&qidian=true\">\n <i className='iconfont iconerji' />\n <span>课程咨询</span>\n </a>\n <a className='btn btn-m bg-09f' onClick={() => this.toStudy(info.v_course_id,info.is_have_video)}>\n 开始学习\n </a>\n </div>\n }\n {/*拼团 未开团*/}\n {\n info.is_baoming === 0 && info.group_status === 3 &&\n <div className='btns-box'>\n <a className='consult consult-s' href=\"https://q.url.cn/AB8aue?_type=wpa&qidian=true\">\n <i className='iconfont iconerji'></i>\n <span>课程咨询</span>\n </a>\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 <a className='consult consult-s' href=\"https://q.url.cn/AB8aue?_type=wpa&qidian=true\">\n <i className='iconfont iconerji'></i>\n <span>课程咨询</span>\n </a>\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 <a className='consult consult-s' href=\"https://q.url.cn/AB8aue?_type=wpa&qidian=true\">\n <i className='iconfont iconerji'></i>\n <span>课程咨询</span>\n </a>\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|| (getParam('id') === '139' && barInfo.bargain_status === 3) || !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 <a className='consult-l' href=\"https://q.url.cn/AB8aue?_type=wpa&qidian=true\">\n <i className='iconfont iconerji'></i>\n <span>课程咨询</span>\n </a>\n </div>\n }\n\n {/*特训营课程 未登录 未报名*/}\n {\n (info.is_aist && (this.props.user.hasError || info.is_baoming === 0)) &&\n <div className='btns-box'>\n <a className='consult consult-m' href=\"https://q.url.cn/AB8aue?_type=wpa&qidian=true\">\n <i className='iconfont iconerji'></i>\n <span>课程咨询</span>\n </a>\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 <a className='consult consult-m' href=\"https://q.url.cn/AB8aue?_type=wpa&qidian=true\">\n <i className='iconfont iconerji'></i>\n <span>课程咨询</span>\n </a>\n\n {\n info.aist_start_time === \"\" ?\n (\n <a className='btn btn-m bg-09f' onClick={() => this.toStudy(info.v_course_id,info.is_have_video)}>开始学习</a>\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 { WingBlank } from 'antd-mobile'\n\nimport './index.scss'\nimport { getParam, http } from \"@/utils\"\n\n// 课程页面滚动广告\nclass Barrage extends Component {\n\n timer\n barageTimer\n\n constructor(props) {\n super(props)\n this.state = {\n list: [],\n isShowBarrage: false\n }\n }\n\n setupBarrage = () => {\n const periods = [\n {start: 0, end: 7, interval: 60000},\n {start: 7, end: 8, interval: 30000},\n {start: 8, end: 23, interval: 15000},\n {start: 23, end: 24, interval: 30000},\n ]\n const now = new Date(Date.now()).getHours()\n for (let period of periods) {\n if (now >= period.start && now <= period.end) {\n this.timer = setTimeout(() => {\n this.getList()\n }, period.interval)\n break\n }\n }\n }\n\n componentDidUpdate(prevProps) {\n const {isShow} = this.props\n const {isShow: prevIsShow} = prevProps\n if (prevIsShow !== isShow && isShow !== undefined) {\n if (isShow) {\n setTimeout(() => {\n this.getList()\n }, 5000)\n }\n this.componentDidUpdate = null\n }\n }\n\n\n componentWillUnmount() {\n this.timer && clearTimeout(this.timer);\n this.barageTimer && clearTimeout(this.barageTimer)\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 isShowBarrage: true\n }, () => {\n this.barageTimer = setTimeout(() => {\n this.setState({isShowBarrage: !this.state.isShowBarrage})\n this.setupBarrage()\n }, 5000)\n });\n }\n })\n }\n\n render() {\n return (\n <WingBlank>\n <div className=\"my-carousel\" style={{opacity: this.state.isShowBarrage ? 1 : 0}}>\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 </div>\n {/*\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*/}\n </WingBlank>\n )\n }\n}\n\nexport default Barrage","import React, {Component} from 'react'\nimport './index.scss'\nimport {connect} from \"react-redux\"\nimport {withRouter} from 'react-router-dom'\nimport {compose} from \"redux\"\n\nclass Deposit extends Component {\n constructor(props) {\n super(props)\n this.state = {}\n }\n\n render() {\n const {courseInfo} = this.props;\n let info = ''\n if (courseInfo) {\n info = courseInfo.deposit_info\n }\n return (\n <div className=\"buy-expand\">\n <p className=\"buy-time\">付定金时间:{info.deposit_start_time}-{info.deposit_end_time}</p>\n <p className=\"buy-time\">付尾款时间:{info.final_start_time}-{info.final_end_time}</p>\n <div className=\"expand-bgimg\">\n <img\n className=\"four-year\"\n src=\"https://julyedu-cdn.oss-cn-beijing.aliyuncs.com/active19_1111/m/dj-1111.png\"\n alt=''\n />\n <span className=\"dingjin\">定金{info.deposit_amount}元,可抵扣{info.deduction_amount}元</span>\n <p className=\"small\">\n 到手价最低:¥\n <span>{info.low_price}</span>\n </p>\n <p className=\"else-tip\">另可获得最高{info.deposit_coupon}元代金券进行叠加</p>\n </div>\n </div>\n );\n }\n}\n\nexport default compose(\n connect(\n state => ({\n user: state.user\n }),\n null\n ),\n withRouter\n)(Deposit)\n","import React, {Component} from 'react';\nimport './index.scss';\nimport {http, getParam} from '@/utils';\nimport QRCode from 'qrcode';\nimport {connect} from \"react-redux\";\nimport {Toast} from 'antd-mobile';\n\nclass FollowQRcode extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n src: '',\n codeSrc: ''\n };\n }\n\n componentDidMount() {\n const _this = this\n let uid = this.props && this.props.user && this.props.user.data.uid\n http.get(`${API['base-api']}/wx/user_temporary_qrcode/${uid}`).then((res) => {\n if (res.data.errno == 0) {\n _this.setState({\n src: res.data.data.url\n })\n return new Promise(resolve => {\n QRCode.toDataURL(_this.state.src, {}, function (err, url) {\n _this.setState({\n codeSrc: url\n })\n })\n resolve()\n })\n } else {\n Toast.info(res.data.msg, 2)\n }\n })\n }\n\n render() {\n return (\n <div className='followQRcode-box'>\n <div className='followQRcode'>\n <div className=\"content\">\n <p className=\"title\">关注公众号</p>\n <p className='desc'>\n <span>1</span>有人通过您分享的链接领取红包后,会第一时间通过微信服务号通知您。\n </p>\n <p className='desc'>\n <span>2</span>请用个人微信扫描,关注服务号后可提现红包到微信零钱。\n </p>\n <img src={this.state.codeSrc} alt=\"\"/>\n <p className=\"tip\">长按二维码保存到相册</p>\n </div>\n <div className='close'>\n <i className='iconfont iconiconfront-2' onClick={this.props.toClose}></i>\n </div>\n </div>\n </div>\n )\n }\n}\n\nexport default connect(\n state => ({\n user: state.user\n })\n)(FollowQRcode)\n\n","import React, { PureComponent } from 'react';\nimport {CopyToClipboard} from 'react-copy-to-clipboard';\nimport classnames from 'classnames';\nimport { isEmpty } from 'lodash';\nimport { browser } from '@/utils';\nimport { http, getParam, validateTel } from \"@/utils\";\nimport { Formik, Form, Field } from 'formik';\nimport { Toast } from 'antd-mobile';\nimport Captcha from '@/common/Captcha';\nimport FollowQRcode from './../followQRcode';\nimport './index.scss';\nimport cookie from 'js-cookie'\nimport { Link } from \"react-router-dom\";\n\n\nclass RedPacket extends PureComponent {\n\n constructor(props) {\n super(props),\n this.state = {\n\n // 弹窗类型:0: 无弹出,1:非微信,2:微信\n type: 0,\n isCopy: false,\n validate: '',\n captchaInstance: null,\n seconds: 60,\n isFirst: true,\n timer: null,\n isTimer: false, // 是否开始倒计时\n shareInfo: {\n url: '',\n share_code: '',\n command: '【七月在线送你一个红包】https://www.julyedu.com/'\n },\n doneInfo: { //领取后的状态,1:领取成功,2:领取超时\n status: 2,\n txt: '手机号绑定超时,红包已失效!',\n desc: ''\n },\n money: '', // 红包金额,\n endTime: 10, // 手机绑定时限\n countdownTimer: null,\n countdown: '00分00秒', // 绑定时间\n accountInfo: {},\n bindInfo: {},\n country: {\n num: '86'\n }\n }\n }\n\n componentDidMount() {\n // console.log(this.props);\n this.judgePopupTypeFromCountry();\n\n // 分享链接进入\n this.judgePopupType();\n\n window.addEventListener('beforeunload', this.removeStatisticsCookie)\n\n\n\n // 微信进入\n const isWechat = getParam('wechat');\n const { userInfo } = this.props;\n if(!userInfo || !userInfo.uid) {\n this.setRelativeCookie()\n }\n if(isWechat === '1' && !browser.isWeixin) {\n if(userInfo && userInfo.uid) {\n const type = window.localStorage.getItem('redpacket-click');\n if(type === 'split') {\n http.get(`${API.home}/sys/redPacket/shareUrl/${getParam('id')}`).then(res => {\n const { code, data } = res.data;\n if(code === 200) {\n\n // 检查收否领取过\n http.post(\n `${API.home}/sys/redPacket/split`,\n {\n action: 'check',\n share_code: data.share_code\n }\n ).then(res => {\n const { code, data } = res.data;\n if(code === 200) {\n window.localStorage.removeItem('redpacket-click');\n // is_receive\t是否领取过 0-否 1-是\n if(data.is_receive) {\n this.judgeReceiveStatus(data, 8);\n }else {\n this.setState({\n type: 3\n });\n }\n }\n })\n }\n });\n }else {\n this.setState({\n type: 1\n });\n window.localStorage.removeItem('redpacket-click');\n }\n }else {\n this.setRelativeCookie()\n this.setState({\n type: 1\n });\n }\n }\n this.fetchShareInfo();\n }\n\n removeStatisticsCookie = () => {\n cookie.remove('share_code', {path: '/', domain: '.julyedu.com'})\n }\n\n componentWillUnmount() {\n window.removeEventListener('beforeunload', this.removeStatisticsCookie)\n }\n\n\n // 获取分享信息\n fetchShareInfo = () => {\n const share_code = getParam('share_code');\n http.get(`${API.home}/sys/redPacket/shareUrl/${getParam('id')}`).then(res => {\n const { code, data } = res.data;\n if(code === 200) {\n this.setState({\n shareInfo: share_code? Object.assign({}, data, {share_code}) : data\n });\n }\n });\n }\n\n // 分享后进入,链接中带 share_code 字段\n judgePopupType = () => {\n const share_code = getParam('share_code');\n const { shareInfo } = this.state;\n if(share_code && share_code !== 'null') {\n this.setState({\n shareInfo: Object.assign({}, shareInfo, {\n share_code\n })\n });\n\n // 检查收否领取过\n http.post(\n `${API.home}/sys/redPacket/split`,\n {\n action: 'check',\n share_code\n }\n ).then(res => {\n const {code, data} = res.data;\n if(code === 200) {\n\n // is_overdue\t红包是否过期 0-否 1-是\n if(data.is_overdue) {\n this.setState({\n type: 7\n });\n }else {\n\n // is_receive\t是否领取过 0-否 1-是\n if(data.is_receive) {\n this.judgeReceiveStatus(data);\n }else {\n this.setState({\n type: browser.isWeixin? 2 : 3\n });\n }\n }\n }\n if(code === 4030 || code === 4040) {\n this.setState({\n type: browser.isWeixin? 2 : 3\n });\n }\n });\n }\n }\n\n // 选择区号后进入\n judgePopupTypeFromCountry = () => {\n const { country } = this.props;\n const { shareInfo } = this.state;\n if(country.code) {\n this.setState({\n country,\n shareInfo: Object.assign({}, shareInfo, {\n share_code: country.code\n })\n });\n\n // 检查收否领取过\n http.post(\n `${API.home}/sys/redPacket/split`,\n {\n action: 'check',\n share_code: country.code\n }\n ).then(res => {\n console.log(res);\n const { code, data } = res.data;\n if(code === 200) {\n\n // is_receive\t是否领取过 0-否 1-是\n if(data.is_receive) {\n this.judgeReceiveStatus(data, 8);\n }else {\n this.setState({\n type: 3\n });\n }\n\n // 清除\n this.props.delCountryNum();\n }\n })\n }\n }\n\n\n // 判断领取状态--领取后\n judgeReceiveStatus = (data, bindType=4) => {\n let txt = '';\n let desc = '';\n\n // receive_type 领取类型 1自己 2别人\n if(data.receive_type === 1) {\n desc = '越多好友领取,你所得越多!';\n }\n if(data.receive_type === 2) {\n desc = '每天只能帮好友领取一次哦~';\n }\n\n // is_overdue\t红包是否过期 0-否 1-是\n if(data.is_overdue) {\n txt = data.red_packet_type === 1? `您已经领过该红包 ${data.amount}元现金!`: `您已经领过该红包 ${data.amount}元代金券碎片!`;\n }else {\n txt = data.red_packet_type === 1? `今日已领取${data.amount}元现金!`: `今日已领取${data.amount}元代金券碎片!`;\n }\n\n // receive_status 领取状态 1-已领取 2-已领取未绑定 3-已失效\n if(data.receive_status === 1) {\n this.setState({\n type: 9,\n doneInfo: {\n status: 1,\n txt,\n desc\n }\n });\n }else if(data.receive_status === 2) {\n this.setState({\n type: bindType,\n money: data.amount,\n endTime: data.end_time\n });\n this.startCountDown();\n }else if(data.receive_status === 3) {\n this.setState({\n type: 9,\n doneInfo: {\n status: 2,\n txt: '手机号绑定超时,红包已失效!',\n desc\n }\n });\n }\n }\n\n // 绑定时间\n startCountDown = () => {\n if(this.countdownTimer) {\n window.clearInterval(this.countdownTimer);\n }\n const { endTime } = this.state;\n let time = endTime;\n let minutes = 0;\n let seconds = 0;\n this.countdownTimer = window.setInterval(() => {\n if (time <= 0) {\n window.clearInterval(this.countdownTimer);\n this.setState({\n endTime: 0\n });\n }\n time -= 1;\n minutes = `${Math.floor(time / 60)}`.padStart(2, 0);\n seconds = `${(time % 60)}`.padStart(2, 0);\n this.setState({\n countdown: `${minutes}分${seconds}秒`\n });\n }, 1000)\n }\n\n // 获取分享信息\n handleToShare = () => {\n const { history, userInfo } = this.props;\n if(browser.isWeixin) {\n this.setState({\n type: 2\n });\n history.push(`/detail?id=${getParam('id')}&wechat=1`);\n }else {\n if(userInfo && userInfo.uid) {\n // 领取好友的后,再领取自己的 share_code 未更新\n http.get(`${API.home}/sys/redPacket/shareUrl/${getParam('id')}`).then(res => {\n const { code, data } = res.data;\n if(code === 200) {\n this.setState({\n shareInfo: data,\n type: 1\n });\n }\n });\n }else {\n history.push('/passport/login');\n }\n }\n }\n\n // 提示关注公众号\n openTip = () => {\n const { shareInfo } = this.state;\n\n // is_follow 是否关注公众号,0否,1是\n if(!shareInfo.is_follow) {\n this.setState({\n type: 11\n });\n }\n }\n\n // 拆红包\n handleToOpen = () => {\n const { history } = this.props;\n const { shareInfo: { share_code='' } } = this.state;\n http.post(\n `${API.home}/sys/redPacket/split`,\n {\n action: 'receive',\n share_code\n }\n ).then(res => {\n const { code, data } = res.data;\n if(code === 200) {\n\n // is_receive\t是否领取过 0-否 1-是\n if(data.is_receive) {\n this.judgeReceiveStatus(data);\n }else {\n\n // red_packet_type 红包类型 1-现金 2-代金券\n if(data.red_packet_type === 2) {\n this.setState({\n type: 6,\n money: data.amount\n });\n }else if(data.red_packet_type === 1) {\n\n // receive_status 领取状态 1-已领取 2-已领取未绑定 3-已失效\n if(data.receive_status === 1) {\n if(data.red_packet_type === 1) {\n this.setState({\n type: 5,\n money: data.amount\n });\n }else if(data.red_packet_type === 2 ) {\n this.setState({\n type: 6,\n money: data.amount\n });\n }\n }else if(data.receive_status === 2) {\n this.setState({\n type: 4,\n money: data.amount,\n endTime: data.end_time\n });\n this.startCountDown();\n }else if(data.receive_status === 3) {\n this.setState({\n type: 9,\n doneInfo: {\n status: 2,\n txt: '手机号绑定超时,红包已失效!',\n desc: data.receive_type === 1? '越多好友领取,你所得越多!' : data.receive_type === 2? '每天只能帮好友领取一次哦~' : ''\n }\n });\n }\n }\n }\n }else if(code === 4030 || code === 4040) {\n history.push('/passport/login');\n }\n })\n }\n\n // 关闭弹出\n handleToClose = (isOpen, isShare = false) => {\n if(isOpen) {\n const { shareInfo: { share_code='' } } = this.state;\n\n // 检查收否领取过\n http.post(\n `${API.home}/sys/redPacket/split`,\n {\n action: 'check',\n share_code\n }\n ).then(res => {\n const { code, data } = res.data;\n if(code === 200) {\n\n // is_receive\t是否领取过 0-否 1-是\n if(data.is_receive) {\n this.judgeReceiveStatus(data);\n }else {\n this.setState({\n type: 3\n });\n }\n }\n });\n }else {\n if(isShare) {\n const { history } = this.props;\n history.push(`/detail?id=${getParam('id')}`);\n }\n this.setState({\n type: 0\n });\n }\n }\n\n // 微信内点击蒙层\n clickMask = () => {\n const { type } = this.state;\n if(type === 2) {\n this.setState({\n type: 0\n });\n }\n }\n\n getCaptchaInstance = instance => {\n this.setState({\n captchaInstance: instance\n });\n }\n\n onVerify = (err, data) => {\n if (err) {\n console.log(err);\n } else {\n this.setState({\n validate: data.validate\n });\n }\n }\n\n handleToSend = ({tel, code}) => {\n let { validate, seconds, isFirst, isTimer, captchaInstance, country: {num = '86'} } = this.state;\n if(validate) {\n if (!isFirst) {\n Toast.info('请重新进行滑块验证', 2, null, false);\n captchaInstance.refresh();\n this.setState({\n isFirst: true\n });\n return\n }\n if(!isTimer) {\n if (!tel) {\n Toast.info('手机号码不能为空', 2, null, false);\n }else if(!/^\\d+$/.test(tel)) {\n // }else if (!validateTel(tel)) {\n Toast.info('请输入正确格式的手机号码', 2, null, false);\n }else {\n\n // 获取验证码\n http.post(\n `${API['passport-api']}/m/personal/bindPhoneSendCode`,\n {\n area_code: `00${num}`,\n phone_num: tel\n }\n ).then(res => {\n const { errno, msg } = res.data;\n if(errno === 200) {\n Toast.info('验证码发送成功', 2, null, false);\n\n // 倒计时\n this.timer = window.setInterval(() => {\n if (seconds <= 0) {\n window.clearInterval(this.timer);\n this.setState({\n isTimer: false,\n seconds: 60\n });\n }else {\n this.setState({\n isTimer: true,\n seconds: --seconds\n });\n }\n }, 1000);\n\n // 滑块\n this.setState({\n isFirst: false\n })\n }else {\n Toast.info(msg, 2, null, false);\n }\n })\n }\n }\n }\n return false;\n }\n\n // 绑定后领取\n receviceAfterBind = () => {\n http.get(`${API.home}/sys/red_packet/receive`).then(res => {\n const { code, data, msg } = res.data;\n if(code === 200) {\n // receive_status 领取状态 1-已领取 2-已领取未绑定 3-已失效\n if(data.receive_status === 1) {\n if(data.red_packet_type === 1) {\n this.setState({\n type: 5,\n money: data.amount\n });\n }else if(data.red_packet_type === 2 ) {\n this.setState({\n type: 6,\n money: data.amount\n });\n }\n }else if(data.receive_status === 2) {\n this.setState({\n type: 4,\n money: data.amount,\n endTime: data.end_time\n });\n this.startCountDown();\n }else if(data.receive_status === 3) {\n this.setState({\n type: 9,\n doneInfo: {\n status: 2,\n txt: '手机号绑定超时,红包已失效!',\n desc: data.receive_type === 1? '越多好友领取,你所得越多!' : data.receive_type === 2? '每天只能帮好友领取一次哦~' : ''\n }\n });\n }\n }else {\n Toast.info(msg, 2, null, false);\n }\n })\n }\n\n // 绑定手机\n toContinueBind = (isValid = 1) => {\n const { accountInfo: { tel, code}, country: {num = '86'} } = this.state;\n // is_valid\t是否验证 1:验证(默认),0不验证\n http.post(\n `${API['passport-api']}/m/personal/bindPhone`,\n {\n area_code: `00${num}`,\n phone_num: tel,\n code: code,\n type: 1,\n is_valid: isValid\n }\n ).then(res => {\n const { errno, data, msg } = res.data;\n if(errno === 200 ) {\n if(isValid) {\n if(data.tip_info) {\n this.setState({\n type: 10,\n bindInfo: data.tip_info\n })\n }else {\n this.receviceAfterBind();\n }\n }else {\n this.receviceAfterBind();\n }\n }else {\n Toast.info(msg, 2, null, false);\n }\n });\n }\n\n\n //设置统计信息\n setRelativeCookie = () => {\n const config = {path: '/', domain: '.julyedu.com'}\n cookie.set('share_code', getParam('share_code') ? getParam('share_code') : 'share_code', config)\n }\n\n render() {\n // console.log(this.props);\n const { history, userInfo } = this.props;\n const {\n type,\n isCopy,\n validate,\n isTimer,\n seconds,\n shareInfo: {\n command = '',\n share_code = ''\n },\n money,\n doneInfo,\n countdown,\n endTime,\n bindInfo,\n country\n } = this.state;\n const cls = classnames('popup-mask',{\n 'popup-mask--no': type !== 2\n });\n return (\n <>\n <div className=\"red-packet\">\n <p className=\"red-packet__title\">分享课程给好友,你和好友都可以领红包哦〜</p>\n <button className=\"red-packet__button\" onClick={this.handleToShare}>分享领红包</button>\n </div>\n\n {/* popup */}\n {\n type !== 0 &&\n <div className={cls} onClick={this.clickMask}>\n\n {/* wechat */}\n {\n type == 2 &&\n <div className=\"pupup-wechat\">\n <h4 className=\"popup-wechat__title\">当前环境不支持领红包活动</h4>\n <p className=\"popup-wechat__desc\">请点击右上角“ ··· ”,选择在浏览器中打开 然后参与活动!</p>\n <i className=\"popup-wechat__icon\"></i>\n </div>\n }\n\n {/* wechat--no */}\n {\n type === 1 &&\n <div className=\"popup-password\">\n <div className=\"popup-password__content\">\n <h4 className=\"popup-password__header\">复制口令发送给好友</h4>\n <div className=\"popup-password__body\">\n <p id=\"password\" className=\"popup-passowrd__info\">\n {command.length > 16? `${command.substr(0, 16)}...` : command}\n </p>\n {!isCopy\n ? userInfo && userInfo.uid\n ? (\n <CopyToClipboard\n text={command}\n onCopy={() => this.setState({\n isCopy: true\n })}\n >\n <button className=\"popup-password__button--copy\">复制口令</button>\n </CopyToClipboard>\n )\n : (\n <button\n className=\"popup-password__button--copy\"\n onClick={() => {\n window.localStorage.setItem('redpacket-click', 'copy');\n history.push('/passport/login');\n }}\n >复制口令</button>\n )\n : <p className=\"popup-password__success\">复制成功,快发送给好友吧~</p>\n }\n </div>\n <p className=\"popup-password__footer\">\n 好友领取红包后,你将获得同样奖励。<br />\n 自己也可以领取哦~\n </p>\n </div>\n <i\n className=\"popup-password__button--close iconfont iconiconfront-2\"\n onClick={() => {\n if(getParam('wechat') === '1') {\n if(userInfo && userInfo.uid) {\n this.handleToClose(true);\n history.push(`/detail?id=${getParam('id')}`);\n }else {\n this.setState({\n type: 3\n });\n window.localStorage.setItem('redpacket-click', 'split');\n }\n }else {\n this.handleToClose(true);\n }\n this.setState({\n isCopy: false\n });\n }}\n />\n </div>\n }\n\n {/* red-packet--close */}\n {\n type === 3 &&\n <Packet\n type={3}\n packetInfo={{\n title: '七月在线给你发了个红包~'\n\n }}\n handleToClose={() => this.handleToClose(false)}\n handleToOpen={this.handleToOpen}\n />\n }\n\n {/* red-packet--open */}\n {\n type === 4 &&\n <Packet\n type={4}\n packetInfo={{\n money,\n tip: ['为了您的资金安全,请于5分钟之内绑定手机号,超时红包将失效'],\n btn: {\n txt: `立即绑定(${countdown})`,\n onClick: () => {\n this.setState({\n type: 8\n });\n }\n }\n }}\n handleToClose={() => this.handleToClose(false)}\n />\n }\n\n {/* red-packet--money success */}\n {\n type === 5 &&\n <Packet\n type={5}\n packetInfo={{\n money,\n tip: ['可前往【七月在线】APP','- 账户资金中提现'],\n btn: {\n txt: '获取更多奖励',\n onClick: () => {\n history.push('/ShareCourse');\n }\n }\n }}\n handleToClose={() => {\n const isShare = getParam('share_code')? true : false;\n this.handleToClose(false, isShare);\n this.openTip();\n }}\n />\n }\n\n {/* red-packet--fragment success */}\n {\n type === 6 &&\n <Packet\n type={6}\n packetInfo={{\n money,\n tip: ['可前往【七月在线】APP','- 我的优惠券中合成代金券'],\n btn: {\n txt: '获取更多奖励',\n onClick: () => {\n history.push('/ShareCourse');\n }\n }\n }}\n handleToClose={() => {\n const isShare = getParam('share_code')? true : false;\n this.handleToClose(false, isShare);\n this.openTip();\n }}\n />\n }\n\n {/* red-packet--late 来完了 */}\n {\n type === 7 &&\n <Packet\n type={7}\n packetInfo={{\n btn: {\n txt: '获取更多奖励',\n onClick: () => {\n history.push('/ShareCourse')\n }\n }\n }}\n handleToClose={() => {\n const isShare = getParam('share_code')? true : false;\n this.handleToClose(false, isShare);\n }}\n />\n }\n\n {/* form */}\n {\n type === 8 &&\n <div className=\"popup-form\">\n <Formik\n initialValues={{\n tel: '',\n code: ''\n }}\n validate={({tel, code}) => {\n const errors = {};\n\n // if (!validateTel(tel)) {\n if(!/^\\d+$/.test(tel)) {\n errors.tel = '请填写正确格式的手机号';\n }\n if (!/[0-9]{6}/.test(code)) {\n errors.code = '请输入验证码';\n }\n\n return errors;\n }}\n onSubmit={(values, { setStatus, setSubmitting }) => {\n this.setState({\n accountInfo: {\n ...values\n }\n });\n this.toContinueBind();\n }}\n render={({values: {tel, code}, errors}) => (\n <Form className=\"popup-form__content\">\n <h4 className=\"popup-form__title\">绑定手机号</h4>\n <div className=\"popup-form__item\">\n <Link\n className=\"popup-form__button--num\"\n to={`/country?id=${getParam('id')}&share_code=${share_code}`}>\n +{country.num}\n <i className=\"iconfont iconiconfront-69\"/>\n </Link>\n <Field\n name=\"tel\"\n render={({field}) => {\n return (\n <input\n {...field}\n className=\"popup-form__ipt\"\n data-bdrs=\"0 6px 6px 0\"\n data-type=\"tel\"\n type=\"text\"\n placeholder=\"请填写手机号\"\n />\n );\n }}\n />\n </div>\n <Captcha\n mrBtm={15}\n getInstance={this.getCaptchaInstance}\n onVerify={this.onVerify}\n />\n {\n endTime === 0? (\n <>\n <div className=\"popup-form__item\">\n <p className=\"popup-form__tip\">\n <i className=\"iconfont icondanseshixintubiao-8\"></i>\n 绑定超时,红包已失效!\n </p>\n </div>\n <button\n className=\"popup-packet__button--bundle\"\n data-status=\"do\"\n type=\"button\"\n onClick={() => {\n history.push('/ShareCourse');\n }}\n >获取更多奖励</button>\n </>\n ) : (\n <>\n <div className=\"popup-form__item\">\n <Field\n name=\"code\"\n render={({field}) => {\n return (\n <input\n {...field}\n className=\"popup-form__ipt popup-form__ipt--left\"\n type=\"text\"\n placeholder=\"输入验证码\"\n />\n );\n }}\n />\n <button\n className=\"popup-form__button--code\"\n data-status={(validate && !isTimer)? 'do': ''}\n type=\"button\"\n onClick={() => this.handleToSend({tel, code})}\n >\n {\n isTimer? `重新发送${seconds}s` : '发送验证码'\n }\n </button>\n </div>\n <button\n className=\"popup-packet__button--bundle\"\n data-status={(tel && code && isEmpty(errors))? 'do': 'done'}\n type=\"submit\"\n >\n {`完成绑定(${countdown})`}\n </button>\n </>\n )\n }\n </Form>\n )}\n />\n <i\n className=\"popup-password__button--close iconfont iconiconfront-2\"\n onClick={() => this.handleToClose(false)}\n />\n </div>\n }\n\n {/* 领取后的状态 */}\n {\n type === 9 &&\n <div className=\"popup-done\">\n <div className=\"popup-done__content\">\n <h4 className={classnames(\"popup-done__title\", {'popup-done__title--overtime': doneInfo.status === 2})}>\n {\n doneInfo.status === 2 &&\n <i className=\"iconfont icondanseshixintubiao-8\"></i>\n }\n {doneInfo.txt}\n </h4>\n <p className=\"popup-done__desc\">{doneInfo.desc}</p>\n <button\n className=\"popup-packet__button--bundle\"\n data-status=\"do\"\n type=\"submit\"\n onClick={() => {\n history.push('/ShareCourse');\n }}\n >获取更多奖励</button>\n </div>\n <i\n className=\"popup-password__button--close iconfont iconiconfront-2\"\n onClick={() => {\n const isShare = getParam('share_code')? true : false;\n this.handleToClose(false, isShare);\n }}\n />\n </div>\n }\n\n {/* 手机号绑定提示 */}\n {\n type === 10 &&\n <div className=\"popup-bind\">\n <div className=\"popup-bind__content\">\n <h4 className=\"popup-bind__title\">绑定确认</h4>\n <p className=\"popup-bind__desc\">该手机号已绑定到以下账号,继续绑定将解除以下绑定状态</p>\n <ul className=\"popup-bind__list\">\n {\n bindInfo['email'] &&\n <li className=\"popup-bind__account\">\n\n {/* 邮箱 */}\n <i className=\"iconfont iconduanxin\"></i>\n <p className=\"popup-bind__account--name\">{bindInfo['email']}</p>\n </li>\n }\n {\n bindInfo['wechat_nickname'] &&\n <li className=\"popup-bind__account\">\n\n {/* wechat */}\n <i className=\"icon-wachat\"></i>\n <p className=\"popup-bind__account--name\">{bindInfo['wechat_nickname']}</p>\n </li>\n }\n {\n bindInfo['qq_nickname'] &&\n <li className=\"popup-bind__account\">\n\n {/* qq */}\n <i className=\"icon-qq\"></i>\n <p className=\"popup-bind__account--name\">{bindInfo['qq_nickname']}</p>\n </li>\n }\n {\n bindInfo['sina_nickname'] &&\n <li className=\"popup-bind__account\">\n\n {/* 微博 */}\n <i className=\"icon-sina\"></i>\n <p className=\"popup-bind__account--name\">{bindInfo['sina_nickname']}</p>\n </li>\n }\n </ul>\n <div className=\"popup-bind__button\">\n <button\n className=\"popup-bind__button--cancle\"\n onClick={() => this.handleToClose(false)}>取消</button>\n <button\n className=\"popup-bind__button--confirm\"\n onClick={() => this.toContinueBind(0)}>继续绑定</button>\n </div>\n </div>\n <i\n className=\"popup-password__button--close iconfont iconiconfront-2\"\n onClick={() => this.handleToClose(false)}\n />\n </div>\n }\n\n {/* 关注公众号 */}\n {\n type === 11 &&\n <FollowQRcode toClose={() => this.handleToClose(false)} />\n }\n </div>\n }\n </>\n )\n }\n}\n\nconst Packet = ({type, packetInfo, handleToClose, handleToOpen }) => {\n const cls_content = classnames(\n 'popup-packet__content',\n {\n 'popup-packet__content--open': type === 4,\n 'popup-packet__content--money': type === 5,\n 'popup-packet__content--fragment': type === 6,\n 'popup-packet__content--late': type === 7,\n }\n );\n const {money, tip=[], btn} = packetInfo;\n return (\n <div className={classnames('popup-packet')}>\n <div className={cls_content}>\n {\n type === 3 &&\n <>\n <p className=\"popup-packet__title\">七月在线给你发了个红包~</p>\n <button className=\"popup-packet__button--split\" onClick={handleToOpen} />\n </>\n }\n {\n (type === 4 || type === 5 || type === 6)&&\n <>\n <h4 className=\"popup-packet__label\">恭喜您获得</h4>\n <p className=\"popup-packet__value\">\n {money}\n <span className=\"popup-packet__value--unit\">元</span>\n </p>\n <p className=\"popup-packet__tip\">\n {\n tip.map((item, index) => {\n if(index !== (tip.lenght - 1)) {\n return (\n <>\n {item}\n <br />\n </>\n )\n }\n return item;\n })\n }\n </p>\n <button\n className=\"popup-packet__button--bundle\"\n onClick={btn.onClick}\n >\n {btn.txt}\n </button>\n </>\n }\n {\n type === 7 &&\n <>\n <h4 className=\"popup-packet__label\">您来晚了!</h4>\n <p className=\"popup-packet__value\">\n 红包仅能当日领取,下次<br />\n 早点来哦~\n </p>\n <button\n className=\"popup-packet__button--bundle\"\n onClick={btn.onClick}\n >\n {btn.txt}\n </button>\n </>\n }\n </div>\n <i\n className=\"popup-password__button--close iconfont iconiconfront-2\"\n onClick={handleToClose}\n />\n </div>\n );\n}\n\nexport default RedPacket;\n","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 Barrage from './barrage'\nimport Deposit from './deposit'\nimport {connect} from \"react-redux\"\nimport {getCourses, addCourseToCart} from \"./actions\"\nimport {getParam, http, browser, wxShare} from \"@/utils\"\nimport {Toast} from 'antd-mobile'\nimport {bindActionCreators} from \"redux\";\nimport {delCountryNum} from './../country/countryRedux';\n\nimport RedPacket from './redPacket';\nimport {Link} from \"react-router-dom\";\nimport ExpandActiveToast from \"../Index/expandActiveToast\";\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 isRedPacket: true,\n\n countDownTime: '20s',\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 this.judgeIsRedPacket();\n\n // 红包链接进入详情也\n if (getParam('share_code')) {\n this.setState({\n isRedPacket: true\n });\n }\n\n if(getParam('ac') && Number(getParam('ac')) === 11) {\n this.getBorwerCourse();\n }\n\n }\n\n getBorwerCourse = () => {\n http.get(`${API.home}/sys/user/blessing`, {type: 4, course_id: getParam('id')}).then(res => {\n let {code, data: {today_browsed_courses}} = res.data;\n if(code === 200) {\n let currentCourseId = getParam('id');\n if(today_browsed_courses.includes(Number(currentCourseId))) {\n this.setState({\n countDownTime: '任务完成'\n });\n }else{\n this.startActivity();\n }\n }\n })\n }\n\n startActivity = () => {\n let _this = this;\n let countDownInterval = setInterval(function() {\n let countDown = parseInt(_this.state.countDownTime);\n countDown--;\n if(countDown > 0) {\n _this.setState({\n countDownTime: countDown + 's'\n });\n } else if(countDown === 0) {\n clearInterval(countDownInterval);\n countDownInterval = null;\n http.post(`${API.home}/sys/add/blessing`, {type: 4, course_id: getParam('id')}).then(res => {\n let {code} = res.data;\n if(code === 200) {\n _this.setState({\n countDownTime: '任务完成'\n });\n }\n })\n }\n }, 1000)\n }\n\n // 判断时候未红包课程\n judgeIsRedPacket = () => {\n http.get(`${API.home}/sys/redPacket/showShareActive/${getParam('id')}`).then(res => {\n const {code, data} = res.data;\n if (code === 200) {\n this.setState({\n isRedPacket: data.is_show\n });\n }\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\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\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 if(data['redirect_url'] !== ''){\n window.location.href = data['redirect_url']\n }\n this.setState({\n course: data\n });\n if (data.course_info) {\n if(data.course_info.is_it_course == 1){\n this.props.history.push(`/python?id=${id}`)\n }\n\n let course_info = data.course_info;\n document.title = `${course_info.course_title} - 七月在线`;\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 = (vCourseId,videoId) => {\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 if(videoId == '' || videoId == 0 || videoId == undefined){\n return false;\n }\n http.post(`${API['base-api']}/sys/get_class_audition?video_id=${videoId}`).then((res) => {\n if (res.data.errno == 200) {\n this.props.history.push(`/play/video?id=${vCourseId + '&video_id=' + videoId}`)\n }else {\n Toast.info(res.data.msg, 2);\n }\n })\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 }\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, isRedPacket, countDownTime} = this.state;\n\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 let isCent = course_info.pdd_group_info && course_info.pdd_group_info.price != '0.01';\n return (\n <div>\n {\n Number(getParam('ac')) === 11 ? (\n <div className='activity__blessing'>\n <img src='https://julyedu-cdn.oss-cn-beijing.aliyuncs.com/active19_1111/m/count_donw.png' />\n <span className='count__down__time'>{`${countDownTime}`}</span>\n </div>\n ) : (null)\n }\n <div className='detail-box'>\n <HeaderBar\n title='课程详情'\n arrow={true}\n cart={true}\n toHref={href}\n />\n\n <ExpandActiveToast/>\n\n\n <CallApp className='toapp' path={`/detail/id=${getParam('id')}`} />\n\n {/*弹幕*/}\n <Barrage isShow={course_info.is_show}/>\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_deposit && course_info.is_deposit!= 0 &&\n <div className=\"openExpand\">\n 支付定金¥{course_info.deposit_info.deposit_amount},可抵扣¥{course_info.deposit_info.deduction_amount}\n </div>\n }\n\n </div>\n </div>\n </div>\n\n {/*正常课程已购买时显示*/}\n\n {/*\n 没有权限:不显示\n vip及赠课:显示黄的\n 不在vip范围内,单独购买:显示蓝的\n 单独买了课然后买了vip:显示蓝的\n\n vip_range是vip里买的课,而且买了vip才会返回时间\n is_pay 1是单独购买 0是买vip赠的\n is_vip 1是属于vip赠的 0是不在vip范围内的\n */}\n {\n course_info.is_baoming === 1 && course_info.is_pay == 1 && course_info.contact_type == 1 && course_info.course_qq &&\n <div className='group'>\n 上课QQ群:{course_info.course_qq},加群请备注您的学号:{course_info.uid}\n </div>\n }\n {\n course_info.is_baoming === 1 && course_info.is_pay == 1 && course_info.contact_type == 2 && course_info.course_qq &&\n <div className='group'>\n 请添加班主任微信:{course_info.course_qq},添加时备注学号:{course_info.uid}\n </div>\n }\n\n\n {/*vip课程显示*/}\n {\n course_info.vip_range && course_info.is_vip == 1 && course_info.is_pay == 0 && course_info.contact_type == 1 && course_info.course_qq &&\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 course_info.vip_range && course_info.is_vip == 1 && course_info.is_pay == 0 && course_info.contact_type == 2 && course_info.course_qq &&\n <div className=\"vip\">\n <p>已开通年会员:{course_info.vip_range}</p>\n <p>请添加班主任微信:{course_info.course_qq},添加时备注学号:{course_info.uid}</p>\n </div>\n }\n\n\n {/*定金相关信息*/}\n {\n !!course_info.is_deposit && course_info.is_deposit!= 0 &&\n <Deposit courseInfo={course_info}/>\n }\n\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 {/*试听弹窗*/}\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 {/* 单集购买成功弹窗 */}\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 isRedPacket &&\n <RedPacket\n history={this.props.history}\n country={this.props.country}\n delCountryNum={this.props.delCountryNum}\n userInfo={this.props.user.data}\n />\n }\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 * 拼团价格为1分钱时,不允许参团\n */\n }\n {/*双十一期间不需要显示 不要删除*/}\n {\n isCent && !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 * is_baoming 否报名 0-未购买弹出报名 1-已购买弹出开始学习\n * is_dist 是否分销课程\n * is_bargain 是否砍价课程\n */}\n {\n course_info.is_baoming === 0 && (!course_info.is_aist) && course_info.is_bargain &&\n <Bargain\n country={this.props.country}\n delCountryNum={this.props.delCountryNum}\n />\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 {\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 country: state.country\n }\n}\n\n// const mapDispatchToProps = {\n// fetchCoursesListIfNeeded\n// }\nconst mapDispatchToProps = (dispatch) => {\n return bindActionCreators(\n {\n getCourses,\n addCourseToCart,\n delCountryNum\n },\n dispatch\n )\n}\n\n\nexport default connect(mapStateToProps, mapDispatchToProps)(Detail)\n","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 <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 {\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 </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","'use strict';\n\nvar _require = require('./Component'),\n CopyToClipboard = _require.CopyToClipboard;\n\nCopyToClipboard.CopyToClipboard = CopyToClipboard;\nmodule.exports = CopyToClipboard;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.CopyToClipboard = undefined;\n\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\nvar _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _copyToClipboard = require('copy-to-clipboard');\n\nvar _copyToClipboard2 = _interopRequireDefault(_copyToClipboard);\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\n\nfunction _objectWithoutProperties(obj, keys) {\n var target = {};\n\n for (var i in obj) {\n if (keys.indexOf(i) >= 0) continue;\n if (!Object.prototype.hasOwnProperty.call(obj, i)) continue;\n target[i] = obj[i];\n }\n\n return target;\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n}\n\nvar CopyToClipboard = exports.CopyToClipboard = function (_React$PureComponent) {\n _inherits(CopyToClipboard, _React$PureComponent);\n\n function CopyToClipboard() {\n var _ref;\n\n var _temp, _this, _ret;\n\n _classCallCheck(this, CopyToClipboard);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = CopyToClipboard.__proto__ || Object.getPrototypeOf(CopyToClipboard)).call.apply(_ref, [this].concat(args))), _this), _this.onClick = function (event) {\n var _this$props = _this.props,\n text = _this$props.text,\n onCopy = _this$props.onCopy,\n children = _this$props.children,\n options = _this$props.options;\n\n var elem = _react2.default.Children.only(children);\n\n var result = (0, _copyToClipboard2.default)(text, options);\n\n if (onCopy) {\n onCopy(text, result);\n } // Bypass onClick if it was present\n\n\n if (elem && elem.props && typeof elem.props.onClick === 'function') {\n elem.props.onClick(event);\n }\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n _createClass(CopyToClipboard, [{\n key: 'render',\n value: function render() {\n var _props = this.props,\n _text = _props.text,\n _onCopy = _props.onCopy,\n _options = _props.options,\n children = _props.children,\n props = _objectWithoutProperties(_props, ['text', 'onCopy', 'options', 'children']);\n\n var elem = _react2.default.Children.only(children);\n\n return _react2.default.cloneElement(elem, _extends({}, props, {\n onClick: this.onClick\n }));\n }\n }]);\n\n return CopyToClipboard;\n}(_react2.default.PureComponent);\n\nCopyToClipboard.defaultProps = {\n onCopy: undefined,\n options: undefined\n};","\"use strict\";\n\nvar deselectCurrent = require(\"toggle-selection\");\n\nvar defaultMessage = \"Copy to clipboard: #{key}, Enter\";\n\nfunction format(message) {\n var copyKey = (/mac os x/i.test(navigator.userAgent) ? \"⌘\" : \"Ctrl\") + \"+C\";\n return message.replace(/#{\\s*key\\s*}/g, copyKey);\n}\n\nfunction copy(text, options) {\n var debug,\n message,\n reselectPrevious,\n range,\n selection,\n mark,\n success = false;\n\n if (!options) {\n options = {};\n }\n\n debug = options.debug || false;\n\n try {\n reselectPrevious = deselectCurrent();\n range = document.createRange();\n selection = document.getSelection();\n mark = document.createElement(\"span\");\n mark.textContent = text; // reset user styles for span element\n\n mark.style.all = \"unset\"; // prevents scrolling to the end of the page\n\n mark.style.position = \"fixed\";\n mark.style.top = 0;\n mark.style.clip = \"rect(0, 0, 0, 0)\"; // used to preserve spaces and line breaks\n\n mark.style.whiteSpace = \"pre\"; // do not inherit user-select (it may be `none`)\n\n mark.style.webkitUserSelect = \"text\";\n mark.style.MozUserSelect = \"text\";\n mark.style.msUserSelect = \"text\";\n mark.style.userSelect = \"text\";\n mark.addEventListener(\"copy\", function (e) {\n e.stopPropagation();\n\n if (options.format) {\n e.preventDefault();\n e.clipboardData.clearData();\n e.clipboardData.setData(options.format, text);\n }\n });\n document.body.appendChild(mark);\n range.selectNodeContents(mark);\n selection.addRange(range);\n var successful = document.execCommand(\"copy\");\n\n if (!successful) {\n throw new Error(\"copy command was unsuccessful\");\n }\n\n success = true;\n } catch (err) {\n debug && console.error(\"unable to copy using execCommand: \", err);\n debug && console.warn(\"trying IE specific stuff\");\n\n try {\n window.clipboardData.setData(options.format || \"text\", text);\n success = true;\n } catch (err) {\n debug && console.error(\"unable to copy using clipboardData: \", err);\n debug && console.error(\"falling back to prompt\");\n message = format(\"message\" in options ? options.message : defaultMessage);\n window.prompt(message, text);\n }\n } finally {\n if (selection) {\n if (typeof selection.removeRange == \"function\") {\n selection.removeRange(range);\n } else {\n selection.removeAllRanges();\n }\n }\n\n if (mark) {\n document.body.removeChild(mark);\n }\n\n reselectPrevious();\n }\n\n return success;\n}\n\nmodule.exports = copy;","module.exports = function () {\n var selection = document.getSelection();\n\n if (!selection.rangeCount) {\n return function () {};\n }\n\n var active = document.activeElement;\n var ranges = [];\n\n for (var i = 0; i < selection.rangeCount; i++) {\n ranges.push(selection.getRangeAt(i));\n }\n\n switch (active.tagName.toUpperCase()) {\n // .toUpperCase handles XHTML\n case 'INPUT':\n case 'TEXTAREA':\n active.blur();\n break;\n\n default:\n active = null;\n break;\n }\n\n selection.removeAllRanges();\n return function () {\n selection.type === 'Caret' && selection.removeAllRanges();\n\n if (!selection.rangeCount) {\n ranges.forEach(function (range) {\n selection.addRange(range);\n });\n }\n\n active && active.focus();\n };\n};"],"sourceRoot":""}