{"version":3,"sources":["common/Mask/index.js","components/detail/bindPhone/index.js","components/detail/bindPhone/confirm.js","components/detail/bargain/index.js","components/detail/group/index.js","components/detail/outline/index.js","components/detail/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/Index/expandActiveToast/index.js","components/detail/index.js","../node_modules/react-copy-to-clipboard/lib/index.js","components/detail/shareRank/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/bargainMiddlePage/image/kanjia_icon.png","components/detail/single/index.js","components/detail/single/singleSuccess.js","components/bargainMiddlePage/ranking/index.js","components/detail/overlay/index.js","components/detail/bargain/image/kanjia_icon.png","components/detail/bargain/image/kanjia_cg_icon.png"],"names":["Root","document","querySelector","events","Mask","props","_this","Object","classCallCheck","this","possibleConstructorReturn","getPrototypeOf","call","preventEvent","e","preventDefault","el","createElement","_this2","forEach","item","addEventListener","passive","appendChild","removeChild","_this$props","visible","handleToHide","className","ReactDOM","createPortal","react_default","a","classnames","children","onClick","Component","BargainBindPhone","handleToSendCode","_ref","mobile","_this$props$country$n","country","num","_this$state","state","isTimer","seconds","test","toast_default","info","http","post","concat","API","area_code","phone_num","then","res","_res$data","data","errno","msg","timer","window","setInterval","clearInterval","setState","handleToBindPhone","_ref2","code","_this$props$country$n2","handleToBargain","confirmBindPhone","params","objectSpread","type","is_valid","_res$data2","tip_info","_this$props$country$n3","_this$state2","formik_esm","initialValues","validate","_ref3","errors","onSubmit","values","_ref4","setStatus","setSubmitting","render","_ref5","_ref5$values","react_router_dom","to","getParam","name","_ref6","field","assign","placeholder","maxLength","_ref7","active","undefined","disabled","JSON","stringify","BargainConfirmBind","farmatKey","key","_this$props2","bindInfo","map","data-plat","data-type","Bargain","judgePopupTypeFromCountry","delCountryNum","from","status","getBargainRankList","arguments","length","home","list","outList","getBargainInfo","isFetch","courseId","_res$data$msg","barInfo","bargain_status","bargain_code","getMore","isShowMore","boxHide","val","toArtifact","useArtifact","toKanjia","toCart","course_id","history","push","continueBargain","_this$state$barInfo","iWantBargain","user","uid","id","parent_uid","user_status","price","amount","sum","bargain_price","formInfo","kanjiaIcon","require","time","BargainIntro","limitPeople","limit_people","BargainStatus","src_common_Mask","components_detail_bindPhone","detail_bindPhone_confirm","Artifact","UseArtifact","ranking","icon","flex_default","direction","justify","Item","thirdRow","btn","_useState","useState","_useState2","slicedToArray","day","setDay","_useState3","_useState4","hour","setHour","_useState5","_useState6","min","setMin","_useState7","_useState8","sec","setSec","is_artifact","invit_num","date","end_time","now","Date","differenceInSeconds","differenceInMinutes","differenceInHours","differenceInDays","String","padStart","assist_num","src","avatar_file","alt","user_name","compose","connect","withRouter","Group","closeMore","toPay","pdd_order_id","courseInfo","group_status","group","alreadyIn","invitedFriends","hideMbc","formatTimeByMillisecond","millisecond","hours","minutes","parseInt","pdd_price","number","countdown","now_groupon_list","nextProps","course_info","pdd_group_info","_this$props$courseInf","_this3","groupInfo","groupon_member","groupSuccessMbc","member","ary","groupTip","Math","random","avatar","user_type","is_force","Fragment","now_groupon_total","index","person_num","OutLine","htmlDecode","content","replace","getList","get","stageInfo","changeTab","tab","introduce","white_space_default","lib","tabs_default","tabs","title","initialPage","swipeable","onTabClick","teachers","course_hour","start_time","dangerouslySetInnerHTML","__html","intro","stage_name","lesson","is_aist","class_status","toAudition","v_course_id","video_id","toSingleset","class_price","video_auth","is_video","is_open","is_baoming","point","practice","is_tested","pathname","search","qid","location","Audition","colse","auditionBox","common","text","BtnStatus","signUpNow","hasError","cidArr","Number","simpleCourse","simple","formatDate","split","tobuy","isShowOverlay","bargainStatus","keyToGroup","bargainToOrder","bargain","cancel","close","bindPhone","toStudy","vCourseId","isHaveVideo","expandPay","isexpand","sourcenum","parse","start_timestamp","final_start_time","defineProperty","bindConfrm","isbuy","in_cart","_nextProps$data","_nextProps$user","is_bargain","_this$props3","_this$props3$user","_this$state$courseInf","href","is_deposit","deposit_info","is_have_video","price1","aist_start_time","overlay","CancelBargain","is_limit_free","limit_free_status","_this2$props","getCourse","getCourses","Barrage","setupBarrage","periods","start","end","interval","getHours","_i","period","setTimeout","isShowBarrage","barageTimer","prevProps","isShow","componentDidUpdate","clearTimeout","wing_blank_default","style","opacity","live_msg","Deposit","deposit_start_time","deposit_end_time","final_end_time","deposit_amount","deduction_amount","low_price","deposit_coupon","FollowQRcode","codeSrc","url","Promise","resolve","QRCode","toDataURL","err","toClose","RedPacket","removeStatisticsCookie","cookie","remove","path","domain","fetchShareInfo","share_code","shareInfo","judgePopupType","action","is_overdue","is_receive","judgeReceiveStatus","browser","isWeixin","console","log","_res$data3","bindType","txt","desc","receive_type","red_packet_type","receive_status","doneInfo","money","endTime","startCountDown","countdownTimer","floor","handleToShare","userInfo","_res$data4","openTip","is_follow","handleToOpen","_this$state$shareInfo","_res$data5","handleToClose","isOpen","isShare","_this$state$shareInfo2","_res$data6","clickMask","getCaptchaInstance","instance","captchaInstance","onVerify","validationData","handleToSend","tel","isFirst","_this$state$country$n","reset","_res$data7","receviceAfterBind","_res$data8","toContinueBind","isValid","_this$state2$accountI","accountInfo","_this$state2$country$","_res$data9","setRelativeCookie","set","isCopy","command","isWechat","localStorage","getItem","_res$data10","_res$data11","removeItem","removeEventListener","_this$state3","_this$state3$shareInf","_this$state3$shareInf2","_this$state3$shareInf3","cls","popup-mask--no","substr","react_copy_to_clipboard_lib","onCopy","setItem","redPacket_Packet","packetInfo","tip","_ref4$values","data-bdrs","Captcha_ali","getInstance","data-status","isEmpty","popup-done__title--overtime","detail_followQRcode","PureComponent","Packet","cls_content","popup-packet__content--open","popup-packet__content--money","popup-packet__content--fragment","popup-packet__content--late","_packetInfo$tip","lenght","ExpandActiveToast","cleseExpand","isShowExpand","expandLength","Detail","userStatus","isShowUserGift","showUserGiftFun","newer_last_time","now_time","valueOf","get_newerModal","getBorwerCourse","today_browsed_courses","currentCourseId","includes","countDownTime","startActivity","assertThisInitialized","countDownInterval","countDown","judgeIsRedPacket","isRedPacket","is_show","payCallback","singMess","intervalPayStatus","singleType","nowPrice","now_price","laterPrice","three_day_later_price","isPdd","is_pdd","isweixinPay","weixin_code","onBridgeReady","WeixinJSBridge","invoke","appId","timeStamp","nonceStr","package","signType","paySign","err_msg","alert","attachEvent","check","oid","payCallBack","fetchCourseInfo","course","mode","route","6","7","keys","course_title","wxShare","index_description","link","encodeURI","origin","imgUrl","image_name","videoId","singleBox","addCourseToCart","_this2$state$course","self_oid","formatTime","d","toString","h","m","Popup","closable","clickMaskClose","isvip","shareRank","share","isShowChannel","sessionStorage","_this$props$location$","_this$state$course$co","_this$formatTime","limit_free_time","_this$props$location$2","isCent","arrow","cart","toHref","Index_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_group","detail_bargain","detail_outline","detail_btnstatus","dispatch","bindActionCreators","CopyToClipboard","__webpack_require__","module","exports","ShareRank","_Users_zhanghaozhe_server_mr_julyedu_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_4__","_Users_zhanghaozhe_server_mr_julyedu_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_6__","_Users_zhanghaozhe_server_mr_julyedu_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_7__","getRankList","rankingslice","slice","antd_mobile_lib_toast__WEBPACK_IMPORTED_MODULE_3___default","getCode","dist_first","dist_first_level_ti","dist_code","openRanking","react__WEBPACK_IMPORTED_MODULE_9___default","antd_mobile_lib_flex__WEBPACK_IMPORTED_MODULE_1___default","head_imgurl","align","bind","value","_extends","target","i","source","prototype","hasOwnProperty","_createClass","defineProperties","descriptor","enumerable","configurable","writable","Constructor","protoProps","staticProps","_react2","_interopRequireDefault","_copyToClipboard2","obj","__esModule","default","_possibleConstructorReturn","self","ReferenceError","_React$PureComponent","_temp","TypeError","_classCallCheck","_len","args","Array","_key","__proto__","apply","event","options","elem","Children","only","result","subClass","superClass","create","constructor","setPrototypeOf","_inherits","_props","indexOf","_objectWithoutProperties","cloneElement","defaultProps","deselectCurrent","defaultMessage","debug","message","reselectPrevious","range","selection","mark","success","createRange","getSelection","textContent","all","position","top","clip","whiteSpace","webkitUserSelect","MozUserSelect","msUserSelect","userSelect","stopPropagation","format","clipboardData","clearData","setData","body","selectNodeContents","addRange","execCommand","Error","error","warn","copyKey","navigator","userAgent","prompt","removeRange","removeAllRanges","rangeCount","activeElement","ranges","getRangeAt","tagName","toUpperCase","blur","focus","Single","_Users_zhanghaozhe_server_mr_julyedu_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_2__","_Users_zhanghaozhe_server_mr_julyedu_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4__","_Users_zhanghaozhe_server_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_zhanghaozhe_server_mr_julyedu_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_assertThisInitialized__WEBPACK_IMPORTED_MODULE_7__","showSingleBox","_this4","toBuyAll","zerobuyReceive","zerogroupBuy","getOrderId","groupOrderId","getOrderStatus","getTime","toGroup","nextContext","_this5","s","react__WEBPACK_IMPORTED_MODULE_8___default","toLearn","react__WEBPACK_IMPORTED_MODULE_7___default","Ranking","_Users_zhanghaozhe_server_mr_julyedu_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_0__","_Users_zhanghaozhe_server_mr_julyedu_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__","_Users_zhanghaozhe_server_mr_julyedu_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__","react__WEBPACK_IMPORTED_MODULE_5___default","MoreList","img","root","documentElement","Overlay","preventScroll","overlayBox","ReactDom","ref","scrollY","p"],"mappings":"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","file":"mrstatic/js/detail.f2ffc78d.chunk.js","sourcesContent":["import React, { Component } from 'react';\nimport ReactDOM from 'react-dom';\nimport classnames from 'classnames';\nimport './index.scss';\n\nconst Root = document.querySelector('body');\nconst events = ['touchmove', 'mousewheel'];\n\nclass Mask extends Component {\n\n  constructor(props) {\n    super(props);\n    if(!this.el) {\n      this.el = document.createElement('div');\n    }\n  }\n\n  componentDidMount() {\n    events.forEach(item => {\n      this.el.addEventListener(item, this.preventEvent, {\n          passive: false\n      })\n    })\n    Root.appendChild(this.el);\n  }\n\n  componentWillUnmount() {\n    Root.removeChild(this.el);\n  }\n\n  preventEvent = e => {\n    e.preventDefault();\n  }\n\n  render() {\n    const { visible, handleToHide, className } = this.props;\n    if(visible) {\n      return ReactDOM.createPortal(\n        (\n          <div className=\"mask\">\n            <div className={classnames(\"mask-content\", className)}>\n              {this.props.children}\n            </div>\n            <div className=\"mask-footer\">\n              <i className=\"mask-button__close\" onClick={handleToHide}></i>\n            </div>\n          </div>\n        ),\n        this.el\n      );\n    }else {\n      return null;\n    }\n  }\n}\n\nexport default Mask;","import React, { Component } from 'react';\nimport classnames from 'classnames';\nimport { Link } from 'react-router-dom';\nimport { Formik, Form, Field } from 'formik';\nimport { Toast } from 'antd-mobile';\nimport { http, getParam } from '@/utils';\nimport './index.scss';\n\nclass BargainBindPhone extends Component {\n\n  constructor(props) {\n    super(props);\n    this.state = {\n      mobile: '',\n      code: '',\n      num: '86',\n      seconds: 60,\n      isTimer: false, // 是否开始倒计时\n    };\n  }\n\n  // 获取短信验证码\n  handleToSendCode = ({ mobile }) => {\n    const { country: { num = 86 } } = this.props;\n    let { isTimer, seconds } = this.state;\n    if(!isTimer) {\n      if(!/^\\d+$/.test(mobile)){\n        Toast.info('请输入正确的手机号');\n        return;\n      }\n\n      // 获取验证码\n      http.post(\n        `${API['passport-api']}/m/personal/bindPhoneSendCode`,\n        {\n          area_code: `00${num}`,\n          phone_num: mobile\n        }\n      ).then(res => {\n        const { errno, msg } = res.data;\n        if(errno === 200) {\n          Toast.info('验证码发送成功', 2, null, false);\n              \n          // 倒计时\n          this.timer = window.setInterval(() => {\n            if (seconds <= 0) {\n              window.clearInterval(this.timer);\n              this.setState({\n                isTimer: false,\n                seconds: 60\n              });\n            }else {\n              this.setState({\n                isTimer: true,\n                seconds: --seconds\n              });\n            }\n          }, 1000);\n        }else {\n          Toast.info(msg);\n        }\n      });\n    }\n  }\n\n  // 绑定手机号\n  handleToBindPhone = ({code, mobile}) => {\n    const { country: { num = 86}, handleToBargain, confirmBindPhone } = this.props;\n    if (!mobile) {\n      Toast.info('请填手机号码');\n      return;\n    }\n    if (!code) {\n      Toast.info('请填写验证码');\n      return;\n    }\n\n    const params = {\n      area_code: `00${num}`,\n      phone_num: mobile,\n      code: code,\n    };\n\n    // is_valid\t是否验证 1:验证(默认),0不验证\n    http.post(\n      `${API['passport-api']}/m/personal/bindPhone`,\n      {\n        ...params,\n        type: 1,\n        is_valid: 1\n      }\n    ).then(res => {\n      const { errno, data, msg } = res.data;\n      if(errno === 200) {\n        if(data.tip_info) {\n          confirmBindPhone(params, data.tip_info);\n        }else {\n          handleToBargain();\n        }\n      }else {\n        Toast.info(msg);\n      }\n    });\n  }\n\n  render() {\n    const { country: { num = '86' } } = this.props;\n    const { isTimer, seconds } = this.state;\n    return (\n      <Formik\n        initialValues={{\n          mobile: '',\n          code: ''\n        }}\n        validate={({mobile, code}) => {\n          const errors = {};\n          if(!/^\\d+$/.test(mobile)) {\n            errors.mobile = '请填写正确格式的手机号';\n          }\n          if (!/[0-9]{6}/.test(code)) {\n            errors.code = '请输入验证码';\n          }\n          return errors;\n        }}\n        onSubmit={(values, { setStatus, setSubmitting }) => {\n          this.handleToBindPhone(values);\n        }}\n        render={({values: {mobile, code}, errors}) => (\n          <Form className=\"bargain-bind-phone\">\n            <h2 className=\"bargain-bind-phone__title\">绑定手机,先砍一刀</h2>\n            <div className=\"bargain-bind-phone__item\">\n              <Link\n                className=\"bargain-bind-phone__button--num\"\n                to={`/country?id=${getParam('id')}&from=bargain`}\n              >\n                +{num}\n                <i className=\"iconfont iconiconfront-69\"></i>\n              </Link>\n              <Field\n                name=\"mobile\"\n                render={({field}) => (\n                  <input \n                    {...field}\n                    className=\"bargain-bind-phone__ipt\"\n                    type=\"tel\"\n                    placeholder='手机号' \n                    maxLength={11}\n                  />\n                )}\n              />\n            </div>\n            <div className=\"bargain-bind-phone__item\">\n              <Field \n                name=\"code\"\n                render={({field}) =>  (\n                  <input \n                    {...field}\n                    type=\"tel\"\n                    placeholder='验证码'\n                    maxLength={6}\n                  />\n                )}\n              />\n              {errors.mobile}\n              <button \n                type=\"button\"\n                className={classnames(\n                  'bargain-bind-phone__button--send',\n                  {\n                    'active': mobile && errors.mobile === undefined\n                  }\n                )}\n                disabled={!(mobile && errors.mobile === undefined)}\n                onClick={() => this.handleToSendCode({mobile})}\n              >\n                {isTimer? `重新发送${seconds}s` : '发送验证码'}\n              </button>\n            </div>\n            <button \n              type=\"submit\"\n              className=\"bargain-bind-phone__button--bargain\"\n              disabled={!(mobile && code && JSON.stringify(errors) === '{}')}\n            >先砍一刀</button>\n          </Form>\n        )}\n      />\n    )\n  }\n}\n\nexport default BargainBindPhone;","import React, { Component } from 'react';\nimport { Toast } from 'antd-mobile';\nimport { http } from '@/utils';\nimport './confirm.scss';\n\nclass BargainConfirmBind extends Component {\n\n  farmatKey = (key) => {\n    let data = null;\n    switch (key) {\n      case 1:\n        data = {\n          key: 'email',\n          type: 'email'\n        };\n        break;\n      case 2:\n        data = {\n          key: 'wechat_nickname',\n          type: 'wechat'\n        };\n        break;\n      case 3:\n        data = {\n          key: 'qq_nickname',\n          type: 'qq'\n        };\n        break;\n      case 4:\n        data = {\n          key: 'sina_nickname',\n          type: 'sina'\n        };\n        break;\n      default:\n        data = null;\n        break;\n    }\n    return data;\n  }\n\n  confirmBindPhone = () => {\n    const { data, handleToBargain } = this.props;\n\n    // is_valid\t是否验证 1:验证(默认),0不验证\n    http.post(\n      `${API['passport-api']}/m/personal/bindPhone`,\n      {\n        ...data,\n        type: 1,\n        is_valid: 0\n      }\n    ).then(res => {\n      const { errno, msg } = res.data;\n      if(errno === 200) {\n        handleToBargain();\n      }else {\n        Toast.info(msg);\n      }\n    });\n  }\n\n  render() {\n    const { bindInfo, handleToHide } = this.props;\n    return (\n        <div className=\"bargain-bind-confirm\">\n        <h4 className=\"bargain-bind-confirm__title\">绑定确认</h4>\n        <p className=\"bargain-bind-confirm__desc\">该手机号已绑定到以下账号,继续绑定将解除以下绑定状态</p>\n        <ul className=\"bargain-bind-confirm__list\">\n          {\n            bindInfo && [1,2,3,4].map(item => {\n              const data = this.farmatKey(item);\n              if(bindInfo[data.key]) {\n                return (\n                  <li className=\"bargain-bind-confirm__account\" key={item}>\n                    <i className=\"bargain-bind-confirm__icon\" data-plat={data.type}></i>\n                    <p className=\"bargain-bind-confirm__name\">{bindInfo[data.key]}</p>\n                  </li>\n                );\n              }\n              return null;\n            })\n          }\n        </ul>\n        <div className=\"bargain-bind-confirm__footer\">\n          <button\n            className=\"bargain-bind-confirm__button\"\n            data-type=\"cancle\"\n            onClick={handleToHide}\n          >取消</button>\n          <button\n            className=\"bargain-bind-confirm__button\"\n            data-type=\"confirm\"\n            onClick={this.confirmBindPhone}\n          >继续绑定</button>\n        </div>\n      </div>\n    )\n  }\n}\n\nexport default BargainConfirmBind;","import React, { Component, useState } from 'react'\nimport './bargain.scss'\nimport { Flex, Toast } from \"antd-mobile\"\nimport {differenceInSeconds, differenceInMinutes, differenceInHours, differenceInDays} from \"date-fns\"\nimport { getParam, http } from \"@/utils\"\nimport Ranking from \"@/components/bargainMiddlePage/ranking\"\nimport { compose } from \"redux\"\nimport { withRouter } from 'react-router-dom'\nimport { connect } from \"react-redux\";\nimport Mask from '@/common/Mask/index';\nimport BargainBindPhone from './../bindPhone/index';\nimport BargainConfirmBind from './../bindPhone/confirm';\n\nclass Bargain extends Component {\n    constructor(props) {\n        super(props)\n        this.state = {\n            kanjiaIcon: require('./image/kanjia_icon.png'),\n            info: '',\n            outList: [],\n            list: [],\n            status: '',\n            time: '',\n            barInfo: {},\n            country: '86',\n            price: 0, // 每次砍价砍掉的价格\n            sum: 0, // 累计砍掉的价格,\n            bindInfo: {}, // 冲突信息\n            formInfo: {}\n        }\n    }\n\n    componentDidMount() {\n        this.getBargainInfo();\n        this.judgePopupTypeFromCountry();\n    }\n\n    // 选择区号后进入\n    judgePopupTypeFromCountry = () => {\n        const { country, delCountryNum } = this.props;\n        if(country.from && country.from === 'bargain') {\n            this.setState({\n                country: country.num,\n                status: 3,\n            });\n\n            // 清除\n            delCountryNum();\n        }\n    }\n\n    // 获取助理好友\n    getBargainRankList = (params = {}) => {\n        http.post(`${API.home}/m/bargain/rankList`, params).then((res) => {\n            if (res.data.code === 200) {\n                this.setState({\n                    list: res.data.data.list,\n                    outList: res.data.data.list[0]\n                })\n            } else {\n                Toast.info(res.data.msg, 2)\n            }\n        })\n    }\n\n    //获取砍价信息\n    getBargainInfo = (isFetch = true) => {\n        let data = {\n            courseId: getParam('id')\n        }\n        http.post(`${API.home}/m/bargain/courseDetail`, data).then((res) => {\n            const { code, data, msg = '' } = res.data;\n            if (code === 200) {\n                this.setState({\n                    barInfo: data,\n                });\n                if(isFetch) {\n                    // 砍价状态 0-砍价中,1砍价结束,待支付,2砍价过期(没有砍价记录没有砍价信息),3已购买\n                    if (data.bargain_status === 0 || data.bargain_status === 1 ) {\n                        this.getBargainRankList({\n                            type: 0,\n                            bargain_code: data.bargain_code\n                        });\n                    }\n                }\n            } else {\n                Toast.info(msg, 2);\n            }\n        });\n    }\n\n    // 查看更多\n    getMore = () => {\n        this.setState({\n            isShowMore: true\n        })\n    }\n\n    // 自组件传给父组件的boxHide\n    boxHide = (val) => {\n        this.setState({isShowMore: val})\n    }\n\n    // 领取砍价神器\n    toArtifact = () => {\n        let data = {\n            courseId: getParam('id')\n        }\n        http.post(`${API.home}/m/bargain/receiveLimit`, data).then((res) => {\n            if (res.data.code === 200) {\n                this.setState({\n                    status: 1\n                });\n                this.getBargainInfo(false);\n            } else {\n                Toast.info(res.data.msg, 2)\n            }\n        })\n    }\n\n    // 使用砍价神器\n    useArtifact = () => {\n        this.toKanjia(getParam('id'), 2, 0)\n    }\n\n    // 加入购物车\n    toCart = () => {\n        let data = {\n            course_id: getParam('id')\n        }\n        http.post(`${API.home}/m/cart/add`, data).then((res) => {\n            if (res.data.code === 200 || res.data.code === 15001) {\n                this.props.history.push('/shopcart')\n            } else {\n                Toast.info(res.data.msg, 2);\n            }\n        })\n    }\n\n    // 继续砍价\n    continueBargain = () => {\n        const { history } = this.props;\n        const { barInfo = {} } = this.state;\n        const code = barInfo.bargain_code;\n        history.push(`/bargain-middle-page?id=${getParam('id')}&bargaincode=${code}&is_originator=1`)\n    }\n\n    // 我要砍价\n    iWantBargain = () => {\n        const { history, user } = this.props\n        const uid = user && user.data && user.data.uid;\n        if(!uid){\n            history.push('/passport/login');\n        } else {\n            this.toKanjia(getParam('id'), 1, 0);\n        }\n    }\n\n    // 砍价接口\n    toKanjia = (id, type, uid) => {\n        let data = {\n            course_id: id,\n            type: type,  // 1 用户自己砍价 2 使用砍价神器 3 好友助力砍价 4 好友第二次助力\n            parent_uid: uid // 被助力人id 【自己本人操作传0】\n        };\n        const { history } = this.props;\n        http.post(`${API.home}/m/bargain/toBargain`, data).then((res) => {\n            const { data: { data, code } } = res;\n            if (code === 200) {\n\n                // user_status 用户状态 1-关注公众号,2-绑定手机号 3-再砍一刀 (是发起人没有这个字段)\n                if(data.user_status === 2) {\n                    this.setState({\n                        status: 3,\n                    });\n                }else {\n                    if(type === 2) {\n                        this.setState({\n                            status: 2,\n                            price: data.amount,\n                            sum: data.bargain_price\n                        });\n                        this.getBargainInfo(false);\n                        this.getBargainRankList({\n                            type: 0,\n                            bargain_code: data.bargain_code\n                        });\n                    }else {\n                        history.push(`/bargain-middle-page?id=${getParam('id')}&bargaincode=${data.bargain_code}&is_originator=1`)\n                    }\n                }\n            } else {\n                Toast.info(res.data.msg, 2)\n            }\n        })\n    }\n\n    // 关闭弹窗\n    handleToHide = () => {\n        this.setState({\n            status: ''\n        });\n    }\n\n    // 绑定手机号--确认\n    confirmBindPhone = (params, bindInfo) => {\n        this.setState({\n            status: 4,\n            formInfo: params,\n            bindInfo\n        });\n    }\n\n    render() {\n        const { \n            list, \n            outList, \n            barInfo, \n            country, \n            price, \n            sum,\n            status,\n            formInfo,\n            bindInfo\n        } = this.state;\n        const { user } = this.props\n        const uid = user && user.data && user.data.uid\n        return (\n            <div className={'bargain-func'}>\n\n                {/*bargain_status 砍价状态 0-砍价中,1砍价结束,待支付,2砍价过期(没有砍价记录没有砍价信息),3已购买*/}\n                {\n                    (barInfo.bargain_status === 2 || (getParam('id') === '139' && barInfo.bargain_status === 3) || !uid) &&\n                    <BargainIntro \n                        limitPeople={barInfo.limit_people} \n                        iWantBargain={this.iWantBargain}\n                    />\n                }\n                {\n                    (barInfo.bargain_status === 0 || barInfo.bargain_status === 1) && uid &&\n                    <BargainStatus\n                        info={barInfo}\n                        outList={outList}\n                        getMore={this.getMore}\n                        toArtifact={this.toArtifact}\n                        useArtifact={this.useArtifact}\n                        continueBargain={this.continueBargain}\n                    />\n                }\n\n                {/* 绑定手机号 */}\n                <Mask visible={status === 3} handleToHide={this.handleToHide}>\n                    <BargainBindPhone \n                        country={country} \n                        handleToBargain={this.iWantBargain}\n                        confirmBindPhone={this.confirmBindPhone}\n                    />\n                </Mask>\n\n                {/* 绑定手机号--确认 */}\n                <Mask visible={status === 4} handleToHide={this.handleToHide}>\n                    <BargainConfirmBind \n                        data={formInfo} \n                        bindInfo={bindInfo}\n                        handleToBargain={this.iWantBargain}\n                    />\n                </Mask>\n\n                {/* 领取砍价神器 */}\n                <Mask visible={status === 1} handleToHide={this.handleToHide}>\n                    <Artifact useArtifact={this.useArtifact} />\n                </Mask>\n\n                {/* 使用砍价神器 */}\n                <Mask visible={status === 2} handleToHide={this.handleToHide}>\n                    <UseArtifact \n                        price={price}\n                        sum={sum}\n                        toCart={this.toCart}\n                    />\n                </Mask>\n\n                {/* 更多好友砍价 */}\n                <Ranking\n                    list={list}\n                    icon={this.state.kanjiaIcon}\n                    limitPeople={barInfo.limit_people}\n                    isShowMore={this.state.isShowMore}\n                    boxHide={this.boxHide}\n                />\n            </div>\n        )\n    }\n}\n\n// 是砍价课程时,展示砍价按钮\nfunction BargainIntro(props) {\n    return (\n        <div className=\"intro-outer\">\n            <div className=\"intro-inner\">\n                <Flex \n                    direction={'column'} \n                    justify={'center'} \n                    className={'intro-wrapper'}\n                >\n                    <p>\n                        邀请\n                        <span className={'indicator'}>{props.limitPeople}位</span>\n                        好友帮忙砍价可获得\n                        <span className={'indicator'}>【砍价神器】</span>\n                    </p>\n                    <p>一刀绝杀,砍爆底价</p>\n                    <Flex.Item>\n                        <button onClick={props.iWantBargain}>我要砍价</button>\n                    </Flex.Item>\n                </Flex>\n            </div>\n        </div>\n    )\n}\n\nfunction BargainStatus(props) {\n\n    const [day, setDay] = useState(0)\n    const [hour, setHour] = useState(0)\n    const [min, setMin] = useState(0)\n    const [sec, setSec] = useState(0)\n\n\n    let thirdRow, btn\n    // is_artifact\t 0-再邀请多少人可以使用 1-可以使用未领取 2-已领取 3-已使用\n    if (props.info.is_artifact === 0) {\n        thirdRow =\n            <div>再邀请<span className={'indicator'}>{props.info.invit_num}</span>位好友助力即可获得<span\n                className={'indicator'}>【砍价神器】</span></div>\n    } else if (props.info.is_artifact === 1) {\n        thirdRow = <div>恭喜你获得<span className={'indicator'}>【砍价神器】</span></div>\n        btn = <button onClick={props.toArtifact}>立即领取</button>\n    } else if (props.info.is_artifact === 2) {\n        thirdRow = <div>恭喜你获得<span className={'indicator'}>【砍价神器】</span></div>\n        btn = <button onClick={props.useArtifact}>立即使用</button>\n    }\n\n\n    let date = props.info.end_time * 1000\n    let now = Date.now()\n    setInterval(() => {\n        date -= 1000\n        setSec(differenceInSeconds(new Date(date), now) % 60)\n        setMin(differenceInMinutes(new Date(date), now) % 60)\n        setHour(differenceInHours(new Date(date), now) % 24)\n        setDay(differenceInDays(new Date(date), now) % 24)\n\n    }, 1000)\n\n\n    return (\n        <div className=\"status-outer\">\n\n            {\n                props.info.bargain_status === 0 &&\n                <div className=\"status-inner\">\n\n                    <Flex direction={'column'}>\n                        <div className={'first-row'}>\n                            <div>\n                                已砍<span className={'indicator'}>{props.info.bargain_price}元</span>\n                                <span className={'time hour'}>{String(hour).padStart(2, 0)}</span> :&nbsp;\n                                <span className={'time min'}>{String(min).padStart(2, 0)}</span> :&nbsp;\n                                <span className={'time sec'}>{String(sec).padStart(2, 0)}</span>\n                                <span className='over'>后砍价结束</span>\n                            </div>\n                            <div onClick={props.getMore}>{props.info.assist_num}位好友助力></div>\n                        </div>\n\n                        <div className=\"sec-row\">\n                            <div>\n                                <img\n                                    src={props.outList.avatar_file}\n                                    alt=\"\"/>\n                                <span className='name'>{props.outList.user_name}</span>\n                            </div>\n                            <div>\n                                <div>砍掉<span className={'indicator'}>{props.outList.amount}元</span></div>\n                                <button onClick={props.continueBargain}>继续砍价</button>\n                            </div>\n                        </div>\n                        <div className=\"third-row\">\n                            {thirdRow}\n                            {btn}\n                        </div>\n                    </Flex>\n                </div>\n            }\n\n            {\n                props.info.bargain_status === 1 &&\n                <div className=\"status-inner status-over\">\n\n                    <Flex direction={'column'}>\n                        <div className={'first-row'}>\n                            <div>\n                                已砍<span className={'indicator'}>{props.info.bargain_price}元</span>\n                                <span className='bargain-over'>\n                                    砍价结束\n                                </span>\n                            </div>\n                            <div onClick={props.getMore}>{props.info.assist_num}位好友助力></div>\n                        </div>\n                        <div className=\"time-tobuy\">\n                            砍价金额将于\n                            <span className={'time hour'}>{String(day).padStart(2, 0)}</span><span\n                            className={'unit'}> 天 </span>\n                            <span className={'time min'}>{String(hour).padStart(2, 0)}</span><span\n                            className={'unit'}> 时 </span>\n                            <span className={'time sec'}>{String(min).padStart(2, 0)}</span><span\n                            className={'unit'}>分</span>\n                            后清零,请尽快完成支付\n                        </div>\n                    </Flex>\n                </div>\n            }\n        </div>\n    )\n}\n\n// 领取砍价神器\nfunction Artifact(props) {\n    return (\n        <div className='artifact-box'>\n            <p className='top-tip'>恭喜你获得【砍价神器】!</p>\n            <p className='middle-tip'>\n                您可以使用\n                <span className={'indicator'}>【砍价神器】</span>\n                再砍一刀\n            </p>\n            <button className='use-artifact' onClick={props.useArtifact}>立即使用</button>\n        </div>\n    )\n}\n\n// 使用砍价神器\nfunction UseArtifact(props) {\n    const { sum, price } = props;\n    return (\n        <div className='use-artifact-box'>\n            <img \n                className='top-img' \n                src={require('./image/kanjia_cg_icon.png')} \n                alt=\"\"\n            />\n            <p className='top-tip'>厉害了,又砍掉了{price}元!</p>\n            <p className='middle-tip'>\n                你已经砍了\n                <span className={'indicator'}>{sum}元</span>\n                没见过你这么能砍的人...\n            </p>\n            <p className='btm-tip'>不能再砍了哦~</p>\n            <button className='tubuy' onClick={props.toCart}>去支付</button>\n        </div>\n    )\n}\n\nexport default compose(\n    connect(\n        state => ({\n            user: state.user\n        }),\n        null\n    ),\n    withRouter\n)(Bargain)\n","import React, { Component } from 'react'\nimport './index.scss'\nimport { getParam, http } from \"@/utils\"\nimport { connect } from \"react-redux\"\nimport { Flex } from 'antd-mobile'\nimport {browser} from \"@/utils\"\nimport {Toast} from 'antd-mobile'\n\n\nclass Group extends Component {\n    constructor(props) {\n        super(props)\n        this.state = {\n            isShowMore: false,\n            alreadyIn: false,\n            pdd_price: 0,\n            number: 0,\n            data: {},\n            countdown: props.countdown,\n            now_groupon_list: [],\n        }\n        // console.log(props);\n    }\n\n    // 查看更多\n    getMore = () => {\n        this.setState({\n            isShowMore: true\n        })\n    }\n\n    // 关闭更多窗口\n    closeMore = () => {\n        this.setState({\n            isShowMore: false\n        })\n    }\n\n    toPay = (pdd_order_id) => {\n        const {courseInfo, history} = this.props;\n        if (courseInfo.group_status === 3) {\n            history.push(\n                `/order?id=${getParam('id')}`,\n                {\n                    group: 1,\n                    pdd_order_id\n                }\n            );\n        } else {\n            this.setState({\n                isShowMore: false,\n                alreadyIn: true\n            });\n        }\n    }\n\n    invitedFriends = () => {\n        this.setState({\n            isShowMore: false,\n            alreadyIn: false,\n        });\n        this.props.invitedFriends();\n    }\n\n    componentWillReceiveProps(nextProps) {\n        if (nextProps.courseInfo && nextProps.courseInfo.courseInfo && nextProps.courseInfo.courseInfo.course_info && nextProps.courseInfo.courseInfo.course_info.pdd_group_info) {\n            let now_groupon_list = nextProps.courseInfo.courseInfo.course_info.pdd_group_info.now_groupon_list;\n            if (now_groupon_list && now_groupon_list.length > 0) {\n                now_groupon_list.map(item => {\n                    item.end_time -= 1;\n                    return item;\n                });\n                this.setState({\n                    now_groupon_list,\n                })\n            }\n        }\n        this.setState({\n            countdown: nextProps.countdown\n        })\n    }\n\n    componentDidMount() {\n        const { courseInfo={} } = this.props;\n        if (courseInfo.pdd_group_info) {\n            let now_groupon_list = courseInfo.pdd_group_info.now_groupon_list;\n            if (now_groupon_list && now_groupon_list.length > 0) {\n                setInterval(() => {\n                    now_groupon_list.map(item => {\n                        item.end_time -= 1;\n                        return item;\n                    });\n                    this.setState({\n                        now_groupon_list,\n                    })\n                }, 1000);\n            }\n        }\n    }\n\n    hideMbc = () => {\n        this.setState({\n            alreadyIn: false\n        });\n    }\n\n    formatTimeByMillisecond = (millisecond) => {\n        let date = millisecond * 1000,\n            day = 0,\n            hours = 0,\n            minutes = 0,\n            seconds = 0;\n        date -= 1000;\n\n        if (millisecond > 86400) {\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            return `${day}天${hours}时${minutes}分`;\n        } else {\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\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                {\n                    courseInfo.is_force ==0 &&\n                    <>\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                        </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                    </>\n                }\n\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(/&lt;/g, '<');\n            content = content.replace(/&gt;/g, '>');\n            content = content.replace(/&amp;gt;/g, '');\n            content = content.replace(/&quot;/g, '\"');\n            content = content.replace(/&amp;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                                                                 7-新试听功能,点击试听跳转播放页\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 === 7 &&\n\n                                                                        <Link\n                                                                            to={`/play/video?id=${introduce.v_course_id + '&video_id=' + item.video_id}`}\n                                                                            className='btn-right-10 audition'>  <i className='iconfont iconcelluar'></i>试听</Link>\n\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 {CallApp} from '../../../common'\n\n\nclass Audition extends Component {\n    constructor(props) {\n        super(props);\n    }\n\n    colse = () => {\n        this.props.boxHide(false);\n    }\n\n    render() {\n        return (\n            <div>\n                {\n                    this.props.auditionBox &&\n                    <div className='popup-box'>\n                        <div className='content audition-box'>\n                            <p className='audition-header'>当前页面不支持试听</p>\n                            <p className='audition-dec'>请前往APP试听</p>\n                            <CallApp className='btn btn-18B4ED' text='立即前往'></CallApp>\n                        </div>\n                        <i onClick={this.colse} className={'iconfont iconiconfront-2 close'}></i>\n                    </div>\n                }\n            </div>\n        );\n    }\n\n}\n\nexport default Audition;\n","import React, { Component } from 'react'\nimport { getParam, http } from \"@/utils\"\nimport { Toast } from 'antd-mobile'\nimport { Link } from 'react-router-dom'\nimport { getCourses } from \"@/components/detail/actions\"\nimport { connect } from \"react-redux\"\nimport './index.scss'\nimport Overlay from '../overlay'\nimport BindPhone from './../bindPhone/index';\nimport BargainConfirmBind from './../bindPhone/confirm';\nimport Mask from '@/common/Mask/index';\n\nclass BtnStatus extends Component {\n  constructor(props) {\n    super(props)\n    this.state = {\n      isbuy: 1,\n      is_baoming: 0,\n      group_status: 3,\n      in_cart: false,\n      countdown: 0,\n      barInfo: {},\n      bindPhone: false,\n      bindConfrm: false,\n      bindInfo: {}, // 冲突信息\n      formInfo: {},\n    }\n  }\n\n  componentDidMount() {\n    // this.getBargainInfo()\n    this.group = false;\n  }\n\n\n  // componentDidUpdate(prevProps) {\n  //     let {courseInfo} = this.props\n  //     let {courseInfo: prevCourseInfo} = prevProps\n  //     if (courseInfo && courseInfo.is_bargain) {\n  //         if (prevCourseInfo && courseInfo.is_bargain !== prevCourseInfo.is_bargain) {\n  //             this.getBargainInfo()\n  //         }\n  //     }\n  // }\n\n  componentWillReceiveProps(nextProps) {\n    const {data = {}, user = {}} = nextProps;\n    if (data.is_bargain && user.data && user.data.uid) {\n      this.getBargainInfo();\n    }\n    // if(nextProps.data && nextProps.data.is_bargain) {\n    //     this.getBargainInfo()\n    // }\n    this.setState({\n      courseInfo: data,\n      countdown: nextProps.countdown,\n    });\n  }\n\n  // // 加入购物车 type:1 加入购物车,2加入购物车并跳转到购物车页面去支付\n  // toCart = (type) => {\n  //     const { history, addCourseToCart } = this.props;\n  //     let data = {\n  //         course_id: getParam('id')\n  //     };\n  //     http.post(`${API.home}/m/cart/add`, data).then((res) => {\n  //         if (res.data.code === 200) {\n  //             if (type === 1) {\n  //                 Toast.info('已加入购物车', 2)\n  //                 // this.props.getCourses()\n  //                 // document.location.reload()\n  //                 addCourseToCart();\n  //             } else {\n  //                 history.replace('/shopcart');ß\n  //             }\n  //         } else if (res.data.code === 15001) {\n  //             history.replace('/shopcart');\n  //         } else if (res.data.code === 4030) {\n  //             history.replace('/passport');\n  //         } else {\n  //             Toast.info(res.data.msg, 2);\n  //         }\n  //     })\n  // };\n\n  // 返现课程的立即购买\n  signUpNow = () => {\n    if (this.props.user.hasError) {\n      // 未登录 去登陆\n      this.props.history.push('/passport');\n    } else {\n      let cidArr = JSON.stringify([Number(getParam('id'))]);\n      http.get(`${API['base-api']}/m/cart/addtopreorder/${cidArr}?type=1`).then((res) => {\n        if (res.data.errno === 0) {\n          this.props.history.push(\"/order?id=\" + res.data.data[0], {type: 1});\n        } else {\n          Toast.info(res.data.msg, 2);\n        }\n      })\n    }\n  };\n\n  // 普通课程的立即报名 要模拟结算过程\n  simpleCourse = () => {\n    if (this.props.user.hasError) {\n      // 未登录 去登陆\n      this.props.history.push('/passport');\n    } else {\n      http.get(`${API['base-api']}/m/cart/addtopreorder/[${getParam('id')}]`).then((res) => {\n        if (res.data.errno === 0) {\n          this.props.history.push(`/order?id=${getParam('id')}`, {simple: 1})\n        } else {\n          Toast.info(res.data.msg, 2);\n        }\n      })\n    }\n  };\n\n  // 格式化开课时间\n  formatDate = (date) => {\n    let ary = date.split('-');\n    return `${ary[1]}月${ary[2]}日开课`;\n  };\n\n  // 直接购买\n  tobuy = () => {\n    const {user} = this.props;\n    const {barInfo} = this.state;\n    const uid = user && user.data && user.data.uid\n    if (!uid) {\n      this.props.history.push('/passport/login')\n    } else {\n      if (barInfo.bargain_status === 2) {\n        // this.toCart(2)\n        // 新需求 不需要加入购物车 直接走普通课程的立即报名流程 跳到订单页\n        this.simpleCourse();\n      } else {\n        // 取消砍价记录\n        this.setState({\n          isShowOverlay: true,\n          bargainStatus: 1,\n        })\n      }\n    }\n  };\n\n  // 一键开团\n  keyToGroup = () => {\n    if (this.props.user.hasError) {\n      // 未登录 去登陆\n      this.props.history.push('/passport');\n      return;\n    }\n    this.props.history.push(`/order?id=${getParam('id')}`, {group: 1})\n  };\n\n  // 砍完价去支付\n  bargainToOrder = () => {\n    if (this.props.user.hasError) {\n      // 未登录 去登陆\n      this.props.history.push('/passport');\n    } else {\n      http.get(`${API['base-api']}/m/cart/addtopreorder/[${getParam('id')}]`).then((res) => {\n        if (res.data.errno === 0) {\n          this.props.history.push(`/order?id=[${getParam('id')}]`, {bargain: 1});\n        } else {\n          Toast.info(res.data.msg, 2);\n        }\n      })\n    }\n  };\n\n  // 取消砍价\n  cancel = () => {\n    let data = {\n      courseId: getParam('id')\n    }\n    http.post(`${API.home}/m/bargain/cancel`, data).then((res) => {\n      if (res.data.code === 200) {\n        this.setState({\n          isShowOverlay: false,\n          bargainStatus: '',\n        })\n        http.get(`${API['base-api']}/m/cart/addtopreorder/[${getParam('id')}]`).then((res) => {\n          if (res.data.errno === 0) {\n            this.props.history.push(`/order?id=[${getParam('id')}]`, {simple: 1});\n          } else {\n            Toast.info(res.data.msg, 2);\n          }\n        })\n        // window.location.href = '/shopcart'\n        // this.props.history.push(`/order?id=[${getParam('id')}]`, {simple: 1})\n      } else {\n        Toast.info(res.data.msg, 2)\n      }\n    })\n  }\n\n  close = () => {\n    this.setState({\n      isShowOverlay: false,\n      bargainStatus: '',\n    })\n  }\n  // 砍价接口\n  toKanjia = () => {\n    const {user, history} = this.props;\n    const uid = user && user.data && user.data.uid;\n    const course_id = getParam('id');\n    if (!uid) {\n      this.props.history.push('/passport/login')\n    } else {\n      let data = {\n        course_id,\n        type: 1,  // 1 用户自己砍价 2 使用砍价神器 3 好友助力砍价 4 好友第二次助力\n        parent_uid: 0 // 被助力人id 【自己本人操作传0】\n      }\n      http.post(`${API.home}/m/bargain/toBargain`, data).then((res) => {\n        const {data, code, msg} = res.data;\n        if (code === 200) {\n          // user_status 用户状态 1-关注公众号,2-绑定手机号 3-再砍一刀 (是发起人没有这个字段)\n          if (data.user_status === 2) {\n            this.setState({\n              bindPhone: true\n            })\n          } else {\n            history.push(`/bargain-middle-page?id=${course_id}&bargaincode=${data.bargain_code}&is_originator=1`)\n          }\n        } else {\n          Toast.info(msg, 2)\n        }\n      })\n    }\n  }\n\n  // 开始学习\n  toStudy = (vCourseId, isHaveVideo) => {\n    const {history} = this.props;\n    if (isHaveVideo == 0) {\n      Toast.info('尚未开课,开课后立即上传课程~', 2)\n    } else {\n      history.push(`/play/video?id=${vCourseId}`)\n    }\n  }\n\n  //获取砍价信息\n  getBargainInfo = () => {\n    const {user} = this.props\n    const uid = user && user.data && user.data.uid\n    let data = {\n      courseId: getParam('id')\n    }\n    http.post(`${API.home}/m/bargain/courseDetail`, data).then((res) => {\n      if (res.data.code === 200) {\n        this.setState({\n          barInfo: res.data.data\n        })\n      } else {\n        Toast.info(res.data.msg, 2)\n      }\n    })\n  }\n\n  // 付定金 付尾款\n  expandPay = (info, type) => {\n    // type 等于1是定金 等于2是尾款\n    const {user, history} = this.props;\n    const uid = user && user.data && user.data.uid;\n    if (!uid) {\n      this.props.history.push('/passport/login')\n    } else {\n      if (type == 1) {\n        this.props.history.push(\n          `/deposit-order?oid=${getParam('id')}&source=${1}`,\n          {\n            id: getParam('id'),\n            isexpand: 1,\n            sourcenum: 1\n          }\n        )\n      } else {\n        let timeStamp = Date.parse(new Date()) / 1000;\n        if (timeStamp >= info.start_timestamp) {\n          this.props.history.push(\n            '/final-deposit-order?source=1',\n            {\n              id: getParam('id'),\n              sourcenum: 1\n\n            }\n          )\n        } else {\n          Toast.info(\"付尾款时间将在\" + info.final_start_time + \"开启\", 2);\n        }\n      }\n    }\n  }\n\n  // 隐藏弹窗\n  handleToHide = (key) => {\n    this.setState({\n      [key]: false\n    });\n  }\n\n  // 绑定手机号 -- 确认\n  confirmBindPhone = (params, bindInfo) => {\n    this.setState({\n      bindPhone: false,\n      bindConfrm: true,\n      formInfo: params,\n      bindInfo\n    });\n  }\n\n  render() {\n    // data 课程信息;barInfo 砍价信息\n    const {user = {}, toCart, country} = this.props;\n    const {\n      countdown,\n      barInfo,\n      courseInfo: info = {},\n      bindPhone,\n      bindConfrm,\n      bindInfo,\n      formInfo,\n    } = this.state;\n    const uid = user.data && user.data.uid;\n    return (\n      <div>\n        {/* 绑定手机号 */}\n        <Mask visible={bindPhone} handleToHide={() => this.handleToHide('bindPhone')}>\n          <BindPhone\n            country={country}\n            handleToBargain={this.toKanjia}\n            confirmBindPhone={this.confirmBindPhone}\n          />\n        </Mask>\n\n        {/* 绑定手机号--确认 */}\n        <Mask visible={bindConfrm} handleToHide={() => this.handleToHide('bindConfrm')}>\n          <BargainConfirmBind\n            data={formInfo}\n            bindInfo={bindInfo}\n            handleToHide={() => this.handleToHide('bindConfrm')}\n            handleToBargain={this.toKanjia}\n          />\n        </Mask>\n\n        {/*正常购买*/}\n        {\n          info.is_baoming === 0 && info.group_status !== 3 &&\n          <div className='btns-box'>\n            <a className='consult consult-s' href='http://q.url.cn/s/Vbkup6m?_type=wpa'>\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='http://q.url.cn/s/Vbkup6m?_type=wpa'>\n              <i className='iconfont iconerji'/>\n              <span>课程咨询</span>\n            </a>\n            <div className='btn btn-m bg-FD7700' onClick={() => this.expandPay(info.deposit_info, info.is_deposit)}>\n              {info.is_deposit == 1 ? '立即付定金' : '立即付尾款'}\n            </div>\n          </div>\n        }\n\n        {/*已购买*/}\n        {\n          info.is_baoming === 1 &&\n          <div className='btns-box'>\n            <a className='consult consult-m' href='http://q.url.cn/s/Vbkup6m?_type=wpa'>\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='http://q.url.cn/s/Vbkup6m?_type=wpa'>\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='http://q.url.cn/s/Vbkup6m?_type=wpa'>\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='http://q.url.cn/s/Vbkup6m?_type=wpa'>\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='http://q.url.cn/s/Vbkup6m?_type=wpa'>\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='http://q.url.cn/s/Vbkup6m?_type=wpa'>\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='http://q.url.cn/s/Vbkup6m?_type=wpa'>\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'\n                     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\n        {\n          /*\n          *\n          * limit_free_status: 0 未领取 1已领取未过期   2已过期\n          * */\n          info.is_baoming === 0 && info.is_limit_free && info.limit_free_status == 0 && <div className='btns-box'>\n            <a className='consult consult-m' href='http://q.url.cn/s/Vbkup6m?_type=wpa'>\n              <i className='iconfont iconerji'></i>\n              <span>课程咨询</span>\n            </a>\n\n            <button className={'get-course btn'} onClick={() => {\n              const {history, user, getCourse} = this.props\n              if (user.hasError) {\n                history.push('/passport')\n              } else {\n                getCourse(info.course_id, info.v_course_id)\n              }\n            }}>立即领取\n            </button>\n          </div>\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 CaptchaAli from \"@common/Captcha-ali\"\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        validationData: null,\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    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 = (data) => {\n    this.setState({\n      validate: true,\n      validationData: data\n    })\n  }\n\n  handleToSend = ({tel, code}) => {\n    let {validate, seconds, validationData, isFirst, isTimer, captchaInstance, country: {num = '86'}} = this.state;\n    if (validate) {\n      if (!isFirst) {\n        Toast.info('请重新进行滑块验证', 2, null, false);\n        captchaInstance.reset();\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              ...validationData\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                      <CaptchaAli getInstance={this.getCaptchaInstance} onVerify={this.onVerify}/>\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                            >获取更多奖励\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\n                    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                  >获取更多奖励\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)}>取消\n                    </button>\n                    <button\n                      className=\"popup-bind__button--confirm\"\n                      onClick={() => this.toContinueBind(0)}>继续绑定\n                    </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 {http} from '@/utils'\nimport { Link } from \"react-router-dom\"\nimport {Toast} from \"antd-mobile\";\n\n\nclass ExpandActiveToast extends Component {\n    constructor(props) {\n        super(props);\n        this.state = {\n            expandLength: 0,\n            isShowExpand:true\n        }\n    }\n\n    componentDidMount() {\n        http.get(`${API['base-api']}/sys/deposit/notice`).then((res) => {\n            if (res.data.errno == 200) {\n                const {data} = res.data\n                this.setState({\n                    expandLength: data.num\n                })\n            } else {\n                Toast.info(res.data.msg, 2)\n            }\n\n        })\n    }\n    cleseExpand = () => {\n        this.setState({isShowExpand: false})\n    }\n\n\n    render() {\n        return (\n            <div>\n                {\n                    this.state.expandLength > 0 && this.state.isShowExpand &&\n                    <div className=\"expand-active-toast\">\n                        <img src=\"https://julyedu-cdn.oss-cn-beijing.aliyuncs.com/active19_717/m/guanggao.png\" alt=''/>\n                        <div className=\"expand-toast-swiper\">\n                            <p>您有<span className=\"red\">{this.state.expandLength}个</span>待支付尾款的课程 再不支付就要过期了!</p>\n                        </div>\n                        <Link to='/final-deposit-order?source=1'>查看</Link>\n\n                        <img\n                           onClick={e => this.cleseExpand()}\n                         src=\"https://julyedu-cdn.oss-cn-beijing.aliyuncs.com/active19_717/m/guanbi.png\"\n                           alt=''\n                    />\n                    </div>\n                }\n            </div>\n        );\n    }\n\n}\n\n\nexport default ExpandActiveToast\n\n\n\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'\nimport {Popup} from \"@common/index\"\nimport RedPacket from './redPacket'\nimport ExpandActiveToast from \"../Index/expandActiveToast\"\nimport {UserGift} from \"@common\"\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            isShowChannel: window.sessionStorage.getItem('isShowSiteWindowByChannel'),\n\n            isShowUserGift: false\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        this.userStatus()\n    }\n\n    componentWillMount() {\n        this.showUserGiftFun()\n    }\n\n    userStatus = () => {\n        http.get(`${API['base-api']}/sys/user/new_user_status`).then((res) => {\n            const {errno, data} = res.data\n            if (errno === 0) {\n                if (data.status == 1) {\n                    // 新用户登录之后判断是否是新用户\n                    this.setState({\n                        isShowUserGift: false\n                    })\n                    Toast.info('新人大礼包已领取成功!', 2)\n                } else {\n                    this.setState({\n                        isShowUserGift: false\n                    })\n                }\n            }\n        })\n    }\n\n    showUserGiftFun = () => {\n        let newer_last_time = localStorage.getItem('newer_last_time') // 获取用户关闭大礼包的时间\n        let now_time = (new Date()).valueOf()\n        if (!newer_last_time || now_time - newer_last_time > 86400000) {\n            this.setState({\n                isShowUserGift: true\n            })\n        } else {\n            this.setState({\n                isShowUserGift: false\n            })\n        }\n    }\n    close = () => {\n        this.setState({\n            isShowUserGift: false\n        })\n        let now_time = (new Date()).valueOf() // 获取当前时间\n        localStorage.setItem('newer_last_time', now_time)  // 存储关闭时间\n    }\n    get_newerModal = () => {\n        this.close()\n        this.props.history.push('/passport/login')\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        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                    const mode = data.course_info.mode\n\n                    if (mode) {\n                        const {history} = this.props\n                        /*\n                        * mode: 课程模式 1集训营2普通小课3就业班4VIP 5AI特训营 6图文小课-python 7图文小课-ML\n                        * */\n                        const route = {\n                            6: 'python',\n                            7: 'ml'\n                        }\n                        if (Object.keys(route).includes(mode)) {\n                            history.push(`${route[mode]}?id=${id}`)\n                        }\n                    }\n\n                    let course_info = data.course_info\n                    document.title = `${course_info.course_title} - 七月在线`\n                    if (course_info.group_status === 3 || course_info.group_status === 4) {\n                        let endTime = course_info.pdd_group_info.groupon_member.end_time\n                        if (endTime && endTime > 0) {\n                            let date = endTime * 1000,\n                                day = 0,\n                                hours = 0,\n                                minutes = 0,\n                                seconds = 0\n                            setInterval(() => {\n                                date -= 1000\n                                if (endTime > 86400) {\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\n                                    this.setState({\n                                        countdown: `${day}天${hours}时${minutes}分`\n                                    })\n                                } else {\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                                }\n                            }, 1000)\n                        }\n                    }\n                    wxShare({\n                        title: course_info.course_title,\n                        desc: course_info.index_description,\n                        link: encodeURI(location.origin + '/detail?id=' + getParam('id')),\n                        imgUrl: course_info.image_name\n                    })\n                }\n\n            }\n        })\n    }\n\n    // 点击子组件试听按钮\n    toAudition = (vCourseId, videoId) => {\n        const {user} = this.props\n        const uid = user && user.data && user.data.uid\n        if (!uid) {\n            this.props.history.push('/passport/login')\n        } else {\n            if (videoId == '' || videoId == 0 || videoId == undefined) {\n                return false\n            }\n            http.post(`${API['base-api']}/sys/get_class_audition?video_id=${videoId}`).then((res) => {\n                if (res.data.errno == 200) {\n                    this.props.history.push(`/play/video?id=${vCourseId + '&video_id=' + videoId}`)\n                } else {\n                    Toast.info(res.data.msg, 2)\n                }\n            })\n            // this.setState({\n            //     auditionBox: true,\n            // })\n        }\n    }\n    // 点击子组件单集购买按钮\n    toSingleset = (item) => {\n        const {user} = this.props\n        const uid = user && user.data && user.data.uid\n        if (!uid) {\n            this.props.history.push('/passport/login')\n        } else {\n            this.setState({\n                singleBox: true,\n                singleType: 1,\n                singMess: item\n            })\n            window.localStorage.setItem('singMess', JSON.stringify(item))\n        }\n    }\n\n    // 加入购物车 type:1 加入购物车,2加入购物车并跳转到购物车页面去支付\n    toCart = (type) => {\n        const {history, addCourseToCart} = this.props\n        let data = {\n            course_id: getParam('id')\n        }\n        http.post(`${API.home}/m/cart/add`, data).then((res) => {\n            if (res.data.code === 200) {\n                if (type === 1) {\n                    Toast.info('已加入购物车', 2)\n                    // this.props.getCourses()\n                    // document.location.reload()\n                    addCourseToCart()\n                    this.fetchCourseInfo()\n                } else {\n                    history.replace('/shopcart')\n                }\n            } else if (res.data.code === 15001) {\n                history.replace('/shopcart')\n            } else if (res.data.code === 4030) {\n                history.replace('/passport')\n            } else {\n                Toast.info(res.data.msg, 2)\n            }\n        })\n    }\n\n    invitedFriends = () => {\n        // const {course_title, image_name, course_id, pdd_group_info, pdd_group_info: {groupon_member, groupon_member: {number}, price}} = this.state.course.course_info;\n        // if (browser.isWeixin) {\n        //     wxShare({\n        //         title: `【仅剩${number}个名额】我${price}元拼了《${course_title}》`,\n        //         desc: course_title,\n        //         link: location.href,\n        //         imgUrl: image_name,\n        //     });\n        // } else {\n        //     Toast.info('请在微信中使用分享功能!', 2);\n        // }\n        const {history} = this.props\n        const {course = {}} = this.state\n        if (course.course_info && course.course_info.self_oid) {\n            history.push(`/togroup?id=${course.course_info.self_oid}`)\n        }\n    }\n\n    // 自组件传给父组件的boxHide\n    boxHide = (val) => {\n        this.setState({\n            auditionBox: val,\n            singleBox: val,\n            singleType: 1\n        })\n        this.props.history.push(`/detail?id=${getParam('id')}`)\n    }\n\n    formatTime = seconds => ({\n        d: Math.floor(seconds / 60 / 60 / 24).toString().padStart(2, '0'),\n        h: Math.floor(seconds / 60 / 60 % 24).toString().padStart(2, '0'),\n        m: Math.floor(seconds / 60 % 60).toString().padStart(2, '0')\n    })\n\n    getCourse = (courseId, vCourseId) => {\n        const {history} = this.props\n        http.post(`${API.home}/sys/limitFree/receive`, {\n            course_id: courseId\n        })\n            .then(res => {\n                const {code, msg} = res.data\n                if (code === 200) {\n\n                    const instance = Popup({\n                        className: 'get-course-popup',\n                        closable: false,\n                        clickMaskClose: false,\n                        title: <div>\n                            <img src=\"https://julyedu-cdn.oss-cn-beijing.aliyuncs.com/time_limited_free/M/check.png\"\n                                 alt=\"\"/>\n                            <div>课程有效期7天,快去学习吧~</div>\n                        </div>,\n                        content: <div className={'btns'}>\n                            <button onClick={() => {\n                                instance.close()\n                                this.fetchCourseInfo()\n                            }}>知道了\n                            </button>\n                            <button onClick={() => {\n                                history.push(`/play/video?id=${vCourseId}`)\n                                instance.close()\n                            }}>立即学习\n                            </button>\n                        </div>\n                    })\n\n                } else {\n                    Toast.info(msg, 2, null, false)\n                }\n            })\n\n    }\n\n\n    render() {\n        const {course: {course_info = {}}, barInfo, singleBox, singleType, isRedPacket, countDownTime} = this.state\n\n        const {d, h, m} = this.formatTime(course_info.limit_free_time)\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                    {\n                        this.state.isShowChannel == 1 &&\n                        <CallApp className='toapp' path={`/detail/id=${getParam('id')}`}/>\n                    }\n\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 && !course_info.is_limit_free &&\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                                    course_info.is_limit_free\n                                        ?\n                                        course_info.limit_free_status == 0\n                                            ? <div className=\"limit-free\">\n                                                <span>限时免费</span>\n                                                <span className={'origin-price'}>¥{course_info.price0}</span>\n                                            </div>\n                                            :\n                                            course_info.limit_free_status == 1\n                                                ? <div className={'time-limit'}>\n                                                    <span>有效期7天,{d}天{h}时{m}分后过期</span>\n                                                </div>\n                                                : null\n                                        : null\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_limit_free && course_info.limit_free_status == 1) && 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_limit_free && course_info.limit_free_status == 1) && 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                    <div className='promise'>\n                        <label>服务承诺</label>\n                        <p>\n                            {\n                                course_info.service && course_info.service.length > 0 && course_info.service.map((item, index) => {\n                                    return (\n                                        <span key={index}> {item} </span>\n                                    )\n                                })\n                            }\n                        </p>\n                    </div>\n\n\n                    {/*试听弹窗*/}\n                    <Audition auditionBox={this.state.auditionBox} boxHide={this.boxHide}/>\n\n                    {/*单集购买弹窗*/}\n                    {\n                        singleBox &&\n                        <Single\n                            singleType={this.state.singleType}\n                            singleBox={this.state.singleBox}\n                            boxHide={this.boxHide}\n                            data={this.state.singMess}\n                            vcourseId={course_info.v_course_id}\n                            videoId={this.state.singMess.video_id}\n                            title={course_info.course_title}\n                            check={this.check}\n                            courseId={course_info.course_id}\n                        />\n                    }\n\n                    {/* 单集购买成功弹窗 */}\n                    {\n                        singleType !== 1 &&\n                        <SingleSuccess\n                            boxHide={this.boxHide}\n                            data={this.state.singMess}\n                            singleType={singleType}\n                            vcourseId={course_info.v_course_id}\n                            videoId={this.state.singMess.video_id}\n                            nowPrice={this.state.nowPrice}\n                            isPdd={this.state.isPdd}\n                            laterPrice={this.state.laterPrice}\n                            courseId={course_info.course_id}\n                        />\n                    }\n                    {/*payCallback={this.payCallback}*/}\n                    {/*weixinPay = {this.weixinPay}*/}\n\n                    {/* 红包 */}\n                    {\n                        isRedPacket &&\n                        <RedPacket\n                            history={this.props.history}\n                            country={this.props.country}\n                            delCountryNum={this.props.delCountryNum}\n                            userInfo={this.props.user.data}\n                        />\n                    }\n\n                    {/*分享赚钱*/}\n                    {\n                        course_info.is_dist &&\n                        <ShareRank courseInfo={course_info}/>\n                    }\n\n                    {/**\n                     * 拼团\n                     * is_aist: 是否AI特训营\n                     * group_status: 团状态,3:课程有小团 用户没参加小团;4:用户参加了小团\n                     * 拼团价格为1分钱时,不允许参团\n                     */\n                    }\n                    {/*双十一期间不需要显示 不要删除*/}\n                    {\n                        isCent && !course_info.is_aist && (course_info.group_status === 3 || course_info.group_status === 4) &&\n                        <Group\n                            courseInfo={course_info}\n                            history={this.props.history}\n                            countdown={countdown}\n                            invitedFriends={this.invitedFriends}\n                        />\n                    }\n\n                    {/*\n                      * 砍价\n                      * is_baoming 否报名 0-未购买弹出报名 1-已购买弹出开始学习\n                      * is_dist 是否分销课程\n                      * is_bargain 是否砍价课程\n                      */}\n                    {\n                        course_info.is_baoming === 0 && (!course_info.is_aist) && course_info.is_bargain &&\n                        <Bargain\n                            country={this.props.country}\n                            delCountryNum={this.props.delCountryNum}\n                        />\n                    }\n\n                    {/*课程介绍、大纲*/}\n                    <OutLine\n                        data={course_info}\n                        toAudition={this.toAudition}\n                        toSingleset={this.toSingleset}\n                    />\n\n                    {/*课程按钮*/}\n                    {\n                        course_info &&\n                        <BtnStatus\n                            country={this.props.country}\n                            countdown={countdown}\n                            data={course_info}\n                            user={this.props.user}\n                            invitedFriends={this.invitedFriends}\n                            getCourse={this.getCourse}\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\n                {\n                    this.state.isShowUserGift &&\n                    <UserGift close={this.close} get_newerModal={this.get_newerModal}/>\n                }\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","'use strict';\n\nvar _require = require('./Component'),\n    CopyToClipboard = _require.CopyToClipboard;\n\nCopyToClipboard.CopyToClipboard = CopyToClipboard;\nmodule.exports = CopyToClipboard;","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 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","'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};","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAMAAAC7IEhfAAAA51BMVEUAAAD3yyr4zCr60jD61DT4zSz4zi360C770jL93jn94UH3yin4yyz4ziz4zi34zS361TX50i/50jD61DP72Dj61jP+4kH+4ED4zCv3zCz4zSz4zS350jL61jb61jT6zir50DH83Dz71DP83Dj+5ET2zDD50C77zyj93j/930H82zv3yir3yCj/6072xib3yyv/6kz2xiT/7lD/8FL2wyL2xCP/8VT/7E//8lb83T74zS32wiH/81b/6Er71zj94kT72zz50zP+5kj84EH/9Vj+5Uf61TX50TH83j/4zy//9Ff3xyb0vBpXStORAAAAK3RSTlMA8+yrk9q7gTsdBPfnysGyoJ+IhWhMFg3w5d7QvKSbmI9eWich+nxTRjARluH5lgAAAm5JREFUOMt1lddi4jAQRYVp6b1vspvdZKvG6pI7NjWQ7P9/T7BFQBBzXnjw0YyvxhJonZ1fzcODRuPgsNndQVvZPW9DCca4/Lk7e6rV/rUwIdiBcNy6+uz98DjgDYDffN/0WsTR3Kpf171j13MB3Vn38Fb0/cr7BpsdgeIl6uTD++16FDQhMQanu1okuv4JjpbAkMZm4JoEX9vGxFmNJ9Eoy1KGyeodaPJQelfUWZz0RpIJIYeEa0WAx7RaDrtz8Yw4TWIh/JIgm0b5hOayp6s8rbnoOQV5njK/QozGLJ+lr0NeFbhBaMeNzPsi8C1hL+E9IwcAlfkHdcGdbWSsxoTpFy+FEZlNoM/RsStC5NuKwYD1BybzBbMiv0df3NaQTM1H45hJwURmN/StjTx3KupFBkIGzJfFbFIWN2NSieCh/bURMynHPSl8EfmSlZULZR81UMMRk2nqh5P/UeiznJUvK8SMf4ie07hvAjPmhA8My6rs6VBji+eEIYTJQL5omvRNFZ6ZAMgi5R1qLieoopCFQ1Xu0kBW0UWs6aLIEeqSZWITCEF5uaQIfV+mWayW3c7sCG1jw8IiqeYwGYWSFW+cLsXL5UehpimTzL4TxMOoDwpWXmMPoUeySCzm81DUfudcu6ec6vLQ7gLYrWZm7Dx1AXhGc044xjpKWbU1dR5VTXu4MGCdj9hrrnEtBK4W1w7BfCZefcrrG6sLtOCUUB73KKe1om1sOQJMFKn39CFy6BBcD/CjPeRyuuXa0w9og4v9zyro/YuaG/wUr6uEw8kzquPp8dbe9fayv239RdvYu+x22vO/D6/dOb9cD/EONO7gZ+bVU9IAAAAASUVORK5CYII=\"","import React, { Component } from 'react'\nimport './index.scss'\nimport { getParam, http, browser } from \"@/utils\";\nimport { Toast } from 'antd-mobile';\nimport { Link, withRouter } from \"react-router-dom\";\nimport { compose } from \"redux\";\nimport { connect } from \"react-redux\";\nimport { differenceInHours, differenceInMinutes, differenceInSeconds } from \"date-fns\";\n\n\nclass Single extends Component {\n    constructor(props) {\n        super(props)\n        this.state = {\n            // status: 1,\n            orderId: '',\n            nowPrice: '',\n            laterPrice: '',\n            hour: '',\n            min: '',\n            sec: '',\n            endTime: '',\n            groupOrderId: '',\n            payType: '0',  // 1支付宝 0微信\n            // singleBox: false,\n            showSingleBox: false,\n        }\n    }\n\n    componentDidMount() {\n        // if (getParam('is_class') === 1 || getParam('weixinpay')) {\n        //     console.log(0);\n        //     this.payCallback()\n        // }\n        // if (browser.isWeixin) {\n        //     this.isweixinPay()\n        // }\n    }\n\n    componentWillReceiveProps(nextProps, nextContext) {\n        // console.log(nextProps);\n        // this.setState({\n        //     singleBox: nextProps.singleBox\n        // })\n    }\n\n    // 选择支付方式\n    check = (type) => {\n        this.setState({\n            payType: type\n        })\n    }\n\n    // 确定购买\n    toBuy = () => {\n        const { courseId } = this.props;\n        const videoID = this.props.data.video_id || this.props.data.id;\n        http.get(`${API.home}/sys/createClassOrder/${videoID}`).then((res) => {\n            if (res.data.code === 200) {\n                this.setState({\n                    orderId: res.data.data.order_id\n                })\n                this.state.payType === '1' ? this.alipayPay(res.data.data.order_id, courseId) : this.weixinPay(res.data.data.order_id)\n            } else {\n                Toast.info(res.data.msg, 2)\n            }\n        })\n    }\n    // 微信支付\n    weixinPay = (orderId) => {\n        // 微信内部-支付\n        if (browser.isWeixin) {\n            window.location.href = \"https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx23dac6775ac82877&redirect_uri=\" + encodeURIComponent(window.location.href + \"&aa=bb&oid=\" + orderId).toLowerCase() + \"&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect\";\n        } else {\n            // 微信外部-支付\n            http.get(`${API['base-api']}/pay/wxpay/wap_charge/oid/${orderId}`).then((res) => {\n                if (res.data.errno === 0) {\n                    window.location.href = res.data.data.url + \"&redirect_url=\" + encodeURIComponent(window.location.href + \"&weixinpay=1&oid=\" + orderId).toLowerCase();\n                } else {\n                    Toast.info(res.data.msg, 2)\n                }\n            })\n        }\n    }\n    // 支付宝支付\n    alipayPay = (orderId, courseId) => {\n        http.get(`${API['base-api']}/pay/alipay/wap_charge_new/oid/${orderId}`).then((res) => {\n            if (res.data.errno === 0) {\n                window.location = res.data.data.url;\n                courseId && window.localStorage.setItem('payCourse', courseId);\n            } else {\n                Toast.info(res.data.msg, 2)\n            }\n        })\n    }\n\n    // 微信内部支付\n    isweixinPay = () => {\n        let _this = this;\n        let weixin_code = getParam('code')\n        if (weixin_code) {\n            if (!getParam('oid')) {\n                return\n            } else {\n                http.get(`${API['base-api']}/pay/wxpay/pub_charge/oid/${getParam('oid')}/code/${weixin_code}`).then((res) => {\n                    if (res.data.errno === 0) {\n                        const data = res.data.data;\n\n                        function onBridgeReady() {\n                            WeixinJSBridge.invoke(\n                                'getBrandWCPayRequest', {\n                                    \"appId\": data.appId,                //公众号名称,由商户传入\n                                    \"timeStamp\": data.timeStamp,        //时间戳,自1970年以来的秒数\n                                    \"nonceStr\": data.nonceStr,          //随机串\n                                    \"package\": data.package,\n                                    \"signType\": data.signType,          //微信签名方式:\n                                    \"paySign\": data.paySign             //微信签名\n                                },\n                                function (res) {\n                                    if (res.err_msg == \"get_brand_wcpay_request:ok\") {\n                                        Toast.info('支付成功', 2);\n                                        _this.intervalPayStatus = setInterval(function () {\n                                            http.get(`${API['base-api']}/m/orderState/oid/${getParam('oid')}`).then(res => {\n                                                if (res.data.errno === 401) {\n                                                    clearInterval(_this.intervalPayStatus);\n                                                    _this.intervalPayStatus = null;\n                                                    // 获取课程类型\n                                                    http.get(`${API['base-api']}/class_order_status/${getParam('oid')}`).then((res) => {\n                                                        if (Number(res.data.data.errno) === 200) {\n                                                            // 正常购买单集成功\n                                                            this.setState({\n                                                                status: 6,\n                                                                showSingleBox: true,\n                                                            })\n                                                        } else if (Number(res.data.data.errno) === 201) {\n                                                            // 0元参团\n                                                            this.setState({\n                                                                status: 4,\n                                                                showSingleBox: true,\n                                                            })\n                                                        } else if (Number(res.data.data.errno) === 202) {\n                                                            // 0元购\n                                                            this.setState({\n                                                                status: 3,\n                                                                showSingleBox: true,\n                                                            })\n                                                        } else if (Number(res.data.data.errno) === 203) {\n                                                            // 三天内特价\n                                                            this.setState({\n                                                                nowPrice: res.data.data.data.now_price,\n                                                                laterPrice: res.data.data.data.three_day_later_price,\n                                                                status: 2,\n                                                                showSingleBox: true,\n                                                            })\n                                                        } else {\n                                                            Toast.info(res.data.data.msg, 2)\n                                                        }\n                                                    })\n                                                }\n                                            })\n                                        }, 1000)\n                                    } else {\n                                        alert('支付失败')\n                                    }\n                                }\n                            )\n                        }\n\n                        if (typeof WeixinJSBridge == \"undefined\") {\n                            if (document.addEventListener) {\n                                document.addEventListener('WeixinJSBridgeReady', onBridgeReady, false)\n                            } else if (document.attachEvent) {\n                                document.attachEvent('WeixinJSBridgeReady', onBridgeReady)\n                                document.attachEvent('onWeixinJSBridgeReady', onBridgeReady)\n                            }\n                        } else {\n                            onBridgeReady()\n                        }\n                    } else {\n                        Toast.info(res.data.msg, 2)\n                    }\n                })\n            }\n        }\n    }\n\n    // 支付完成之后获取状态\n    payCallback = () => {\n        const _this = this;\n        if (!getParam('oid')) {\n            return;\n        } else {\n            _this.intervalPayStatus = setInterval(function () {\n                http.get(`${API['base-api']}/m/orderState/oid/${getParam('oid')}`).then(res => {\n                    if (res.data.errno === 401) {\n                        clearInterval(_this.intervalPayStatus);\n                        _this.intervalPayStatus = null;\n                        // 获取课程类型\n                        http.get(`${API['base-api']}/class_order_status/${getParam('oid')}`).then((res) => {\n                            if (Number(res.data.data.errno) === 200) {\n                                // 正常购买单集成功\n                                this.setState({\n                                    status: 6,\n                                    showSingleBox: true,\n                                })\n                            } else if (Number(res.data.data.errno) === 201) {\n                                // 0元参团\n                                this.setState({\n                                    status: 4,\n                                    showSingleBox: true,\n                                })\n                            } else if (Number(res.data.data.errno) === 202) {\n                                // 0元购\n                                this.setState({\n                                    status: 3,\n                                    showSingleBox: true,\n                                })\n                            } else if (Number(res.data.data.errno) === 203) {\n                                // 三天内特价\n                                this.setState({\n                                    nowPrice: res.data.data.data.now_price,\n                                    laterPrice: res.data.data.data.three_day_later_price,\n                                    status: 2,\n                                    showSingleBox: true,\n                                })\n                            } else {\n                                Toast.info(res.data.data.msg, 2)\n                            }\n                        })\n                    }\n                })\n            }, 1000)\n        }\n\n    }\n\n\n    // 特价购买全集\n    toBuyAll = () => {\n\n    }\n    // 0元购买全集\n    zerobuyReceive = () => {\n        Toast.success('购买全集成功', 3)\n        this.colse()\n    }\n    // 0元参团\n    zerogroupBuy = () => {\n        this.getOrderId()\n    }\n\n    // 获取订单号-0元参团\n    getOrderId = () => {\n        let data = {\n            course_id: getParam('id')\n        }\n        http.post(`${API['base-api']}/pdd/sys`, data).then((res) => {\n            if (res.data.errno === 0) {\n                this.setState({\n                    groupOrderId: res.data.data.order_id\n                })\n                this.getOrderStatus(res.data.data.order_id)\n            } else {\n                Toast.info(res.data.msg, 2)\n            }\n        })\n    }\n\n    // 获取订单状态-0元参团\n    getOrderStatus = (id) => {\n        http.get(`${API.home}/m/pdd/order_status/${id}`).then((res) => {\n            if (res.data.code === 200) {\n                this.getTime(res.data.data.pdd_order_id)\n            } else {\n                Toast.info(res.data.msg, 2)\n            }\n        })\n    }\n    // 获取倒计时-0元参团\n    getTime = (id) => {\n        http.get(`${API.home}/m/pdd_order_end_time/${id}`).then((res) => {\n            if (res.data.code === 200) {\n                this.setState({\n                    endTime: res.data.data.end_time,\n                    status: 7\n                })\n            } else {\n                Toast.info(res.data.msg, 2)\n            }\n        })\n    }\n\n    // 邀请好友参团\n    toGroup = () => {\n        this.props.history.push(`/togroup?id=${this.state.groupOrderId}`)\n    }\n\n    // 关闭弹窗\n    colse = () => {\n        this.props.boxHide(false);\n        this.setState({\n            status: 1\n        })\n    }\n\n    render() {\n        const {showSingleBox} = this.state;\n        if (this.state.endTime) {\n            let date = this.state.endTime * 1000\n            let now = Date.now()\n            setInterval(() => {\n                date -= 1000\n                let s = differenceInSeconds(new Date(date), now) % 60,\n                    m = differenceInMinutes(new Date(date), now) % 60,\n                    h = differenceInHours(new Date(date), now) % 24\n                this.setState({\n                    hour: h,\n                    min: m,\n                    sec: s,\n                })\n            }, 1000)\n        }\n        const {singleType} = this.props;\n        return (\n            singleType === 1 &&\n            <div>\n                <div className='popup-box'>\n                    <div className='content singleset-payment'>\n                        <div className='price-box'>\n                            <span>实付款:</span>\n                            <p>{this.props.data.class_price}元</p>\n                        </div>\n                        <div className='course-info'>\n                            <p className='text-overflow-1'><span>课程:</span>\n                                {this.props.title}\n                            </p>\n                            <p className='text-overflow-1'><span>课时:</span>\n                                {this.props.data.name}\n                            </p>\n                        </div>\n                        <div className='payment-type'>\n                            <label>支付方式:</label>\n                            <p onClick={this.check.bind(this, '0')}>\n                                <i className='iconfont iconweixinzhifu buy'></i>\n                                <span>微信支付</span>\n                                <i className={`iconfont icondanseshixintubiao-5 redio ${this.state.payType === '0' ? 'redioed' : ''}`}></i>\n                            </p>\n                            {\n                                !browser.isWeixin &&\n                                <p onClick={this.check.bind(this, '1')}>\n                                    <i className='iconfont iconalipay'></i>\n                                    <span>支付宝</span>\n                                    <i className={`iconfont icondanseshixintubiao-5 redio ${this.state.payType === '1' ? 'redioed' : ''}`}></i>\n                                </p>\n                            }\n\n                        </div>\n                        <div className='btn btn-18B4ED' onClick={this.toBuy}>确认购买</div>\n                    </div>\n                    <i onClick={this.colse} className={'iconfont iconiconfront-2 close'}></i>\n                </div>\n\n            </div>\n\n        );\n    }\n\n}\n\nexport default compose(\n    connect(\n        state => ({user: state.user}),\n        null\n    ),\n    withRouter\n)(Single)\n","import React, { Component } from 'react'\nimport './index.scss'\nimport { getParam, http, browser } from \"@/utils\";\nimport { Toast } from 'antd-mobile';\nimport { Link, withRouter } from \"react-router-dom\";\nimport { compose } from \"redux\";\nimport { connect } from \"react-redux\";\nimport { differenceInHours, differenceInMinutes, differenceInSeconds } from \"date-fns\";\n\n\nclass Single extends Component {\n    constructor(props) {\n        super(props)\n        this.state = {\n            // status: 1,\n            orderId: '',\n            nowPrice: '',\n            laterPrice: '',\n            hour: '',\n            min: '',\n            sec: '',\n            endTime: '',\n            groupOrderId: '',\n            payType: '0',  // 1支付宝 0微信\n            // singleBox: false,\n        }\n    }\n\n    componentDidMount() {\n\n    }\n\n    componentWillReceiveProps(nextProps, nextContext) {\n        // console.log(nextProps);\n        // this.setState({\n        //     singleBox: nextProps.singleBox\n        // })\n    }\n\n    // 选择支付方式\n    check = (type) => {\n        this.setState({\n            payType: type\n        })\n    }\n\n    // 确定购买\n    toBuy = () => {\n        const videoID = this.props.data.video_id || this.props.data.id;\n        http.get(`${API.home}/sys/createClassOrder/${videoID}`).then((res) => {\n            if (res.data.code === 200) {\n                this.setState({\n                    orderId: res.data.data.order_id\n                })\n                this.state.payType === '1' ? this.alipayPay(res.data.data.order_id) : this.weixinPay(res.data.data.order_id)\n            } else {\n                Toast.info(res.data.msg, 2)\n            }\n        })\n    }\n    // 微信支付\n    weixinPay = (orderId) => {\n        // 微信内部-支付\n        if (browser.isWeixin) {\n            window.location.href = \"https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx23dac6775ac82877&redirect_uri=\" + encodeURIComponent(window.location.href + \"&aa=bb&oid=\" + orderId).toLowerCase() + \"&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect\";\n        } else {\n            // 微信外部-支付\n            http.get(`${API['base-api']}/pay/wxpay/wap_charge/oid/${orderId}`).then((res) => {\n                if (res.data.errno === 0) {\n                    window.location.href = res.data.data.url + \"&redirect_url=\" + encodeURIComponent(window.location.href + \"&weixinpay=1&oid=\" + orderId).toLowerCase();\n                } else {\n                    Toast.info(res.data.msg, 2)\n                }\n            })\n        }\n    }\n    // 支付宝支付\n    alipayPay = (orderId) => {\n        const courseId = getParam('id');\n        http.get(`${API['base-api']}/pay/alipay/wap_charge_new/oid/${orderId}`).then((res) => {\n            if (res.data.errno === 0) {\n                window.location = res.data.data.url;\n                courseId && window.localStorage.setItem('payCourse', courseId);\n            } else {\n                Toast.info(res.data.msg, 2)\n            }\n        })\n    }\n\n    // 特价购买全集\n    toBuyAll = (vcourseId) => {\n        if(Number(this.props.isPdd) === 1) {\n            this.props.history.push(`/order?id=${this.props.courseId}`, {group: 1})\n        }else{\n            let cidArr = JSON.stringify([Number(vcourseId)]);\n            http.get(`${API['base-api']}/m/cart/addtopreorder/${cidArr}`).then((res) => {\n                if (res.data.errno === 0) {\n                    this.props.history.push(\"/order?id=\" + res.data.data[0], {simple: 1});\n                } else {\n                    Toast.info(res.data.msg, 2);\n                }\n            })\n        }\n    }\n    // 0元购买全集\n    zerobuyReceive = () => {\n        Toast.success('购买全集成功', 3)\n        this.colse()\n    }\n    // 0元参团\n    zerogroupBuy = () => {\n        this.getOrderId()\n    }\n\n    // 获取订单号-0元参团\n    getOrderId = () => {\n        let data = {\n            course_id: getParam('id')\n        }\n        http.post(`${API['base-api']}/pdd/sys`, data).then((res) => {\n            if (res.data.errno === 0) {\n                this.setState({\n                    groupOrderId: res.data.data.order_id\n                })\n                this.getOrderStatus(res.data.data.order_id)\n            } else {\n                Toast.info(res.data.msg, 2)\n            }\n        })\n    }\n\n    // 获取订单状态-0元参团\n    getOrderStatus = (id) => {\n        http.get(`${API.home}/m/pdd/order_status/${id}`).then((res) => {\n            if (res.data.code === 200) {\n                this.getTime(res.data.data.pdd_order_id)\n            } else {\n                Toast.info(res.data.msg, 2)\n            }\n        })\n    }\n    // 获取倒计时-0元参团\n    getTime = (id) => {\n        http.get(`${API.home}/m/pdd_order_end_time/${id}`).then((res) => {\n            if (res.data.code === 200) {\n                this.setState({\n                    endTime: res.data.data.end_time,\n                    status: 7\n                })\n            } else {\n                Toast.info(res.data.msg, 2)\n            }\n        })\n    }\n\n    // 邀请好友参团\n    toGroup = () => {\n        this.props.history.push(`/togroup?id=${this.state.groupOrderId}`)\n    }\n\n    toLearn = (vcourseId, videoID) => {\n        this.props.boxHide(false);\n        this.props.history.push(`/play/video?id=${vcourseId}&video_id=${videoID}`);\n    }\n\n\n    // 关闭弹窗\n    colse = () => {\n        this.props.boxHide(false);\n        this.setState({\n            status: 1\n        })\n    }\n\n    render() {\n        let {singleBox} = this.state;\n        if (this.state.endTime) {\n            let date = this.state.endTime * 1000\n            let now = Date.now()\n            setInterval(() => {\n                date -= 1000\n                let s = differenceInSeconds(new Date(date), now) % 60,\n                    m = differenceInMinutes(new Date(date), now) % 60,\n                    h = differenceInHours(new Date(date), now) % 24\n                this.setState({\n                    hour: h,\n                    min: m,\n                    sec: s,\n                })\n            }, 1000)\n        }\n        const { singleType } = this.props;\n        // console.log(this.props);\n        const videoID = this.props.data.video_id || this.props.data.id;\n        return (\n          <div className='popup-box'>\n          {\n              singleType === 2 &&\n              <div className='content payment-success'>\n                  <div className=\"header\">\n                      <i className='iconfont icondanseshixintubiao-5'></i>\n                      <span>购买成功</span>\n                  </div>\n                  <div className=\"dec\">· 3天内购买全集,可直接抵扣该集费用,{this.props.nowPrice}元购买。</div>\n                  <div className=\"dec\">· 超过3天,按照未购集数/全部集数等比例计费,{this.props.laterPrice}元购买全集。</div>\n                  <span onClick={()=>this.toLearn(this.props.vcourseId,videoID)} className='btn btn-18B4ED'>开始学习</span>\n                  <div className='btn btn-FF4000' onClick={()=>{this.toBuyAll(this.props.courseId)}}>¥{this.props.nowPrice}购买全集\n                  </div>\n              </div>\n          }\n          {\n              singleType === 3 &&\n              <div className='content zero'>\n                  <div className=\"header\">\n                      <i className='iconfont icondanseshixintubiao-5'></i>\n                      <span>购买成功</span>\n                  </div>\n                  <div className=\"dec\">· 恭喜您获得0元拼团购买剩余课时的机会。</div>\n                  <div className='btn btn-FF4000' onClick={this.zerogroupBuy}>0元参团</div>\n              </div>\n          }\n          {\n              singleType === 4 &&\n              <div className='content zero'>\n                  <div className=\"header\">\n                      <i className='iconfont icondanseshixintubiao-5'></i>\n                      <span>购买成功</span>\n                  </div>\n                  <div className=\"dec\">· 恭喜您获得0元购买剩余课时的机会。</div>\n                  <div className='btn btn-FF4000' onClick={this.zerobuyReceive}>0元购</div>\n              </div>\n          }\n          {\n              singleType === 6 &&\n              <div className='content zero'>\n                  <div className=\"header\">\n                      <i className='iconfont icondanseshixintubiao-5'></i>\n                      <span>购买成功</span>\n                  </div>\n                  {/*<Link to={`/play/video?id=${this.props.vcourseId}&video_id=${videoID}`} className='btn btn-18B4ED'>去学习</Link>*/}\n                  <span onClick={()=>this.toLearn(this.props.vcourseId,videoID)} className='btn btn-18B4ED'>去学习</span>\n              </div>\n          }\n          {\n              singleType === 7 &&\n              <div className='content group'>\n                  <div className=\"header\">\n                      <i className='iconfont icondanseshixintubiao-5'></i>\n                      <span>参团成功</span>\n                  </div>\n                  <div className='group-img'>\n                      <img src={this.props.user.data.avatar} alt=\"\"/>\n                      <img\n                          src=\"https://julyedu-cdn.oss-cn-beijing.aliyuncs.com/images/weekend/train7/ellipsis.png\"\n                          alt=\"\"/>\n                      <img\n                          src=\"https://julyedu-cdn.oss-cn-beijing.aliyuncs.com/images/weekend/train7/ellipsis.png\"\n                          alt=\"\"/>\n\n                  </div>\n                  <div className='btn-l btn-FF4000' onClick={this.toGroup}>\n                      剩余{String(this.state.hour).padStart(2, 0)}:{String(this.state.min).padStart(2, 0)}:{String(this.state.sec).padStart(2, 0)}\n                      邀请好友参团\n                  </div>\n              </div>\n          }\n          <i onClick={this.colse} className={'iconfont iconiconfront-2 close'}></i>\n      </div>\n\n        );\n    }\n\n}\n\nexport default compose(\n    connect(\n        state => ({user: state.user}),\n        null\n    ),\n    withRouter\n)(Single)\n","import React, {Component} from 'react'\nimport './index.scss'\n\nclass Ranking extends Component {\n\n    constructor(props) {\n        super(props)\n        this.state = {\n            kanjiaIcon: require('../image/kanjia_icon.png')\n        }\n    }\n\n    // 关闭更多窗口\n    closeMore = () => {\n        this.props.boxHide(false);\n    }\n\n    render() {\n        return (\n            <div className={'ranking-box'}>\n                {\n                    this.props.isShowMore &&\n                    <MoreList list={this.props.list} limitPeople={this.props.limitPeople} closeMore={this.closeMore}\n                              img={this.props.icon}/>\n                }\n            </div>\n        );\n    }\n}\n\nfunction MoreList(props) {\n    return (\n        <div className=\"moreMbc\">\n            <div className=\"content\">\n                <div className=\"title-box\">\n                    好友助力详情\n                </div>\n                <ul className='more-bargain-list'>\n                    {\n                        props.list && props.list.length > 0 && props.list.map((item, index) => {\n                            return (\n                                <li key={index} className='bargain-item'>\n                                    <img className='avatar' src={item.avatar_file} alt=\"\"/>\n                                    <p className='name'>{item.user_name}</p>\n                                    <p className='bargain-status'>\n                                        <img className='kanjia-icon' src={props.img} alt=\"\"/>\n                                        砍掉<span className={'price'}>{item.amount}</span>\n                                    </p>\n                                </li>\n                            )\n                        })\n                    }\n                </ul>\n                <div className='more-bargain-dec'>\n                    超过{props.limitPeople}位好友助力可获得【砍价神器】\n                </div>\n            </div>\n            <i onClick={props.closeMore} className={'iconfont iconiconfront-2 close'}></i>\n        </div>\n    )\n}\n\nexport default Ranking","import React, { Component } from 'react';\nimport ReactDom from \"react-dom\";\n\nimport './overlay.scss'\n\nconst root = document.body || document.documentElement\n\nconst events = ['touchmove', 'mousewheel']\n\nclass Overlay extends Component {\n    constructor(props) {\n        super(props);\n        this.overlayBox = null\n    }\n\n    preventScroll = e => {\n        e.preventDefault()\n    }\n\n    componentDidMount() {\n        events.forEach(item => {\n            this.overlayBox.addEventListener(item, this.preventScroll, {\n                passive: false\n            })\n        })\n    }\n\n    componentWillUnmount() {\n        events.forEach(item => {\n            this.overlayBox.removeEventListener(item, this.preventScroll)\n        })\n    }\n\n    render() {\n        return ReactDom.createPortal(\n            (<div className={'overlay'}\n                  ref={el => this.overlayBox = el}\n                  style={{top: `${window.scrollY}px`}}\n            >{this.props.children}</div>),\n            root\n        )\n    }\n}\n\nexport default Overlay;","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\";"],"sourceRoot":""}