{"version":3,"sources":["components/detail/bargain/image/kanjia_icon.png","components/detail/bargain/image/kanjia_cg_icon.png","../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","components/detail/bargain/bargainInfo/index.js","components/detail/bargain/index.js","components/detail/group/index.js","components/detail/outline/index.js","components/detail/shareRank/index.js","components/detail/audition/index.js","components/detail/btnstatus/index.js","components/detail/barrage/index.js","components/detail/deposit/index.js","components/detail/followQRcode/index.js","components/detail/redPacket/index.js","components/detail/index.js","components/bargainMiddlePage/image/kanjia_icon.png","components/detail/overlay/index.js","components/detail/single/index.js","components/detail/single/singleSuccess.js","components/bargainMiddlePage/ranking/index.js"],"names":["module","exports","__webpack_require__","p","CopyToClipboard","Object","defineProperty","value","undefined","_extends","assign","target","i","arguments","length","source","key","prototype","hasOwnProperty","call","_createClass","defineProperties","props","descriptor","enumerable","configurable","writable","Constructor","protoProps","staticProps","_react2","_interopRequireDefault","_copyToClipboard2","obj","__esModule","default","_possibleConstructorReturn","self","ReferenceError","_React$PureComponent","_ref","_temp","_this","instance","TypeError","_classCallCheck","this","_len","args","Array","_key","__proto__","getPrototypeOf","apply","concat","onClick","event","_this$props","text","onCopy","children","options","elem","Children","only","result","subClass","superClass","create","constructor","setPrototypeOf","_inherits","PureComponent","_props","keys","indexOf","_objectWithoutProperties","cloneElement","defaultProps","deselectCurrent","defaultMessage","debug","message","reselectPrevious","range","selection","mark","success","document","createRange","getSelection","createElement","textContent","style","all","position","top","clip","whiteSpace","webkitUserSelect","MozUserSelect","msUserSelect","userSelect","addEventListener","e","stopPropagation","format","preventDefault","clipboardData","clearData","setData","body","appendChild","selectNodeContents","addRange","execCommand","Error","err","console","error","warn","window","copyKey","test","navigator","userAgent","replace","prompt","removeRange","removeAllRanges","removeChild","rangeCount","active","activeElement","ranges","push","getRangeAt","tagName","toUpperCase","blur","type","forEach","focus","BargainInfo","state","mobile","code","num","isBargain","isFocus","bindInfo","isTip","seconds","isTimer","handleChange","_e$target","name","setState","sendCode","country","_this$state","toast_default","a","info","http","post","API","area_code","phone_num","then","res","_res$data","data","errno","msg","timer","setInterval","log","clearInterval","handleClick","isValid","iWantBargain","_this$state2","is_valid","_res$data2","tip_info","_this2","_this$props2","toClose","_this$state3","bool","react_default","Fragment","className","classnames","react_router_dom","to","getParam","onChange","onFocus","onBlur","placeholder","maxLength","id","Component","Bargain","classCallCheck","possibleConstructorReturn","judgePopupTypeFromCountry","delCountryNum","from","isShowOverlay","status","getBargainRankList","params","home","list","outList","getBargainInfo","isFetch","courseId","_res$data$msg","barInfo","bargain_status","bargain_code","getMore","isShowMore","boxHide","val","toArtifact","useArtifact","toKanjia","toCart","course_id","history","continueBargain","_this$state$barInfo","user","uid","parent_uid","user_status","price","amount","sum","bargain_price","close","kanjiaIcon","require","limitPeople","bargainCode","time","BargainIntro","limit_people","BargainStatus","overlay","bargainInfo","Artifact","UseArtifact","ranking","icon","flex_default","direction","justify","Item","thirdRow","btn","_useState","useState","_useState2","slicedToArray","day","setDay","_useState3","_useState4","hour","setHour","_useState5","_useState6","min","setMin","_useState7","_useState8","sec","setSec","is_artifact","invit_num","date","end_time","now","Date","differenceInSeconds","differenceInMinutes","differenceInHours","differenceInDays","String","padStart","assist_num","src","avatar_file","alt","user_name","compose","connect","withRouter","OutLine","htmlDecode","content","getList","get","stageInfo","changeTab","tab","index","introduce","white_space_default","lib","tabs_default","tabs","title","initialPage","swipeable","onTabClick","teachers","course_hour","start_time","dangerouslySetInnerHTML","__html","intro","map","item","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","_this$props$courseInf","courseInfo","head_imgurl","align","bind","Audition","auditionBox","common","BtnStatus","signUpNow","hasError","cidArr","JSON","stringify","Number","simpleCourse","simple","formatDate","ary","split","tobuy","bargainStatus","keyToGroup","group","bargainToOrder","bargain","cancel","toStudy","vCourseId","isHaveVideo","expandPay","isexpand","sourcenum","parse","start_timestamp","final_start_time","isbuy","group_status","in_cart","countdown","nextProps","_nextProps$data","_nextProps$user","is_bargain","_this$props3","_this$props3$user","_this$state$courseInf","href","is_deposit","deposit_info","is_have_video","price1","pdd_group_info","invitedFriends","aist_start_time","CancelBargain","getCourses","Barrage","setupBarrage","periods","start","end","interval","getHours","_i","period","setTimeout","isShowBarrage","barageTimer","prevProps","isShow","componentDidUpdate","clearTimeout","wing_blank_default","opacity","avatar","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","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","minutes","Math","floor","handleToShare","userInfo","_res$data4","openTip","is_follow","handleToOpen","_this$state$shareInfo","_res$data5","handleToClose","isOpen","isShare","_this$state$shareInfo2","_res$data6","clickMask","getCaptchaInstance","captchaInstance","onVerify","validate","handleToSend","tel","isFirst","_this$state$country$n","refresh","_res$data7","receviceAfterBind","_res$data8","toContinueBind","_this$state2$accountI","accountInfo","_this$state2$country$","_res$data9","setRelativeCookie","set","isCopy","command","isWechat","localStorage","getItem","_res$data10","_res$data11","removeItem","removeEventListener","_this3","_this$state3$shareInf","_this$state3$shareInf2","_this$state3$shareInf3","cls","popup-mask--no","substr","react_copy_to_clipboard_lib","setItem","redPacket_Packet","packetInfo","tip","formik_esm","initialValues","_ref2","errors","onSubmit","values","_ref3","setStatus","setSubmitting","objectSpread","render","_ref4","_ref4$values","_ref5","field","data-bdrs","data-type","Captcha","mrBtm","getInstance","data-status","_ref6","isEmpty","popup-done__title--overtime","detail_followQRcode","Packet","_ref7","cls_content","popup-packet__content--open","popup-packet__content--money","popup-packet__content--fragment","popup-packet__content--late","_packetInfo$tip","lenght","Detail","getBorwerCourse","today_browsed_courses","currentCourseId","includes","countDownTime","startActivity","assertThisInitialized","countDownInterval","countDown","parseInt","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","course_info","course_title","groupon_member","hours","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","number","_this$props$location$2","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_bargain","detail_outline","detail_btnstatus","dispatch","bindActionCreators","root","documentElement","events","Overlay","_Users_wangshuo_mr_julyedu_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_0__","_Users_wangshuo_mr_julyedu_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__","_Users_wangshuo_mr_julyedu_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__","preventScroll","overlayBox","passive","_this4","ReactDom","createPortal","react__WEBPACK_IMPORTED_MODULE_5___default","ref","el","scrollY","Single","_Users_wangshuo_mr_julyedu_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_2__","_Users_wangshuo_mr_julyedu_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4__","_Users_wangshuo_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_wangshuo_mr_julyedu_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_assertThisInitialized__WEBPACK_IMPORTED_MODULE_7__","showSingleBox","toBuyAll","zerobuyReceive","zerogroupBuy","getOrderId","groupOrderId","getOrderStatus","getTime","pdd_order_id","toGroup","nextContext","_this5","s","m","h","react__WEBPACK_IMPORTED_MODULE_8___default","toLearn","react__WEBPACK_IMPORTED_MODULE_7___default","Ranking","closeMore","MoreList","img"],"mappings":"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","file":"mrstatic/js/detail.e1043ecb.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\";","'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};","import React, {Component} from 'react';\nimport {InputItem, List} from \"antd-mobile\";\nimport './bargain-info.scss'\nimport {validateTel} from \"@/utils\";\nimport {Toast} from 'antd-mobile'\nimport { http, getParam } from \"@/utils\";\nimport {Link} from \"react-router-dom\";\nimport classnames from 'classnames';\n\n\nclass BargainInfo extends Component {\n\n state = {\n mobile: '',\n code: '',\n num: '86',\n isBargain: true,\n isFocus: false,\n bindInfo: {},\n isTip: false,\n seconds: 60,\n isTimer: false, // 是否开始倒计时\n }\n\n handleChange = e => {\n\n let {name, value} = e.target\n\n this.setState({\n [name]: value\n })\n }\n\n // 获取短信验证码\n sendCode = () => {\n const { country } = this.props;\n let { mobile, isTimer, seconds } = this.state;\n if(!isTimer) {\n if(!/^\\d+$/.test(mobile)){\n Toast.info('请输入正确的手机号');\n return;\n }\n\n // 获取验证码\n http.post(\n `${API['passport-api']}/m/personal/bindPhoneSendCode`,\n {\n area_code: `00${country}`,\n phone_num: mobile\n }\n ).then(res => {\n const { errno, msg } = res.data;\n if(errno === 200) {\n Toast.info('验证码发送成功', 2, null, false);\n \n // 倒计时\n this.timer = window.setInterval(() => {\n console.log(seconds);\n if (seconds <= 0) {\n window.clearInterval(this.timer);\n this.setState({\n isTimer: false,\n seconds: 60\n });\n }else {\n this.setState({\n isTimer: true,\n seconds: --seconds\n });\n }\n }, 1000);\n }else {\n Toast.info(msg);\n }\n });\n }\n\n // http.post(`${API['base-api']}/sys/bind_send_sms`, {\n // phone_num: this.state.mobile\n // }).then(res => {\n // if (res.data.code == 200) {\n // Toast.info('验证码发送成功', 2, null, false)\n // } else if (res.data.errno === 410) {\n // Toast.info('该手机号已注册,请使用该手机号登录,发起砍价。', 3, null, false)\n // this.setState({\n // isBargain: false\n // })\n // } else {\n // Toast.info(res.data.msg)\n // }\n // })\n }\n\n // 绑定手机号\n handleClick = (isValid = 1) => {\n const { country, iWantBargain } = this.props;\n const { code, mobile } = this.state;\n if (!mobile) {\n Toast.info('请填手机号码');\n return;\n }\n if (!code) {\n Toast.info('请填写验证码');\n return;\n }\n\n // is_valid\t是否验证 1:验证(默认),0不验证\n http.post(\n `${API['passport-api']}/m/personal/bindPhone`,\n {\n area_code: `00${country}`,\n phone_num: mobile,\n code: code,\n type: 1,\n is_valid: isValid\n }\n ).then(res => {\n const { errno, data, msg } = res.data;\n if(errno === 200) {\n if(isValid) {\n if(data.tip_info) {\n this.setState({\n isTip: true,\n bindInfo: data.tip_info\n })\n }else {\n iWantBargain();\n }\n }else {\n iWantBargain();\n }\n }else {\n Toast.info(msg);\n }\n });\n\n\n // http.post(`${API.home}/m/user/bindMobile`, {\n // ...this.state\n // }).then(res => {\n // if (res.data.code == 200) {\n // Toast.info('绑定手机号成功', 2, null, false)\n // this.props.iWantBargain()\n // } else {\n // Toast.info(res.data.msg)\n // }\n // })\n\n }\n\n\n render() {\n const { country, toClose } = this.props;\n const { mobile, code, isBargain, isFocus, bindInfo, isTip, isTimer, seconds } = this.state;\n const bool = /^\\d+$/.test(mobile);\n return (\n <>\n {/* 该手机号已绑定其他帐号 */}\n {\n isTip &&\n <div className=\"popup-bind popup-bind--bargain\">\n <div className=\"popup-bind__content\">\n <h4 className=\"popup-bind__title\">绑定确认</h4>\n <p className=\"popup-bind__desc\">该手机号已绑定到以下账号,继续绑定将解除以下绑定状态</p>\n <ul className=\"popup-bind__list\">\n {\n bindInfo['email'] &&\n <li className=\"popup-bind__account\">\n\n {/* 邮箱 */}\n <i className=\"iconfont iconduanxin\"></i>\n <p className=\"popup-bind__account--name\">{bindInfo['email']}</p>\n </li>\n }\n {\n bindInfo['wechat_nickname'] &&\n <li className=\"popup-bind__account\">\n\n {/* wechat */}\n <i className=\"icon-wachat\"></i>\n <p className=\"popup-bind__account--name\">{bindInfo['wechat_nickname']}</p>\n </li>\n }\n {\n bindInfo['qq_nickname'] &&\n <li className=\"popup-bind__account\">\n\n {/* qq */}\n <i className=\"icon-qq\"></i>\n <p className=\"popup-bind__account--name\">{bindInfo['qq_nickname']}</p>\n </li>\n }\n {\n bindInfo['sina_nickname'] &&\n <li className=\"popup-bind__account\">\n\n {/* 微博 */}\n <i className=\"icon-sina\"></i>\n <p className=\"popup-bind__account--name\">{bindInfo['sina_nickname']}</p>\n </li>\n }\n </ul>\n <div className=\"popup-bind__button\">\n <button\n className=\"popup-bind__button--cancle\"\n onClick={toClose}>取消</button>\n <button\n className=\"popup-bind__button--confirm\"\n onClick={() => this.handleClick(0)}>继续绑定</button>\n </div>\n </div>\n </div>\n }\n {\n !isTip &&\n <div className=\"bargain-phone-popup\">\n <h2 className=\"bargain-phone-popup__title\">绑定手机,先砍一刀</h2>\n <div \n className={classnames(\n \"bargain-phone-popup__item\",\n {\n 'active': isFocus\n }\n )}\n >\n <Link\n className=\"bargain-phone-popup__button--num\"\n to={`/country?id=${getParam('id')}&from=bargain`}\n >\n +{country}\n <i className=\"iconfont iconiconfront-69\"></i>\n </Link>\n <input \n className=\"bargain-phone-popup__ipt\"\n type=\"tel\" \n onChange={this.handleChange}\n onFocus={() => {\n this.setState({\n isFocus: true\n });\n }} \n onBlur={() => {\n this.setState({\n isFocus: false\n });\n }}\n name='mobile' \n placeholder='手机号' \n maxLength={11}\n />\n </div>\n <div className=\"bargain-phone-popup__item\">\n <input \n type=\"tel\" \n id='code' \n onChange={this.handleChange} \n name='code' \n placeholder='验证码'\n maxLength={6}\n />\n <button \n type=\"button\"\n className={classnames(\n 'bargain-phone-popup__button--send',\n {\n 'active': bool\n }\n )}\n onClick={this.sendCode}\n >\n {isTimer? `重新发送${seconds}s` : '发送验证码'}\n </button>\n </div>\n {\n isBargain\n ? (\n <button \n type=\"button\"\n onClick={() => this.handleClick()}\n className={classnames(\n 'bargain-phone-popup__button--bargain', \n {\n 'active': bool && code\n }\n )}\n >先砍一刀</button>\n )\n : (\n <Link \n className='bargain-phone-popup__button--bargain active'\n to={`/passport/login`}\n >去登录</Link>\n )\n }\n </div>\n }\n </>\n );\n }\n}\n\nexport default BargainInfo;","import React, { Component, useState } from 'react'\nimport './bargain.scss'\nimport { Flex, Toast } from \"antd-mobile\"\nimport Overlay from '../overlay'\nimport BargainInfo from './bargainInfo'\nimport {differenceInSeconds, differenceInMinutes, differenceInHours, differenceInDays} from \"date-fns\"\nimport { api, getParam, http } from \"@/utils\"\nimport Ranking from \"@/components/bargainMiddlePage/ranking\"\nimport { compose } from \"redux\"\nimport { withRouter } from 'react-router-dom'\nimport {connect} from \"react-redux\";\nimport { Object } from 'core-js'\n\n\nclass Bargain extends Component {\n constructor(props) {\n super(props)\n this.state = {\n isShowOverlay: false,\n kanjiaIcon: require('./image/kanjia_icon.png'),\n info: '',\n outList: [],\n list: [],\n limitPeople: '',\n status: '',\n bargainCode: '',\n time: '',\n barInfo: {},\n country: '86',\n price: 0, // 每次砍价砍掉的价格\n sum: 0 // 累计砍掉的价格\n }\n }\n\n componentDidMount() {\n this.getBargainInfo();\n this.judgePopupTypeFromCountry();\n }\n\n // 选择区号后进入\n judgePopupTypeFromCountry = () => {\n const { country, delCountryNum } = this.props;\n if(country.from && country.from === 'bargain') {\n this.setState({\n country: country.num,\n isShowOverlay: true,\n status: 3,\n });\n\n // 清除\n delCountryNum();\n }\n }\n\n // 获取助理好友\n getBargainRankList = (params = {}) => {\n http.post(`${API.home}/m/bargain/rankList`, params).then((res) => {\n if (res.data.code === 200) {\n this.setState({\n list: res.data.data.list,\n outList: res.data.data.list[0]\n })\n } else {\n Toast.info(res.data.msg, 2)\n }\n })\n }\n\n\n //获取砍价信息\n getBargainInfo = (isFetch = true) => {\n let data = {\n courseId: getParam('id')\n }\n http.post(`${API.home}/m/bargain/courseDetail`, data).then((res) => {\n const { code, data, msg = '' } = res.data;\n if (code === 200) {\n this.setState({\n barInfo: data,\n // info: res.data.data,\n // limitPeople: res.data.data.limit_people,\n // bargainCode: res.data.data.bargain_code\n });\n if(isFetch) {\n // 砍价状态 0-砍价中,1砍价结束,待支付,2砍价过期(没有砍价记录没有砍价信息),3已购买\n if (data.bargain_status === 0 || data.bargain_status === 1 ) {\n this.getBargainRankList({\n type: 0,\n bargain_code: data.bargain_code\n });\n }\n }\n } else {\n Toast.info(msg, 2);\n }\n });\n }\n\n // 查看更多\n getMore = () => {\n this.setState({\n isShowMore: true\n })\n }\n\n // 自组件传给父组件的boxHide\n boxHide = (val) => {\n this.setState({isShowMore: val})\n }\n\n // 领取砍价神器\n toArtifact = () => {\n let data = {\n courseId: getParam('id')\n }\n http.post(`${API.home}/m/bargain/receiveLimit`, data).then((res) => {\n if (res.data.code === 200) {\n this.setState({\n isShowOverlay: true,\n status: 1\n });\n this.getBargainInfo(false);\n } else {\n Toast.info(res.data.msg, 2)\n }\n })\n }\n\n // 使用砍价神器\n useArtifact = () => {\n this.toKanjia(getParam('id'), 2, 0)\n }\n\n // 加入购物车\n toCart = () => {\n let data = {\n course_id: getParam('id')\n }\n http.post(`${API.home}/m/cart/add`, data).then((res) => {\n if (res.data.code === 200 || res.data.code === 15001) {\n this.props.history.push('/shopcart')\n } else {\n Toast.info(res.data.msg, 2);\n }\n })\n }\n // 继续砍价\n continueBargain = () => {\n const { barInfo = {} } = this.state;\n const code = barInfo.bargain_code;\n this.props.history.push(`/bargain-middle-page?id=${getParam('id')}&bargaincode=${code}&is_originator=1`)\n }\n\n // 我要砍价\n iWantBargain = () => {\n const { history, user } = this.props\n const uid = user && user.data && user.data.uid;\n if(!uid){\n history.push('/passport/login');\n } else {\n this.toKanjia(getParam('id'), 1, 0);\n }\n }\n\n // 砍价接口\n toKanjia = (id, type, uid) => {\n let data = {\n course_id: id,\n type: type, // 1 用户自己砍价 2 使用砍价神器 3 好友助力砍价 4 好友第二次助力\n parent_uid: uid // 被助力人id 【自己本人操作传0】\n };\n const { history } = this.props;\n http.post(`${API.home}/m/bargain/toBargain`, data).then((res) => {\n const { data: { data, code } } = res;\n if (code === 200) {\n\n // user_status 用户状态 1-关注公众号,2-绑定手机号 3-再砍一刀 (是发起人没有这个字段)\n if(data.user_status === 2) {\n this.setState({\n isShowOverlay: true,\n status: 3,\n });\n }else {\n if(type === 2) {\n this.setState({\n isShowOverlay: true,\n status: 2,\n price: data.amount,\n sum: data.bargain_price\n });\n this.getBargainInfo(false);\n this.getBargainRankList({\n type: 0,\n bargain_code: data.bargain_code\n });\n }else {\n history.push(`/bargain-middle-page?id=${getParam('id')}&bargaincode=${data.bargain_code}&is_originator=1`)\n }\n }\n // if (type === 2) {\n // this.setState({\n // isShowOverlay: true,\n // status: 2,\n // })\n // } else {\n // // user_status 用户状态 1-关注公众号,2-绑定手机号 3-再砍一刀 (是发起人没有这个字段)\n // if (data.user_status === 2) {\n // this.setState({\n // isShowOverlay: true,\n // status: 3,\n // })\n // } else {\n // history.push(`/bargain-middle-page?id=${getParam('id')}&bargaincode=${data.bargain_code}&is_originator=1`)\n // }\n // }\n } else {\n Toast.info(res.data.msg, 2)\n }\n })\n }\n\n\n // 关闭弹窗\n close = () => {\n this.setState({\n isShowOverlay: false,\n status: '',\n })\n }\n\n render() {\n const { list, outList, barInfo, country, price, sum } = this.state;\n const {user} = this.props\n const uid = user && user.data && user.data.uid\n return (\n <div className={'bargain-func'}>\n\n {/*bargain_status 砍价状态 0-砍价中,1砍价结束,待支付,2砍价过期(没有砍价记录没有砍价信息),3已购买*/}\n {\n (barInfo.bargain_status === 2 || (getParam('id') === '139' && barInfo.bargain_status === 3) || !uid) &&\n <BargainIntro limitPeople={barInfo.limit_people} iWantBargain={this.iWantBargain}/>\n }\n {\n (barInfo.bargain_status === 0 || barInfo.bargain_status === 1) && uid &&\n <BargainStatus\n info={barInfo}\n outList={outList}\n getMore={this.getMore}\n toArtifact={this.toArtifact}\n useArtifact={this.useArtifact}\n continueBargain={this.continueBargain}\n />\n }\n\n\n {\n this.state.isShowOverlay &&\n <Overlay>\n {/*绑定手机号*/}\n {\n this.state.status === 3 &&\n <BargainInfo country={country} iWantBargain={this.iWantBargain} toClose={this.close} />\n }\n\n\n {/*领取砍价神器*/}\n {\n this.state.status === 1 &&\n <Artifact useArtifact={this.useArtifact}/>\n }\n {/*使用砍价神器*/}\n {\n this.state.status === 2 &&\n <UseArtifact \n price={price}\n sum={sum}\n toCart={this.toCart}\n />\n }\n\n {\n this.state.status !== 0 &&\n <i onClick={this.close} className={'iconfont iconiconfront-2 bargain-close'}></i>\n }\n\n </Overlay>\n\n }\n\n\n {/*更多好友砍价*/}\n <Ranking\n list={list}\n icon={this.state.kanjiaIcon}\n limitPeople={barInfo.limit_people}\n isShowMore={this.state.isShowMore}\n boxHide={this.boxHide}\n />\n\n </div>\n )\n }\n}\n\nfunction BargainIntro(props) {\n return (\n <div className=\"intro-outer\">\n <div className=\"intro-inner\">\n <Flex direction={'column'} justify={'center'} className={'intro-wrapper'}>\n <p>\n 邀请\n <span className={'indicator'}>{props.limitPeople}位</span>\n 好友帮忙砍价可获得\n <span className={'indicator'}>【砍价神器】</span>\n </p>\n <p>一刀绝杀,砍爆底价</p>\n <Flex.Item>\n <button onClick={props.iWantBargain}>我要砍价</button>\n </Flex.Item>\n </Flex>\n </div>\n </div>\n )\n}\n\nfunction BargainStatus(props) {\n\n const [day, setDay] = useState(0)\n const [hour, setHour] = useState(0)\n const [min, setMin] = useState(0)\n const [sec, setSec] = useState(0)\n\n\n let thirdRow, btn\n // is_artifact\t 0-再邀请多少人可以使用 1-可以使用未领取 2-已领取 3-已使用\n if (props.info.is_artifact === 0) {\n thirdRow =\n <div>再邀请<span className={'indicator'}>{props.info.invit_num}</span>位好友助力即可获得<span\n className={'indicator'}>【砍价神器】</span></div>\n } else if (props.info.is_artifact === 1) {\n thirdRow = <div>恭喜你获得<span className={'indicator'}>【砍价神器】</span></div>\n btn = <button onClick={props.toArtifact}>立即领取</button>\n } else if (props.info.is_artifact === 2) {\n thirdRow = <div>恭喜你获得<span className={'indicator'}>【砍价神器】</span></div>\n btn = <button onClick={props.useArtifact}>立即使用</button>\n }\n\n\n let date = props.info.end_time * 1000\n let now = Date.now()\n setInterval(() => {\n date -= 1000\n setSec(differenceInSeconds(new Date(date), now) % 60)\n setMin(differenceInMinutes(new Date(date), now) % 60)\n setHour(differenceInHours(new Date(date), now) % 24)\n setDay(differenceInDays(new Date(date), now) % 24)\n\n }, 1000)\n\n\n return (\n <div className=\"status-outer\">\n\n {\n props.info.bargain_status === 0 &&\n <div className=\"status-inner\">\n\n <Flex direction={'column'}>\n <div className={'first-row'}>\n <div>\n 已砍<span className={'indicator'}>{props.info.bargain_price}元</span>\n <span className={'time hour'}>{String(hour).padStart(2, 0)}</span> : \n <span className={'time min'}>{String(min).padStart(2, 0)}</span> : \n <span className={'time sec'}>{String(sec).padStart(2, 0)}</span>\n <span className='over'>后砍价结束</span>\n </div>\n <div onClick={props.getMore}>{props.info.assist_num}位好友助力></div>\n </div>\n\n <div className=\"sec-row\">\n <div>\n <img\n src={props.outList.avatar_file}\n alt=\"\"/>\n <span className='name'>{props.outList.user_name}</span>\n </div>\n <div>\n <div>砍掉<span className={'indicator'}>{props.outList.amount}元</span></div>\n <button onClick={props.continueBargain}>继续砍价</button>\n </div>\n </div>\n <div className=\"third-row\">\n {thirdRow}\n {btn}\n </div>\n </Flex>\n </div>\n }\n\n {\n props.info.bargain_status === 1 &&\n <div className=\"status-inner status-over\">\n\n <Flex direction={'column'}>\n <div className={'first-row'}>\n <div>\n 已砍<span className={'indicator'}>{props.info.bargain_price}元</span>\n <span className='bargain-over'>\n 砍价结束\n </span>\n </div>\n <div onClick={props.getMore}>{props.info.assist_num}位好友助力></div>\n </div>\n <div className=\"time-tobuy\">\n 砍价金额将于\n <span className={'time hour'}>{String(day).padStart(2, 0)}</span><span\n className={'unit'}> 天 </span>\n <span className={'time min'}>{String(hour).padStart(2, 0)}</span><span\n className={'unit'}> 时 </span>\n <span className={'time sec'}>{String(min).padStart(2, 0)}</span><span\n className={'unit'}>分</span>\n 后清零,请尽快完成支付\n </div>\n </Flex>\n </div>\n }\n </div>\n )\n}\n\n\n{/*领取砍价神器*/\n}\n\nfunction Artifact(props) {\n return (\n <div className='artifact-box'>\n <p className='top-tip'>恭喜你获得【砍价神器】!</p>\n <p className='middle-tip'>\n 您可以使用\n <span className={'indicator'}>【砍价神器】</span>\n 再砍一刀\n </p>\n <button className='use-artifact' onClick={props.useArtifact}>立即使用</button>\n </div>\n )\n}\n\nfunction UseArtifact(props) {\n const { sum, price } = props;\n return (\n <div className='use-artifact-box'>\n <img className='top-img' src={require('./image/kanjia_cg_icon.png')} alt=\"\"/>\n <p className='top-tip'>厉害了,又砍掉了{price}元!</p>\n <p className='middle-tip'>\n 你已经砍了\n <span className={'indicator'}>{sum}元</span>\n 没见过你这么能砍的人...\n </p>\n <p className='btm-tip'>\n 不能再砍了哦~\n </p>\n <button className='tubuy' onClick={props.toCart}>去支付</button>\n </div>\n )\n}\n\n\nexport default compose(\n connect(\n state => ({\n user: state.user\n }),\n null\n ),\n withRouter\n)(Bargain)\n","import React, { Component } from 'react'\nimport './index.scss'\nimport { getParam, http } from \"@/utils\"\nimport { connect } from \"react-redux\"\nimport { Flex } from 'antd-mobile'\nimport {browser} from \"@/utils\"\nimport {Toast} from 'antd-mobile'\n\n\nclass Group extends Component {\n constructor(props) {\n super(props)\n this.state = {\n isShowMore: false,\n alreadyIn: false,\n pdd_price: 0,\n number: 0,\n data: {},\n countdown: props.countdown,\n now_groupon_list: [],\n }\n // console.log(props);\n }\n\n // 查看更多\n getMore = () => {\n this.setState({\n isShowMore: true\n })\n }\n\n // 关闭更多窗口\n closeMore = () => {\n this.setState({\n isShowMore: false\n })\n }\n\n toPay = (pdd_order_id) => {\n const {courseInfo, history} = this.props;\n if (courseInfo.group_status === 3) {\n history.push(\n `/order?id=${getParam('id')}`, \n {\n group: 1,\n pdd_order_id\n }\n );\n } else {\n this.setState({\n isShowMore: false,\n alreadyIn: true\n });\n }\n }\n\n invitedFriends = () => {\n this.setState({\n isShowMore: false,\n alreadyIn: false,\n });\n this.props.invitedFriends();\n }\n\n componentWillReceiveProps(nextProps) {\n if (nextProps.courseInfo && nextProps.courseInfo.courseInfo && nextProps.courseInfo.courseInfo.course_info && nextProps.courseInfo.courseInfo.course_info.pdd_group_info) {\n let now_groupon_list = nextProps.courseInfo.courseInfo.course_info.pdd_group_info.now_groupon_list;\n if (now_groupon_list && now_groupon_list.length > 0) {\n now_groupon_list.map(item => {\n item.end_time -= 1;\n return item;\n });\n this.setState({\n now_groupon_list,\n })\n }\n }\n this.setState({\n countdown: nextProps.countdown\n })\n }\n\n componentDidMount() {\n const { courseInfo={} } = this.props;\n if (courseInfo.pdd_group_info) {\n let now_groupon_list = courseInfo.pdd_group_info.now_groupon_list;\n if (now_groupon_list && now_groupon_list.length > 0) {\n setInterval(() => {\n now_groupon_list.map(item => {\n item.end_time -= 1;\n return item;\n });\n this.setState({\n now_groupon_list,\n })\n }, 1000);\n }\n }\n }\n\n hideMbc = () => {\n this.setState({\n alreadyIn: false\n });\n }\n\n formatTimeByMillisecond = (millisecond) => {\n let date = millisecond * 1000,\n hours = 0,\n minutes = 0,\n seconds = 0;\n date -= 1000;\n hours = `${parseInt(date / (60 * 60 * 1000))}`.padStart(2, 0);\n minutes = `${parseInt((date - hours * 3600000) / 60000)}`.padStart(2, 0);\n seconds = `${parseInt((date - hours * 3600000 - minutes * 60000) / 1000)}`.padStart(2, 0);\n return `${hours}:${minutes}:${seconds}`;\n }\n\n render() {\n const { courseInfo } = this.props;\n const { alreadyIn, countdown, now_groupon_list } = this.state;\n let groupInfo = '', \n groupon_member = '', \n group_status = -1, \n groupSuccessMbc = null;\n if (courseInfo) {\n groupInfo = courseInfo.pdd_group_info;\n groupon_member = groupInfo.groupon_member;\n group_status = courseInfo.group_status;\n }\n if (group_status === 4) {\n if (groupon_member.member) {\n const { number } = groupon_member;\n let ary = [], num = number;\n while (num != 0) {\n ary.push(num);\n num--;\n }\n let groupTip = (<div className='group-user-list'>\n <Flex justify='center' className='imgList'>\n {\n groupon_member.member.map(item => {\n return (\n <div className='imgContainer' key={Math.random()}>\n <img className='imgname' src={item.avatar} alt='' />\n {\n item.user_type === 1 ? (\n <div className='leaderFlag'>\n <span>团长</span>\n </div>\n ) : null\n }\n </div>);\n })\n }\n {\n ary.map(item => {\n return (<div className='imgContainer' key={Math.random()}>\n <div className='imgname'>\n <i className='iconfont iconwode-xianxing no-body'></i>\n </div>\n </div>)\n })\n }\n </Flex>\n </div>);\n groupSuccessMbc = <div className='groupSuccessMbc' onClick={this.hideMbc}>\n <div className='content'>\n <p>你已参团</p>\n {groupTip}\n <div className='group-btn' onClick={this.invitedFriends}>邀请好友参团 {countdown} 后结束</div>\n <p className='dec'>分享到3个群后,成团率高达98%</p>\n </div>\n </div>;\n }\n\n }\n\n return (\n <div className='group-box'>\n <div className=\"group-title\">\n <span>{groupInfo.now_groupon_total}人正在开团,可直接参与</span>\n <span className='more' onClick={this.getMore}>\n 查看更多\n <i className='iconfont iconiconfront-70'></i>\n </span>\n\n </div>\n <ul className=\"group-list\">\n {\n groupInfo.now_groupon_list && groupInfo.now_groupon_list.length > 0 && groupInfo.now_groupon_list.map((item, index) => {\n return (\n <li key={index} className='group-item'>\n <img className='avatar' src={item.avatar} alt=\"\" />\n <div className='user-name text-overflow-one'>\n {item.user_name}\n </div>\n <div className='group-status'>\n <p>还差<span className='red'>{item.number}人</span>拼成</p>\n <p>剩余 {this.formatTimeByMillisecond(item.end_time)}</p>\n </div>\n <span onClick={() => { this.toPay(item.pdd_order_id) }} className='topay'>去参团</span>\n </li>\n )\n })\n }\n </ul>\n <div className=\"group-dec\">\n <span>\n <i className='iconfont iconiconfront-1'></i>\n ·好友参团 ·人满成交 ·人不满退款\n </span>\n <span className='allNum'>{`累计${groupInfo.person_num}人成团`}</span>\n </div>\n {\n (alreadyIn && group_status === 4) && (\n <>\n {groupSuccessMbc}\n </>\n )\n\n }\n {/*更多*/}\n {\n this.state.isShowMore &&\n <div className=\"moreMbc\">\n <div className=\"content\">\n <div className=\"title-box\">\n 正在拼团\n </div>\n <ul className='more-group-list'>\n {\n groupInfo.now_groupon_list && groupInfo.now_groupon_list.length > 0 && groupInfo.now_groupon_list.map((item, index) => {\n return (\n <li key={index} className='group-item'>\n <img className='avatar' src={item.avatar} alt=\"\" />\n <div className='user-name'>\n <p className='name text-overflow-one'>{item.user_name}</p>\n <p className='time'>剩余 {this.formatTimeByMillisecond(item.end_time)}</p>\n </div>\n <p className='group-status'>还差{item.number}人</p>\n <span onClick={() => { this.toPay(item.pdd_order_id) }} className='topay'>去参团</span>\n </li>\n )\n })\n }\n </ul>\n <div className='more-group-dec'>\n 仅显示10个正在开团的人\n </div>\n <i onClick={this.closeMore} className={'iconfont iconiconfront-2 close'}></i>\n </div>\n\n </div>\n }\n\n </div>\n )\n }\n}\n\n// export default connect(\n// state => ({ courseInfo: state }),\n// null\n// )(Group)\n\nexport default Group;\n","import React, { Component } from 'react'\nimport { Link } from 'react-router-dom'\nimport { Tabs, WhiteSpace } from 'antd-mobile'\nimport './index.scss'\nimport { getParam, http } from \"@/utils\"\nimport { Toast } from 'antd-mobile'\nimport { StickyContainer } from \"react-sticky\";\nimport {RenderTabBar} from \"@/common\";\n\nclass OutLine extends Component {\n constructor(props) {\n super(props)\n this.state = {\n stageInfo: [],\n tab: 0,\n }\n }\n\n componentDidMount() {\n this.getList()\n }\n\n\n htmlDecode = (content) => {\n if (content) {\n content = content.replace(/</g, '<');\n content = content.replace(/>/g, '>');\n content = content.replace(/&gt;/g, '');\n content = content.replace(/"/g, '\"');\n content = content.replace(/&nbsp;/g, '');\n }\n return content;\n }\n\n // 获取大纲数据\n getList = () => {\n http.get(`${API.home}/m/course/syllabuses/${getParam('id')}`).then((res) => {\n if (res.data.code === 200) {\n this.setState({\n stageInfo: res.data.data\n })\n } else {\n Toast.info(res.data.msg, 2)\n }\n })\n }\n\n changeTab = (tab, index) => {\n this.setState({\n tab: index\n })\n }\n\n render() {\n const tabs = [\n {title: '介绍'},\n {title: '大纲'}\n ];\n let introduce = ''\n if (this.props.data) {\n introduce = this.props.data\n }\n return (\n <div className='course-detail'>\n <WhiteSpace/>\n <StickyContainer>\n <Tabs tabs={tabs}\n initialPage={0}\n swipeable={false}\n onTabClick={(tab, index) => this.changeTab(tab, index)}\n // renderTabBar={RenderTabBar}\n >\n </Tabs>\n\n {/*介绍*/}\n {\n this.state.tab === 0 ? (\n <div className='introduce'>\n <p>讲师:{introduce.teachers}</p>\n <p>课时:{introduce.course_hour}</p>\n <p>时间:{introduce.start_time}</p>\n <div className='dec' dangerouslySetInnerHTML={{__html: this.htmlDecode(introduce.intro)}}></div>\n </div>\n ) : null\n }\n {/*大纲*/}\n {\n this.state.tab === 1 ? (\n <div className='outline'>\n {\n this.state.stageInfo && this.state.stageInfo.length > 0 && this.state.stageInfo.map((item, index) => {\n return (\n <div className='stagebox' key={index}>\n <h1 className='stage text-overflow-1'>{item.stage_name}</h1>\n {\n item.lesson.map((item, index) => {\n return (\n <ul key={index}>\n <h2 className='classhour'>\n <span className='title text-overflow-1'>{item.name}</span>\n {/*\n class_status\n 0-未购买未开单集购买\n 1-未购买已开单集购买\n 2-已购买直播结束已上传视频\n 3-已购买未开课、已购买直播结束\n 4-已购买直播中\n 5-可试听且有试听权限\n 6-可试听但无试听权限\n */}\n { // 试听\n !introduce.is_aist && (item.class_status === 6 || item.class_status === 5) &&\n <span className='btn-right-10 audition'\n onClick={e => this.props.toAudition(introduce.v_course_id, item.video_id)}>试听\n <i className='iconfont iconcelluar'></i>\n </span>\n }\n { // 未购买未开单集购买:上锁标志,点击提示购买\n !introduce.is_aist && item.class_status === 0 &&\n <i className='iconfont iconiconfront-74 icon-right-22'></i>\n }\n { // 未购买已开单集购买:显示单集价格,点击购买单集\n !introduce.is_aist && item.class_status === 1 &&\n <span className='btn-right-10 singleset'\n onClick={e => this.props.toSingleset(item)}>¥ {item.class_price}</span>\n }\n {\n !introduce.is_aist && item.class_status === 4 &&\n item.video_auth === 1 && item.is_video === 4 &&\n <span className='live icon-right-22'>正在直播<i\n className='iconfont icondanseshixintubiao-23'></i></span>\n }\n {\n // 已购买直播结束已上传视频:正常播放按钮,点击播放课程\n !introduce.is_aist && item.class_status === 2 &&\n <Link\n to={`/play/video?id=${introduce.v_course_id + '&video_id=' + item.video_id}`}\n className='iconfont icondanseshixintubiao-23 icon-right-22'></Link>\n }\n\n {\n // 返现课程 是返现课程 未开课 已开课 是返现课程 未开课 已开课 已练习\n introduce.is_aist && item.is_open && introduce.is_baoming === 1 &&\n <Link\n to={`/play/video?id=${introduce.v_course_id + '&video_id=' + item.video_id}`}\n className='aist aist_open'></Link>\n\n }\n\n {\n // 返现课程 是返现课程 未开课 已开课 是返现课程 未开课 已开课 已练习\n introduce.is_aist && (!item.is_open || introduce.is_baoming === 0) &&\n\n <i className='aist iconfont iconiconfront-74'></i>\n }\n </h2>\n {\n item.point && item.point.length > 0 && item.point.map((item, index) => {\n const type = (\n <span>\n {\n item.type === 1 &&\n <span>知识点{index + 1}:</span>\n }\n {\n item.type === 2 &&\n <span className='red'>实战项目:</span>\n }\n </span>\n )\n\n return (\n <li className='points text-overflow-1'\n key={index}>{type}{item.name}</li>\n )\n\n })\n }\n {\n <>\n {\n introduce.is_aist && item.practice.title !== \"\" && (!item.is_open || introduce.is_baoming === 0) &&\n <span className='camp camp_test' key={index}>\n <span>课后练习:{item.practice.title}</span>\n <i className='exam exam_close'/>\n </span>\n }\n {\n introduce.is_aist && item.practice.title !== \"\" && item.is_open && introduce.is_baoming === 1 && !item.practice.is_tested &&\n <Link to={{\n pathname: `/campTest`,\n search: `?keshi_id=${item.video_id}&qid=${item.practice.qid}`,\n state: {from: `/detail${window.location.search}`}\n }} className='camp camp_test' key={index}>\n <span>课后练习:{item.practice.title}</span>\n </Link>\n }\n {\n introduce.is_aist && item.practice.title !== \"\" && item.is_open && introduce.is_baoming === 1 && item.practice.is_tested &&\n <Link to={{\n pathname: `/campResolve`,\n search: `?keshi_id=${item.video_id}&qid=${item.practice.qid}`,\n state: {from: `/detail${window.location.search}`}\n }} className='camp camp_test' key={index}>\n <span>课后练习:{item.practice.title}</span>\n <i className='exam exam_open'/>\n </Link>\n }\n </>\n }\n </ul>\n )\n })\n }\n </div>\n )\n })\n }\n </div>\n ) : null\n }\n </StickyContainer>\n <WhiteSpace/>\n </div>\n );\n }\n\n}\n\nexport default OutLine;","import React, {Component} from 'react'\nimport './index.scss'\nimport {getParam, http} from \"@/utils\"\nimport {Toast, Flex} from 'antd-mobile'\nimport {connect} from \"react-redux\"\nimport {withRouter} from 'react-router-dom'\nimport {compose} from \"redux\"\n\nclass ShareRank extends Component {\n constructor(props) {\n super(props)\n this.state = {\n list: [], // 分销排行榜\n rankingslice: [], // 分销排行榜前两名\n code: '', // 分销code\n shareRank: false\n }\n }\n\n componentDidMount() {\n this.getRankList()\n this.getCode()\n }\n\n // 获取排行榜\n getRankList = () => {\n http.get(`${API.home}/dist/rankList/${getParam('id')}`).then((res) => {\n if (res.data.code === 200) {\n this.setState({\n list: res.data.data,\n rankingslice: res.data.data.slice(0, 2)\n })\n } else {\n Toast.info(res.data.msg, 2)\n }\n })\n }\n\n // 获取分销码\n getCode = () => {\n const {user} = this.props\n const uid = user && user.data && user.data.uid\n if (!uid) return\n let data = {\n course_id: getParam('id')\n }\n http.post(`${API.home}/dist/createCode`, data).then((res) => {\n if (res.data.code === 200) {\n this.setState({\n code: res.data.data.code\n })\n } else {\n Toast.info(res.data.msg, 2)\n }\n })\n }\n\n // 点击分销跳转到海报页\n share = (info) => {\n const {user} = this.props\n const uid = user && user.data && user.data.uid\n if (!uid) {\n this.props.history.push('/passport/login')\n } else {\n const courseId = getParam('id')\n const dist_first = info.dist_first_level_ti\n const uid = info.uid\n const dist_code = this.state.code\n this.props.history.push(`/shareposter?courseId=${courseId}&dist_first=${dist_first}&uid=${uid}&dist_code=${dist_code}`)\n }\n }\n\n\n // 打开分销排行榜弹窗\n openRanking = () => {\n this.setState({\n shareRank: true\n })\n }\n\n // 关闭弹窗\n colse = () => {\n this.setState({\n shareRank: false\n })\n }\n\n render() {\n const { courseInfo: info = '' } = this.props;\n // let info = ''\n // if (this.props.courseInfo && this.props.courseInfo.courseInfo && this.props.courseInfo.courseInfo.course_info) {\n // info = this.props.courseInfo.courseInfo.course_info\n // }\n return (\n <div className='share-ranking'>\n <Flex className='share-container' justify='between'>\n <Flex className='share-list'>\n <span className=\"title\">排行榜:</span>\n <div className='ranking-box' onClick={this.openRanking}>\n {\n this.state.rankingslice && this.state.rankingslice.length > 0 && this.state.rankingslice.map((item, index) => {\n return (\n <span key={index} className=\"ranking-mess\">\n <img src={item.head_imgurl} alt=\"\"/>\n <i>{item.amount}元</i>\n </span>\n )\n })\n }\n\n\n </div>\n </Flex>\n <Flex className='share-money' justify='between' align='center'>\n <img onClick={this.openRanking} className=\"ranking-ellipsis\"\n src=\"https://julyedu-img.oss-cn-beijing.aliyuncs.com/Image/train/ellipsis.png\" alt=\"\"/>\n <button className=\"share\" onClick={this.share.bind(this, info)}>分享赚{info.dist_first_level_ti}元\n </button>\n </Flex>\n </Flex>\n\n\n {\n this.state.shareRank &&\n <div className=\"shareMbc\">\n <div className=\"content\">\n <div className=\"title-box\">\n <span className=\"lable\">赚钱排行榜</span>\n <span className=\"tips\">只展示前9名用户</span>\n </div>\n <ul>\n {\n this.state.list && this.state.list.length > 0 && this.state.list.map((item, index) => {\n return (\n <li key={index}>\n <img src={item.head_imgurl} alt=\"\"/>\n <span className='course-title'>{item.user_name}</span>\n <span className='course-price'>{item.amount}元</span>\n </li>\n )\n })\n }\n </ul>\n <div className='shareBtn'>\n <button onClick={this.share.bind(this, info)}>分享赚{info.dist_first_level_ti}元</button>\n </div>\n <i onClick={this.colse} className={'iconfont iconiconfront-2 close'}></i>\n </div>\n\n </div>\n }\n </div>\n );\n }\n}\n\nexport default compose(\n connect(\n state => ({\n // courseInfo: state,\n user: state.user\n }),\n null\n ),\n withRouter\n)(ShareRank)\n","import React, {Component} from 'react'\nimport './index.scss'\nimport {CallApp} from '../../../common'\n\n\nclass Audition extends Component {\n constructor(props) {\n super(props);\n }\n\n colse = () => {\n this.props.boxHide(false);\n }\n\n render() {\n return (\n <div>\n {\n this.props.auditionBox &&\n <div className='popup-box'>\n <div className='content audition-box'>\n <p className='audition-header'>当前页面不支持试听</p>\n <p className='audition-dec'>请前往APP试听</p>\n <CallApp className='btn btn-18B4ED' text='立即前往'></CallApp>\n </div>\n <i onClick={this.colse} className={'iconfont iconiconfront-2 close'}></i>\n </div>\n }\n </div>\n );\n }\n\n}\n\nexport default Audition;\n","import React, { Component } from 'react'\nimport { getParam, http } from \"@/utils\"\nimport { Toast } from 'antd-mobile'\nimport { Link } from 'react-router-dom'\nimport { getCourses } from \"@/components/detail/actions\"\nimport { connect } from \"react-redux\"\nimport './index.scss'\nimport Overlay from '../overlay'\n\n\nclass BtnStatus extends Component {\n constructor(props) {\n super(props)\n this.state = {\n isbuy: 1,\n is_baoming: 0,\n group_status: 3,\n in_cart: false,\n countdown: 0,\n barInfo: {}\n }\n\n }\n\n componentDidMount() {\n // this.getBargainInfo()\n this.group = false;\n }\n\n\n // componentDidUpdate(prevProps) {\n // let {courseInfo} = this.props\n // let {courseInfo: prevCourseInfo} = prevProps\n // if (courseInfo && courseInfo.is_bargain) {\n // if (prevCourseInfo && courseInfo.is_bargain !== prevCourseInfo.is_bargain) {\n // this.getBargainInfo()\n // }\n // }\n // }\n\n componentWillReceiveProps(nextProps) {\n const { data = {}, user = {}} = nextProps;\n if(data.is_bargain && user.data && user.data.uid) {\n this.getBargainInfo();\n }\n // if(nextProps.data && nextProps.data.is_bargain) {\n // this.getBargainInfo()\n // }\n this.setState({\n courseInfo: data,\n countdown: nextProps.countdown,\n });\n }\n\n // // 加入购物车 type:1 加入购物车,2加入购物车并跳转到购物车页面去支付\n // toCart = (type) => {\n // const { history, addCourseToCart } = this.props;\n // let data = {\n // course_id: getParam('id')\n // };\n // http.post(`${API.home}/m/cart/add`, data).then((res) => {\n // if (res.data.code === 200) {\n // if (type === 1) {\n // Toast.info('已加入购物车', 2)\n // // this.props.getCourses()\n // // document.location.reload()\n // addCourseToCart();\n // } else {\n // history.replace('/shopcart');ß\n // }\n // } else if (res.data.code === 15001) {\n // history.replace('/shopcart');\n // } else if (res.data.code === 4030) {\n // history.replace('/passport');\n // } else {\n // Toast.info(res.data.msg, 2);\n // }\n // })\n // };\n // 返现课程的立即购买\n signUpNow = () => {\n if(this.props.user.hasError) {\n // 未登录 去登陆\n this.props.history.push('/passport');\n }else{\n let cidArr = JSON.stringify([Number(getParam('id'))]);\n http.get(`${API['base-api']}/m/cart/addtopreorder/${cidArr}?type=1`).then((res) => {\n if (res.data.errno === 0) {\n this.props.history.push(\"/order?id=\" + res.data.data[0], {type: 1});\n } else {\n Toast.info(res.data.msg, 2);\n }\n })\n }\n };\n // 普通课程的立即报名 要模拟结算过程\n simpleCourse = () => {\n if(this.props.user.hasError) {\n // 未登录 去登陆\n this.props.history.push('/passport');\n }else{\n http.get(`${API['base-api']}/m/cart/addtopreorder/[${getParam('id')}]`).then((res) => {\n if (res.data.errno === 0) {\n this.props.history.push(`/order?id=${getParam('id')}`, {simple: 1})\n } else {\n Toast.info(res.data.msg, 2);\n }\n })\n }\n };\n // 格式化开课时间\n formatDate = (date) => {\n let ary = date.split('-');\n return `${ary[1]}月${ary[2]}日开课`;\n };\n // 直接购买\n tobuy = () => {\n const {user} = this.props;\n const {barInfo} = this.state;\n const uid = user && user.data && user.data.uid\n if (!uid) {\n this.props.history.push('/passport/login')\n } else {\n if (barInfo.bargain_status === 2) {\n // this.toCart(2)\n // 新需求 不需要加入购物车 直接走普通课程的立即报名流程 跳到订单页\n this.simpleCourse();\n } else {\n // 取消砍价记录\n this.setState({\n isShowOverlay: true,\n bargainStatus: 1,\n })\n }\n }\n };\n // 一键开团\n keyToGroup = () => {\n if(this.props.user.hasError) {\n // 未登录 去登陆\n this.props.history.push('/passport');\n return;\n }\n this.props.history.push(`/order?id=${getParam('id')}`, {group: 1})\n };\n // 砍完价去支付\n bargainToOrder = () => {\n if(this.props.user.hasError) {\n // 未登录 去登陆\n this.props.history.push('/passport');\n }else{\n http.get(`${API['base-api']}/m/cart/addtopreorder/[${getParam('id')}]`).then((res) => {\n if (res.data.errno === 0) {\n this.props.history.push(`/order?id=[${getParam('id')}]`, {bargain: 1});\n } else {\n Toast.info(res.data.msg, 2);\n }\n })\n }\n };\n\n // 取消砍价\n cancel = () => {\n let data = {\n courseId: getParam('id')\n }\n http.post(`${API.home}/m/bargain/cancel`, data).then((res) => {\n if (res.data.code === 200) {\n this.setState({\n isShowOverlay: false,\n bargainStatus: '',\n })\n http.get(`${API['base-api']}/m/cart/addtopreorder/[${getParam('id')}]`).then((res) => {\n if (res.data.errno === 0) {\n this.props.history.push(`/order?id=[${getParam('id')}]`, {simple: 1});\n } else {\n Toast.info(res.data.msg, 2);\n }\n })\n // window.location.href = '/shopcart'\n // this.props.history.push(`/order?id=[${getParam('id')}]`, {simple: 1})\n } else {\n Toast.info(res.data.msg, 2)\n }\n })\n }\n close = () => {\n this.setState({\n isShowOverlay: false,\n bargainStatus: '',\n })\n }\n // 砍价接口\n toKanjia = () => {\n const {user, history} = this.props;\n const uid = user && user.data && user.data.uid;\n const course_id = getParam('id');\n if (!uid) {\n this.props.history.push('/passport/login')\n } else {\n let data = {\n course_id,\n type: 1, // 1 用户自己砍价 2 使用砍价神器 3 好友助力砍价 4 好友第二次助力\n parent_uid: 0 // 被助力人id 【自己本人操作传0】\n }\n http.post(`${API.home}/m/bargain/toBargain`, data).then((res) => {\n const {data, code, msg} = res.data;\n if (code === 200) {\n history.push(`/bargain-middle-page?id=${course_id}&bargaincode=${data.bargain_code}&is_originator=1`)\n } else {\n Toast.info(msg, 2)\n }\n })\n }\n }\n\n // 开始学习\n toStudy=(vCourseId,isHaveVideo)=>{\n const { history } = this.props;\n if(isHaveVideo == 0){\n Toast.info('尚未开课,开课后立即上传课程~', 2)\n } else {\n history.push(`/play/video?id=${vCourseId}`)\n }\n }\n\n\n //获取砍价信息\n getBargainInfo = () => {\n const {user} = this.props\n const uid = user && user.data && user.data.uid\n let data = {\n courseId: getParam('id')\n }\n http.post(`${API.home}/m/bargain/courseDetail`, data).then((res) => {\n if (res.data.code === 200) {\n this.setState({\n barInfo: res.data.data\n })\n } else {\n Toast.info(res.data.msg, 2)\n }\n })\n }\n\n // 付定金 付尾款\n expandPay = (info,type)=>{\n // type 等于1是定金 等于2是尾款\n const {user, history} = this.props;\n const uid = user && user.data && user.data.uid;\n if (!uid) {\n this.props.history.push('/passport/login')\n } else {\n if(type == 1){\n this.props.history.push(\n `/deposit-order?oid=${getParam('id')}&source=${1}`,\n {\n id: getParam('id'),\n isexpand: 1,\n sourcenum: 1\n }\n )\n } else {\n let timeStamp = Date.parse(new Date()) / 1000;\n if (timeStamp >= info.start_timestamp) {\n this.props.history.push(\n '/final-deposit-order?source=1',\n {\n id: getParam('id'),\n sourcenum: 1\n\n }\n )\n } else {\n Toast.info(\"付尾款时间将在\" + info.final_start_time + \"开启\",2);\n }\n }\n }\n }\n\n render() {\n // data 课程信息;barInfo 砍价信息\n const { user = {}, toCart } = this.props;\n const { countdown ,barInfo, courseInfo: info = {}} = this.state;\n const uid = user.data && user.data.uid;\n return (\n <div>\n {/*正常购买*/}\n {\n info.is_baoming === 0 && info.group_status !== 3 &&\n <div className='btns-box'>\n <a className='consult consult-s' href=\"https://q.url.cn/AB8aue?_type=wpa&qidian=true\">\n <i className='iconfont iconerji'></i>\n <span>课程咨询</span>\n </a>\n {\n info.in_cart &&\n <Link to='/shopcart' className='btn btn-s bg-FCCD05'>去购物车结算</Link>\n }\n {\n !info.in_cart &&\n <button className='btn btn-s bg-FCCD05' onClick={e => toCart(1)}>加入购物车</button>\n\n }\n <span className='btn btn-s bg-FD7700' onClick={e => this.simpleCourse()}>立即报名</span>\n </div>\n }\n\n {/* 定金课程 is_deposit 是否定金课程 0-否 1-付定金 2-付尾款*/}\n {\n info.is_baoming === 0 && info.is_deposit != 0 &&\n <div className='btns-box'>\n <a className='consult consult-m' href=\"https://q.url.cn/AB8aue?_type=wpa&qidian=true\">\n <i className='iconfont iconerji' />\n <span>课程咨询</span>\n </a>\n <div className='btn btn-m bg-FD7700' onClick={()=>this.expandPay(info.deposit_info,info.is_deposit)}>\n {info.is_deposit == 1 ? '立即付定金':'立即付尾款'}\n </div>\n </div>\n }\n\n\n\n {/*已购买*/}\n {\n info.is_baoming === 1 &&\n <div className='btns-box'>\n <a className='consult consult-m' href=\"https://q.url.cn/AB8aue?_type=wpa&qidian=true\">\n <i className='iconfont iconerji' />\n <span>课程咨询</span>\n </a>\n <a className='btn btn-m bg-09f' onClick={() => this.toStudy(info.v_course_id,info.is_have_video)}>\n 开始学习\n </a>\n </div>\n }\n {/*拼团 未开团*/}\n {\n info.is_baoming === 0 && info.group_status === 3 &&\n <div className='btns-box'>\n <a className='consult consult-s' href=\"https://q.url.cn/AB8aue?_type=wpa&qidian=true\">\n <i className='iconfont iconerji'></i>\n <span>课程咨询</span>\n </a>\n <button className='btn btn-s bg-F4AAA7' onClick={this.simpleCourse}>\n <span>{`¥ ${info.price1}`}</span>\n <span>直接购买</span>\n </button>\n <button className='btn btn-s bg-E02E24'>\n <span onClick={this.keyToGroup}>\n <span>{`¥ ${info.pdd_group_info.price}`}</span>\n <span>一键开团</span>\n </span>\n </button>\n </div>\n\n }\n {/*拼团 已开团*/}\n {\n info.is_baoming === 0 && info.group_status === 4 &&\n <div className='btns-box'>\n <a className='consult consult-s' href=\"https://q.url.cn/AB8aue?_type=wpa&qidian=true\">\n <i className='iconfont iconerji'></i>\n <span>课程咨询</span>\n </a>\n <div className='btn btn-l bg-E02E24' onClick={this.props.invitedFriends}>\n 邀请好友参团 {countdown} 后结束\n </div>\n </div>\n }\n\n {/*砍价*/}\n {\n info.is_baoming === 0 && this.props.data && this.props.data.is_bargain &&\n <div className='btns-box'>\n <a className='consult consult-s' href=\"https://q.url.cn/AB8aue?_type=wpa&qidian=true\">\n <i className='iconfont iconerji'></i>\n <span>课程咨询</span>\n </a>\n <button className='btn btn-s bg-F4AAA7'>\n <span>¥{info.price1}</span>\n <span onClick={this.tobuy}>直接购买</span>\n </button>\n {\n (barInfo.bargain_status === 2|| (getParam('id') === '139' && barInfo.bargain_status === 3) || !uid) &&\n <button className='btn btn-s bg-E02E24' onClick={this.toKanjia}>\n 我要砍价\n </button>\n }\n {\n (barInfo.bargain_status === 0 || barInfo.bargain_status === 1) && (uid) &&\n <button className='btn btn-s bg-E02E24'>\n <span>¥{barInfo.amount}</span>\n <span onClick={this.bargainToOrder}>去支付</span>\n </button>\n }\n </div>\n }\n\n {/*特殊课程*/}\n {\n this.state.isbuy === 20 &&\n <div className='btns-box'>\n <a className='consult-l' href=\"https://q.url.cn/AB8aue?_type=wpa&qidian=true\">\n <i className='iconfont iconerji'></i>\n <span>课程咨询</span>\n </a>\n </div>\n }\n\n {/*特训营课程 未登录 未报名*/}\n {\n (info.is_aist && (this.props.user.hasError || info.is_baoming === 0)) &&\n <div className='btns-box'>\n <a className='consult consult-m' href=\"https://q.url.cn/AB8aue?_type=wpa&qidian=true\">\n <i className='iconfont iconerji'></i>\n <span>课程咨询</span>\n </a>\n\n <button className='btn sign-up-now' onClick={e => this.signUpNow()}>\n <span>立即报名</span>\n </button>\n </div>\n }\n {/*特训营课程 登陆且已报名*/}\n {\n info.is_aist && !this.props.user.hasError && info.is_baoming === 1 &&\n <div className='btns-box'>\n <a className='consult consult-m' href=\"https://q.url.cn/AB8aue?_type=wpa&qidian=true\">\n <i className='iconfont iconerji'></i>\n <span>课程咨询</span>\n </a>\n\n {\n info.aist_start_time === \"\" ?\n (\n <a className='btn btn-m bg-09f' onClick={() => this.toStudy(info.v_course_id,info.is_have_video)}>开始学习</a>\n ) : (\n <button className='btn btn-m wait-open' >\n <span>{this.formatDate(info.aist_start_time)}</span>\n </button>\n )\n }\n </div>\n }\n\n\n {\n this.state.isShowOverlay &&\n <Overlay>\n {/*引导关注公众号*/}\n {\n this.state.bargainStatus === 1 &&\n <CancelBargain close={this.close} cancel={this.cancel}/>\n }\n\n <i onClick={this.close} className={'iconfont iconiconfront-2 bargain-close'}></i>\n </Overlay>\n\n }\n </div>\n )\n }\n}\n\n\nfunction CancelBargain(props) {\n return (\n <div className='cancel-bargain'>\n <p className='top-img'><i className='iconfont icondanseshixintubiao-8'></i></p>\n <p className='tip-mess'>您已发起砍价,直接购买将清除已砍金额。直接购买可使用优惠券~</p>\n <div className=\"btns\">\n <button onClick={props.close}>取消</button>\n <button onClick={props.cancel}>确定</button>\n </div>\n </div>\n )\n}\n\nexport default connect(\n state => ({\n user: state.user\n }),\n {getCourses}\n)(BtnStatus)\n","import React, { Component } from 'react'\nimport { WingBlank } from 'antd-mobile'\n\nimport './index.scss'\nimport { getParam, http } from \"@/utils\"\n\n// 课程页面滚动广告\nclass Barrage extends Component {\n\n timer\n barageTimer\n\n constructor(props) {\n super(props)\n this.state = {\n list: [],\n isShowBarrage: false\n }\n }\n\n setupBarrage = () => {\n const periods = [\n {start: 0, end: 7, interval: 60000},\n {start: 7, end: 8, interval: 30000},\n {start: 8, end: 23, interval: 15000},\n {start: 23, end: 24, interval: 30000},\n ]\n const now = new Date(Date.now()).getHours()\n for (let period of periods) {\n if (now >= period.start && now <= period.end) {\n this.timer = setTimeout(() => {\n this.getList()\n }, period.interval)\n break\n }\n }\n }\n\n componentDidUpdate(prevProps) {\n const {isShow} = this.props\n const {isShow: prevIsShow} = prevProps\n if (prevIsShow !== isShow && isShow !== undefined) {\n if (isShow) {\n setTimeout(() => {\n this.getList()\n }, 5000)\n }\n this.componentDidUpdate = null\n }\n }\n\n\n componentWillUnmount() {\n this.timer && clearTimeout(this.timer);\n this.barageTimer && clearTimeout(this.barageTimer)\n }\n\n // 获取课程接口\n getList = () => {\n let data = {\n course_id: getParam('id')\n }\n http.post(`${API.home}/m/course/barrages`, data).then((res) => {\n if (res.data.code === 200) {\n this.setState({\n list: res.data.data,\n isShowBarrage: true\n }, () => {\n this.barageTimer = setTimeout(() => {\n this.setState({isShowBarrage: !this.state.isShowBarrage})\n this.setupBarrage()\n }, 5000)\n });\n }\n })\n }\n\n render() {\n return (\n <WingBlank>\n <div className=\"my-carousel\" style={{opacity: this.state.isShowBarrage ? 1 : 0}}>\n {\n this.state.list &&\n <div className=\"v-item text-overflow-one\">\n <img src={this.state.list.avatar} alt=\"\"/>\n {this.state.list.user_name} {this.state.list.live_msg}\n </div>\n }\n </div>\n {/*\n <Carousel className=\"my-carousel\"\n vertical\n dots={false}\n autoplay\n infinite\n >\n {\n this.state.list &&\n <div className=\"v-item text-overflow-one\">\n <img src={this.state.list.avatar} alt=\"\"/>\n {this.state.list.user_name} {this.state.list.live_msg}\n </div>\n }\n\n </Carousel>\n*/}\n </WingBlank>\n )\n }\n}\n\nexport default Barrage","import React, {Component} from 'react'\nimport './index.scss'\nimport {connect} from \"react-redux\"\nimport {withRouter} from 'react-router-dom'\nimport {compose} from \"redux\"\n\nclass Deposit extends Component {\n constructor(props) {\n super(props)\n this.state = {}\n }\n\n render() {\n const {courseInfo} = this.props;\n let info = ''\n if (courseInfo) {\n info = courseInfo.deposit_info\n }\n return (\n <div className=\"buy-expand\">\n <p className=\"buy-time\">付定金时间:{info.deposit_start_time}-{info.deposit_end_time}</p>\n <p className=\"buy-time\">付尾款时间:{info.final_start_time}-{info.final_end_time}</p>\n <div className=\"expand-bgimg\">\n <img\n className=\"four-year\"\n src=\"https://julyedu-cdn.oss-cn-beijing.aliyuncs.com/active19_1111/m/dj-1111.png\"\n alt=''\n />\n <span className=\"dingjin\">定金{info.deposit_amount}元,可抵扣{info.deduction_amount}元</span>\n <p className=\"small\">\n 到手价最低:¥\n <span>{info.low_price}</span>\n </p>\n <p className=\"else-tip\">另可获得最高{info.deposit_coupon}元代金券进行叠加</p>\n </div>\n </div>\n );\n }\n}\n\nexport default compose(\n connect(\n state => ({\n user: state.user\n }),\n null\n ),\n withRouter\n)(Deposit)\n","import React, {Component} from 'react';\nimport './index.scss';\nimport {http, getParam} from '@/utils';\nimport QRCode from 'qrcode';\nimport {connect} from \"react-redux\";\nimport {Toast} from 'antd-mobile';\n\nclass FollowQRcode extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n src: '',\n codeSrc: ''\n };\n }\n\n componentDidMount() {\n const _this = this\n let uid = this.props && this.props.user && this.props.user.data.uid\n http.get(`${API['base-api']}/wx/user_temporary_qrcode/${uid}`).then((res) => {\n if (res.data.errno == 0) {\n _this.setState({\n src: res.data.data.url\n })\n return new Promise(resolve => {\n QRCode.toDataURL(_this.state.src, {}, function (err, url) {\n _this.setState({\n codeSrc: url\n })\n })\n resolve()\n })\n } else {\n Toast.info(res.data.msg, 2)\n }\n })\n }\n\n render() {\n return (\n <div className='followQRcode-box'>\n <div className='followQRcode'>\n <div className=\"content\">\n <p className=\"title\">关注公众号</p>\n <p className='desc'>\n <span>1</span>有人通过您分享的链接领取红包后,会第一时间通过微信服务号通知您。\n </p>\n <p className='desc'>\n <span>2</span>请用个人微信扫描,关注服务号后可提现红包到微信零钱。\n </p>\n <img src={this.state.codeSrc} alt=\"\"/>\n <p className=\"tip\">长按二维码保存到相册</p>\n </div>\n <div className='close'>\n <i className='iconfont iconiconfront-2' onClick={this.props.toClose}></i>\n </div>\n </div>\n </div>\n )\n }\n}\n\nexport default connect(\n state => ({\n user: state.user\n })\n)(FollowQRcode)\n\n","import React, { PureComponent } from 'react';\nimport {CopyToClipboard} from 'react-copy-to-clipboard';\nimport classnames from 'classnames';\nimport { isEmpty } from 'lodash';\nimport { browser } from '@/utils';\nimport { http, getParam, validateTel } from \"@/utils\";\nimport { Formik, Form, Field } from 'formik';\nimport { Toast } from 'antd-mobile';\nimport Captcha from '@/common/Captcha';\nimport FollowQRcode from './../followQRcode';\nimport './index.scss';\nimport cookie from 'js-cookie'\nimport { Link } from \"react-router-dom\";\n\n\nclass RedPacket extends PureComponent {\n\n constructor(props) {\n super(props),\n this.state = {\n\n // 弹窗类型:0: 无弹出,1:非微信,2:微信\n type: 0,\n isCopy: false,\n validate: '',\n captchaInstance: null,\n seconds: 60,\n isFirst: true,\n timer: null,\n isTimer: false, // 是否开始倒计时\n shareInfo: {\n url: '',\n share_code: '',\n command: '【七月在线送你一个红包】https://www.julyedu.com/'\n },\n doneInfo: { //领取后的状态,1:领取成功,2:领取超时\n status: 2,\n txt: '手机号绑定超时,红包已失效!',\n desc: ''\n },\n money: '', // 红包金额,\n endTime: 10, // 手机绑定时限\n countdownTimer: null,\n countdown: '00分00秒', // 绑定时间\n accountInfo: {},\n bindInfo: {},\n country: {\n num: '86'\n }\n }\n }\n\n componentDidMount() {\n // console.log(this.props);\n this.judgePopupTypeFromCountry();\n\n // 分享链接进入\n this.judgePopupType();\n\n window.addEventListener('beforeunload', this.removeStatisticsCookie)\n\n\n\n // 微信进入\n const isWechat = getParam('wechat');\n const { userInfo } = this.props;\n if(!userInfo || !userInfo.uid) {\n this.setRelativeCookie()\n }\n if(isWechat === '1' && !browser.isWeixin) {\n if(userInfo && userInfo.uid) {\n const type = window.localStorage.getItem('redpacket-click');\n if(type === 'split') {\n http.get(`${API.home}/sys/redPacket/shareUrl/${getParam('id')}`).then(res => {\n const { code, data } = res.data;\n if(code === 200) {\n\n // 检查收否领取过\n http.post(\n `${API.home}/sys/redPacket/split`,\n {\n action: 'check',\n share_code: data.share_code\n }\n ).then(res => {\n const { code, data } = res.data;\n if(code === 200) {\n window.localStorage.removeItem('redpacket-click');\n // is_receive\t是否领取过 0-否 1-是\n if(data.is_receive) {\n this.judgeReceiveStatus(data, 8);\n }else {\n this.setState({\n type: 3\n });\n }\n }\n })\n }\n });\n }else {\n this.setState({\n type: 1\n });\n window.localStorage.removeItem('redpacket-click');\n }\n }else {\n this.setRelativeCookie()\n this.setState({\n type: 1\n });\n }\n }\n this.fetchShareInfo();\n }\n\n removeStatisticsCookie = () => {\n cookie.remove('share_code', {path: '/', domain: '.julyedu.com'})\n }\n\n componentWillUnmount() {\n window.removeEventListener('beforeunload', this.removeStatisticsCookie)\n }\n\n\n // 获取分享信息\n fetchShareInfo = () => {\n const share_code = getParam('share_code');\n http.get(`${API.home}/sys/redPacket/shareUrl/${getParam('id')}`).then(res => {\n const { code, data } = res.data;\n if(code === 200) {\n this.setState({\n shareInfo: share_code? Object.assign({}, data, {share_code}) : data\n });\n }\n });\n }\n\n // 分享后进入,链接中带 share_code 字段\n judgePopupType = () => {\n const share_code = getParam('share_code');\n const { shareInfo } = this.state;\n if(share_code && share_code !== 'null') {\n this.setState({\n shareInfo: Object.assign({}, shareInfo, {\n share_code\n })\n });\n\n // 检查收否领取过\n http.post(\n `${API.home}/sys/redPacket/split`,\n {\n action: 'check',\n share_code\n }\n ).then(res => {\n const {code, data} = res.data;\n if(code === 200) {\n\n // is_overdue\t红包是否过期 0-否 1-是\n if(data.is_overdue) {\n this.setState({\n type: 7\n });\n }else {\n\n // is_receive\t是否领取过 0-否 1-是\n if(data.is_receive) {\n this.judgeReceiveStatus(data);\n }else {\n this.setState({\n type: browser.isWeixin? 2 : 3\n });\n }\n }\n }\n if(code === 4030 || code === 4040) {\n this.setState({\n type: browser.isWeixin? 2 : 3\n });\n }\n });\n }\n }\n\n // 选择区号后进入\n judgePopupTypeFromCountry = () => {\n const { country } = this.props;\n const { shareInfo } = this.state;\n if(country.code) {\n this.setState({\n country,\n shareInfo: Object.assign({}, shareInfo, {\n share_code: country.code\n })\n });\n\n // 检查收否领取过\n http.post(\n `${API.home}/sys/redPacket/split`,\n {\n action: 'check',\n share_code: country.code\n }\n ).then(res => {\n console.log(res);\n const { code, data } = res.data;\n if(code === 200) {\n\n // is_receive\t是否领取过 0-否 1-是\n if(data.is_receive) {\n this.judgeReceiveStatus(data, 8);\n }else {\n this.setState({\n type: 3\n });\n }\n\n // 清除\n this.props.delCountryNum();\n }\n })\n }\n }\n\n\n // 判断领取状态--领取后\n judgeReceiveStatus = (data, bindType=4) => {\n let txt = '';\n let desc = '';\n\n // receive_type 领取类型 1自己 2别人\n if(data.receive_type === 1) {\n desc = '越多好友领取,你所得越多!';\n }\n if(data.receive_type === 2) {\n desc = '每天只能帮好友领取一次哦~';\n }\n\n // is_overdue\t红包是否过期 0-否 1-是\n if(data.is_overdue) {\n txt = data.red_packet_type === 1? `您已经领过该红包 ${data.amount}元现金!`: `您已经领过该红包 ${data.amount}元代金券碎片!`;\n }else {\n txt = data.red_packet_type === 1? `今日已领取${data.amount}元现金!`: `今日已领取${data.amount}元代金券碎片!`;\n }\n\n // receive_status 领取状态 1-已领取 2-已领取未绑定 3-已失效\n if(data.receive_status === 1) {\n this.setState({\n type: 9,\n doneInfo: {\n status: 1,\n txt,\n desc\n }\n });\n }else if(data.receive_status === 2) {\n this.setState({\n type: bindType,\n money: data.amount,\n endTime: data.end_time\n });\n this.startCountDown();\n }else if(data.receive_status === 3) {\n this.setState({\n type: 9,\n doneInfo: {\n status: 2,\n txt: '手机号绑定超时,红包已失效!',\n desc\n }\n });\n }\n }\n\n // 绑定时间\n startCountDown = () => {\n if(this.countdownTimer) {\n window.clearInterval(this.countdownTimer);\n }\n const { endTime } = this.state;\n let time = endTime;\n let minutes = 0;\n let seconds = 0;\n this.countdownTimer = window.setInterval(() => {\n if (time <= 0) {\n window.clearInterval(this.countdownTimer);\n this.setState({\n endTime: 0\n });\n }\n time -= 1;\n minutes = `${Math.floor(time / 60)}`.padStart(2, 0);\n seconds = `${(time % 60)}`.padStart(2, 0);\n this.setState({\n countdown: `${minutes}分${seconds}秒`\n });\n }, 1000)\n }\n\n // 获取分享信息\n handleToShare = () => {\n const { history, userInfo } = this.props;\n if(browser.isWeixin) {\n this.setState({\n type: 2\n });\n history.push(`/detail?id=${getParam('id')}&wechat=1`);\n }else {\n if(userInfo && userInfo.uid) {\n // 领取好友的后,再领取自己的 share_code 未更新\n http.get(`${API.home}/sys/redPacket/shareUrl/${getParam('id')}`).then(res => {\n const { code, data } = res.data;\n if(code === 200) {\n this.setState({\n shareInfo: data,\n type: 1\n });\n }\n });\n }else {\n history.push('/passport/login');\n }\n }\n }\n\n // 提示关注公众号\n openTip = () => {\n const { shareInfo } = this.state;\n\n // is_follow 是否关注公众号,0否,1是\n if(!shareInfo.is_follow) {\n this.setState({\n type: 11\n });\n }\n }\n\n // 拆红包\n handleToOpen = () => {\n const { history } = this.props;\n const { shareInfo: { share_code='' } } = this.state;\n http.post(\n `${API.home}/sys/redPacket/split`,\n {\n action: 'receive',\n share_code\n }\n ).then(res => {\n const { code, data } = res.data;\n if(code === 200) {\n\n // is_receive\t是否领取过 0-否 1-是\n if(data.is_receive) {\n this.judgeReceiveStatus(data);\n }else {\n\n // red_packet_type 红包类型 1-现金 2-代金券\n if(data.red_packet_type === 2) {\n this.setState({\n type: 6,\n money: data.amount\n });\n }else if(data.red_packet_type === 1) {\n\n // receive_status 领取状态 1-已领取 2-已领取未绑定 3-已失效\n if(data.receive_status === 1) {\n if(data.red_packet_type === 1) {\n this.setState({\n type: 5,\n money: data.amount\n });\n }else if(data.red_packet_type === 2 ) {\n this.setState({\n type: 6,\n money: data.amount\n });\n }\n }else if(data.receive_status === 2) {\n this.setState({\n type: 4,\n money: data.amount,\n endTime: data.end_time\n });\n this.startCountDown();\n }else if(data.receive_status === 3) {\n this.setState({\n type: 9,\n doneInfo: {\n status: 2,\n txt: '手机号绑定超时,红包已失效!',\n desc: data.receive_type === 1? '越多好友领取,你所得越多!' : data.receive_type === 2? '每天只能帮好友领取一次哦~' : ''\n }\n });\n }\n }\n }\n }else if(code === 4030 || code === 4040) {\n history.push('/passport/login');\n }\n })\n }\n\n // 关闭弹出\n handleToClose = (isOpen, isShare = false) => {\n if(isOpen) {\n const { shareInfo: { share_code='' } } = this.state;\n\n // 检查收否领取过\n http.post(\n `${API.home}/sys/redPacket/split`,\n {\n action: 'check',\n share_code\n }\n ).then(res => {\n const { code, data } = res.data;\n if(code === 200) {\n\n // is_receive\t是否领取过 0-否 1-是\n if(data.is_receive) {\n this.judgeReceiveStatus(data);\n }else {\n this.setState({\n type: 3\n });\n }\n }\n });\n }else {\n if(isShare) {\n const { history } = this.props;\n history.push(`/detail?id=${getParam('id')}`);\n }\n this.setState({\n type: 0\n });\n }\n }\n\n // 微信内点击蒙层\n clickMask = () => {\n const { type } = this.state;\n if(type === 2) {\n this.setState({\n type: 0\n });\n }\n }\n\n getCaptchaInstance = instance => {\n this.setState({\n captchaInstance: instance\n });\n }\n\n onVerify = (err, data) => {\n if (err) {\n console.log(err);\n } else {\n this.setState({\n validate: data.validate\n });\n }\n }\n\n handleToSend = ({tel, code}) => {\n let { validate, seconds, isFirst, isTimer, captchaInstance, country: {num = '86'} } = this.state;\n if(validate) {\n if (!isFirst) {\n Toast.info('请重新进行滑块验证', 2, null, false);\n captchaInstance.refresh();\n this.setState({\n isFirst: true\n });\n return\n }\n if(!isTimer) {\n if (!tel) {\n Toast.info('手机号码不能为空', 2, null, false);\n }else if(!/^\\d+$/.test(tel)) {\n // }else if (!validateTel(tel)) {\n Toast.info('请输入正确格式的手机号码', 2, null, false);\n }else {\n\n // 获取验证码\n http.post(\n `${API['passport-api']}/m/personal/bindPhoneSendCode`,\n {\n area_code: `00${num}`,\n phone_num: tel\n }\n ).then(res => {\n const { errno, msg } = res.data;\n if(errno === 200) {\n Toast.info('验证码发送成功', 2, null, false);\n\n // 倒计时\n this.timer = window.setInterval(() => {\n if (seconds <= 0) {\n window.clearInterval(this.timer);\n this.setState({\n isTimer: false,\n seconds: 60\n });\n }else {\n this.setState({\n isTimer: true,\n seconds: --seconds\n });\n }\n }, 1000);\n\n // 滑块\n this.setState({\n isFirst: false\n })\n }else {\n Toast.info(msg, 2, null, false);\n }\n })\n }\n }\n }\n return false;\n }\n\n // 绑定后领取\n receviceAfterBind = () => {\n http.get(`${API.home}/sys/red_packet/receive`).then(res => {\n const { code, data, msg } = res.data;\n if(code === 200) {\n // receive_status 领取状态 1-已领取 2-已领取未绑定 3-已失效\n if(data.receive_status === 1) {\n if(data.red_packet_type === 1) {\n this.setState({\n type: 5,\n money: data.amount\n });\n }else if(data.red_packet_type === 2 ) {\n this.setState({\n type: 6,\n money: data.amount\n });\n }\n }else if(data.receive_status === 2) {\n this.setState({\n type: 4,\n money: data.amount,\n endTime: data.end_time\n });\n this.startCountDown();\n }else if(data.receive_status === 3) {\n this.setState({\n type: 9,\n doneInfo: {\n status: 2,\n txt: '手机号绑定超时,红包已失效!',\n desc: data.receive_type === 1? '越多好友领取,你所得越多!' : data.receive_type === 2? '每天只能帮好友领取一次哦~' : ''\n }\n });\n }\n }else {\n Toast.info(msg, 2, null, false);\n }\n })\n }\n\n // 绑定手机\n toContinueBind = (isValid = 1) => {\n const { accountInfo: { tel, code}, country: {num = '86'} } = this.state;\n // is_valid\t是否验证 1:验证(默认),0不验证\n http.post(\n `${API['passport-api']}/m/personal/bindPhone`,\n {\n area_code: `00${num}`,\n phone_num: tel,\n code: code,\n type: 1,\n is_valid: isValid\n }\n ).then(res => {\n const { errno, data, msg } = res.data;\n if(errno === 200 ) {\n if(isValid) {\n if(data.tip_info) {\n this.setState({\n type: 10,\n bindInfo: data.tip_info\n })\n }else {\n this.receviceAfterBind();\n }\n }else {\n this.receviceAfterBind();\n }\n }else {\n Toast.info(msg, 2, null, false);\n }\n });\n }\n\n\n //设置统计信息\n setRelativeCookie = () => {\n const config = {path: '/', domain: '.julyedu.com'}\n cookie.set('share_code', getParam('share_code') ? getParam('share_code') : 'share_code', config)\n }\n\n render() {\n // console.log(this.props);\n const { history, userInfo } = this.props;\n const {\n type,\n isCopy,\n validate,\n isTimer,\n seconds,\n shareInfo: {\n command = '',\n share_code = ''\n },\n money,\n doneInfo,\n countdown,\n endTime,\n bindInfo,\n country\n } = this.state;\n const cls = classnames('popup-mask',{\n 'popup-mask--no': type !== 2\n });\n return (\n <>\n <div className=\"red-packet\">\n <p className=\"red-packet__title\">分享课程给好友,你和好友都可以领红包哦〜</p>\n <button className=\"red-packet__button\" onClick={this.handleToShare}>分享领红包</button>\n </div>\n\n {/* popup */}\n {\n type !== 0 &&\n <div className={cls} onClick={this.clickMask}>\n\n {/* wechat */}\n {\n type == 2 &&\n <div className=\"pupup-wechat\">\n <h4 className=\"popup-wechat__title\">当前环境不支持领红包活动</h4>\n <p className=\"popup-wechat__desc\">请点击右上角“ ··· ”,选择在浏览器中打开 然后参与活动!</p>\n <i className=\"popup-wechat__icon\"></i>\n </div>\n }\n\n {/* wechat--no */}\n {\n type === 1 &&\n <div className=\"popup-password\">\n <div className=\"popup-password__content\">\n <h4 className=\"popup-password__header\">复制口令发送给好友</h4>\n <div className=\"popup-password__body\">\n <p id=\"password\" className=\"popup-passowrd__info\">\n {command.length > 16? `${command.substr(0, 16)}...` : command}\n </p>\n {!isCopy\n ? userInfo && userInfo.uid\n ? (\n <CopyToClipboard\n text={command}\n onCopy={() => this.setState({\n isCopy: true\n })}\n >\n <button className=\"popup-password__button--copy\">复制口令</button>\n </CopyToClipboard>\n )\n : (\n <button\n className=\"popup-password__button--copy\"\n onClick={() => {\n window.localStorage.setItem('redpacket-click', 'copy');\n history.push('/passport/login');\n }}\n >复制口令</button>\n )\n : <p className=\"popup-password__success\">复制成功,快发送给好友吧~</p>\n }\n </div>\n <p className=\"popup-password__footer\">\n 好友领取红包后,你将获得同样奖励。<br />\n 自己也可以领取哦~\n </p>\n </div>\n <i\n className=\"popup-password__button--close iconfont iconiconfront-2\"\n onClick={() => {\n if(getParam('wechat') === '1') {\n if(userInfo && userInfo.uid) {\n this.handleToClose(true);\n history.push(`/detail?id=${getParam('id')}`);\n }else {\n this.setState({\n type: 3\n });\n window.localStorage.setItem('redpacket-click', 'split');\n }\n }else {\n this.handleToClose(true);\n }\n this.setState({\n isCopy: false\n });\n }}\n />\n </div>\n }\n\n {/* red-packet--close */}\n {\n type === 3 &&\n <Packet\n type={3}\n packetInfo={{\n title: '七月在线给你发了个红包~'\n\n }}\n handleToClose={() => this.handleToClose(false)}\n handleToOpen={this.handleToOpen}\n />\n }\n\n {/* red-packet--open */}\n {\n type === 4 &&\n <Packet\n type={4}\n packetInfo={{\n money,\n tip: ['为了您的资金安全,请于5分钟之内绑定手机号,超时红包将失效'],\n btn: {\n txt: `立即绑定(${countdown})`,\n onClick: () => {\n this.setState({\n type: 8\n });\n }\n }\n }}\n handleToClose={() => this.handleToClose(false)}\n />\n }\n\n {/* red-packet--money success */}\n {\n type === 5 &&\n <Packet\n type={5}\n packetInfo={{\n money,\n tip: ['可前往【七月在线】APP','- 账户资金中提现'],\n btn: {\n txt: '获取更多奖励',\n onClick: () => {\n history.push('/ShareCourse');\n }\n }\n }}\n handleToClose={() => {\n const isShare = getParam('share_code')? true : false;\n this.handleToClose(false, isShare);\n this.openTip();\n }}\n />\n }\n\n {/* red-packet--fragment success */}\n {\n type === 6 &&\n <Packet\n type={6}\n packetInfo={{\n money,\n tip: ['可前往【七月在线】APP','- 我的优惠券中合成代金券'],\n btn: {\n txt: '获取更多奖励',\n onClick: () => {\n history.push('/ShareCourse');\n }\n }\n }}\n handleToClose={() => {\n const isShare = getParam('share_code')? true : false;\n this.handleToClose(false, isShare);\n this.openTip();\n }}\n />\n }\n\n {/* red-packet--late 来完了 */}\n {\n type === 7 &&\n <Packet\n type={7}\n packetInfo={{\n btn: {\n txt: '获取更多奖励',\n onClick: () => {\n history.push('/ShareCourse')\n }\n }\n }}\n handleToClose={() => {\n const isShare = getParam('share_code')? true : false;\n this.handleToClose(false, isShare);\n }}\n />\n }\n\n {/* form */}\n {\n type === 8 &&\n <div className=\"popup-form\">\n <Formik\n initialValues={{\n tel: '',\n code: ''\n }}\n validate={({tel, code}) => {\n const errors = {};\n\n // if (!validateTel(tel)) {\n if(!/^\\d+$/.test(tel)) {\n errors.tel = '请填写正确格式的手机号';\n }\n if (!/[0-9]{6}/.test(code)) {\n errors.code = '请输入验证码';\n }\n\n return errors;\n }}\n onSubmit={(values, { setStatus, setSubmitting }) => {\n this.setState({\n accountInfo: {\n ...values\n }\n });\n this.toContinueBind();\n }}\n render={({values: {tel, code}, errors}) => (\n <Form className=\"popup-form__content\">\n <h4 className=\"popup-form__title\">绑定手机号</h4>\n <div className=\"popup-form__item\">\n <Link\n className=\"popup-form__button--num\"\n to={`/country?id=${getParam('id')}&share_code=${share_code}`}>\n +{country.num}\n <i className=\"iconfont iconiconfront-69\"/>\n </Link>\n <Field\n name=\"tel\"\n render={({field}) => {\n return (\n <input\n {...field}\n className=\"popup-form__ipt\"\n data-bdrs=\"0 6px 6px 0\"\n data-type=\"tel\"\n type=\"text\"\n placeholder=\"请填写手机号\"\n />\n );\n }}\n />\n </div>\n <Captcha\n mrBtm={15}\n getInstance={this.getCaptchaInstance}\n onVerify={this.onVerify}\n />\n {\n endTime === 0? (\n <>\n <div className=\"popup-form__item\">\n <p className=\"popup-form__tip\">\n <i className=\"iconfont icondanseshixintubiao-8\"></i>\n 绑定超时,红包已失效!\n </p>\n </div>\n <button\n className=\"popup-packet__button--bundle\"\n data-status=\"do\"\n type=\"button\"\n onClick={() => {\n history.push('/ShareCourse');\n }}\n >获取更多奖励</button>\n </>\n ) : (\n <>\n <div className=\"popup-form__item\">\n <Field\n name=\"code\"\n render={({field}) => {\n return (\n <input\n {...field}\n className=\"popup-form__ipt popup-form__ipt--left\"\n type=\"text\"\n placeholder=\"输入验证码\"\n />\n );\n }}\n />\n <button\n className=\"popup-form__button--code\"\n data-status={(validate && !isTimer)? 'do': ''}\n type=\"button\"\n onClick={() => this.handleToSend({tel, code})}\n >\n {\n isTimer? `重新发送${seconds}s` : '发送验证码'\n }\n </button>\n </div>\n <button\n className=\"popup-packet__button--bundle\"\n data-status={(tel && code && isEmpty(errors))? 'do': 'done'}\n type=\"submit\"\n >\n {`完成绑定(${countdown})`}\n </button>\n </>\n )\n }\n </Form>\n )}\n />\n <i\n className=\"popup-password__button--close iconfont iconiconfront-2\"\n onClick={() => this.handleToClose(false)}\n />\n </div>\n }\n\n {/* 领取后的状态 */}\n {\n type === 9 &&\n <div className=\"popup-done\">\n <div className=\"popup-done__content\">\n <h4 className={classnames(\"popup-done__title\", {'popup-done__title--overtime': doneInfo.status === 2})}>\n {\n doneInfo.status === 2 &&\n <i className=\"iconfont icondanseshixintubiao-8\"></i>\n }\n {doneInfo.txt}\n </h4>\n <p className=\"popup-done__desc\">{doneInfo.desc}</p>\n <button\n className=\"popup-packet__button--bundle\"\n data-status=\"do\"\n type=\"submit\"\n onClick={() => {\n history.push('/ShareCourse');\n }}\n >获取更多奖励</button>\n </div>\n <i\n className=\"popup-password__button--close iconfont iconiconfront-2\"\n onClick={() => {\n const isShare = getParam('share_code')? true : false;\n this.handleToClose(false, isShare);\n }}\n />\n </div>\n }\n\n {/* 手机号绑定提示 */}\n {\n type === 10 &&\n <div className=\"popup-bind\">\n <div className=\"popup-bind__content\">\n <h4 className=\"popup-bind__title\">绑定确认</h4>\n <p className=\"popup-bind__desc\">该手机号已绑定到以下账号,继续绑定将解除以下绑定状态</p>\n <ul className=\"popup-bind__list\">\n {\n bindInfo['email'] &&\n <li className=\"popup-bind__account\">\n\n {/* 邮箱 */}\n <i className=\"iconfont iconduanxin\"></i>\n <p className=\"popup-bind__account--name\">{bindInfo['email']}</p>\n </li>\n }\n {\n bindInfo['wechat_nickname'] &&\n <li className=\"popup-bind__account\">\n\n {/* wechat */}\n <i className=\"icon-wachat\"></i>\n <p className=\"popup-bind__account--name\">{bindInfo['wechat_nickname']}</p>\n </li>\n }\n {\n bindInfo['qq_nickname'] &&\n <li className=\"popup-bind__account\">\n\n {/* qq */}\n <i className=\"icon-qq\"></i>\n <p className=\"popup-bind__account--name\">{bindInfo['qq_nickname']}</p>\n </li>\n }\n {\n bindInfo['sina_nickname'] &&\n <li className=\"popup-bind__account\">\n\n {/* 微博 */}\n <i className=\"icon-sina\"></i>\n <p className=\"popup-bind__account--name\">{bindInfo['sina_nickname']}</p>\n </li>\n }\n </ul>\n <div className=\"popup-bind__button\">\n <button\n className=\"popup-bind__button--cancle\"\n onClick={() => this.handleToClose(false)}>取消</button>\n <button\n className=\"popup-bind__button--confirm\"\n onClick={() => this.toContinueBind(0)}>继续绑定</button>\n </div>\n </div>\n <i\n className=\"popup-password__button--close iconfont iconiconfront-2\"\n onClick={() => this.handleToClose(false)}\n />\n </div>\n }\n\n {/* 关注公众号 */}\n {\n type === 11 &&\n <FollowQRcode toClose={() => this.handleToClose(false)} />\n }\n </div>\n }\n </>\n )\n }\n}\n\nconst Packet = ({type, packetInfo, handleToClose, handleToOpen }) => {\n const cls_content = classnames(\n 'popup-packet__content',\n {\n 'popup-packet__content--open': type === 4,\n 'popup-packet__content--money': type === 5,\n 'popup-packet__content--fragment': type === 6,\n 'popup-packet__content--late': type === 7,\n }\n );\n const {money, tip=[], btn} = packetInfo;\n return (\n <div className={classnames('popup-packet')}>\n <div className={cls_content}>\n {\n type === 3 &&\n <>\n <p className=\"popup-packet__title\">七月在线给你发了个红包~</p>\n <button className=\"popup-packet__button--split\" onClick={handleToOpen} />\n </>\n }\n {\n (type === 4 || type === 5 || type === 6)&&\n <>\n <h4 className=\"popup-packet__label\">恭喜您获得</h4>\n <p className=\"popup-packet__value\">\n {money}\n <span className=\"popup-packet__value--unit\">元</span>\n </p>\n <p className=\"popup-packet__tip\">\n {\n tip.map((item, index) => {\n if(index !== (tip.lenght - 1)) {\n return (\n <>\n {item}\n <br />\n </>\n )\n }\n return item;\n })\n }\n </p>\n <button\n className=\"popup-packet__button--bundle\"\n onClick={btn.onClick}\n >\n {btn.txt}\n </button>\n </>\n }\n {\n type === 7 &&\n <>\n <h4 className=\"popup-packet__label\">您来晚了!</h4>\n <p className=\"popup-packet__value\">\n 红包仅能当日领取,下次<br />\n 早点来哦~\n </p>\n <button\n className=\"popup-packet__button--bundle\"\n onClick={btn.onClick}\n >\n {btn.txt}\n </button>\n </>\n }\n </div>\n <i\n className=\"popup-password__button--close iconfont iconiconfront-2\"\n onClick={handleToClose}\n />\n </div>\n );\n}\n\nexport default RedPacket;\n","import React, {Component} from 'react'\nimport './index.scss'\nimport Bargain from './bargain'\nimport Group from './group'\nimport OutLine from './outline'\nimport {HeaderBar, CallApp} from '../../common'\nimport ShareRank from \"./shareRank\"\nimport Audition from \"./audition\"\nimport Single from \"./single\"\nimport SingleSuccess from './single/singleSuccess';\nimport BtnStatus from \"./btnstatus\"\nimport Barrage from './barrage'\nimport Deposit from './deposit'\nimport {connect} from \"react-redux\"\nimport {getCourses, addCourseToCart} from \"./actions\"\nimport {getParam, http, browser, wxShare} from \"@/utils\"\nimport {Toast} from 'antd-mobile'\nimport {bindActionCreators} from \"redux\";\nimport {delCountryNum} from './../country/countryRedux';\n\nimport RedPacket from './redPacket';\nimport {Link} from \"react-router-dom\";\nimport ExpandActiveToast from \"../Index/expandActiveToast\";\n\nclass Detail extends Component {\n\n courseId\n\n constructor(props) {\n super(props)\n this.state = {\n isbuy: 0,\n isvip: 0,\n auditionBox: false,\n\n singleBox: false,\n singleType: 1,\n\n shareRank: false,\n singMess: '',\n barInfo: '',\n share: false,\n countdown: '00:00:00',\n outList: [],\n list: [],\n course: {},\n\n nowPrice: 0,\n laterPrice: 0,\n isPdd: 0, // 是否是拼团课程 控制首次单集购买后的 全集购买 接口: 拼团课程走拼团接口,否则直接走购买接口\n isRedPacket: true,\n\n countDownTime: '20s',\n }\n }\n\n componentDidMount() {\n this.fetchCourseInfo();\n const {location: {state = {}}} = this.props;\n if (state.oid) {\n this.check(state.oid);\n }\n if (getParam('is_class') === 1 || getParam('weixinpay')) {\n this.payCallback()\n }\n if (browser.isWeixin) {\n this.isweixinPay()\n }\n\n this.judgeIsRedPacket();\n\n // 红包链接进入详情也\n if (getParam('share_code')) {\n this.setState({\n isRedPacket: true\n });\n }\n\n if(getParam('ac') && Number(getParam('ac')) === 11) {\n this.getBorwerCourse();\n }\n\n }\n\n getBorwerCourse = () => {\n http.get(`${API.home}/sys/user/blessing`, {type: 4, course_id: getParam('id')}).then(res => {\n let {code, data: {today_browsed_courses}} = res.data;\n if(code === 200) {\n let currentCourseId = getParam('id');\n if(today_browsed_courses.includes(Number(currentCourseId))) {\n this.setState({\n countDownTime: '任务完成'\n });\n }else{\n this.startActivity();\n }\n }\n })\n }\n\n startActivity = () => {\n let _this = this;\n let countDownInterval = setInterval(function() {\n let countDown = parseInt(_this.state.countDownTime);\n countDown--;\n if(countDown > 0) {\n _this.setState({\n countDownTime: countDown + 's'\n });\n } else if(countDown === 0) {\n clearInterval(countDownInterval);\n countDownInterval = null;\n http.post(`${API.home}/sys/add/blessing`, {type: 4, course_id: getParam('id')}).then(res => {\n let {code} = res.data;\n if(code === 200) {\n _this.setState({\n countDownTime: '任务完成'\n });\n }\n })\n }\n }, 1000)\n }\n\n // 判断时候未红包课程\n judgeIsRedPacket = () => {\n http.get(`${API.home}/sys/redPacket/showShareActive/${getParam('id')}`).then(res => {\n const {code, data} = res.data;\n if (code === 200) {\n this.setState({\n isRedPacket: data.is_show\n });\n }\n })\n }\n\n componentDidUpdate(prevProps) {\n if (prevProps.user.hasError !== this.props.user.hasError) {\n this.fetchCourseInfo()\n }\n }\n\n payCallback = () => {\n const _this = this;\n if (!getParam('oid')) {\n return;\n } else {\n this.setState({\n singMess: JSON.parse(window.localStorage.getItem('singMess'))\n })\n _this.intervalPayStatus = setInterval(function () {\n http.get(`${API['base-api']}/m/orderState/oid/${getParam('oid')}`).then(res => {\n if (res.data.errno === 401) {\n clearInterval(_this.intervalPayStatus);\n _this.intervalPayStatus = null;\n // 获取课程类型\n http.get(`${API['base-api']}/class_order_status/${getParam('oid')}`).then((res) => {\n if (Number(res.data.data.errno) === 200) {\n // 正常购买单集成功\n _this.setState({\n singleType: 6,\n })\n } else if (Number(res.data.data.errno) === 201) {\n // 0元参团\n _this.setState({\n singleType: 4,\n })\n } else if (Number(res.data.data.errno) === 202) {\n // 0元购\n _this.setState({\n singleType: 3,\n })\n } else if (Number(res.data.data.errno) === 203) {\n // 三天内特价\n _this.setState({\n nowPrice: res.data.data.data.now_price,\n laterPrice: res.data.data.data.three_day_later_price,\n singleType: 2,\n isPdd: res.data.data.data.is_pdd,\n })\n } else {\n Toast.info(res.data.data.msg, 2)\n }\n })\n }\n })\n }, 1000)\n }\n };\n isweixinPay = () => {\n let _this = this;\n let weixin_code = getParam('code');\n if (weixin_code) {\n if (!getParam('oid')) {\n return\n } else {\n // this.props.weixinPay(weixin_code)\n this.setState({\n singMess: JSON.parse(window.localStorage.getItem('singMess'))\n });\n http.get(`${API['base-api']}/pay/wxpay/pub_charge/oid/${getParam('oid')}/code/${weixin_code}`).then((res) => {\n if (res.data.errno === 0) {\n const data = res.data.data;\n\n function onBridgeReady() {\n WeixinJSBridge.invoke(\n 'getBrandWCPayRequest', {\n \"appId\": data.appId, //公众号名称,由商户传入\n \"timeStamp\": data.timeStamp, //时间戳,自1970年以来的秒数\n \"nonceStr\": data.nonceStr, //随机串\n \"package\": data.package,\n \"signType\": data.signType, //微信签名方式:\n \"paySign\": data.paySign //微信签名\n },\n function (res) {\n if (res.err_msg == \"get_brand_wcpay_request:ok\") {\n Toast.info('支付成功', 2);\n _this.intervalPayStatus = setInterval(function () {\n http.get(`${API['base-api']}/m/orderState/oid/${getParam('oid')}`).then(res => {\n if (res.data.errno === 401) {\n clearInterval(_this.intervalPayStatus);\n _this.intervalPayStatus = null;\n // 获取课程类型\n http.get(`${API['base-api']}/class_order_status/${getParam('oid')}`).then((res) => {\n if (Number(res.data.data.errno) === 200) {\n // 正常购买单集成功\n _this.setState({\n singleType: 6,\n })\n } else if (Number(res.data.data.errno) === 201) {\n // 0元参团\n _this.setState({\n singleType: 4,\n })\n } else if (Number(res.data.data.errno) === 202) {\n // 0元购\n _this.setState({\n singleType: 3,\n })\n } else if (Number(res.data.data.errno) === 203) {\n // 三天内特价\n _this.setState({\n nowPrice: res.data.data.data.now_price,\n laterPrice: res.data.data.data.three_day_later_price,\n singleType: 2,\n isPdd: res.data.data.data.is_pdd,\n })\n } else {\n Toast.info(res.data.data.msg, 2)\n }\n })\n }\n })\n }, 1000)\n } else {\n alert('支付失败')\n }\n }\n )\n }\n\n if (typeof WeixinJSBridge == \"undefined\") {\n if (document.addEventListener) {\n document.addEventListener('WeixinJSBridgeReady', onBridgeReady, false)\n } else if (document.attachEvent) {\n document.attachEvent('WeixinJSBridgeReady', onBridgeReady)\n document.attachEvent('onWeixinJSBridgeReady', onBridgeReady)\n }\n } else {\n onBridgeReady()\n }\n } else {\n Toast.info(res.data.msg, 2)\n }\n })\n }\n }\n }\n\n // 判断支付是否成功\n check = (oid) => {\n this.setState({\n singMess: JSON.parse(window.localStorage.getItem('singMess'))\n })\n http.get(`${API['base-api']}/class_order_status/${oid}`).then((res) => {\n if (Number(res.data.data.errno) === 200) {\n // 正常购买单集成功\n this.setState({\n singleType: 6\n })\n } else if (Number(res.data.data.errno) === 201) {\n // 0元参团\n this.setState({\n singleType: 4\n })\n } else if (Number(res.data.data.errno) === 202) {\n // 0元购\n this.setState({\n singleType: 3\n })\n } else if (Number(res.data.data.errno) === 203) {\n // 三天内特价\n this.setState({\n nowPrice: res.data.data.data.now_price,\n laterPrice: res.data.data.data.three_day_later_price,\n singleType: 2,\n isPdd: res.data.data.data.is_pdd,\n\n })\n } else {\n Toast.info(res.data.data.msg, 2)\n }\n })\n }\n\n payCallBack = (singleType, nowPrice, laterPrice) => {\n // Toast.info(singleType, 2);\n const _this = this;\n if (singleType === 2) {\n _this.setState({\n singleType,\n nowPrice,\n laterPrice\n })\n } else {\n _this.setState({\n singleType,\n })\n }\n };\n fetchCourseInfo = () => {\n const id = getParam('id');\n http.get(`${API.home}/m/course/detail/${id}`).then((res) => {\n const {data, code} = res.data;\n if (code === 200) {\n if(data['redirect_url'] !== ''){\n window.location.href = data['redirect_url']\n }\n this.setState({\n course: data\n });\n if (data.course_info) {\n let course_info = data.course_info;\n document.title = `${course_info.course_title} - 七月在线`;\n if (course_info.group_status === 3 || course_info.group_status === 4) {\n let endTime = course_info.pdd_group_info.groupon_member.end_time;\n let date = endTime * 1000,\n day = 0,\n hours = 0,\n minutes = 0,\n seconds = 0;\n setInterval(() => {\n date -= 1000\n day = `${parseInt(date / (3600000 * 24))}`.padStart(2, 0);\n hours = `${parseInt((date- day * 3600000 * 24)/3600000)}`.padStart(2, 0);\n minutes = `${parseInt((date - day * 3600000 * 24 - hours * 3600000) / 60000)}`.padStart(2, 0);\n seconds = `${parseInt((date - day * 3600000 * 24 - hours * 3600000 - minutes * 60000) / 1000)}`.padStart(2, 0);\n this.setState({\n // countdown: `${day}:${hours}:${minutes}:${seconds}`\n countdown: `${day}天${hours}时${minutes}分`\n });\n }, 1000)\n }\n wxShare({\n title: course_info.course_title,\n desc: course_info.index_description,\n link: encodeURI(location.origin + '/detail?id=' + getParam('id')),\n imgUrl: course_info.image_name\n });\n }\n\n }\n });\n }\n\n // 点击子组件试听按钮\n toAudition = (vCourseId,videoId) => {\n const {user} = this.props\n const uid = user && user.data && user.data.uid\n if (!uid) {\n this.props.history.push('/passport/login')\n } else {\n if(videoId == '' || videoId == 0 || videoId == undefined){\n return false;\n }\n http.post(`${API['base-api']}/sys/get_class_audition?video_id=${videoId}`).then((res) => {\n if (res.data.errno == 200) {\n this.props.history.push(`/play/video?id=${vCourseId + '&video_id=' + videoId}`)\n }else {\n Toast.info(res.data.msg, 2);\n }\n })\n // this.setState({\n // auditionBox: true,\n // })\n }\n }\n // 点击子组件单集购买按钮\n toSingleset = (item) => {\n const {user} = this.props\n const uid = user && user.data && user.data.uid\n if (!uid) {\n this.props.history.push('/passport/login')\n } else {\n this.setState({\n singleBox: true,\n singleType: 1,\n singMess: item\n });\n window.localStorage.setItem('singMess', JSON.stringify(item))\n }\n }\n\n // componentWillReceiveProps(nextProps) {\n // let _this = this;\n // if (nextProps.courseInfo.course_info) {\n // let courseInfo = nextProps.courseInfo.course_info;\n // if (courseInfo.group_status === 3 || courseInfo.group_status === 4) {\n // let endTime = courseInfo.pdd_group_info.groupon_member.end_time;\n // let date = endTime * 1000,\n // hours = 0,\n // minutes = 0,\n // seconds = 0;\n // setInterval(() => {\n // date -= 1000\n // hours = `${parseInt(date / (60 * 60 * 1000))}`.padStart(2, 0);\n // minutes = `${parseInt((date - hours * 3600000) / 60000)}`.padStart(2, 0);\n // seconds = `${parseInt((date - hours * 3600000 - minutes * 60000) / 1000)}`.padStart(2, 0);\n // _this.setState({\n // countdown: `${hours}:${minutes}:${seconds}`\n // });\n // }, 1000)\n // }\n // }\n // }\n\n // 加入购物车 type:1 加入购物车,2加入购物车并跳转到购物车页面去支付\n toCart = (type) => {\n const {history, addCourseToCart} = this.props;\n let data = {\n course_id: getParam('id')\n };\n http.post(`${API.home}/m/cart/add`, data).then((res) => {\n if (res.data.code === 200) {\n if (type === 1) {\n Toast.info('已加入购物车', 2)\n // this.props.getCourses()\n // document.location.reload()\n addCourseToCart();\n this.fetchCourseInfo();\n } else {\n history.replace('/shopcart');\n ß\n }\n } else if (res.data.code === 15001) {\n history.replace('/shopcart');\n } else if (res.data.code === 4030) {\n history.replace('/passport');\n } else {\n Toast.info(res.data.msg, 2);\n }\n })\n };\n\n invitedFriends = () => {\n // const {course_title, image_name, course_id, pdd_group_info, pdd_group_info: {groupon_member, groupon_member: {number}, price}} = this.state.course.course_info;\n // if (browser.isWeixin) {\n // wxShare({\n // title: `【仅剩${number}个名额】我${price}元拼了《${course_title}》`,\n // desc: course_title,\n // link: location.href,\n // imgUrl: image_name,\n // });\n // } else {\n // Toast.info('请在微信中使用分享功能!', 2);\n // }\n const {history} = this.props;\n const {course = {}} = this.state;\n if (course.course_info && course.course_info.self_oid) {\n history.push(`/togroup?id=${course.course_info.self_oid}`);\n }\n }\n\n // 自组件传给父组件的boxHide\n boxHide = (val) => {\n this.setState({\n auditionBox: val,\n singleBox: val,\n singleType: 1\n })\n this.props.history.push(`/detail?id=${getParam('id')}`);\n\n }\n\n render() {\n const {course: {course_info = {}}, barInfo, singleBox, singleType, isRedPacket, countDownTime} = this.state;\n\n let courseInfo = '',\n service = '',\n number = 0,\n endTime = 0;\n // if (this.props.courseInfo.course_info) {\n // courseInfo = this.props.courseInfo.course_info;\n // service = courseInfo.service;\n if (course_info.group_status === 3 || course_info.group_status === 4) {\n number = course_info.pdd_group_info.groupon_member.number;\n }\n // }\n const {share, countdown, list, outList} = this.state;\n let href = '';\n const {location: {state = {}}} = this.props;\n if (state.to && state.to === 'classify') {\n href = '/classify'\n }\n if (state.oid) {\n href = '/classify'\n }\n if (getParam('dist_code')) {\n href = '/'\n }\n let isCent = course_info.pdd_group_info && course_info.pdd_group_info.price != '0.01';\n return (\n <div>\n {\n Number(getParam('ac')) === 11 ? (\n <div className='activity__blessing'>\n <img src='https://julyedu-cdn.oss-cn-beijing.aliyuncs.com/active19_1111/m/count_donw.png' />\n <span className='count__down__time'>{`${countDownTime}`}</span>\n </div>\n ) : (null)\n }\n <div className='detail-box'>\n <HeaderBar\n title='课程详情'\n arrow={true}\n cart={true}\n toHref={href}\n />\n\n <ExpandActiveToast/>\n\n\n <CallApp className='toapp' path={`/detail/id=${getParam('id')}`} />\n\n {/*弹幕*/}\n <Barrage isShow={course_info.is_show}/>\n\n {/*课程*/}\n <div className='course-content'>\n <div className='cover'>\n <img src={course_info.image_name} alt=\"\"/>\n {\n course_info.is_aist &&\n <span className='return_cash'/>\n }\n </div>\n <div className=\"info\">\n <p className='title'>{course_info.course_title}</p>\n <p className='contact text-overflow-2'>{course_info.simpledescription}</p>\n <div className='des'>\n {\n course_info.is_baoming === 0 &&\n <p className=\"course-price\">\n <span className=\"new\">¥{course_info.price1}</span>\n <span className=\"old\">¥{course_info.price0}</span>\n </p>\n }\n {\n !!course_info.is_deposit && course_info.is_deposit!= 0 &&\n <div className=\"openExpand\">\n 支付定金¥{course_info.deposit_info.deposit_amount},可抵扣¥{course_info.deposit_info.deduction_amount}\n </div>\n }\n\n </div>\n </div>\n </div>\n\n {/*正常课程已购买时显示*/}\n\n {/*\n 没有权限:不显示\n vip及赠课:显示黄的\n 不在vip范围内,单独购买:显示蓝的\n 单独买了课然后买了vip:显示蓝的\n\n vip_range是vip里买的课,而且买了vip才会返回时间\n is_pay 1是单独购买 0是买vip赠的\n is_vip 1是属于vip赠的 0是不在vip范围内的\n */}\n {\n course_info.is_baoming === 1 && course_info.is_pay == 1 && course_info.contact_type == 1 && course_info.course_qq &&\n <div className='group'>\n 上课QQ群:{course_info.course_qq},加群请备注您的学号:{course_info.uid}\n </div>\n }\n {\n course_info.is_baoming === 1 && course_info.is_pay == 1 && course_info.contact_type == 2 && course_info.course_qq &&\n <div className='group'>\n 请添加班主任微信:{course_info.course_qq},添加时备注学号:{course_info.uid}\n </div>\n }\n\n\n {/*vip课程显示*/}\n {\n course_info.vip_range && course_info.is_vip == 1 && course_info.is_pay == 0 && course_info.contact_type == 1 && course_info.course_qq &&\n <div className=\"vip\">\n <p>已开通年会员:{course_info.vip_range}</p>\n <p>上课QQ群:{course_info.course_qq},加群请备注您的学号:{course_info.uid}</p>\n </div>\n }\n {\n course_info.vip_range && course_info.is_vip == 1 && course_info.is_pay == 0 && course_info.contact_type == 2 && course_info.course_qq &&\n <div className=\"vip\">\n <p>已开通年会员:{course_info.vip_range}</p>\n <p>请添加班主任微信:{course_info.course_qq},添加时备注学号:{course_info.uid}</p>\n </div>\n }\n\n\n {/*定金相关信息*/}\n {\n !!course_info.is_deposit && course_info.is_deposit!= 0 &&\n <Deposit courseInfo={course_info}/>\n }\n\n\n\n {/*服务承诺*/}\n <div className='promise'>\n <label>服务承诺</label>\n <p>\n {\n course_info.service && course_info.service.length > 0 && course_info.service.map((item, index) => {\n return (\n <span key={index}> {item} </span>\n )\n })\n }\n </p>\n </div>\n\n\n {/*试听弹窗*/}\n <Audition auditionBox={this.state.auditionBox} boxHide={this.boxHide}/>\n\n {/*单集购买弹窗*/}\n {\n singleBox &&\n <Single\n singleType={this.state.singleType}\n singleBox={this.state.singleBox}\n boxHide={this.boxHide}\n data={this.state.singMess}\n vcourseId={course_info.v_course_id}\n videoId={this.state.singMess.video_id}\n title={course_info.course_title}\n check={this.check}\n courseId={course_info.course_id}\n />\n }\n\n {/* 单集购买成功弹窗 */}\n {\n singleType !== 1 &&\n <SingleSuccess\n boxHide={this.boxHide}\n data={this.state.singMess}\n singleType={singleType}\n vcourseId={course_info.v_course_id}\n videoId={this.state.singMess.video_id}\n nowPrice={this.state.nowPrice}\n isPdd={this.state.isPdd}\n laterPrice={this.state.laterPrice}\n courseId={course_info.course_id}\n />\n }\n {/*payCallback={this.payCallback}*/}\n {/*weixinPay = {this.weixinPay}*/}\n\n {/* 红包 */}\n {\n isRedPacket &&\n <RedPacket\n history={this.props.history}\n country={this.props.country}\n delCountryNum={this.props.delCountryNum}\n userInfo={this.props.user.data}\n />\n }\n\n {/*分享赚钱*/}\n {\n course_info.is_dist &&\n <ShareRank courseInfo={course_info}/>\n }\n\n {/**\n * 拼团\n * is_aist: 是否AI特训营\n * group_status: 团状态,3:课程有小团 用户没参加小团;4:用户参加了小团\n * 拼团价格为1分钱时,不允许参团\n */\n }\n {/*双十一期间不需要显示 不要删除*/}\n {/*{*/}\n {/*isCent && !course_info.is_aist && (course_info.group_status === 3 || course_info.group_status === 4) &&*/}\n {/*<Group*/}\n {/*courseInfo={course_info}*/}\n {/*history={this.props.history}*/}\n {/*countdown={countdown}*/}\n {/*invitedFriends={this.invitedFriends}*/}\n {/*/>*/}\n {/*}*/}\n\n {/*\n * 砍价\n * is_baoming 否报名 0-未购买弹出报名 1-已购买弹出开始学习\n * is_dist 是否分销课程\n * is_bargain 是否砍价课程\n */}\n {\n course_info.is_baoming === 0 && (!course_info.is_aist) && course_info.is_bargain &&\n <Bargain\n country={this.props.country}\n delCountryNum={this.props.delCountryNum}\n />\n }\n\n {/*课程介绍、大纲*/}\n <OutLine\n data={course_info}\n toAudition={this.toAudition}\n toSingleset={this.toSingleset}\n />\n\n {/*课程按钮*/}\n {\n course_info &&\n <BtnStatus\n countdown={countdown}\n data={course_info}\n user={this.props.user}\n invitedFriends={this.invitedFriends}\n // addCourseToCart={this.props.addCourseToCart}\n toCart={this.toCart}\n history={this.props.history}\n />\n }\n\n {\n share ? (\n <div\n className='groupSuccessMbc'\n onClick={() => {\n this.setState({share: false})\n }}\n >\n <div className='tipContent'>\n {`还差${number}人,分享到3个群,成团率高达98%`}\n </div>\n <div className='tipArrow'>\n <i className='iconfont iconyindao'/>\n </div>\n </div>\n ) : null\n }\n </div>\n </div>\n )\n }\n\n}\n\nconst mapStateToProps = (state) => {\n return {\n // courseInfo: state.courseInfo,\n user: {\n ...state.user\n },\n country: state.country\n }\n}\n\n// const mapDispatchToProps = {\n// fetchCoursesListIfNeeded\n// }\nconst mapDispatchToProps = (dispatch) => {\n return bindActionCreators(\n {\n getCourses,\n addCourseToCart,\n delCountryNum\n },\n dispatch\n )\n}\n\n\nexport default connect(mapStateToProps, mapDispatchToProps)(Detail)\n","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAMAAAC7IEhfAAAA51BMVEUAAAD3yyr4zCr60jD61DT4zSz4zi360C770jL93jn94UH3yin4yyz4ziz4zi34zS361TX50i/50jD61DP72Dj61jP+4kH+4ED4zCv3zCz4zSz4zS350jL61jb61jT6zir50DH83Dz71DP83Dj+5ET2zDD50C77zyj93j/930H82zv3yir3yCj/6072xib3yyv/6kz2xiT/7lD/8FL2wyL2xCP/8VT/7E//8lb83T74zS32wiH/81b/6Er71zj94kT72zz50zP+5kj84EH/9Vj+5Uf61TX50TH83j/4zy//9Ff3xyb0vBpXStORAAAAK3RSTlMA8+yrk9q7gTsdBPfnysGyoJ+IhWhMFg3w5d7QvKSbmI9eWich+nxTRjARluH5lgAAAm5JREFUOMt1lddi4jAQRYVp6b1vspvdZKvG6pI7NjWQ7P9/T7BFQBBzXnjw0YyvxhJonZ1fzcODRuPgsNndQVvZPW9DCca4/Lk7e6rV/rUwIdiBcNy6+uz98DjgDYDffN/0WsTR3Kpf171j13MB3Vn38Fb0/cr7BpsdgeIl6uTD++16FDQhMQanu1okuv4JjpbAkMZm4JoEX9vGxFmNJ9Eoy1KGyeodaPJQelfUWZz0RpIJIYeEa0WAx7RaDrtz8Yw4TWIh/JIgm0b5hOayp6s8rbnoOQV5njK/QozGLJ+lr0NeFbhBaMeNzPsi8C1hL+E9IwcAlfkHdcGdbWSsxoTpFy+FEZlNoM/RsStC5NuKwYD1BybzBbMiv0df3NaQTM1H45hJwURmN/StjTx3KupFBkIGzJfFbFIWN2NSieCh/bURMynHPSl8EfmSlZULZR81UMMRk2nqh5P/UeiznJUvK8SMf4ie07hvAjPmhA8My6rs6VBji+eEIYTJQL5omvRNFZ6ZAMgi5R1qLieoopCFQ1Xu0kBW0UWs6aLIEeqSZWITCEF5uaQIfV+mWayW3c7sCG1jw8IiqeYwGYWSFW+cLsXL5UehpimTzL4TxMOoDwpWXmMPoUeySCzm81DUfudcu6ec6vLQ7gLYrWZm7Dx1AXhGc044xjpKWbU1dR5VTXu4MGCdj9hrrnEtBK4W1w7BfCZefcrrG6sLtOCUUB73KKe1om1sOQJMFKn39CFy6BBcD/CjPeRyuuXa0w9og4v9zyro/YuaG/wUr6uEw8kzquPp8dbe9fayv239RdvYu+x22vO/D6/dOb9cD/EONO7gZ+bVU9IAAAAASUVORK5CYII=\"","import React, { Component } from 'react';\nimport ReactDom from \"react-dom\";\n\nimport './overlay.scss'\n\nconst root = document.body || document.documentElement\n\nconst events = ['touchmove', 'mousewheel']\n\nclass Overlay extends Component {\n constructor(props) {\n super(props);\n this.overlayBox = null\n }\n\n preventScroll = e => {\n e.preventDefault()\n }\n\n componentDidMount() {\n events.forEach(item => {\n this.overlayBox.addEventListener(item, this.preventScroll, {\n passive: false\n })\n })\n }\n\n componentWillUnmount() {\n events.forEach(item => {\n this.overlayBox.removeEventListener(item, this.preventScroll)\n })\n }\n\n render() {\n return ReactDom.createPortal(\n (<div className={'overlay'}\n ref={el => this.overlayBox = el}\n style={{top: `${window.scrollY}px`}}\n >{this.props.children}</div>),\n root\n )\n }\n}\n\nexport default Overlay;","import React, { Component } from 'react'\nimport './index.scss'\nimport { getParam, http, browser } from \"@/utils\";\nimport { Toast } from 'antd-mobile';\nimport { Link, withRouter } from \"react-router-dom\";\nimport { compose } from \"redux\";\nimport { connect } from \"react-redux\";\nimport { differenceInHours, differenceInMinutes, differenceInSeconds } from \"date-fns\";\n\n\nclass Single extends Component {\n constructor(props) {\n super(props)\n this.state = {\n // status: 1,\n orderId: '',\n nowPrice: '',\n laterPrice: '',\n hour: '',\n min: '',\n sec: '',\n endTime: '',\n groupOrderId: '',\n payType: '0', // 1支付宝 0微信\n // singleBox: false,\n showSingleBox: false,\n }\n }\n\n componentDidMount() {\n // if (getParam('is_class') === 1 || getParam('weixinpay')) {\n // console.log(0);\n // this.payCallback()\n // }\n // if (browser.isWeixin) {\n // this.isweixinPay()\n // }\n }\n\n componentWillReceiveProps(nextProps, nextContext) {\n // console.log(nextProps);\n // this.setState({\n // singleBox: nextProps.singleBox\n // })\n }\n\n // 选择支付方式\n check = (type) => {\n this.setState({\n payType: type\n })\n }\n\n // 确定购买\n toBuy = () => {\n const { courseId } = this.props;\n const videoID = this.props.data.video_id || this.props.data.id;\n http.get(`${API.home}/sys/createClassOrder/${videoID}`).then((res) => {\n if (res.data.code === 200) {\n this.setState({\n orderId: res.data.data.order_id\n })\n this.state.payType === '1' ? this.alipayPay(res.data.data.order_id, courseId) : this.weixinPay(res.data.data.order_id)\n } else {\n Toast.info(res.data.msg, 2)\n }\n })\n }\n // 微信支付\n weixinPay = (orderId) => {\n // 微信内部-支付\n if (browser.isWeixin) {\n window.location.href = \"https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx23dac6775ac82877&redirect_uri=\" + encodeURIComponent(window.location.href + \"&aa=bb&oid=\" + orderId).toLowerCase() + \"&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect\";\n } else {\n // 微信外部-支付\n http.get(`${API['base-api']}/pay/wxpay/wap_charge/oid/${orderId}`).then((res) => {\n if (res.data.errno === 0) {\n window.location.href = res.data.data.url + \"&redirect_url=\" + encodeURIComponent(window.location.href + \"&weixinpay=1&oid=\" + orderId).toLowerCase();\n } else {\n Toast.info(res.data.msg, 2)\n }\n })\n }\n }\n // 支付宝支付\n alipayPay = (orderId, courseId) => {\n http.get(`${API['base-api']}/pay/alipay/wap_charge_new/oid/${orderId}`).then((res) => {\n if (res.data.errno === 0) {\n window.location = res.data.data.url;\n courseId && window.localStorage.setItem('payCourse', courseId);\n } else {\n Toast.info(res.data.msg, 2)\n }\n })\n }\n\n // 微信内部支付\n isweixinPay = () => {\n let _this = this;\n let weixin_code = getParam('code')\n if (weixin_code) {\n if (!getParam('oid')) {\n return\n } else {\n http.get(`${API['base-api']}/pay/wxpay/pub_charge/oid/${getParam('oid')}/code/${weixin_code}`).then((res) => {\n if (res.data.errno === 0) {\n const data = res.data.data;\n\n function onBridgeReady() {\n WeixinJSBridge.invoke(\n 'getBrandWCPayRequest', {\n \"appId\": data.appId, //公众号名称,由商户传入\n \"timeStamp\": data.timeStamp, //时间戳,自1970年以来的秒数\n \"nonceStr\": data.nonceStr, //随机串\n \"package\": data.package,\n \"signType\": data.signType, //微信签名方式:\n \"paySign\": data.paySign //微信签名\n },\n function (res) {\n if (res.err_msg == \"get_brand_wcpay_request:ok\") {\n Toast.info('支付成功', 2);\n _this.intervalPayStatus = setInterval(function () {\n http.get(`${API['base-api']}/m/orderState/oid/${getParam('oid')}`).then(res => {\n if (res.data.errno === 401) {\n clearInterval(_this.intervalPayStatus);\n _this.intervalPayStatus = null;\n // 获取课程类型\n http.get(`${API['base-api']}/class_order_status/${getParam('oid')}`).then((res) => {\n if (Number(res.data.data.errno) === 200) {\n // 正常购买单集成功\n this.setState({\n status: 6,\n showSingleBox: true,\n })\n } else if (Number(res.data.data.errno) === 201) {\n // 0元参团\n this.setState({\n status: 4,\n showSingleBox: true,\n })\n } else if (Number(res.data.data.errno) === 202) {\n // 0元购\n this.setState({\n status: 3,\n showSingleBox: true,\n })\n } else if (Number(res.data.data.errno) === 203) {\n // 三天内特价\n this.setState({\n nowPrice: res.data.data.data.now_price,\n laterPrice: res.data.data.data.three_day_later_price,\n status: 2,\n showSingleBox: true,\n })\n } else {\n Toast.info(res.data.data.msg, 2)\n }\n })\n }\n })\n }, 1000)\n } else {\n alert('支付失败')\n }\n }\n )\n }\n\n if (typeof WeixinJSBridge == \"undefined\") {\n if (document.addEventListener) {\n document.addEventListener('WeixinJSBridgeReady', onBridgeReady, false)\n } else if (document.attachEvent) {\n document.attachEvent('WeixinJSBridgeReady', onBridgeReady)\n document.attachEvent('onWeixinJSBridgeReady', onBridgeReady)\n }\n } else {\n onBridgeReady()\n }\n } else {\n Toast.info(res.data.msg, 2)\n }\n })\n }\n }\n }\n\n // 支付完成之后获取状态\n payCallback = () => {\n const _this = this;\n if (!getParam('oid')) {\n return;\n } else {\n _this.intervalPayStatus = setInterval(function () {\n http.get(`${API['base-api']}/m/orderState/oid/${getParam('oid')}`).then(res => {\n if (res.data.errno === 401) {\n clearInterval(_this.intervalPayStatus);\n _this.intervalPayStatus = null;\n // 获取课程类型\n http.get(`${API['base-api']}/class_order_status/${getParam('oid')}`).then((res) => {\n if (Number(res.data.data.errno) === 200) {\n // 正常购买单集成功\n this.setState({\n status: 6,\n showSingleBox: true,\n })\n } else if (Number(res.data.data.errno) === 201) {\n // 0元参团\n this.setState({\n status: 4,\n showSingleBox: true,\n })\n } else if (Number(res.data.data.errno) === 202) {\n // 0元购\n this.setState({\n status: 3,\n showSingleBox: true,\n })\n } else if (Number(res.data.data.errno) === 203) {\n // 三天内特价\n this.setState({\n nowPrice: res.data.data.data.now_price,\n laterPrice: res.data.data.data.three_day_later_price,\n status: 2,\n showSingleBox: true,\n })\n } else {\n Toast.info(res.data.data.msg, 2)\n }\n })\n }\n })\n }, 1000)\n }\n\n }\n\n\n // 特价购买全集\n toBuyAll = () => {\n\n }\n // 0元购买全集\n zerobuyReceive = () => {\n Toast.success('购买全集成功', 3)\n this.colse()\n }\n // 0元参团\n zerogroupBuy = () => {\n this.getOrderId()\n }\n\n // 获取订单号-0元参团\n getOrderId = () => {\n let data = {\n course_id: getParam('id')\n }\n http.post(`${API['base-api']}/pdd/sys`, data).then((res) => {\n if (res.data.errno === 0) {\n this.setState({\n groupOrderId: res.data.data.order_id\n })\n this.getOrderStatus(res.data.data.order_id)\n } else {\n Toast.info(res.data.msg, 2)\n }\n })\n }\n\n // 获取订单状态-0元参团\n getOrderStatus = (id) => {\n http.get(`${API.home}/m/pdd/order_status/${id}`).then((res) => {\n if (res.data.code === 200) {\n this.getTime(res.data.data.pdd_order_id)\n } else {\n Toast.info(res.data.msg, 2)\n }\n })\n }\n // 获取倒计时-0元参团\n getTime = (id) => {\n http.get(`${API.home}/m/pdd_order_end_time/${id}`).then((res) => {\n if (res.data.code === 200) {\n this.setState({\n endTime: res.data.data.end_time,\n status: 7\n })\n } else {\n Toast.info(res.data.msg, 2)\n }\n })\n }\n\n // 邀请好友参团\n toGroup = () => {\n this.props.history.push(`/togroup?id=${this.state.groupOrderId}`)\n }\n\n // 关闭弹窗\n colse = () => {\n this.props.boxHide(false);\n this.setState({\n status: 1\n })\n }\n\n render() {\n const {showSingleBox} = this.state;\n if (this.state.endTime) {\n let date = this.state.endTime * 1000\n let now = Date.now()\n setInterval(() => {\n date -= 1000\n let s = differenceInSeconds(new Date(date), now) % 60,\n m = differenceInMinutes(new Date(date), now) % 60,\n h = differenceInHours(new Date(date), now) % 24\n this.setState({\n hour: h,\n min: m,\n sec: s,\n })\n }, 1000)\n }\n const {singleType} = this.props;\n return (\n singleType === 1 &&\n <div>\n <div className='popup-box'>\n <div className='content singleset-payment'>\n <div className='price-box'>\n <span>实付款:</span>\n <p>{this.props.data.class_price}元</p>\n </div>\n <div className='course-info'>\n <p className='text-overflow-1'><span>课程:</span>\n {this.props.title}\n </p>\n <p className='text-overflow-1'><span>课时:</span>\n {this.props.data.name}\n </p>\n </div>\n <div className='payment-type'>\n <label>支付方式:</label>\n <p onClick={this.check.bind(this, '0')}>\n <i className='iconfont iconweixinzhifu buy'></i>\n <span>微信支付</span>\n <i className={`iconfont icondanseshixintubiao-5 redio ${this.state.payType === '0' ? 'redioed' : ''}`}></i>\n </p>\n {\n !browser.isWeixin &&\n <p onClick={this.check.bind(this, '1')}>\n <i className='iconfont iconalipay'></i>\n <span>支付宝</span>\n <i className={`iconfont icondanseshixintubiao-5 redio ${this.state.payType === '1' ? 'redioed' : ''}`}></i>\n </p>\n }\n\n </div>\n <div className='btn btn-18B4ED' onClick={this.toBuy}>确认购买</div>\n </div>\n <i onClick={this.colse} className={'iconfont iconiconfront-2 close'}></i>\n </div>\n\n </div>\n\n );\n }\n\n}\n\nexport default compose(\n connect(\n state => ({user: state.user}),\n null\n ),\n withRouter\n)(Single)\n","import React, { Component } from 'react'\nimport './index.scss'\nimport { getParam, http, browser } from \"@/utils\";\nimport { Toast } from 'antd-mobile';\nimport { Link, withRouter } from \"react-router-dom\";\nimport { compose } from \"redux\";\nimport { connect } from \"react-redux\";\nimport { differenceInHours, differenceInMinutes, differenceInSeconds } from \"date-fns\";\n\n\nclass Single extends Component {\n constructor(props) {\n super(props)\n this.state = {\n // status: 1,\n orderId: '',\n nowPrice: '',\n laterPrice: '',\n hour: '',\n min: '',\n sec: '',\n endTime: '',\n groupOrderId: '',\n payType: '0', // 1支付宝 0微信\n // singleBox: false,\n }\n }\n\n componentDidMount() {\n\n }\n\n componentWillReceiveProps(nextProps, nextContext) {\n // console.log(nextProps);\n // this.setState({\n // singleBox: nextProps.singleBox\n // })\n }\n\n // 选择支付方式\n check = (type) => {\n this.setState({\n payType: type\n })\n }\n\n // 确定购买\n toBuy = () => {\n const videoID = this.props.data.video_id || this.props.data.id;\n http.get(`${API.home}/sys/createClassOrder/${videoID}`).then((res) => {\n if (res.data.code === 200) {\n this.setState({\n orderId: res.data.data.order_id\n })\n this.state.payType === '1' ? this.alipayPay(res.data.data.order_id) : this.weixinPay(res.data.data.order_id)\n } else {\n Toast.info(res.data.msg, 2)\n }\n })\n }\n // 微信支付\n weixinPay = (orderId) => {\n // 微信内部-支付\n if (browser.isWeixin) {\n window.location.href = \"https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx23dac6775ac82877&redirect_uri=\" + encodeURIComponent(window.location.href + \"&aa=bb&oid=\" + orderId).toLowerCase() + \"&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect\";\n } else {\n // 微信外部-支付\n http.get(`${API['base-api']}/pay/wxpay/wap_charge/oid/${orderId}`).then((res) => {\n if (res.data.errno === 0) {\n window.location.href = res.data.data.url + \"&redirect_url=\" + encodeURIComponent(window.location.href + \"&weixinpay=1&oid=\" + orderId).toLowerCase();\n } else {\n Toast.info(res.data.msg, 2)\n }\n })\n }\n }\n // 支付宝支付\n alipayPay = (orderId) => {\n const courseId = getParam('id');\n http.get(`${API['base-api']}/pay/alipay/wap_charge_new/oid/${orderId}`).then((res) => {\n if (res.data.errno === 0) {\n window.location = res.data.data.url;\n courseId && window.localStorage.setItem('payCourse', courseId);\n } else {\n Toast.info(res.data.msg, 2)\n }\n })\n }\n\n // 特价购买全集\n toBuyAll = (vcourseId) => {\n if(Number(this.props.isPdd) === 1) {\n this.props.history.push(`/order?id=${this.props.courseId}`, {group: 1})\n }else{\n let cidArr = JSON.stringify([Number(vcourseId)]);\n http.get(`${API['base-api']}/m/cart/addtopreorder/${cidArr}`).then((res) => {\n if (res.data.errno === 0) {\n this.props.history.push(\"/order?id=\" + res.data.data[0], {simple: 1});\n } else {\n Toast.info(res.data.msg, 2);\n }\n })\n }\n }\n // 0元购买全集\n zerobuyReceive = () => {\n Toast.success('购买全集成功', 3)\n this.colse()\n }\n // 0元参团\n zerogroupBuy = () => {\n this.getOrderId()\n }\n\n // 获取订单号-0元参团\n getOrderId = () => {\n let data = {\n course_id: getParam('id')\n }\n http.post(`${API['base-api']}/pdd/sys`, data).then((res) => {\n if (res.data.errno === 0) {\n this.setState({\n groupOrderId: res.data.data.order_id\n })\n this.getOrderStatus(res.data.data.order_id)\n } else {\n Toast.info(res.data.msg, 2)\n }\n })\n }\n\n // 获取订单状态-0元参团\n getOrderStatus = (id) => {\n http.get(`${API.home}/m/pdd/order_status/${id}`).then((res) => {\n if (res.data.code === 200) {\n this.getTime(res.data.data.pdd_order_id)\n } else {\n Toast.info(res.data.msg, 2)\n }\n })\n }\n // 获取倒计时-0元参团\n getTime = (id) => {\n http.get(`${API.home}/m/pdd_order_end_time/${id}`).then((res) => {\n if (res.data.code === 200) {\n this.setState({\n endTime: res.data.data.end_time,\n status: 7\n })\n } else {\n Toast.info(res.data.msg, 2)\n }\n })\n }\n\n // 邀请好友参团\n toGroup = () => {\n this.props.history.push(`/togroup?id=${this.state.groupOrderId}`)\n }\n\n toLearn = (vcourseId, videoID) => {\n this.props.boxHide(false);\n this.props.history.push(`/play/video?id=${vcourseId}&video_id=${videoID}`);\n }\n\n\n // 关闭弹窗\n colse = () => {\n this.props.boxHide(false);\n this.setState({\n status: 1\n })\n }\n\n render() {\n let {singleBox} = this.state;\n if (this.state.endTime) {\n let date = this.state.endTime * 1000\n let now = Date.now()\n setInterval(() => {\n date -= 1000\n let s = differenceInSeconds(new Date(date), now) % 60,\n m = differenceInMinutes(new Date(date), now) % 60,\n h = differenceInHours(new Date(date), now) % 24\n this.setState({\n hour: h,\n min: m,\n sec: s,\n })\n }, 1000)\n }\n const { singleType } = this.props;\n // console.log(this.props);\n const videoID = this.props.data.video_id || this.props.data.id;\n return (\n <div className='popup-box'>\n {\n singleType === 2 &&\n <div className='content payment-success'>\n <div className=\"header\">\n <i className='iconfont icondanseshixintubiao-5'></i>\n <span>购买成功</span>\n </div>\n <div className=\"dec\">· 3天内购买全集,可直接抵扣该集费用,{this.props.nowPrice}元购买。</div>\n <div className=\"dec\">· 超过3天,按照未购集数/全部集数等比例计费,{this.props.laterPrice}元购买全集。</div>\n <span onClick={()=>this.toLearn(this.props.vcourseId,videoID)} className='btn btn-18B4ED'>开始学习</span>\n <div className='btn btn-FF4000' onClick={()=>{this.toBuyAll(this.props.courseId)}}>¥{this.props.nowPrice}购买全集\n </div>\n </div>\n }\n {\n singleType === 3 &&\n <div className='content zero'>\n <div className=\"header\">\n <i className='iconfont icondanseshixintubiao-5'></i>\n <span>购买成功</span>\n </div>\n <div className=\"dec\">· 恭喜您获得0元拼团购买剩余课时的机会。</div>\n <div className='btn btn-FF4000' onClick={this.zerogroupBuy}>0元参团</div>\n </div>\n }\n {\n singleType === 4 &&\n <div className='content zero'>\n <div className=\"header\">\n <i className='iconfont icondanseshixintubiao-5'></i>\n <span>购买成功</span>\n </div>\n <div className=\"dec\">· 恭喜您获得0元购买剩余课时的机会。</div>\n <div className='btn btn-FF4000' onClick={this.zerobuyReceive}>0元购</div>\n </div>\n }\n {\n singleType === 6 &&\n <div className='content zero'>\n <div className=\"header\">\n <i className='iconfont icondanseshixintubiao-5'></i>\n <span>购买成功</span>\n </div>\n {/*<Link to={`/play/video?id=${this.props.vcourseId}&video_id=${videoID}`} className='btn btn-18B4ED'>去学习</Link>*/}\n <span onClick={()=>this.toLearn(this.props.vcourseId,videoID)} className='btn btn-18B4ED'>去学习</span>\n </div>\n }\n {\n singleType === 7 &&\n <div className='content group'>\n <div className=\"header\">\n <i className='iconfont icondanseshixintubiao-5'></i>\n <span>参团成功</span>\n </div>\n <div className='group-img'>\n <img src={this.props.user.data.avatar} alt=\"\"/>\n <img\n src=\"https://julyedu-cdn.oss-cn-beijing.aliyuncs.com/images/weekend/train7/ellipsis.png\"\n alt=\"\"/>\n <img\n src=\"https://julyedu-cdn.oss-cn-beijing.aliyuncs.com/images/weekend/train7/ellipsis.png\"\n alt=\"\"/>\n\n </div>\n <div className='btn-l btn-FF4000' onClick={this.toGroup}>\n 剩余{String(this.state.hour).padStart(2, 0)}:{String(this.state.min).padStart(2, 0)}:{String(this.state.sec).padStart(2, 0)}\n 邀请好友参团\n </div>\n </div>\n }\n <i onClick={this.colse} className={'iconfont iconiconfront-2 close'}></i>\n </div>\n\n );\n }\n\n}\n\nexport default compose(\n connect(\n state => ({user: state.user}),\n null\n ),\n withRouter\n)(Single)\n","import React, {Component} from 'react'\nimport './index.scss'\n\nclass Ranking extends Component {\n\n constructor(props) {\n super(props)\n this.state = {\n kanjiaIcon: require('../image/kanjia_icon.png')\n }\n }\n\n // 关闭更多窗口\n closeMore = () => {\n this.props.boxHide(false);\n }\n\n render() {\n return (\n <div className={'ranking-box'}>\n {\n this.props.isShowMore &&\n <MoreList list={this.props.list} limitPeople={this.props.limitPeople} closeMore={this.closeMore}\n img={this.props.icon}/>\n }\n </div>\n );\n }\n}\n\nfunction MoreList(props) {\n return (\n <div className=\"moreMbc\">\n <div className=\"content\">\n <div className=\"title-box\">\n 好友助力详情\n </div>\n <ul className='more-bargain-list'>\n {\n props.list && props.list.length > 0 && props.list.map((item, index) => {\n return (\n <li key={index} className='bargain-item'>\n <img className='avatar' src={item.avatar_file} alt=\"\"/>\n <p className='name'>{item.user_name}</p>\n <p className='bargain-status'>\n <img className='kanjia-icon' src={props.img} alt=\"\"/>\n 砍掉<span className={'price'}>{item.amount}</span>\n </p>\n </li>\n )\n })\n }\n </ul>\n <div className='more-bargain-dec'>\n 超过{props.limitPeople}位好友助力可获得【砍价神器】\n </div>\n </div>\n <i onClick={props.closeMore} className={'iconfont iconiconfront-2 close'}></i>\n </div>\n )\n}\n\nexport default Ranking"],"sourceRoot":""}