{"version":3,"sources":["components/bargainMiddlePage/image/kanjia_icon.png","components/detail/overlay/index.js","components/bargainMiddlePage/ranking/index.js","components/detail/bargain/image/kanjia_icon.png","components/detail/bargain/image/kanjia_cg_icon.png","components/detail/bargain/bargainInfo/index.js","components/detail/bargain/index.js","components/detail/group/index.js","components/detail/outline/index.js","components/detail/shareRank/index.js","components/detail/audition/index.js","components/detail/single/index.js","components/detail/btnstatus/index.js","components/detail/carousel/index.js","components/detail/index.js"],"names":["module","exports","root","document","body","documentElement","events","Overlay","props","_this","Object","_Users_zhanghaozhe_server_mr_julyedu_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_0__","this","_Users_zhanghaozhe_server_mr_julyedu_node_modules_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__","_Users_zhanghaozhe_server_mr_julyedu_node_modules_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__","call","preventScroll","e","preventDefault","overlayBox","_this2","forEach","item","addEventListener","passive","_this3","removeEventListener","_this4","ReactDom","createPortal","react__WEBPACK_IMPORTED_MODULE_5___default","a","createElement","className","ref","el","style","top","concat","window","scrollY","children","Component","Ranking","closeMore","boxHide","state","kanjiaIcon","require","isShowMore","MoreList","list","limitPeople","img","icon","length","map","index","key","src","avatar_file","alt","user_name","amount","onClick","__webpack_require__","p","BargainInfo","mobile","code","isBargain","handleChange","_e$target","target","name","value","setState","defineProperty","sendCode","console","log","validateTel","http","post","API","phone_num","then","res","data","toast_default","info","errno","msg","handleClick","home","objectSpread","iWantBargain","_this$state","react_default","list_default","type","onChange","placeholder","maxLength","htmlFor","id","react_router_dom","to","Bargain","classCallCheck","possibleConstructorReturn","getPrototypeOf","getBargainRankList","courseId","outList","getBargainInfo","getParam","limit_people","bargainCode","bargain_code","bargain_status","getMore","val","toArtifact","isShowOverlay","status","useArtifact","toKanjia","toCart","course_id","history","push","continueBargain","uid","parent_uid","user_status","location","reload","close","time","BargainIntro","BargainStatus","overlay","bargainInfo","Artifact","UseArtifact","ranking","flex_default","direction","justify","Item","thirdRow","btn","_useState","useState","_useState2","slicedToArray","day","setDay","_useState3","_useState4","hour","setHour","_useState5","_useState6","min","setMin","_useState7","_useState8","sec","setSec","is_artifact","invit_num","date","end_time","now","Date","setInterval","differenceInSeconds","differenceInMinutes","differenceInHours","differenceInDays","bargain_price","String","padStart","assist_num","compose","withRouter","Group","toPay","pdd_order_id","courseInfo","course_info","group_status","alreadyIn","invitedFriends","pdd_price","number","browser","isWeixin","share","shareData","title","course_title","desc","link","origin","imgUrl","image_name","_res$data","nonce_str","signature","timestamp","wx","config","debug","appId","nonceStr","jsApiList","ready","hideAllNonBaseMenuItem","showMenuItems","menuList","updateAppMessageShareData","success","updateTimelineShareData","Toast","hideMbc","formatTimeByMillisecond","millisecond","hours","minutes","seconds","parseInt","countdown","now_groupon_list","nextProps","pdd_group_info","_this$state2","groupInfo","groupon_member","groupSuccessMbc","member","ary","num","groupTip","Math","random","avatar","user_type","now_groupon_total","person_num","Fragment","connect","OutLine","htmlDecode","content","innerHTML","childNodes","nodeValue","getList","get","stageInfo","introduce","white_space_default","tabs_default","tabs","teachers","course_hour","start_time","dangerouslySetInnerHTML","__html","intro","stage_name","lesson","class_status","toAudition","toSingleset","class_price","video_auth","is_video","point","ShareRank","getRankList","rankingslice","slice","getCode","user","dist_first","dist_first_level_ti","dist_code","openRanking","shareRank","colse","head_imgurl","align","bind","Audition","auditionBox","common","text","Single","check","payType","toBuy","video_id","orderId","order_id","alipayPay","weixinPay","href","encodeURIComponent","toLowerCase","url","onBridgeReady","WeixinJSBridge","invoke","timeStamp","package","signType","paySign","err_msg","payCallback","alert","isweixinPay","weixin_code","undefined","attachEvent","nowPrice","now_price","laterPrice","three_day_later_price","toBuyAll","zerobuyReceive","zerogroupBuy","getOrderId","groupOrderId","getOrderStatus","getTime","endTime","toGroup","s","m","h","singleBox","onclick","BtnStatus","replace","tobuy","barInfo","bargainStatus","cancel","api","isbuy","is_baoming","in_cart","price1","price","is_bargain","CancelBargain","getCourses","Carouselw","timer","clearTimeout","wing_blank_default","carousel_default","vertical","dots","autoplay","infinite","live_msg","Detail","singMess","_this$props$courseInf","_this$props$courseInf2","isvip","fetchCoursesListIfNeeded","service","arrow","cart","components_detail_carousel","simpledescription","price0","course_qq","vip_range","detail_audition","detail_single","is_dist","detail_shareRank","detail_group","detail_bargain","detail_outline","detail_btnstatus","mapDispatchToProps"],"mappings":"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","file":"static/js/detail.4ef70074.chunk.js","sourcesContent":["module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAMAAAC7IEhfAAAA51BMVEUAAAD3yyr4zCr60jD61DT4zSz4zi360C770jL93jn94UH3yin4yyz4ziz4zi34zS361TX50i/50jD61DP72Dj61jP+4kH+4ED4zCv3zCz4zSz4zS350jL61jb61jT6zir50DH83Dz71DP83Dj+5ET2zDD50C77zyj93j/930H82zv3yir3yCj/6072xib3yyv/6kz2xiT/7lD/8FL2wyL2xCP/8VT/7E//8lb83T74zS32wiH/81b/6Er71zj94kT72zz50zP+5kj84EH/9Vj+5Uf61TX50TH83j/4zy//9Ff3xyb0vBpXStORAAAAK3RSTlMA8+yrk9q7gTsdBPfnysGyoJ+IhWhMFg3w5d7QvKSbmI9eWich+nxTRjARluH5lgAAAm5JREFUOMt1lddi4jAQRYVp6b1vspvdZKvG6pI7NjWQ7P9/T7BFQBBzXnjw0YyvxhJonZ1fzcODRuPgsNndQVvZPW9DCca4/Lk7e6rV/rUwIdiBcNy6+uz98DjgDYDffN/0WsTR3Kpf171j13MB3Vn38Fb0/cr7BpsdgeIl6uTD++16FDQhMQanu1okuv4JjpbAkMZm4JoEX9vGxFmNJ9Eoy1KGyeodaPJQelfUWZz0RpIJIYeEa0WAx7RaDrtz8Yw4TWIh/JIgm0b5hOayp6s8rbnoOQV5njK/QozGLJ+lr0NeFbhBaMeNzPsi8C1hL+E9IwcAlfkHdcGdbWSsxoTpFy+FEZlNoM/RsStC5NuKwYD1BybzBbMiv0df3NaQTM1H45hJwURmN/StjTx3KupFBkIGzJfFbFIWN2NSieCh/bURMynHPSl8EfmSlZULZR81UMMRk2nqh5P/UeiznJUvK8SMf4ie07hvAjPmhA8My6rs6VBji+eEIYTJQL5omvRNFZ6ZAMgi5R1qLieoopCFQ1Xu0kBW0UWs6aLIEeqSZWITCEF5uaQIfV+mWayW3c7sCG1jw8IiqeYwGYWSFW+cLsXL5UehpimTzL4TxMOoDwpWXmMPoUeySCzm81DUfudcu6ec6vLQ7gLYrWZm7Dx1AXhGc044xjpKWbU1dR5VTXu4MGCdj9hrrnEtBK4W1w7BfCZefcrrG6sLtOCUUB73KKe1om1sOQJMFKn39CFy6BBcD/CjPeRyuuXa0w9og4v9zyro/YuaG/wUr6uEw8kzquPp8dbe9fayv239RdvYu+x22vO/D6/dOb9cD/EONO7gZ+bVU9IAAAAASUVORK5CYII=\"","import React, { Component } from 'react';\nimport ReactDom from \"react-dom\";\n\nimport './overlay.scss'\n\nconst root = document.body || document.documentElement\n\nconst events = ['touchmove', 'mousewheel']\n\nclass Overlay extends Component {\n constructor(props) {\n super(props);\n this.overlayBox = null\n }\n\n preventScroll = e => {\n e.preventDefault()\n }\n\n componentDidMount() {\n events.forEach(item => {\n this.overlayBox.addEventListener(item, this.preventScroll, {\n passive: false\n })\n })\n }\n\n componentWillUnmount() {\n events.forEach(item => {\n this.overlayBox.removeEventListener(item, this.preventScroll)\n })\n }\n\n render() {\n return ReactDom.createPortal(\n (<div className={'overlay'}\n ref={el => this.overlayBox = el}\n style={{top: `${window.scrollY}px`}}\n >{this.props.children}</div>),\n root\n )\n }\n}\n\nexport default Overlay;","import React, {Component} from 'react'\nimport './index.scss'\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","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAMAAAC7IEhfAAAA51BMVEUAAAD3yyr4zCr60jD61DT4zSz4zi360C770jL93jn94UH3yin4yyz4ziz4zi34zS361TX50i/50jD61DP72Dj61jP+4kH+4ED4zCv3zCz4zSz4zS350jL61jb61jT6zir50DH83Dz71DP83Dj+5ET2zDD50C77zyj93j/930H82zv3yir3yCj/6072xib3yyv/6kz2xiT/7lD/8FL2wyL2xCP/8VT/7E//8lb83T74zS32wiH/81b/6Er71zj94kT72zz50zP+5kj84EH/9Vj+5Uf61TX50TH83j/4zy//9Ff3xyb0vBpXStORAAAAK3RSTlMA8+yrk9q7gTsdBPfnysGyoJ+IhWhMFg3w5d7QvKSbmI9eWich+nxTRjARluH5lgAAAm5JREFUOMt1lddi4jAQRYVp6b1vspvdZKvG6pI7NjWQ7P9/T7BFQBBzXnjw0YyvxhJonZ1fzcODRuPgsNndQVvZPW9DCca4/Lk7e6rV/rUwIdiBcNy6+uz98DjgDYDffN/0WsTR3Kpf171j13MB3Vn38Fb0/cr7BpsdgeIl6uTD++16FDQhMQanu1okuv4JjpbAkMZm4JoEX9vGxFmNJ9Eoy1KGyeodaPJQelfUWZz0RpIJIYeEa0WAx7RaDrtz8Yw4TWIh/JIgm0b5hOayp6s8rbnoOQV5njK/QozGLJ+lr0NeFbhBaMeNzPsi8C1hL+E9IwcAlfkHdcGdbWSsxoTpFy+FEZlNoM/RsStC5NuKwYD1BybzBbMiv0df3NaQTM1H45hJwURmN/StjTx3KupFBkIGzJfFbFIWN2NSieCh/bURMynHPSl8EfmSlZULZR81UMMRk2nqh5P/UeiznJUvK8SMf4ie07hvAjPmhA8My6rs6VBji+eEIYTJQL5omvRNFZ6ZAMgi5R1qLieoopCFQ1Xu0kBW0UWs6aLIEeqSZWITCEF5uaQIfV+mWayW3c7sCG1jw8IiqeYwGYWSFW+cLsXL5UehpimTzL4TxMOoDwpWXmMPoUeySCzm81DUfudcu6ec6vLQ7gLYrWZm7Dx1AXhGc044xjpKWbU1dR5VTXu4MGCdj9hrrnEtBK4W1w7BfCZefcrrG6sLtOCUUB73KKe1om1sOQJMFKn39CFy6BBcD/CjPeRyuuXa0w9og4v9zyro/YuaG/wUr6uEw8kzquPp8dbe9fayv239RdvYu+x22vO/D6/dOb9cD/EONO7gZ+bVU9IAAAAASUVORK5CYII=\"","module.exports = __webpack_public_path__ + \"static/media/kanjia_cg_icon.81a489ac.png\";","import React, {Component} from 'react';\nimport {InputItem, List} from \"antd-mobile\";\nimport './bargain-info.scss'\nimport {validateTel} from \"@/utils\";\nimport {Toast} from 'antd-mobile'\nimport { http } from \"@/utils\";\nimport {Link} from \"react-router-dom\";\n\n\nclass BargainInfo extends Component {\n\n state = {\n mobile: '',\n code: '',\n isBargain: true\n }\n\n handleChange = e => {\n\n let {name, value} = e.target\n\n this.setState({\n [name]: value\n })\n }\n\n sendCode = () => {\n\n console.log(validateTel(this.state.mobile));\n\n if (!validateTel(this.state.mobile)) {\n Toast.info('请输入正确的手机号')\n return\n }\n\n\n http.post(`${API['base-api']}/sys/bind_send_sms`, {\n phone_num: this.state.mobile\n }).then(res => {\n if (res.data.code == 200) {\n Toast.info('验证码发送成功', 2, null, false)\n } else if (res.data.errno === 410) {\n Toast.info('该手机号已注册,请使用该手机号登录,发起砍价。', 3, null, false)\n this.setState({\n isBargain: false\n })\n } else {\n Toast.info(res.data.msg)\n }\n })\n }\n\n handleClick = () => {\n if (!this.state.code) {\n Toast.info('请填写验证码')\n return\n }\n\n http.post(`${API.home}/m/user/bindMobile`, {\n ...this.state\n }).then(res => {\n if (res.data.code == 200) {\n Toast.info('绑定手机号成功', 2, null, false)\n this.props.iWantBargain()\n } else {\n Toast.info(res.data.msg)\n }\n })\n\n }\n\n\n render() {\n let {mobile, code} = this.state\n return (\n <div className={'bargain-bind-phone'}>\n <div className=\"title\">绑定手机,先砍一刀</div>\n <List className={'list'}>\n <input type=\"tel\" onChange={this.handleChange} name='mobile' placeholder='手机号' maxLength={11}/>\n <label htmlFor=\"code\">\n <input type=\"tel\" id='code' onChange={this.handleChange} name='code' placeholder='验证码'\n maxLength={6}/>\n <div className={'send-code'} onClick={this.sendCode}>发送验证码</div>\n </label>\n </List>\n {\n this.state.isBargain &&\n <button onClick={this.handleClick}\n className={validateTel(mobile) && code ? 'active' : ''}>先砍一刀</button>\n }\n {\n !this.state.isBargain &&\n <Link className='button active' to={`/passport/login`}>去登录</Link>\n }\n </div>\n );\n }\n}\n\nexport default BargainInfo","import React, { Component, useState } from 'react'\nimport './bargain.scss'\nimport { Flex, Toast } from \"antd-mobile\"\nimport Overlay from '../overlay'\nimport BargainInfo from './bargainInfo'\nimport {differenceInSeconds, differenceInMinutes, differenceInHours, differenceInDays} from \"date-fns\"\nimport { api, getParam, http } from \"@/utils\"\nimport Ranking from \"@/components/bargainMiddlePage/ranking\"\nimport { compose } from \"redux\"\nimport { withRouter } from 'react-router-dom'\n\n\nclass Bargain extends Component {\n constructor(props) {\n super(props)\n this.state = {\n isShowOverlay: false,\n kanjiaIcon: require('./image/kanjia_icon.png'),\n info: '',\n outList: [],\n list: [],\n limitPeople: '',\n status: '',\n bargainCode: '',\n time: ''\n }\n }\n\n componentDidMount() {\n this.getBargainInfo()\n }\n\n // 获取助理好友\n getBargainRankList = (id, type) => {\n let data = {\n courseId: id,\n type: type\n }\n http.post(`${API.home}/m/bargain/rankList`, data).then((res) => {\n if (res.data.code === 200) {\n this.setState({\n list: res.data.data.list,\n outList: res.data.data.list[0]\n })\n } else {\n Toast.info(res.data.msg, 2)\n }\n })\n }\n\n\n //获取砍价信息\n getBargainInfo = () => {\n let data = {\n courseId: getParam('id')\n }\n http.post(`${API.home}/m/bargain/courseDetail`, data).then((res) => {\n if (res.data.code === 200) {\n this.setState({\n info: res.data.data,\n limitPeople: res.data.data.limit_people,\n bargainCode: res.data.data.bargain_code\n })\n if (res.data.data.bargain_status === 0) {\n this.getBargainRankList(getParam('id'), 0)\n }\n } else {\n Toast.info(res.data.msg, 2)\n }\n })\n }\n\n // 查看更多\n getMore = () => {\n this.setState({\n isShowMore: true\n })\n }\n\n // 自组件传给父组件的boxHide\n boxHide = (val) => {\n this.setState({isShowMore: val})\n }\n\n // 领取砍价神器\n toArtifact = () => {\n let data = {\n courseId: getParam('id')\n }\n http.post(`${API.home}/m/bargain/receiveLimit`, data).then((res) => {\n if (res.data.code === 200) {\n this.setState({\n isShowOverlay: true,\n status: 1,\n })\n } else {\n Toast.info(res.data.msg, 2)\n }\n })\n }\n\n // 使用砍价神器\n useArtifact = () => {\n this.toKanjia(getParam('id'), 2, 0)\n }\n\n // 加入购物车\n toCart = () => {\n let data = {\n course_id: getParam('id')\n }\n http.post(`${API.home}/m/cart/add`, data).then((res) => {\n if (res.data.code === 200 || res.data.code === 15001) {\n this.props.history.push('/shopcart')\n } else {\n Toast.info(res.data.msg, 2);\n }\n })\n }\n // 继续砍价\n continueBargain = () => {\n const code = this.state.bargainCode\n this.props.history.push(`/bargain-middle-page?id=${getParam('id')}&bargaincode=${code}&is_originator=1`)\n }\n\n // 我要砍价\n iWantBargain = () => {\n this.toKanjia(getParam('id'), 1, 0)\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 http.post(`${API.home}/m/bargain/toBargain`, data).then((res) => {\n if (res.data.code === 200) {\n if (type === 2) {\n this.setState({\n isShowOverlay: true,\n status: 2,\n })\n } else {\n if (res.data.data.user_status === 2) {\n this.setState({\n isShowOverlay: true,\n status: 3,\n })\n } else {\n // this.getBargainInfo()\n document.location.reload()\n }\n }\n\n } else {\n Toast.info(res.data.msg, 2)\n }\n })\n }\n\n\n // 关闭弹窗\n close = () => {\n this.setState({\n isShowOverlay: false,\n status: '',\n })\n }\n\n render() {\n return (\n <div className={'bargain-func'}>\n {/*bargain_status 砍价状态 0-砍价中,1砍价结束,待支付,2砍价过期(没有砍价记录没有砍价信息),3已购买*/}\n {\n this.state.info.bargain_status === 2 &&\n <BargainIntro limitPeople={this.state.limitPeople} iWantBargain={this.iWantBargain}/>\n }\n {\n (this.state.info.bargain_status === 0 || this.state.info.bargain_status === 1) &&\n <BargainStatus\n info={this.state.info}\n outList={this.state.outList}\n getMore={this.getMore}\n toArtifact={this.toArtifact}\n useArtifact={this.useArtifact}\n continueBargain={this.continueBargain}\n />\n }\n\n\n {\n this.state.isShowOverlay &&\n <Overlay>\n {/*绑定手机号*/}\n {\n this.state.status === 3 &&\n <BargainInfo iWantBargain={this.iWantBargain}/>\n }\n\n\n {/*领取砍价神器*/}\n {\n this.state.status === 1 &&\n <Artifact useArtifact={this.useArtifact}/>\n }\n {/*使用砍价神器*/}\n {\n this.state.status === 2 &&\n <UseArtifact toCart={this.toCart}/>\n }\n\n {\n this.state.status !== 0 &&\n <i onClick={this.close} className={'iconfont iconiconfront-2 bargain-close'}></i>\n }\n\n </Overlay>\n\n }\n\n\n {/*更多好友砍价*/}\n <Ranking list={this.state.list} icon={this.state.kanjiaIcon} limitPeople={this.state.limitPeople}\n isShowMore={this.state.isShowMore} boxHide={this.boxHide}></Ranking>\n\n </div>\n )\n }\n}\n\nfunction BargainIntro(props) {\n return (\n <div className=\"intro-outer\">\n <div className=\"intro-inner\">\n <Flex direction={'column'} justify={'center'} className={'intro-wrapper'}>\n <p>\n 邀请\n <span className={'indicator'}>{props.limitPeople}位</span>\n 好友帮忙砍价可获得\n <span className={'indicator'}>【砍价神器】</span>\n </p>\n <p>一刀绝杀,砍爆底价</p>\n <Flex.Item>\n <button onClick={props.iWantBargain}>我要砍价</button>\n </Flex.Item>\n </Flex>\n </div>\n </div>\n )\n}\n\nfunction BargainStatus(props) {\n\n const [day, setDay] = useState(0)\n const [hour, setHour] = useState(0)\n const [min, setMin] = useState(0)\n const [sec, setSec] = useState(0)\n\n\n let thirdRow, btn\n // is_artifact\t 0-再邀请多少人可以使用 1-可以使用未领取 2-已领取 3-已使用\n if (props.info.is_artifact === 0) {\n thirdRow =\n <div>再邀请<span className={'indicator'}>{props.info.invit_num}</span>位好友助力即可获得<span\n className={'indicator'}>【砍价神器】</span></div>\n } else if (props.info.is_artifact === 1) {\n thirdRow = <div>恭喜你获得<span className={'indicator'}>【砍价神器】</span></div>\n btn = <button onClick={props.toArtifact}>立即领取</button>\n } else if (props.info.is_artifact === 2) {\n thirdRow = <div>恭喜你获得<span className={'indicator'}>【砍价神器】</span></div>\n btn = <button onClick={props.useArtifact}>立即使用</button>\n }\n\n\n let date = props.info.end_time * 1000\n let now = Date.now()\n setInterval(() => {\n date -= 1000\n setSec(differenceInSeconds(new Date(date), now) % 60)\n setMin(differenceInMinutes(new Date(date), now) % 60)\n setHour(differenceInHours(new Date(date), now) % 24)\n setDay(differenceInDays(new Date(date), now) % 24)\n\n }, 1000)\n\n\n return (\n <div className=\"status-outer\">\n\n {\n props.info.bargain_status === 0 &&\n <div className=\"status-inner\">\n\n <Flex direction={'column'}>\n <div className={'first-row'}>\n <div>\n 已砍<span className={'indicator'}>{props.info.bargain_price}元</span>\n <span className={'time hour'}>{String(hour).padStart(2, 0)}</span> : \n <span className={'time min'}>{String(min).padStart(2, 0)}</span> : \n <span className={'time sec'}>{String(sec).padStart(2, 0)}</span>\n <span className='over'>后砍价结束</span>\n </div>\n <div onClick={props.getMore}>{props.info.assist_num}位好友助力></div>\n </div>\n\n <div className=\"sec-row\">\n <div>\n <img\n src={props.outList.avatar_file}\n alt=\"\"/>\n <span className='name'>{props.outList.user_name}</span>\n </div>\n <div>\n <div>砍掉<span className={'indicator'}>{props.outList.amount}元</span></div>\n <button onClick={props.continueBargain}>继续砍价</button>\n </div>\n </div>\n <div className=\"third-row\">\n {thirdRow}\n {btn}\n </div>\n </Flex>\n </div>\n }\n\n {\n props.info.bargain_status === 1 &&\n <div className=\"status-inner status-over\">\n\n <Flex direction={'column'}>\n <div className={'first-row'}>\n <div>\n 已砍<span className={'indicator'}>{props.info.bargain_price}元</span>\n <span className='bargain-over'>\n 砍价结束\n </span>\n </div>\n <div onClick={props.getMore}>{props.info.assist_num}位好友助力></div>\n </div>\n <div className=\"time-tobuy\">\n 砍价金额将于\n <span className={'time hour'}>{String(day).padStart(2, 0)}</span><span\n className={'unit'}> 天 </span>\n <span className={'time min'}>{String(hour).padStart(2, 0)}</span><span\n className={'unit'}> 时 </span>\n <span className={'time sec'}>{String(min).padStart(2, 0)}</span><span\n className={'unit'}>分</span>\n 后清零,请尽快完成支付\n </div>\n </Flex>\n </div>\n }\n </div>\n )\n}\n\n\n{/*领取砍价神器*/\n}\n\nfunction Artifact(props) {\n return (\n <div className='artifact-box'>\n <p className='top-tip'>恭喜你获得【砍价神器】!</p>\n <p className='middle-tip'>\n 您可以使用\n <span className={'indicator'}>【砍价神器】</span>\n 再砍一刀\n </p>\n <button className='use-artifact' onClick={props.useArtifact}>立即使用</button>\n </div>\n )\n}\n\nfunction UseArtifact(props) {\n return (\n <div className='use-artifact-box'>\n <img className='top-img' src={require('./image/kanjia_cg_icon.png')} alt=\"\"/>\n <p className='top-tip'>厉害了,又砍掉了10元!</p>\n <p className='middle-tip'>\n 你已经砍了\n <span className={'indicator'}>109元</span>\n 没见过你这么能砍的人...\n </p>\n <p className='btm-tip'>\n 不能再砍了哦~\n </p>\n <button className='tubuy' onClick={props.toCart}>去支付</button>\n </div>\n )\n}\n\n\nexport default compose(\n withRouter\n)(Bargain)\n","import React, {Component} from 'react'\nimport './index.scss'\nimport {getParam} from \"@/utils\"\nimport {connect} from \"react-redux\"\nimport {Link} from \"react-router-dom\"\nimport {Flex} 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 }\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 = this.props.courseInfo.courseInfo.course_info;\n if(courseInfo.group_status === 3) {\n this.props.history.push(`/order?id=${getParam('id')}&&groupon_code=${pdd_order_id}`);\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 const {pdd_price, number, data} = this.state;\n if(browser.isWeixin) {\n let share = this.state.share;\n this.setState({\n share: !share,\n });\n let shareData = {\n title: `【仅剩${number}个名额】我${pdd_price}元拼了《${data.course_title}》`,\n desc: data.course_title, // 分享描述\n link: location.origin + `/detail??id=${data.course_id}`, // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致\n imgUrl: data.image_name, // 分享图标\n };\n http.post(`${API['base-api']}/m/sale/signature`).then(res => {\n const {nonce_str, signature, timestamp} = res.data;\n wx.config({\n \"debug\": false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。\n \"appId\": 'wx23dac6775ac82877', // 必填,公众号的唯一标识\n \"timestamp\": timestamp, // 必填,生成签名的时间戳\n \"nonceStr\": nonce_str, // 必填,生成签名的随机串\n \"signature\": signature, // 必填,签名\n jsApiList: [\n 'hideMenuItems',\n 'showMenuItems',\n 'updateAppMessageShareData',\n 'updateTimelineShareData',\n 'onMenuShareWeibo',\n 'onMenuShareAppMessage',\n ], // 必填,需要使用的JS接口列表\n });\n });\n wx.ready(function () { //需在用户可能点击分享按钮前就先调用\n wx.hideAllNonBaseMenuItem();\n wx.showMenuItems({\n menuList: ['menuItem:share:appMessage' , 'menuItem:share:timeline'] // 要显示的菜单项,所有menu项见附录3\n });\n wx.updateAppMessageShareData({ \n ...shareData,\n success: function () {\n // 设置成功\n }\n })\n wx.updateTimelineShareData({\n ...shareData,\n success: function () {\n // 设置成功\n }\n })\n });\n }else{\n Toast.info('请在微信中使用分享功能!', 2);\n }\n }\n\n componentWillReceiveProps(nextProps) {\n this.setState({\n countdown: nextProps.countdown,\n })\n }\n\n componentDidMount() {\n if (this.props.courseInfo && this.props.courseInfo.courseInfo && this.props.courseInfo.courseInfo.course_info && this.props.courseInfo.courseInfo.course_info.pdd_group_info) {\n let now_groupon_list = this.props.courseInfo.courseInfo.course_info.pdd_group_info.now_groupon_list;\n if(now_groupon_list && now_groupon_list.length > 0) {\n setInterval(() => {\n now_groupon_list.map(item=>{\n item.end_time -= 1;\n return item;\n });\n this.setState({\n now_groupon_list,\n })\n }, 1000);\n }\n }\n }\n\n hideMbc = () => {\n this.setState({\n alreadyIn: false\n });\n }\n\n formatTimeByMillisecond = (millisecond) => {\n let date = millisecond * 1000,\n hours = 0,\n minutes = 0,\n seconds = 0;\n date -= 1000\n hours = `${parseInt(date / (60 * 60 * 1000))}`.padStart(2, 0);\n minutes = `${parseInt((date - hours * 3600000) / 60000)}`.padStart(2, 0);\n seconds = `${parseInt((date - hours * 3600000 - minutes * 60000 ) / 1000)}`.padStart(2, 0);\n return `${hours}:${minutes}:${seconds}`;\n }\n\n render() {\n const {alreadyIn, countdown, now_groupon_list} = this.state;\n let groupInfo = '',groupon_member = '', group_status = -1, groupSuccessMbc = null;\n if (this.props.courseInfo && this.props.courseInfo.courseInfo && this.props.courseInfo.courseInfo.course_info) {\n groupInfo = this.props.courseInfo.courseInfo.course_info.pdd_group_info;\n groupon_member = groupInfo.groupon_member;\n group_status = this.props.courseInfo.courseInfo.course_info.group_status;\n }\n if(group_status === 4) {\n if(groupon_member.member) {\n const {number} = groupon_member;\n let ary=[],num = number;\n while(num != 0) {\n ary.push(num);\n num--;\n }\n let groupTip = (<div className='group-user-list'>\n <Flex justify='center' className='imgList'>\n {\n groupon_member.member.map(item => {\n return (\n <div className='imgContainer' key={Math.random()}>\n <img className='imgname' src={item.avatar} alt='' />\n {\n item.user_type === 1 ? (\n <div className='leaderFlag'>\n <span>团长</span>\n </div>\n ) : null\n }\n </div>);\n })\n }\n {\n ary.map(item => {\n return (<div className='imgContainer' key={Math.random()}>\n <div className='imgname'>\n <i className='iconfont iconwode-xianxing no-body'></i>\n </div>\n </div>)\n })\n }\n </Flex>\n </div>);\n groupSuccessMbc = <div className='groupSuccessMbc' onClick={this.hideMbc}>\n <div className='content'>\n <p>你已参团</p>\n {groupTip}\n <div className='group-btn' onClick={this.invitedFriends}>邀请好友参团 {countdown} 后结束</div>\n <p className='dec'>分享到3个群后,成团率高达98%</p>\n </div>\n </div>;\n }\n\n }\n \n return (\n <div className='group-box'>\n <div className=\"group-title\">\n <span>{groupInfo.now_groupon_total}人正在开团,可直接参与</span>\n <span className='more' onClick={this.getMore}>\n 查看更多\n <i className='iconfont iconiconfront-70'></i>\n </span>\n\n </div>\n <ul className=\"group-list\">\n {\n groupInfo.now_groupon_list && groupInfo.now_groupon_list.length > 0 && groupInfo.now_groupon_list.map((item, index) => {\n return (\n <li key={index} className='group-item'>\n <img className='avatar' src={item.avatar} alt=\"\"/>\n <div className='user-name text-overflow-one'>\n {item.user_name}\n </div>\n <div className='group-status'>\n <p>还差<span className='red'>{item.number}人</span>拼成</p>\n <p>剩余 {this.formatTimeByMillisecond(item.end_time)}</p>\n </div>\n <span onClick={()=>{this.toPay(item.pdd_order_id)}} className='topay'>去参团</span>\n </li>\n )\n })\n }\n </ul>\n <div className=\"group-dec\">\n <span>\n <i className='iconfont iconiconfront-1'></i>\n ·好友参团 ·人满成交 ·人不满退款\n </span>\n <span className='allNum'>{`累计${groupInfo.person_num}人成团`}</span>\n </div>\n {\n (alreadyIn && group_status === 4) && (\n <>\n {groupSuccessMbc}\n </>\n )\n \n }\n {/*更多*/}\n {\n this.state.isShowMore &&\n <div className=\"moreMbc\">\n <div className=\"content\">\n <div className=\"title-box\">\n 正在拼团\n </div>\n <ul className='more-group-list'>\n {\n groupInfo.now_groupon_list && groupInfo.now_groupon_list.length > 0 && groupInfo.now_groupon_list.map((item, index) => {\n return (\n <li key={index} className='group-item'>\n <img className='avatar' src={item.avatar} alt=\"\"/>\n <div className='user-name'>\n <p className='name text-overflow-one'>{item.user_name}</p>\n <p className='time'>剩余 {this.formatTimeByMillisecond(item.end_time)}</p>\n </div>\n <p className='group-status'>还差{item.number}人</p>\n <span onClick={()=>{this.toPay(item.pdd_order_id)}} className='topay'>去参团</span>\n </li>\n )\n })\n }\n </ul>\n <div className='more-group-dec'>\n 仅显示10个正在开团的人\n </div>\n <i onClick={this.closeMore} className={'iconfont iconiconfront-2 close'}></i>\n </div>\n \n </div>\n }\n\n </div>\n )\n }\n}\n\nexport default connect(\n state => ({courseInfo: state}),\n null\n)(Group)\n","import React, {Component} from 'react'\nimport {Tabs, WhiteSpace} from 'antd-mobile'\nimport './index.scss'\nimport {api, getParam, http} from \"@/utils\"\nimport {Toast} from 'antd-mobile'\n\n\nclass OutLine extends Component {\n constructor(props) {\n super(props)\n this.state = {\n stageInfo: []\n }\n }\n\n htmlDecode = (content) => {\n let e = document.createElement('div');\n e.innerHTML = content;\n return e.childNodes.length === 0 ? \"\" : e.childNodes[0].nodeValue;\n }\n\n componentDidMount() {\n this.getList()\n }\n\n // 获取大纲数据\n getList = () => {\n http.get(`${API.home}/m/course/syllabuses/${getParam('id')}`).then((res) => {\n if (res.data.code === 200) {\n this.setState({\n stageInfo: res.data.data\n })\n } else {\n Toast.info(res.data.msg, 2)\n }\n })\n }\n\n render() {\n const tabs = [\n {title: '介绍'},\n {title: '大纲'}\n ];\n let introduce = ''\n if (this.props.data.course_info) {\n introduce = this.props.data.course_info\n }\n return (\n <div className='course-detail'>\n <WhiteSpace/>\n <Tabs tabs={tabs}>\n {/*介绍*/}\n <div className='introduce'>\n <p>讲师:{introduce.teachers}</p>\n <p>课时:{introduce.course_hour}</p>\n <p>时间:{introduce.start_time}</p>\n <div className='dec' dangerouslySetInnerHTML={{__html: this.htmlDecode(introduce.intro)}}></div>\n </div>\n {/*大纲*/}\n <div className='outline'>\n {\n this.state.stageInfo && this.state.stageInfo.length > 0 && this.state.stageInfo.map((item, index) => {\n return (\n <div className='stagebox' key={index}>\n <h1 className='stage text-overflow-1'>{item.stage_name}</h1>\n {\n item.lesson.map((item, index) => {\n return (\n <ul key={index}>\n <h2 className='classhour'>\n <span className='title text-overflow-1'>{item.name}</span>\n {/*\n class_status\n 0-未购买未开单集购买\n 1-未购买已开单集购买\n 2-已购买直播结束已上传视频\n 3-已购买未开课、已购买直播结束\n 4-已购买直播中\n 5-可试听且有试听权限\n 6-可试听但无试听权限\n */}\n { // 试听\n item.class_status === 7 &&\n <span className='btn-right-10 audition'\n onClick={this.props.toAudition}>试听\n <i className='iconfont iconcelluar'></i>\n </span>\n }\n { // 未购买未开单集购买:上锁标志,点击提示购买\n item.class_status === 0 &&\n <i className='iconfont iconiconfront-74 icon-right-22'></i>\n }\n { // 未购买已开单集购买:显示单集价格,点击购买单集\n 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 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 item.class_status === 2 &&\n <i className='iconfont icondanseshixintubiao-23 icon-right-22'></i>\n }\n </h2>\n {\n item.point && item.point.length > 0 && item.point.map((item, index) => {\n const type = (\n <span>\n {item.type === 1 &&\n <span>知识点{index + 1}:</span>\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 </ul>\n )\n })\n }\n </div>\n )\n })\n }\n </div>\n </Tabs>\n <WhiteSpace/>\n </div>\n );\n }\n\n}\n\nexport default OutLine;\n","import React, {Component} from 'react'\nimport './index.scss'\nimport {api, getParam, http} from \"@/utils\"\nimport {Toast, Flex} from 'antd-mobile'\nimport {connect} from \"react-redux\"\nimport {withRouter} from 'react-router-dom'\nimport {compose} from \"redux\"\n\nclass ShareRank extends Component {\n constructor(props) {\n super(props)\n this.state = {\n list: [], // 分销排行榜\n rankingslice: [], // 分销排行榜前两名\n code: '', // 分销code\n shareRank: false\n }\n }\n\n componentDidMount() {\n this.getRankList()\n this.getCode()\n }\n\n // 获取排行榜\n getRankList = () => {\n http.get(`${API.home}/dist/rankList/${getParam('id')}`).then((res) => {\n if (res.data.code === 200) {\n this.setState({\n list: res.data.data,\n rankingslice: res.data.data.slice(0, 2)\n })\n } else {\n Toast.info(res.data.msg, 2)\n }\n })\n }\n\n // 获取分销码\n getCode = () => {\n const {user} = this.props\n const uid = user && user.data && user.data.uid\n if (!uid) return\n let data = {\n course_id: getParam('id')\n }\n http.post(`${API.home}/dist/createCode`, data).then((res) => {\n if (res.data.code === 200) {\n this.setState({\n code: res.data.data.code\n })\n } else {\n Toast.info(res.data.msg, 2)\n }\n })\n }\n\n // 点击分销跳转到海报页\n share = (info) => {\n const {user} = this.props\n const uid = user && user.data && user.data.uid\n if (!uid) {\n this.props.history.push('/passport/login')\n } else {\n const courseId = getParam('id')\n const dist_first = info.dist_first_level_ti\n const uid = info.uid\n const dist_code = this.state.code\n this.props.history.push(`/shareposter?courseId=${courseId}&dist_first=${dist_first}&uid=${uid}&dist_code=${dist_code}`)\n }\n }\n\n\n // 打开分销排行榜弹窗\n openRanking = () => {\n this.setState({\n shareRank: true\n })\n }\n\n // 关闭弹窗\n colse = () => {\n this.setState({\n shareRank: false\n })\n }\n\n render() {\n let info = ''\n if (this.props.courseInfo && this.props.courseInfo.courseInfo && this.props.courseInfo.courseInfo.course_info) {\n info = this.props.courseInfo.courseInfo.course_info\n }\n return (\n <div className='share-ranking'>\n <Flex className='share-container' justify='between'>\n <Flex className='share-list'>\n <span className=\"title\">排行榜:</span>\n <div className='ranking-box' onClick={this.openRanking}>\n {\n this.state.rankingslice && this.state.rankingslice.length > 0 && this.state.rankingslice.map((item, index) => {\n return (\n <span key={index} className=\"ranking-mess\">\n <img src={item.head_imgurl} alt=\"\"/>\n <i>{item.amount}元</i>\n </span>\n )\n })\n }\n\n\n </div>\n </Flex>\n <Flex className='share-money' justify='between' align='center'>\n <img onClick={this.openRanking} className=\"ranking-ellipsis\"\n src=\"https://julyedu-img.oss-cn-beijing.aliyuncs.com/Image/train/ellipsis.png\" alt=\"\"/>\n <button className=\"share\" onClick={this.share.bind(this, info)}>分享赚{info.dist_first_level_ti}元\n </button>\n </Flex>\n </Flex>\n\n\n {\n this.state.shareRank &&\n <div className=\"shareMbc\">\n <div className=\"content\">\n <div className=\"title-box\">\n <span className=\"lable\">赚钱排行榜</span>\n <span className=\"tips\">只展示前9名用户</span>\n </div>\n <ul>\n {\n this.state.list && this.state.list.length > 0 && this.state.list.map((item, index) => {\n return (\n <li key={index}>\n <img src={item.head_imgurl} alt=\"\"/>\n <span className='course-title'>{item.user_name}</span>\n <span className='course-price'>{item.amount}元</span>\n </li>\n )\n })\n }\n </ul>\n <div className='shareBtn'>\n <button onClick={this.share.bind(this, info)}>分享赚{info.dist_first_level_ti}元</button>\n </div>\n <i onClick={this.colse} className={'iconfont iconiconfront-2 close'}></i>\n </div>\n\n </div>\n }\n </div>\n );\n }\n}\n\nexport default compose(\n connect(\n state => ({\n courseInfo: state,\n user: state.user\n }),\n null\n ),\n withRouter\n)(ShareRank)\n","import React, {Component} from 'react'\nimport './index.scss'\nimport {CallApp} from '../../../common'\n\n\nclass Audition extends Component {\n constructor(props) {\n super(props);\n }\n\n colse = () => {\n this.props.boxHide(false);\n }\n\n render() {\n return (\n <div>\n {\n this.props.auditionBox &&\n <div className='popup-box'>\n <div className='content audition-box'>\n <p className='audition-header'>当前页面不支持试听</p>\n <p className='audition-dec'>请前往APP试听</p>\n <CallApp className='btn btn-18B4ED' text='立即前往'></CallApp>\n </div>\n <i onClick={this.colse} className={'iconfont iconiconfront-2 close'}></i>\n </div>\n }\n </div>\n );\n }\n\n}\n\nexport default Audition;\n","import React, {Component} from 'react'\nimport './index.scss'\nimport {api, 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 }\n }\n\n componentDidMount() {\n if (getParam('is_class') === 1 || getParam('weixinpay')) {\n this.payCallback()\n }\n if (browser.isWeixin) {\n this.isweixinPay()\n }\n }\n\n // 选择支付方式\n check = (type) => {\n this.setState({\n payType: type\n })\n }\n\n // 确定购买\n toBuy = () => {\n http.get(`${API.home}/sys/createClassOrder/${this.props.data.video_id}`).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(this.state.orderId) : this.weixinPay(this.state.orderId)\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\").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\").toLowerCase();\n } else {\n Toast.info(res.data.msg, 2)\n }\n })\n }\n }\n // 支付宝支付\n alipayPay = (orderId) => {\n http.get(`${API['base-api']}/pay/alipay/wap_charge/oid/${orderId}`).then((res) => {\n if (res.data.errno === 0) {\n window.location = res.data.data.url;\n } else {\n Toast.info(res.data.msg, 2)\n }\n })\n }\n onBridgeReady = (data) => {\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 this.payCallback()\n } else {\n alert('支付失败')\n }\n }\n )\n }\n // 微信内部支付\n isweixinPay = () => {\n let weixin_code = getParam('code')\n if (weixin_code) {\n if (getParam('oid') === undefined) {\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 this.onBridgeReady(data)\n if (typeof WeixinJSBridge == \"undefined\") {\n if (document.addEventListener) {\n document.addEventListener('WeixinJSBridgeReady', this.onBridgeReady, false)\n } else if (document.attachEvent) {\n document.attachEvent('WeixinJSBridgeReady', this.onBridgeReady)\n document.attachEvent('onWeixinJSBridgeReady', this.onBridgeReady)\n }\n } else {\n this.onBridgeReady()\n }\n } else {\n Toast.info(res.data.msg, 2)\n }\n })\n }\n }\n }\n\n // 支付完成之后获取状态\n payCallback = () => {\n http.get(`${API.home}/sys/orderStatus/${getParam('oid')}`).then((res) => {\n if (res.data.data.errno == '200') {\n // 正常购买单集成功\n this.setState({\n status: 6\n })\n } else if (res.data.data.errno == '201') {\n // 0元参团\n this.setState({\n status: 4\n })\n } else if (res.data.data.errno == '202') {\n // 0元购\n this.setState({\n status: 3\n })\n } else if (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 })\n } else {\n Toast.info(res.data.data.msg, 2)\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 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\n return (\n <div>\n {\n this.props.singleBox &&\n <div className='popup-box'>\n {\n this.state.status === 1 &&\n <div className='content singleset-payment'>\n <div className='price-box'>\n <span>实付款:</span>\n <p>{this.props.data.class_price}元</p>\n </div>\n <div className='course-info'>\n <p className='text-overflow-1'><span>课程:</span>\n {this.props.title}\n </p>\n <p className='text-overflow-1'><span>课时:</span>\n {this.props.data.name}\n </p>\n </div>\n <div className='payment-type'>\n <label>支付方式:</label>\n {\n !browser.isWeixin &&\n <p onClick={this.check.bind(this, '1')}>\n <i className='iconfont iconzhifubaox-'></i>\n <span>支付宝</span>\n <i className={`iconfont icondanseshixintubiao-5 redio ${this.state.payType === '1' ? 'redioed' : ''}`}></i>\n </p>\n }\n\n <p onClick={this.check.bind(this, '0')}>\n <i className='iconfont iconweixinzhifu buy'></i>\n <span>微信支付</span>\n <i className={`iconfont icondanseshixintubiao-5 redio ${this.state.payType === '0' ? 'redioed' : ''}`}></i>\n </p>\n </div>\n <div className='btn btn-18B4ED' onClick={this.toBuy}>确认购买</div>\n </div>\n }\n {\n this.state.status === 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.state.nowPrice}元购买。</div>\n <div className=\"dec\">· 超过3天,按照未够集数/全部集数等比例计费,{this.state.laterPrice}元购买全集。</div>\n <div className='btn btn-18B4ED'>开始学习</div>\n <div className='btn btn-FF4000' onclick={this.toBuyAll()}>¥{this.state.nowPrice}购买全集\n </div>\n </div>\n }\n {\n this.state.status === 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 this.state.status === 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 this.state.status === 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?id=${getParam('id')}`} className='btn btn-18B4ED'>去学习</Link>\n </div>\n }\n {\n this.state.status === 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 </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 { getParam, http } from \"@/utils\"\nimport { Toast } from 'antd-mobile'\nimport { Link } from 'react-router-dom'\nimport { getCourses } from \"@/components/detail/actions\"\nimport { connect } from \"react-redux\"\nimport './index.scss'\nimport Overlay from '../overlay'\n\n\nclass BtnStatus extends Component {\n constructor(props) {\n super(props)\n this.state = {\n isbuy: 1,\n is_baoming: 0,\n group_status: 3,\n in_cart: false,\n countdown: 0,\n barInfo: ''\n }\n }\n\n componentDidMount() {\n this.getBargainInfo()\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 this.setState({\n ...nextProps.data.course_info,\n countdown: nextProps.countdown,\n });\n }\n\n // 加入购物车 type:1 加入购物车,2加入购物车并跳转到购物车页面去支付\n toCart = (type) => {\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 } else {\n this.props.history.replace('/shopcart');\n\n }\n\n } else if (res.data.code === 15001) {\n this.props.history.replace('/shopcart');\n } else {\n Toast.info(res.data.msg, 2);\n }\n })\n }\n // 直接购买\n tobuy = () => {\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 (this.state.barInfo.bargain_status === 2) {\n this.toCart(2)\n } else {\n // 取消砍价记录\n this.setState({\n isShowOverlay: true,\n bargainStatus: 1,\n })\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 window.location.href = '/shopcart'\n } else {\n Toast.info(res.data.msg, 2)\n }\n })\n }\n close = () => {\n this.setState({\n isShowOverlay: false,\n bargainStatus: '',\n })\n }\n // 砍价接口\n toKanjia = () => {\n const {user} = this.props\n const uid = user && user.data && user.data.uid\n if (!uid) {\n this.props.history.push('/passport/login')\n } else {\n let data = {\n course_id: getParam('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 if (res.data.code === 200) {\n // this.props.getBargainInfo()\n document.location.reload()\n } else {\n Toast.info(res.data.msg, 2)\n }\n })\n }\n }\n\n\n //获取砍价信息\n getBargainInfo = () => {\n const {user} = this.props\n const uid = user && user.data && user.data.uid\n let data = {\n courseId: getParam('id')\n }\n http.post(`${API.home}/m/bargain/toBargain`, data).then((res) => {\n if (res.data.code === 200) {\n this.setState({\n barInfo: res.data.data\n })\n } else {\n Toast.info(res.data.msg, 2)\n }\n })\n }\n\n render() {\n let info = ''\n if (this.props.data && this.props.data.course_info) {\n info = this.props.data.course_info\n }\n const {countdown} = this.state;\n const {user} = this.props\n const uid = user && user.data && user.data.uid\n\n return (\n\n <div>\n {/*正常购买*/}\n {\n info.is_baoming === 0 && info.group_status !== 3 &&\n <div className='btns-box'>\n <a className='consult consult-s' href=\"https://q.url.cn/AB8aue?_type=wpa&qidian=true\">\n <i className='iconfont iconerji'></i>\n <span>课程咨询</span>\n </a>\n {\n info.in_cart &&\n <Link to='/shopcart' className='btn btn-s bg-FCCD05'>去购物车结算</Link>\n }\n {\n !info.in_cart &&\n <button className='btn btn-s bg-FCCD05' onClick={e => this.toCart(1)}>加入购物车</button>\n\n }\n <Link to='/order' className='btn btn-s bg-FD7700'>立即报名</Link>\n </div>\n }\n\n {/*已购买*/}\n {\n info.is_baoming === 1 &&\n <div className='btns-box'>\n <a className='consult consult-m' href=\"https://q.url.cn/AB8aue?_type=wpa&qidian=true\">\n <i className='iconfont iconerji'></i>\n <span>课程咨询</span>\n </a>\n <Link to={`/play?id=${getParam('id')}`} className='btn btn-m bg-09f'>开始学习</Link>\n </div>\n }\n {/*拼团 未开团*/}\n {\n info.is_baoming === 0 && info.group_status === 3 &&\n <div className='btns-box'>\n <a className='consult consult-s' href=\"https://q.url.cn/AB8aue?_type=wpa&qidian=true\">\n <i className='iconfont iconerji'></i>\n <span>课程咨询</span>\n </a>\n <button className='btn btn-s bg-F4AAA7' onClick={e => this.toCart(2)}>\n <span>{`¥ ${info.price1}`}</span>\n <span>直接购买</span>\n </button>\n <button className='btn btn-s bg-E02E24'>\n <Link to={`/order?id=${getParam('id')}`}>\n <span>{`¥ ${info.pdd_group_info.price}`}</span>\n <span>一键开团</span>\n </Link>\n </button>\n </div>\n\n }\n {/*拼团 已开团*/}\n {\n info.is_baoming === 0 && info.group_status === 4 &&\n <div className='btns-box'>\n <a className='consult consult-s' href=\"https://q.url.cn/AB8aue?_type=wpa&qidian=true\">\n <i className='iconfont iconerji'></i>\n <span>课程咨询</span>\n </a>\n <div className='btn btn-l bg-E02E24' onClick={this.props.invitedFriends}>\n 邀请好友参团 {countdown} 后结束\n </div>\n </div>\n }\n\n {/*砍价*/}\n {\n this.props.data && this.props.data.is_bargain &&\n <div className='btns-box'>\n <a className='consult consult-s' href=\"https://q.url.cn/AB8aue?_type=wpa&qidian=true\">\n <i className='iconfont iconerji'></i>\n <span>课程咨询</span>\n </a>\n <button className='btn btn-s bg-F4AAA7'>\n <span>¥{info.price1}</span>\n <span onClick={this.tobuy}>直接购买</span>\n </button>\n {\n (this.state.barInfo.bargain_status === 2 || !uid) &&\n <button className='btn btn-s bg-E02E24' onClick={this.toKanjia}>\n 我要砍价\n </button>\n }\n {\n (this.state.barInfo.bargain_status === 0 || this.state.barInfo.bargain_status === 1) && (uid) &&\n <button className='btn btn-s bg-E02E24'>\n <span>¥{this.state.barInfo.amount}</span>\n <span onClick={e => this.toCart(2)}>去支付</span>\n </button>\n }\n </div>\n }\n\n {/*特殊课程*/}\n {\n this.state.isbuy === 20 &&\n <div className='btns-box'>\n <a className='consult-l' href=\"https://q.url.cn/AB8aue?_type=wpa&qidian=true\">\n <i className='iconfont iconerji'></i>\n <span>课程咨询</span>\n </a>\n </div>\n }\n\n\n {\n this.state.isShowOverlay &&\n <Overlay>\n {/*引导关注公众号*/}\n {\n this.state.bargainStatus === 1 &&\n <CancelBargain close={this.close} cancel={this.cancel}/>\n }\n\n <i onClick={this.close} className={'iconfont iconiconfront-2 bargain-close'}></i>\n </Overlay>\n\n }\n </div>\n )\n }\n}\n\n\nfunction CancelBargain(props) {\n return (\n <div className='cancel-bargain'>\n <p className='top-img'><i className='iconfont icondanseshixintubiao-8'></i></p>\n <p className='tip-mess'>您已发起砍价,直接购买将清除已砍金额。直接购买可使用优惠券~</p>\n <div className=\"btns\">\n <button onClick={props.close}>取消</button>\n <button onClick={props.cancel}>确定</button>\n </div>\n </div>\n )\n}\n\nexport default connect(\n state => ({\n user: state.user\n }),\n {getCourses}\n)(BtnStatus)\n","import React, {Component} from 'react'\nimport {Carousel, WingBlank} from 'antd-mobile'\n\nimport './index.scss'\nimport {api, getParam, http} from \"@/utils\"\n\n// 课程页面滚动广告\nclass Carouselw extends Component {\n constructor(props) {\n super(props)\n this.state = {\n list: []\n }\n }\n\n componentDidMount() {\n const _this = this\n _this.getList()\n this.timer = setInterval(function () {\n _this.getList()\n }, 10000);\n\n }\n\n componentWillUnmount() {\n this.timer && clearTimeout(this.timer);\n }\n\n // 获取课程接口\n getList = () => {\n let data = {\n course_id: getParam('id')\n }\n http.post(`${API.home}/m/course/barrages`, data).then((res) => {\n if (res.data.code === 200) {\n this.setState({\n list: res.data.data,\n });\n }\n })\n }\n\n render() {\n return (\n <WingBlank>\n <Carousel className=\"my-carousel\"\n vertical\n dots={false}\n autoplay\n infinite\n >\n {\n this.state.list &&\n <div className=\"v-item text-overflow-one\">\n <img src={this.state.list.avatar} alt=\"\"/>\n {this.state.list.user_name} {this.state.list.live_msg}\n </div>\n }\n\n </Carousel>\n </WingBlank>\n )\n }\n}\n\nexport default Carouselw","import React, {Component} from 'react'\nimport './index.scss'\nimport Bargain from './bargain'\nimport Group from './group'\nimport OutLine from './outline'\nimport {HeaderBar, CallApp} from '../../common'\nimport ShareRank from \"./shareRank\"\nimport Audition from \"./audition\"\nimport Single from \"./single\"\nimport BtnStatus from \"./btnstatus\"\nimport Carouselw from \"./carousel\"\nimport {connect} from \"react-redux\"\nimport {fetchCoursesListIfNeeded} from \"./actions\"\nimport {api, getParam, http, browser} from \"@/utils\"\nimport {Toast} from 'antd-mobile'\nimport {compose} from \"redux\";\n\nclass Detail extends Component {\n\n constructor(props) {\n super(props)\n this.state = {\n isbuy: 0,\n isvip: 0,\n auditionBox: false,\n singleBox: false,\n shareRank: false,\n singMess: '',\n barInfo: '',\n share: false,\n countdown: '00:00:00',\n }\n }\n\n componentDidMount() {\n this.props.fetchCoursesListIfNeeded();\n }\n\n // 点击子组件试听按钮\n toAudition = () => {\n const {user} = this.props\n const uid = user && user.data && user.data.uid\n if (!uid) {\n this.props.history.push('/passport/login')\n } else {\n this.setState({\n auditionBox: true,\n })\n }\n }\n // 点击子组件单集购买按钮\n toSingleset = (item) => {\n const {user} = this.props\n const uid = user && user.data && user.data.uid\n if (!uid) {\n this.props.history.push('/passport/login')\n } else {\n this.setState({\n singleBox: true,\n singMess: item\n })\n }\n }\n\n componentWillReceiveProps(nextProps) {\n let _this = this;\n if (nextProps.courseInfo.course_info) {\n let courseInfo = nextProps.courseInfo.course_info;\n if (courseInfo.group_status === 3 || courseInfo.group_status === 4) {\n let endTime = courseInfo.pdd_group_info.groupon_member.end_time;\n let date = endTime * 1000,\n hours = 0,\n minutes = 0,\n seconds = 0;\n setInterval(() => {\n date -= 1000\n hours = `${parseInt(date / (60 * 60 * 1000))}`.padStart(2, 0);\n minutes = `${parseInt((date - hours * 3600000) / 60000)}`.padStart(2, 0);\n seconds = `${parseInt((date - hours * 3600000 - minutes * 60000) / 1000)}`.padStart(2, 0);\n _this.setState({\n countdown: `${hours}:${minutes}:${seconds}`\n });\n }, 1000)\n }\n }\n }\n\n invitedFriends = () => {\n const {course_title, image_name, course_id, pdd_group_info, pdd_group_info: {groupon_member, groupon_member: {number}, price}} = this.props.courseInfo.course_info;\n if (browser.isWeixin) {\n let share = this.state.share;\n this.setState({\n share: !share,\n });\n let shareData = {\n title: `【仅剩${number}个名额】我${price}元拼了《${course_title}》`,\n desc: course_title, // 分享描述\n link: location.origin + `/detail??id=${course_id}`, // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致\n imgUrl: image_name, // 分享图标\n };\n console.log(shareData);\n http.post(`${API['base-api']}/m/sale/signature`).then(res => {\n const {nonce_str, signature, timestamp} = res.data;\n wx.config({\n \"debug\": false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。\n \"appId\": 'wx23dac6775ac82877', // 必填,公众号的唯一标识\n \"timestamp\": timestamp, // 必填,生成签名的时间戳\n \"nonceStr\": nonce_str, // 必填,生成签名的随机串\n \"signature\": signature, // 必填,签名\n jsApiList: [\n 'hideMenuItems',\n 'showMenuItems',\n 'updateAppMessageShareData',\n 'updateTimelineShareData',\n 'onMenuShareWeibo',\n 'onMenuShareAppMessage',\n ], // 必填,需要使用的JS接口列表\n });\n });\n wx.ready(function () { //需在用户可能点击分享按钮前就先调用\n wx.hideAllNonBaseMenuItem();\n wx.showMenuItems({\n menuList: ['menuItem:share:appMessage', 'menuItem:share:timeline'] // 要显示的菜单项,所有menu项见附录3\n });\n wx.updateAppMessageShareData({\n ...shareData,\n success: function () {\n // 设置成功\n }\n })\n wx.updateTimelineShareData({\n ...shareData,\n success: function () {\n // 设置成功\n }\n })\n });\n } else {\n Toast.info('请在微信中使用分享功能!', 2);\n }\n }\n\n //获取砍价信息\n getBargainInfo = () => {\n let data = {\n courseId: getParam('id')\n }\n http.post(`${API.home}/m/bargain/courseDetail`, data).then((res) => {\n if (res.data.code === 200) {\n this.setState({\n barInfo: res.data.data\n })\n } else {\n Toast.info(res.data.msg, 2)\n }\n })\n }\n\n // 自组件传给父组件的boxHide\n boxHide = (val) => {\n this.setState({auditionBox: val, singleBox: val})\n }\n\n render() {\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 (courseInfo.group_status === 3 || courseInfo.group_status === 4) {\n number = courseInfo.pdd_group_info.groupon_member.number;\n }\n }\n const {share, countdown} = this.state;\n return (\n <div className='detail-box'>\n <HeaderBar title='课程详情' arrow={true} cart={true}></HeaderBar>\n <CallApp className='toapp'></CallApp>\n {/*弹幕*/}\n <Carouselw></Carouselw>\n {/*课程*/}\n <div className='course-content'>\n <div className='cover'>\n <img src={courseInfo.image_name}\n alt=\"\"/>\n </div>\n <div className=\"info\">\n <p className='title'>{courseInfo.course_title}</p>\n <p className='contact text-overflow-2'>{courseInfo.simpledescription}</p>\n <div className='des'>\n {courseInfo.is_baoming === 0 && <p className=\"course-price\">\n <span className=\"new\">¥{courseInfo.price1}</span>\n <span className=\"old\">¥{courseInfo.price0}</span>\n </p>\n }\n {courseInfo.is_baoming === 1 &&\n <a href=\"/#\" className=\"isbuy\">已购买</a>\n }\n </div>\n </div>\n </div>\n {/*正常课程已购买时显示*/}\n {\n courseInfo.is_baoming === 1 &&\n <div className='group'>\n 上课QQ群:{courseInfo.course_qq},加群请备注您的学号:{courseInfo.uid}\n </div>\n }\n {/*vip课程显示*/}\n {\n courseInfo.vip_range &&\n <div className=\"vip\">\n <p>已开通年会员:{courseInfo.vip_range}</p>\n <p>年会员QQ群:{courseInfo.course_qq},加群请备注您的学号:{courseInfo.uid}</p>\n </div>\n }\n\n {/*服务承诺*/}\n <div className='promise'>\n <label>服务承诺</label>\n <p>\n {\n service && service.length > 0 && service.map((item, index) => {\n return (\n <span key={index}> {item} </span>\n )\n })\n }\n </p>\n </div>\n\n {/*试听*/}\n <Audition auditionBox={this.state.auditionBox} boxHide={this.boxHide}/>\n\n {/*单集购买*/}\n <Single singleBox={this.state.singleBox} boxHide={this.boxHide} data={this.state.singMess}\n title={courseInfo.course_title}/>\n\n {/*分享赚钱*/}\n {\n courseInfo.is_dist &&\n <ShareRank/>\n }\n\n {/*拼团*/}\n {\n (courseInfo.group_status === 3 || courseInfo.group_status === 4) &&\n <Group history={this.props.history} countdown={countdown}/>\n }\n\n\n {/*砍价*/}\n {\n this.props.courseInfo && this.props.courseInfo.is_bargain &&\n <Bargain/>\n }\n\n {/*课程介绍、大纲*/}\n <OutLine data={this.props.courseInfo} toAudition={this.toAudition} toSingleset={this.toSingleset}/>\n\n {/*课程按钮*/}\n <BtnStatus countdown={countdown}\n data={this.props.courseInfo}\n getBargainInfo={this.getBargainInfo}\n invitedFriends={this.invitedFriends}\n history={this.props.history}></BtnStatus>\n\n {\n share ? (\n <div className='groupSuccessMbc' onClick={() => {\n this.setState({share: false})\n }}>\n <div className='tipContent'>\n\n {`还差${number}人,分享到3个群,成团率高达98%`}\n </div>\n <div className='tipArrow'>\n <i className='iconfont iconyindao'></i>\n </div>\n </div>\n ) : null\n }\n </div>\n )\n }\n\n}\n\nconst mapStateToProps = (state) => {\n return {\n courseInfo: state.courseInfo,\n user: state.user\n }\n}\n\nconst mapDispatchToProps = {\n fetchCoursesListIfNeeded\n}\nexport default connect(mapStateToProps, mapDispatchToProps)(Detail)"],"sourceRoot":""}