{"version":3,"sources":["components/detail/bargain/image/kanjia_icon.png","components/detail/bargain/image/kanjia_cg_icon.png","common/Mask/index.js","components/detail/bindPhone/index.js","components/detail/bindPhone/confirm.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/single/index.js","components/detail/single/singleSuccess.js","components/bargainMiddlePage/ranking/index.js","components/detail/overlay/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","Root","document","querySelector","events","Mask","props","_this","Object","classCallCheck","this","possibleConstructorReturn","getPrototypeOf","call","preventEvent","e","preventDefault","el","createElement","_this2","forEach","item","addEventListener","passive","appendChild","removeChild","_this$props","visible","handleToHide","className","ReactDOM","createPortal","react_default","a","classnames","children","onClick","Component","BargainBindPhone","handleToSendCode","_ref","mobile","_this$props$country$n","country","num","_this$state","state","isTimer","seconds","test","toast_default","info","http","post","concat","API","area_code","phone_num","then","res","_res$data","data","errno","msg","timer","window","setInterval","clearInterval","setState","handleToBindPhone","_ref2","code","_this$props$country$n2","handleToBargain","confirmBindPhone","params","objectSpread","type","is_valid","_res$data2","tip_info","_this$props$country$n3","_this$state2","formik_esm","initialValues","validate","_ref3","errors","onSubmit","values","_ref4","setStatus","setSubmitting","render","_ref5","_ref5$values","react_router_dom","to","getParam","name","_ref6","field","assign","placeholder","maxLength","_ref7","active","undefined","disabled","JSON","stringify","BargainConfirmBind","farmatKey","key","_this$props2","bindInfo","map","data-plat","data-type","Bargain","judgePopupTypeFromCountry","delCountryNum","from","status","getBargainRankList","arguments","length","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","iWantBargain","user","uid","id","parent_uid","user_status","price","amount","sum","bargain_price","formInfo","kanjiaIcon","require","time","BargainIntro","limitPeople","limit_people","BargainStatus","src_common_Mask","components_detail_bindPhone","detail_bindPhone_confirm","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","_this$props$courseInf","_this3","groupInfo","groupon_member","groupSuccessMbc","member","ary","groupTip","Math","random","avatar","user_type","now_groupon_total","index","person_num","Fragment","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","Number","simpleCourse","simple","formatDate","split","tobuy","isShowOverlay","bargainStatus","keyToGroup","bargainToOrder","bargain","cancel","close","bindPhone","toStudy","vCourseId","isHaveVideo","expandPay","isexpand","sourcenum","parse","start_timestamp","final_start_time","console","log","defineProperty","bindConfrm","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","overlay","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","toClose","RedPacket","removeStatisticsCookie","cookie","remove","path","domain","fetchShareInfo","share_code","shareInfo","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","handleToSend","tel","isFirst","_this$state$country$n","refresh","_res$data7","receviceAfterBind","_res$data8","toContinueBind","isValid","_this$state2$accountI","accountInfo","_this$state2$country$","_res$data9","setRelativeCookie","set","isCopy","command","isWechat","localStorage","getItem","_res$data10","_res$data11","removeItem","removeEventListener","_this$state3","_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","_ref4$values","data-bdrs","Captcha","mrBtm","getInstance","data-status","isEmpty","popup-done__title--overtime","detail_followQRcode","PureComponent","Packet","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","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","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","_this4","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","_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__","react__WEBPACK_IMPORTED_MODULE_5___default","MoreList","img","root","body","documentElement","Overlay","preventScroll","overlayBox","ReactDom","ref","top","scrollY","CopyToClipboard","value","_extends","target","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","selectNodeContents","addRange","execCommand","Error","error","warn","copyKey","navigator","userAgent","prompt","removeRange","removeAllRanges","rangeCount","activeElement","ranges","getRangeAt","tagName","toUpperCase","blur","focus"],"mappings":"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","file":"mrstatic/js/detail.e26f1759.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 ReactDOM from 'react-dom';\nimport classnames from 'classnames';\nimport './index.scss';\n\nconst Root = document.querySelector('body');\nconst events = ['touchmove', 'mousewheel'];\n\nclass Mask extends Component {\n\n constructor(props) {\n super(props);\n if(!this.el) {\n this.el = document.createElement('div');\n }\n }\n\n componentDidMount() {\n events.forEach(item => {\n this.el.addEventListener(item, this.preventEvent, {\n passive: false\n })\n })\n Root.appendChild(this.el);\n }\n\n componentWillUnmount() {\n Root.removeChild(this.el);\n }\n\n preventEvent = e => {\n e.preventDefault();\n }\n\n render() {\n const { visible, handleToHide, className } = this.props;\n if(visible) {\n return ReactDOM.createPortal(\n (\n <div className=\"mask\">\n <div className={classnames(\"mask-content\", className)}>\n {this.props.children}\n </div>\n <div className=\"mask-footer\">\n <i className=\"mask-button__close\" onClick={handleToHide}></i>\n </div>\n </div>\n ),\n this.el\n );\n }else {\n return null;\n }\n }\n}\n\nexport default Mask;","import React, { Component } from 'react';\nimport classnames from 'classnames';\nimport { Link } from 'react-router-dom';\nimport { Formik, Form, Field } from 'formik';\nimport { Toast } from 'antd-mobile';\nimport { http, getParam } from '@/utils';\nimport './index.scss';\n\nclass BargainBindPhone extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n mobile: '',\n code: '',\n num: '86',\n seconds: 60,\n isTimer: false, // 是否开始倒计时\n };\n }\n\n // 获取短信验证码\n handleToSendCode = ({ mobile }) => {\n const { country: { num = 86 } } = this.props;\n let { 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${num}`,\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 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\n // 绑定手机号\n handleToBindPhone = ({code, mobile}) => {\n const { country: { num = 86}, handleToBargain, confirmBindPhone } = this.props;\n if (!mobile) {\n Toast.info('请填手机号码');\n return;\n }\n if (!code) {\n Toast.info('请填写验证码');\n return;\n }\n\n const params = {\n area_code: `00${num}`,\n phone_num: mobile,\n code: code,\n };\n\n // is_valid\t是否验证 1:验证(默认),0不验证\n http.post(\n `${API['passport-api']}/m/personal/bindPhone`,\n {\n ...params,\n type: 1,\n is_valid: 1\n }\n ).then(res => {\n const { errno, data, msg } = res.data;\n if(errno === 200) {\n if(data.tip_info) {\n confirmBindPhone(params, data.tip_info);\n }else {\n handleToBargain();\n }\n }else {\n Toast.info(msg);\n }\n });\n }\n\n render() {\n const { country: { num = '86' } } = this.props;\n const { isTimer, seconds } = this.state;\n return (\n <Formik\n initialValues={{\n mobile: '',\n code: ''\n }}\n validate={({mobile, code}) => {\n const errors = {};\n if(!/^\\d+$/.test(mobile)) {\n errors.mobile = '请填写正确格式的手机号';\n }\n if (!/[0-9]{6}/.test(code)) {\n errors.code = '请输入验证码';\n }\n return errors;\n }}\n onSubmit={(values, { setStatus, setSubmitting }) => {\n this.handleToBindPhone(values);\n }}\n render={({values: {mobile, code}, errors}) => (\n <Form className=\"bargain-bind-phone\">\n <h2 className=\"bargain-bind-phone__title\">绑定手机,先砍一刀</h2>\n <div className=\"bargain-bind-phone__item\">\n <Link\n className=\"bargain-bind-phone__button--num\"\n to={`/country?id=${getParam('id')}&from=bargain`}\n >\n +{num}\n <i className=\"iconfont iconiconfront-69\"></i>\n </Link>\n <Field\n name=\"mobile\"\n render={({field}) => (\n <input \n {...field}\n className=\"bargain-bind-phone__ipt\"\n type=\"tel\"\n placeholder='手机号' \n maxLength={11}\n />\n )}\n />\n </div>\n <div className=\"bargain-bind-phone__item\">\n <Field \n name=\"code\"\n render={({field}) => (\n <input \n {...field}\n type=\"tel\"\n placeholder='验证码'\n maxLength={6}\n />\n )}\n />\n {errors.mobile}\n <button \n type=\"button\"\n className={classnames(\n 'bargain-bind-phone__button--send',\n {\n 'active': mobile && errors.mobile === undefined\n }\n )}\n disabled={!(mobile && errors.mobile === undefined)}\n onClick={() => this.handleToSendCode({mobile})}\n >\n {isTimer? `重新发送${seconds}s` : '发送验证码'}\n </button>\n </div>\n <button \n type=\"submit\"\n className=\"bargain-bind-phone__button--bargain\"\n disabled={!(mobile && code && JSON.stringify(errors) === '{}')}\n >先砍一刀</button>\n </Form>\n )}\n />\n )\n }\n}\n\nexport default BargainBindPhone;","import React, { Component } from 'react';\nimport { Toast } from 'antd-mobile';\nimport { http } from '@/utils';\nimport './confirm.scss';\n\nclass BargainConfirmBind extends Component {\n\n farmatKey = (key) => {\n let data = null;\n switch (key) {\n case 1:\n data = {\n key: 'email',\n type: 'email'\n };\n break;\n case 2:\n data = {\n key: 'wechat_nickname',\n type: 'wechat'\n };\n break;\n case 3:\n data = {\n key: 'qq_nickname',\n type: 'qq'\n };\n break;\n case 4:\n data = {\n key: 'sina_nickname',\n type: 'sina'\n };\n break;\n default:\n data = null;\n break;\n }\n return data;\n }\n\n confirmBindPhone = () => {\n const { data, handleToBargain } = this.props;\n\n // is_valid\t是否验证 1:验证(默认),0不验证\n http.post(\n `${API['passport-api']}/m/personal/bindPhone`,\n {\n ...data,\n type: 1,\n is_valid: 0\n }\n ).then(res => {\n const { errno, msg } = res.data;\n if(errno === 200) {\n handleToBargain();\n }else {\n Toast.info(msg);\n }\n });\n }\n\n render() {\n const { bindInfo, handleToHide } = this.props;\n return (\n <div className=\"bargain-bind-confirm\">\n <h4 className=\"bargain-bind-confirm__title\">绑定确认</h4>\n <p className=\"bargain-bind-confirm__desc\">该手机号已绑定到以下账号,继续绑定将解除以下绑定状态</p>\n <ul className=\"bargain-bind-confirm__list\">\n {\n bindInfo && [1,2,3,4].map(item => {\n const data = this.farmatKey(item);\n if(bindInfo[data.key]) {\n return (\n <li className=\"bargain-bind-confirm__account\" key={item}>\n <i className=\"bargain-bind-confirm__icon\" data-plat={data.type}></i>\n <p className=\"bargain-bind-confirm__name\">{bindInfo[data.key]}</p>\n </li>\n );\n }\n return null;\n })\n }\n </ul>\n <div className=\"bargain-bind-confirm__footer\">\n <button\n className=\"bargain-bind-confirm__button\"\n data-type=\"cancle\"\n onClick={handleToHide}\n >取消</button>\n <button\n className=\"bargain-bind-confirm__button\"\n data-type=\"confirm\"\n onClick={this.confirmBindPhone}\n >继续绑定</button>\n </div>\n </div>\n )\n }\n}\n\nexport default BargainConfirmBind;","import React, { Component, useState } from 'react'\nimport './bargain.scss'\nimport { Flex, Toast } from \"antd-mobile\"\nimport {differenceInSeconds, differenceInMinutes, differenceInHours, differenceInDays} from \"date-fns\"\nimport { 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 Mask from '@/common/Mask/index';\nimport BargainBindPhone from './../bindPhone/index';\nimport BargainConfirmBind from './../bindPhone/confirm';\n\nclass Bargain extends Component {\n constructor(props) {\n super(props)\n this.state = {\n kanjiaIcon: require('./image/kanjia_icon.png'),\n info: '',\n outList: [],\n list: [],\n status: '',\n time: '',\n barInfo: {},\n country: '86',\n price: 0, // 每次砍价砍掉的价格\n sum: 0, // 累计砍掉的价格,\n bindInfo: {}, // 冲突信息\n formInfo: {}\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 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 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 });\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 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 // 继续砍价\n continueBargain = () => {\n const { history } = this.props;\n const { barInfo = {} } = this.state;\n const code = barInfo.bargain_code;\n 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 status: 3,\n });\n }else {\n if(type === 2) {\n this.setState({\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 } else {\n Toast.info(res.data.msg, 2)\n }\n })\n }\n\n // 关闭弹窗\n handleToHide = () => {\n this.setState({\n status: ''\n });\n }\n\n // 绑定手机号--确认\n confirmBindPhone = (params, bindInfo) => {\n this.setState({\n status: 4,\n formInfo: params,\n bindInfo\n });\n }\n\n render() {\n const { \n list, \n outList, \n barInfo, \n country, \n price, \n sum,\n status,\n formInfo,\n bindInfo\n } = 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 \n limitPeople={barInfo.limit_people} \n iWantBargain={this.iWantBargain}\n />\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 <Mask visible={status === 3} handleToHide={this.handleToHide}>\n <BargainBindPhone \n country={country} \n handleToBargain={this.iWantBargain}\n confirmBindPhone={this.confirmBindPhone}\n />\n </Mask>\n\n {/* 绑定手机号--确认 */}\n <Mask visible={status === 4} handleToHide={this.handleToHide}>\n <BargainConfirmBind \n data={formInfo} \n bindInfo={bindInfo}\n handleToBargain={this.iWantBargain}\n />\n </Mask>\n\n {/* 领取砍价神器 */}\n <Mask visible={status === 1} handleToHide={this.handleToHide}>\n <Artifact useArtifact={this.useArtifact} />\n </Mask>\n\n {/* 使用砍价神器 */}\n <Mask visible={status === 2} handleToHide={this.handleToHide}>\n <UseArtifact \n price={price}\n sum={sum}\n toCart={this.toCart}\n />\n </Mask>\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 </div>\n )\n }\n}\n\n// 是砍价课程时,展示砍价按钮\nfunction BargainIntro(props) {\n return (\n <div className=\"intro-outer\">\n <div className=\"intro-inner\">\n <Flex \n direction={'column'} \n justify={'center'} \n className={'intro-wrapper'}\n >\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// 领取砍价神器\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\n// 使用砍价神器\nfunction UseArtifact(props) {\n const { sum, price } = props;\n return (\n <div className='use-artifact-box'>\n <img \n className='top-img' \n src={require('./image/kanjia_cg_icon.png')} \n alt=\"\"\n />\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'>不能再砍了哦~</p>\n <button className='tubuy' onClick={props.toCart}>去支付</button>\n </div>\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'\nimport BindPhone from './../bindPhone/index';\nimport BargainConfirmBind from './../bindPhone/confirm';\nimport Mask from '@/common/Mask/index';\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 bindPhone: false,\n bindConfrm: false,\n bindInfo: {}, // 冲突信息\n formInfo: {}, \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 // 返现课程的立即购买\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 // 普通课程的立即报名 要模拟结算过程\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 // 格式化开课时间\n formatDate = (date) => {\n let ary = date.split('-');\n return `${ary[1]}月${ary[2]}日开课`;\n };\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 // 一键开团\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 // 砍完价去支付\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\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 // user_status 用户状态 1-关注公众号,2-绑定手机号 3-再砍一刀 (是发起人没有这个字段)\n if(data.user_status === 2) {\n this.setState({\n bindPhone: true\n })\n }else {\n history.push(`/bargain-middle-page?id=${course_id}&bargaincode=${data.bargain_code}&is_originator=1`)\n }\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 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 // 隐藏弹窗\n handleToHide = (key) => {\n console.log(key);\n this.setState({\n [key]: false\n });\n }\n\n // 绑定手机号 -- 确认\n confirmBindPhone = (params, bindInfo) => {\n this.setState({\n bindPhone: false,\n bindConfrm: true,\n formInfo: params,\n bindInfo\n });\n }\n\n render() {\n // data 课程信息;barInfo 砍价信息\n const { user = {}, toCart, country } = this.props;\n const { \n countdown,\n barInfo, \n courseInfo: info = {}, \n bindPhone, \n bindConfrm,\n bindInfo,\n formInfo,\n } = this.state;\n const uid = user.data && user.data.uid;\n return (\n <div>\n {/* 绑定手机号 */}\n <Mask visible={bindPhone} handleToHide={() => this.handleToHide('bindPhone')}>\n <BindPhone \n country={country}\n handleToBargain={this.toKanjia}\n confirmBindPhone={this.confirmBindPhone}\n />\n </Mask>\n\n {/* 绑定手机号--确认 */}\n <Mask visible={bindConfrm} handleToHide={() => this.handleToHide('bindConfrm')}>\n <BargainConfirmBind \n data={formInfo}\n bindInfo={bindInfo}\n handleToHide={() => this.handleToHide('bindConfrm')}\n handleToBargain={this.toKanjia}\n />\n </Mask>\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 {\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 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 if(endTime && endTime > 0) {\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 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 } 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 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 country={this.props.country}\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 './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","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;","'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":""}