{"version":3,"sources":["components/blessingPreheat/rulePopup/index.js","components/blessingPreheat/coursePopup/index.js","components/blessingPreheat/recordPopup/index.js","components/blessingPreheat/listFrame/index.js","components/blessingPreheat/courseItem/index.js","components/blessingPreheat/courseList/index.js","components/blessingPreheat/sharePopup/index.js","components/blessingPreheat/luckDraw/index.js","components/blessingPreheat/collectBlessing/index.js","components/blessingPreheat/ReserveCourse/index.js","components/blessingPreheat/levelTest/index.js","components/blessingPreheat/rankList/index.js","components/blessingPreheat/live/index.js","components/blessingPreheat/banner/index.js","components/blessingPreheat/formal-draw/index.js","components/blessingPreheat/index.js","components/blessingPreheat/listHeader/index.js"],"names":["BlessingPrehead","props","_this","Object","classCallCheck","this","possibleConstructorReturn","getPrototypeOf","call","state","rules","handleToHide","react_default","a","createElement","className","map","item","index","key","onClick","Component","CoursePopup","distinguishVersion","getParam","version","Number","setState","isshowAppTip","replace","slice","fetchCourseData","Promise","all","http","get","concat","API","home","then","res","_res$0$data","data","code","doneCourse","today_browsed_courses","courseList","some","id","course_id","assign","blessing","toCourseDetail","console","log","_this$props","isLogin","history","toLogin","SendMessageToApp","courseId","type","push","_this2","_this$state","classnames","course-popup__item--active","course_title","RecordPopup","handleToTestRecord","e","preventDefault","location","href","m","recordList","_res$data","user_test_record","_this3","length","submit_time","score","ListFrame","WrappedComponent","_Component","_class","apply","arguments","inherits","createClass","value","CourseItem","image","toCourse","src","alt","children","CourseList","fetchAICourse","basic","advanced","higher","expand","isMore","course","filter","_this$state2","group","training","_res$data2","excellent_course","ai_elite_courses","handleToMore","objectSpread","toQQque","toCourse2","_czc","name","nextProps","nextState","nextContext","isApp","undefined","post","_res$data3","msg","toast_default","info","obj","course_status","isFormal","_this$state3","listHeader","text","size","styles","margin","Fragment","data-layout","blessingPreheat_courseItem","image_name","toReceiveCoupon","coupon","data-type","SharePopup","isClose","toClose","browser","isWeixin","LuckDraw","fetchActivityPrize","_res$data$data$list","list","tabs","title","date","prizes","tabs_default","swipeable","tabBarBackgroundColor","tabBarUnderlineStyle","display","_ref","son","val","time","v","k","img","num","connect","user","uid","CollectBlessing","qqToShare","desc","link","imgUrl","fetchUserBlessing","handleToAddBlessing","wechatToShare","_this$props2","weiboToShare","_this$props3","share_platform","handleToInvite","_this$props4","welfareRuleList","range","des","seconds","cb","handleToShowShare","today_shared_platforms","shareTimer","clearInterval","setInterval","_this$props5","isSign","_this$props5$userInfo","userInfo","_this$props5$userInfo2","blessingVal","_this$props5$userInfo3","buyBlessing","_this$props5$userInfo4","inviteBlessing","_this$props5$userInfo5","isFollow","handleToShowNotice","handleToShowList","toSection","data-status","ReserveCourse","courseData","JSON","stringify","courseDataAll","expandPaydj","isexpand","sourcenum","expandPaywk","day","Date","parse","tostudy","showMoreData","isShowMore","ReserveCourse_CourseList","price","deduction_amount","limit_amount","is_buy","start_timestamp","final_start_time","listFrame","withRouter","LevelTest","startTest","window","testNumber","number","prizeListUrl","url","_res$data$data","user_test_total","user_residue_number","testSum","RankList","formart","hours","minutes","parseInt","padStart","rankList","rankings","avatar","user_name","cost_time","prize","Live","popupInstance","lives","preheatLives","todayIndex","QRCodeUrl","toLiveRoom","protocol","saveImage","checkVideo","hasError","vCourseId","split","makeSubscribe","errno","QRCode","toDataURL","err","Popup","content","isAndroidApp","close","resolve","uniqBy","findIndex","tabBarActiveTextColor","tabBarInactiveTextColor","initialPage","todayLives","liveItem","LiveContent","transcribe_url","bind","Banner","navTop","prevY","navs","onlyShow","i","FormalDraw","swiper","subscribePopupInstance","currentDisplayPrizes","today","initialPageIndex","activeTimeRangeIndex","userValue","getPrizeData","oneDay","find","activeIndex","status","initializeSwiper","Swiper","slidesPerView","scrollbar","el","draggable","changeTab","tab","draw","_this$state$userValue","surplus","is_prize","hot_value","requestDraw","isDrawn","lotteryFunc","subscribe","catch","params","schedule","onTabClick","listItem","react_router_dom","to","style","left","width","statusContent","active","ref","level","BlessingPreheat","recordInstance","loginInfo","result","userInfoList","startFetchUser","appLogin","expires","addDays","cookie","set","token","path","domain","plat","uname","avatar_file","setCurrentUser","transformUser","payload","username","isFetching","getActiveIndex","arr","n","len","Math","abs","fetchMoudleId","str","setInitialNavActiveStatus","MutationObserver","debounce","observer","document","querySelector","every","navsTop","offsetTop","pageYOffset","calcNavActive","disconnect","observe","childList","subtree","initNav","formalNavs","encoreNavs","addEventListener","throttle","is_over","today_signed","is_activity","subscribed","user_blessing_value","types_total_blessing_value","buy_course","invite","is_login","handleToSign","handleToShow","isLoginnew","setTimeout","height","error","onCopy","top","scrollTo","_index","y","scrollY","swipeDirection","isInteger","nav","classList","remove","contains","add","getMyPrizeRecord","Array","isArray","showAddressPopup","assertThisInitialized","justifyContent","submitAddress","address","_res$data4","addressPopupVisible","setAddressState","target","defineProperty","isVirtual","_res$data5","phone","isRule","isCourse","inviteUrl","inviteVisible","joinLotteryVisible","timelineShareVisible","showRecordList","isServer","serverUrl","shareMark","userHasError","is_weixin","wxShare","removeEventListener","blessingPreheat_banner","components_blessingPreheat_courseList","blessingPreheat_live","blessingPreheat_formal_draw","blessingPreheat_collectBlessing","blessingPreheat_luckDraw","components_blessingPreheat_ReserveCourse","blessingPreheat_rulePopup","blessingPreheat_coursePopup","recordPopup_RecordPopup","sharePopup_SharePopup","blessingPreheat_levelTest","rankList_RankList","placeholder","onChange","compose","ListHeader","cls","react__WEBPACK_IMPORTED_MODULE_5___default","data-position"],"mappings":"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","file":"mrstatic/js/blessing-preheat.d89cd4d4.chunk.js","sourcesContent":["import React, { Component } from 'react';\nimport './index.scss';\n\nclass BlessingPrehead extends Component {\n constructor(props) {\n super(props);\n this.state = {\n rules: [\n '•\t抽奖的次数可通过积福气获得,福气值越高,抽奖的次数越多;',\n '•\t本次抽奖形式为开奖制,下一时段开启抽奖前会公布上一次中奖结果及名单,可关注“七月在线”服务号及时获取中奖结果,提醒参与下次抽奖;',\n '•\t每个时段仅可使用一次抽奖机会,每日抽奖次数限当日用,抽奖次数不累加至次日;',\n '•\t中奖后请及时填写邮寄信息,不填写视为主动放弃奖品;',\n '•\t解释权归北京七月在线所有。',\n ]\n }\n }\n\n render() {\n const { rules } = this.state;\n const { handleToHide } = this.props;\n return (\n <div className=\"rule-popup__container\">\n <div className=\"rule-popup\">\n <h2 className=\"rule-popup__title\">活动规则</h2>\n <ul className=\"rule-popup__list\">\n {rules.map((item, index) => (\n <li className=\"rule-popup__item\" key={index}>{item}</li>\n ))}\n </ul>\n </div>\n <i className=\"iconfont iconiconfront-2\" onClick={handleToHide}></i>\n </div>\n );\n }\n}\n\nexport default BlessingPrehead;","import React, { Component } from 'react';\nimport classnames from 'classnames';\nimport { http, SendMessageToApp } from \"@/utils\";\nimport './index.scss';\nimport { getParam } from '../../../utils';\n\nclass CoursePopup extends Component {\n constructor(props) {\n super(props);\n this.state = {\n courseList: [],\n isshowAppTip:false\n };\n }\n\n componentDidMount() {\n this.fetchCourseData();\n this.distinguishVersion();\n }\n\n distinguishVersion = () => {\n // plat_form 1ios 2android\n // version 1->3.704 2->4.5.1.20191105\n if(getParam('plat_form') == 1){\n let version = Number(getParam('version'))\n this.setState({\n isshowAppTip: version < 3.704 ? true : false\n });\n }\n if(getParam('plat_form') == 2){\n let version = getParam('version').replace(/\\./g, '').slice(0, 3)\n this.setState({\n isshowAppTip: Number(version) < 451 ? true:false\n });\n }\n }\n\n fetchCourseData = () => {\n Promise.all([\n http.get(`${API.home}/sys/browse/blessing/courses`),\n http.get(`${API.home}/sys/user/blessing`)\n ]).then(res => {\n const { code, data } = res[0].data;\n const doneCourse = res[1].data.data.today_browsed_courses || [];\n if(code === 200) {\n this.setState({\n courseList: data.map(item => {\n if(doneCourse.some(id => id == item.course_id)) {\n return Object.assign({}, item, {\n blessing: 2\n });\n }\n return item;\n })\n });\n }\n });\n }\n\n toCourseDetail = (item) => {\n console.log(this.props);\n const {isLogin, history, toLogin} = this.props;\n // to={`/detail?id=${item.course_id}&ac=11`}\n if(isLogin) {\n if(!getParam('version')) {\n history.push(`/detail?id=${item.course_id}&ac=11`);\n }else{\n if(this.state.isshowAppTip){\n SendMessageToApp(\"toCourse\", item.course_id);\n } else {\n if(item.blessing) {\n let data = {\n courseId: item.course_id,\n type: 2\n }\n SendMessageToApp(\"toBlessingCourse\", data);\n }else{\n let data = {\n courseId: item.course_id,\n type: 1 // 正常跳课程详情页type:0,积福气浏览课程详情页-没有浏览过type:1 已浏览过type:2\n }\n SendMessageToApp(\"toBlessingCourse\", data);\n }\n }\n }\n }else{\n toLogin();\n }\n }\n\n render() {\n const { courseList,isshowAppTip } = this.state;\n const { handleToHide } = this.props;\n return (\n <div className=\"course-popup__container\">\n <div className=\"course-popup\">\n <h2 className=\"course-popup__title\">指定课程</h2>\n <div className=\"course-popup__list\">\n {\n courseList.map(item => (\n <span\n className={classnames(\"course-popup__item\", {\n \"course-popup__item--active\": item.blessing\n })}\n key={item.course_id}\n onClick={()=>{this.toCourseDetail(item)}}\n >\n <span className=\"course-popup__name\">{item.course_title}</span>\n {\n item.blessing &&\n <span>+2点</span>\n }\n </span>\n ))\n }\n </div>\n\n {\n isshowAppTip &&\n <div className=\"course-popup-apptip\">\n 当前版本浏览课程暂不能增加福气值,可以前往h5/pc端浏览课程增加福气值\n </div>\n }\n </div>\n <i className=\"iconfont iconiconfront-2\" onClick={handleToHide}></i>\n </div>\n );\n }\n}\n\nexport default CoursePopup;","import React, { Component } from 'react'\nimport './index.scss'\nimport { http, getParam } from '@/utils';\n\nexport default class RecordPopup extends Component {\n constructor(props) {\n super(props);\n this.state = {\n recordList: [],\n }\n }\n\n componentDidMount () {\n http.get(`${API.home}/sys/ai_test/get_user_testinfo`).then(res => {\n let {code, data: {user_test_record}} = res.data;\n if(code === 200) {\n this.setState({\n recordList: user_test_record\n })\n }\n });\n }\n\n handleToTestRecord = (e, id) => {\n e.preventDefault();\n const { history } = this.props;\n if(!getParam('version')) {\n location.href = `${API.m}/levelTest/report?id=${id}`;\n } else {\n location.href = `${API.m}/levelTest/report?id=${id}&version=${getParam('version')}`;\n }\n }\n\n\n render() {\n let {recordList} = this.state;\n const { handleToHide } = this.props;\n return (\n <div className='record__mark'>\n <div className=\"gift__record\">\n <div className=\"close__button\" onClick={handleToHide}>\n <i className=\"icon iconfont iconiconfront-77\"></i>\n </div>\n <p className=\"mark__title\">测试记录</p>\n <p className=\"mark__tip\">多次测试保留最高分,可查看最近一次答题记录</p>\n <div>\n <div className=\"table__head\">\n <span className=\"tr\">测试时间</span>\n <span className=\"tr\">分数</span>\n <span className=\"tr\">操作</span>\n </div>\n <div className=\"table__body\">\n {\n recordList.length>0?\n recordList.map((item, index) => {\n return (<div className=\"tr__container\" key={index}>\n <span className=\"tr\">{item.submit_time}</span>\n <span className=\"tr\">{item.score}</span>\n <span className=\"tr\">\n {\n index === 0 ? (\n <a onClick={(e) => this.handleToTestRecord(e, item.id)}>测试记录</a>\n ) : (null)\n }\n </span>\n </div>\n )\n }):\n <div className={'notdata'}>暂无测试记录</div>\n }\n </div>\n </div>\n </div>\n\n </div>\n )\n }\n}\n","import React, { Component } from 'react';\nimport './index.scss';\n\n\nfunction ListFrame(WrappedComponent) {\n return class extends Component {\n render() {\n return (\n <div className=\"list-frame\">\n <div className=\"list-frame__content\">\n <WrappedComponent {...this.props}/>\n </div>\n </div>\n )\n }\n };\n}\n\nexport default ListFrame;\n","import React, { Component } from 'react';\nimport './index.scss';\n\nclass CourseItem extends Component {\n render() {\n const { image,toCourse,id} = this.props;\n return (\n <div className=\"course-container\">\n <div className=\"course__cover\">\n <img src={image} alt=\"cover\" onClick={() => toCourse(id)}/>\n </div>\n {this.props.children}\n </div>\n );\n }\n}\n\nexport default CourseItem;","import React, { Component } from 'react';\nimport classnames from 'classnames';\nimport { http , getParam, SendMessageToApp} from '@/utils';\nimport { Toast } from \"antd-mobile\";\nimport ListFrame from './../listFrame/index';\nimport CourseItem from './../courseItem/index';\nimport ListHeader from './../listHeader';\nimport './index.scss';\nimport cookie from \"js-cookie\";\n\nclass CourseList extends Component {\n constructor(props) {\n super(props);\n this.state = {\n basic: {\n course: [],\n courseList: [],\n isMore: false,\n },\n advanced: {\n course: [],\n courseList: [],\n isMore: false,\n },\n higher: {\n course: [],\n courseList: [],\n isMore: false,\n },\n expand: {\n course: [],\n courseList: [],\n isMore: false,\n },\n group: {\n course: [],\n courseList: [],\n isMore: false,\n },\n training: {\n course: [],\n courseList: [],\n isMore: false,\n }\n };\n }\n\n componentDidMount() {\n\n // 精品课程-集训营、就业班/AI特训营\n this.fetchCourseData();\n\n // AI之路-基础\n this.fetchAICourse('one');\n\n // AI之路-进阶\n this.fetchAICourse('two');\n\n // AI之路-高阶\n this.fetchAICourse('three');\n\n // AI之路-拓展\n this.fetchAICourse('four');\n }\n\n shouldComponentUpdate(nextProps, nextState, nextContext) {\n if(this.props.isApp !== nextProps.isApp) {\n // 精品课程-集训营、就业班/AI特训营\n this.fetchCourseData();\n\n // AI之路-基础\n this.fetchAICourse('one');\n\n // AI之路-进阶\n this.fetchAICourse('two');\n\n // AI之路-高阶\n this.fetchAICourse('three');\n\n // AI之路-拓展\n this.fetchAICourse('four');\n return false;\n }\n return true;\n }\n\n fetchAICourse = (key) => {\n const { basic, advanced, higher, expand } = this.state;\n http.get(`${API.home}/sys/ai_grow_up_courses/${key}`).then(res => {\n const {code, data} = res.data;\n if (code === 200) {\n if (data.length > 4) {\n if (key === 'one') {\n this.setState({\n basic: Object.assign({}, basic, {\n isMore: true,\n course: data.filter((item, index) => index < 4),\n courseList: data,\n })\n });\n }\n if (key === 'two') {\n this.setState({\n advanced: Object.assign({}, advanced, {\n isMore: true,\n course: data.filter((item, index) => index < 4),\n courseList: data,\n })\n });\n }\n if (key === 'three') {\n this.setState({\n higher: Object.assign({}, higher, {\n isMore: true,\n course: data.filter((item, index) => index < 4),\n courseList: data,\n })\n });\n }\n if (key === 'four') {\n this.setState({\n expand: Object.assign({}, expand, {\n isMore: true,\n course: data.filter((item, index) => index < 4),\n courseList: data,\n })\n });\n }\n } else {\n if (key === 'one') {\n this.setState({\n basic: Object.assign({}, basic, {\n isMore: false,\n course: data,\n courseList: data,\n })\n });\n }\n if (key === 'two') {\n this.setState({\n advanced: Object.assign({}, advanced, {\n isMore: false,\n course: data,\n courseList: data,\n })\n });\n }\n if (key === 'three') {\n this.setState({\n higher: Object.assign({}, higher, {\n isMore: false,\n course: data,\n courseList: data,\n })\n });\n }\n if (key === 'four') {\n this.setState({\n expand: Object.assign({}, expand, {\n isMore: false,\n course: data,\n courseList: data,\n })\n });\n }\n }\n }\n });\n }\n\n fetchCourseData = () => {\n const { group, training } = this.state;\n http.get(`${API.home}/sys/preheat_data`).then(res => {\n const {code, data} = res.data;\n if (code === 200) {\n if (data.excellent_course.length > 2) {\n this.setState({\n group: Object.assign({}, group, {\n isMore: true,\n course: data.excellent_course.filter((item, index) => index < 2),\n courseList: data.excellent_course,\n })\n });\n } else {\n this.setState({\n group: Object.assign({}, group, {\n isMore: false,\n course: data.excellent_course,\n courseList: data.excellent_course,\n })\n });\n }\n if (data.ai_elite_courses.length > 2) {\n this.setState({\n training: Object.assign({}, training, {\n isMore: true,\n course: data.ai_elite_courses.filter((item, index) => index < 2),\n courseList: data.ai_elite_courses,\n })\n });\n } else {\n this.setState({\n training: Object.assign({}, training, {\n isMore: false,\n course: data.ai_elite_courses,\n courseList: data.ai_elite_courses,\n })\n });\n }\n }\n });\n }\n\n handleToMore = (key) => {\n let data = {};\n if(this.state[key]['isMore']) {\n data[key] = {\n isMore: !this.state[key]['isMore'],\n course: this.state[key]['courseList'],\n courseList: this.state[key]['courseList']\n };\n this.setState({\n ...data\n });\n }else {\n if(key === 'group' || key === 'training') {\n data[key] = {\n isMore: !this.state[key]['isMore'],\n course: this.state[key]['courseList'].filter((item, index) => index < 2),\n courseList: this.state[key]['courseList']\n };\n }else {\n data[key] = {\n isMore: !this.state[key]['isMore'],\n course: this.state[key]['courseList'].filter((item, index) => index < 4),\n courseList: this.state[key]['courseList']\n };\n }\n this.setState({\n ...data\n });\n }\n }\n\n toReceiveCoupon(id, key = '') {\n const {isLogin, toLogin} = this.props;\n\n\n if(isLogin) {\n var _czc = _czc || [];\n var name = '课程id=' + id;\n _czc.push([\"_trackEvent\", name, 'm端双十一立即领券']);\n\n http.post(`${API.home}/sys/activity/coupon/receive`, {\n course_id: id\n }).then(res => {\n const { code, msg } = res.data;\n if(code === 200) {\n Toast.info('领取成功~', 2, null, false);\n let obj = {};\n obj[key] = {\n isMore: this.state[key]['isMore'],\n course: this.state[key]['course'].map(item => {\n if(item.course_id === id) {\n return Object.assign({}, item, {\n course_status: 2\n });\n }\n return item;\n }),\n courseList: this.state[key]['courseList'].map(item => {\n if(item.course_id === id) {\n return Object.assign({}, item, {\n course_status: 2\n });\n }\n return item;\n }),\n }\n this.setState({\n ...obj\n });\n } else {\n Toast.info(msg, 2, null, false);\n }\n });\n }else{\n toLogin();\n }\n\n }\n\n\n toQQque=()=>{\n if (!getParam('version')) {\n location.href='https://q.url.cn/AB8aue?_type=wpa&qidian=true'\n } else {\n SendMessageToApp(\"toQQ\", 'https://q.url.cn/AB8aue?_type=wpa&qidian=true')\n }\n }\n\n // 去课程详情页\n toCourse = (courseId) => {\n const { history } = this.props;\n if (!getParam('version')) {\n history.push(`/detail?id=${courseId}`);\n } else {\n SendMessageToApp(\"toCourse\", courseId);\n }\n }\n\n // 开始使用\n toCourse2 = (courseId) => {\n const { history } = this.props;\n var _czc = _czc || [];\n var name = '课程id=' + courseId;\n _czc.push([\"_trackEvent\", name, 'm端双十一开始使用优惠券']);\n\n if (!getParam('version')) {\n history.push(`/detail?id=${courseId}`);\n } else {\n SendMessageToApp(\"toCourse\", courseId);\n }\n }\n\n\n render() {\n const { isFormal } = this.props;\n const { basic, advanced, higher, expand, group, training } = this.state;\n return (\n <div className=\"boutique-course\">\n <ListHeader text=\"集训营、就业班\" size=\"middle\" styles={{margin: '20px 0 15px'}} />\n {/* 集训营、就业班 */}\n {\n (group.course && group.course.length > 0) &&\n <>\n <div data-layout=\"row\">\n {\n group.course.map(item => (\n <CourseItem image={item.image_name} key={item.course_id} id={item.course_id} toCourse={this.toCourse}>\n <div className=\"coupon-course__footer\">\n <a onClick={() => this.toQQque()} className=\"course-button\">立抢超低团购价</a>\n </div>\n </CourseItem>\n ))\n }\n </div>\n {\n (group.courseList && group.courseList.length > 2) &&\n <button className=\"more-button\" onClick={() => this.handleToMore('group')}>\n {group.isMore? '展开更多' : '收起'}\n </button>\n }\n </>\n }\n\n <ListHeader text=\"AI特训营\" size=\"middle\" styles={{margin: '0 0 15px'}} />\n {/* AI特训营 */}\n {\n (training.course && training.course.length > 0) &&\n <>\n <div data-layout=\"row\">\n {\n training.course.map(item => (\n <CourseItem image={item.image_name} key={item.course_id} id={item.course_id} toCourse={this.toCourse}>\n <div className=\"coupon-course__footer\">\n {\n item.course_status === 1 &&\n <a\n className={classnames(\"coupon-course__button\", \"coupon-course__button--receive\")}\n onClick={() => this.toReceiveCoupon(item.course_id, 'training')}\n >\n <span className=\"coupon-course__button-price\">\n <em>¥{item.coupon}</em>\n <i>代金券</i>\n </span>\n <span className=\"coupon-course__button-label\">立即领券</span>\n </a>\n }\n\n {\n (isFormal === 0 && item.course_status === 2) &&\n <a className=\"coupon-course__button\">\n <span className=\"coupon-course__button-price\">\n <em>¥{item.coupon}</em>\n <i>代金券</i>\n </span>\n <span className=\"coupon-course__button-label\">11.11开始使用</span>\n </a>\n }\n {\n (isFormal === 1 && item.course_status === 2) &&\n <a\n onClick={() => this.toCourse2(item.course_id)}\n className=\"coupon-course__button\">\n <span className=\"coupon-course__button-price\">\n <em>¥{item.coupon}</em>\n <i>代金券</i>\n </span>\n <span className=\"coupon-course__button-label\">开始使用</span>\n </a>\n }\n {\n item.course_status === 3 &&\n <a onClick={() => this.toCourse(item.course_id)}\n className=\"course-button\"\n data-type=\"study\"\n >开始学习</a>\n }\n </div>\n </CourseItem>\n ))\n }\n </div>\n {\n (training.courseList && training.courseList.length > 2) &&\n <button className=\"more-button\" onClick={() => this.handleToMore('training')}>\n {training.isMore? '展开更多' : '收起'}\n </button>\n }\n </>\n }\n\n {/* AI成长之路--基础 */}\n <ListHeader text=\"AI成长之路\" size=\"middle\" styles={{margin: '0 0 15px'}} />\n {\n (basic.course && basic.course.length > 0) &&\n <>\n <h4 className=\"ai-course__subtitle\">基础</h4>\n <div data-layout=\"row\">\n {\n basic.course.map(item => (\n <CourseItem image={item.image_name} key={item.course_id} id={item.course_id} toCourse={this.toCourse}>\n {\n item.type === 0 &&\n <div className=\"coupon-course__footer\">\n {\n item.course_status === 1 &&\n <a\n className={classnames(\"coupon-course__button\", \"coupon-course__button--receive\")}\n onClick={() => this.toReceiveCoupon(item.course_id, 'basic')}\n >\n <span className=\"coupon-course__button-price\">\n <em>¥{item.coupon}</em>\n <i>代金券</i>\n </span>\n <span className=\"coupon-course__button-label\">立即领券</span>\n </a>\n }\n\n {\n (isFormal === 0 && item.course_status === 2) &&\n <a className=\"coupon-course__button\">\n <span className=\"coupon-course__button-price\">\n <em>¥{item.coupon}</em>\n <i>代金券</i>\n </span>\n <span className=\"coupon-course__button-label\">11.11开始使用</span>\n </a>\n }\n {\n (isFormal === 1 && item.course_status === 2) &&\n <a onClick={() => this.toCourse2(item.course_id)} className=\"coupon-course__button\">\n <span className=\"coupon-course__button-price\">\n <em>¥{item.coupon}</em>\n <i>代金券</i>\n </span>\n <span className=\"coupon-course__button-label\">开始使用</span>\n </a>\n }\n {\n item.course_status === 3 &&\n <a onClick={() => this.toCourse(item.course_id)}\n className=\"course-button\"\n data-type=\"study\"\n >开始学习</a>\n }\n </div>\n }\n {\n item.type === 1 &&\n <div className=\"cent-course__footer\">\n {\n (item.course_status === 1 || item.course_status === 2) &&\n <a onClick={() => this.toCourse(item.course_id)} className=\"course-button\">1分钱开团</a>\n }\n {\n item.course_status === 3 &&\n <a onClick={() => this.toCourse(item.course_id)} className=\"course-button\" data-type=\"study\">开始学习</a>\n }\n </div>\n }\n </CourseItem>\n ))\n }\n </div>\n {\n (basic.courseList && basic.courseList.length > 4) &&\n <button className=\"more-button\" onClick={() => this.handleToMore('basic')}>\n {basic.isMore? '展开更多' : '收起'}\n </button>\n }\n </>\n }\n\n {/* AI成长之路--进阶 */}\n {\n (advanced.course && advanced.course.length > 0) &&\n <>\n <h4 className=\"ai-course__subtitle\">进阶</h4>\n <div data-layout=\"row\">\n {\n advanced.course.map(item => (\n <CourseItem image={item.image_name} key={item.course_id} id={item.course_id} toCourse={this.toCourse}>\n {\n item.type === 0 &&\n <div className=\"coupon-course__footer\">\n {\n item.course_status === 1 &&\n <a\n className={classnames(\"coupon-course__button\", \"coupon-course__button--receive\")}\n onClick={() => this.toReceiveCoupon(item.course_id, 'advanced')}\n >\n <span className=\"coupon-course__button-price\">\n <em>¥{item.coupon}</em>\n <i>代金券</i>\n </span>\n <span className=\"coupon-course__button-label\">立即领券</span>\n </a>\n }\n {\n (isFormal === 0 && item.course_status === 2) &&\n <a className=\"coupon-course__button\">\n <span className=\"coupon-course__button-price\">\n <em>¥{item.coupon}</em>\n <i>代金券</i>\n </span>\n <span className=\"coupon-course__button-label\">11.11开始使用</span>\n </a>\n }\n {\n (isFormal === 1 && item.course_status === 2) &&\n <a onClick={() => this.toCourse2(item.course_id)} className=\"coupon-course__button\">\n <span className=\"coupon-course__button-price\">\n <em>¥{item.coupon}</em>\n <i>代金券</i>\n </span>\n <span className=\"coupon-course__button-label\">开始使用</span>\n </a>\n }\n {\n item.course_status === 3 &&\n <a onClick={() => this.toCourse(item.course_id)}\n className=\"course-button\"\n data-type=\"study\"\n >开始学习</a>\n }\n </div>\n }\n {\n item.type === 1 &&\n <div className=\"cent-course__footer\">\n {\n (item.course_status === 1 || item.course_status === 2) &&\n <a onClick={() => this.toCourse(item.course_id)} className=\"course-button\">1分钱开团</a>\n }\n {\n item.course_status === 3 &&\n <a onClick={() => this.toCourse(item.course_id)} className=\"course-button\" data-type=\"study\">开始学习</a>\n }\n </div>\n }\n </CourseItem>\n ))\n }\n </div>\n {\n (advanced.courseList && advanced.courseList.length > 4) &&\n <button className=\"more-button\" onClick={() => this.handleToMore('advanced')}>\n {advanced.isMore? '展开更多' : '收起'}\n </button>\n }\n </>\n }\n\n {/* AI成长之路--高阶 */}\n {\n (higher.course && higher.course.length > 0) &&\n <>\n <h4 className=\"ai-course__subtitle\">高阶</h4>\n <div data-layout=\"row\">\n {\n higher.course.map(item => (\n <CourseItem image={item.image_name} key={item.course_id} id={item.course_id} toCourse={this.toCourse}>\n {\n item.type === 0 &&\n <div className=\"coupon-course__footer\">\n {\n item.course_status === 1 &&\n <a\n className={classnames(\"coupon-course__button\", \"coupon-course__button--receive\")}\n onClick={() => this.toReceiveCoupon(item.course_id, 'higher')}\n >\n <span className=\"coupon-course__button-price\">\n <em>¥{item.coupon}</em>\n <i>代金券</i>\n </span>\n <span className=\"coupon-course__button-label\">立即领券</span>\n </a>\n }\n {\n (isFormal === 0 && item.course_status === 2) &&\n <a className=\"coupon-course__button\">\n <span className=\"coupon-course__button-price\">\n <em>¥{item.coupon}</em>\n <i>代金券</i>\n </span>\n <span className=\"coupon-course__button-label\">11.11开始使用</span>\n </a>\n }\n {\n (isFormal === 1 && item.course_status === 2) &&\n <a onClick={() => this.toCourse2(item.course_id)} className=\"coupon-course__button\">\n <span className=\"coupon-course__button-price\">\n <em>¥{item.coupon}</em>\n <i>代金券</i>\n </span>\n <span className=\"coupon-course__button-label\">开始使用</span>\n </a>\n }\n {\n item.course_status === 3 &&\n <a onClick={() => this.toCourse(item.course_id)}\n className=\"course-button\"\n data-type=\"study\"\n >开始学习</a>\n }\n </div>\n }\n {\n item.type === 1 &&\n <div className=\"cent-course__footer\">\n {\n (item.course_status === 1 || item.course_status === 2) &&\n <a onClick={() => this.toCourse(item.course_id)} className=\"course-button\">1分钱开团</a>\n }\n {\n item.course_status === 3 &&\n <a onClick={() => this.toCourse(item.course_id)} className=\"course-button\" data-type=\"study\">开始学习</a>\n }\n </div>\n }\n </CourseItem>\n ))\n }\n </div>\n {\n (higher.courseList && higher.courseList.length > 4) &&\n <button className=\"more-button\" onClick={() => this.handleToMore('higher')}>\n {higher.isMore? '展开更多' : '收起'}\n </button>\n }\n </>\n }\n\n {/* AI成长之路--扩展 */}\n {\n (expand.course && expand.course.length > 0) &&\n <>\n <h4 className=\"ai-course__subtitle\">扩展</h4>\n <div data-layout=\"row\">\n {\n expand.course.map(item => (\n <CourseItem image={item.image_name} key={item.course_id} id={item.course_id} toCourse={this.toCourse}>\n {\n item.type === 0 &&\n <div className=\"coupon-course__footer\">\n {\n item.course_status === 1 &&\n <a\n className={classnames(\"coupon-course__button\", \"coupon-course__button--receive\")}\n onClick={() => this.toReceiveCoupon(item.course_id, 'expand')}\n >\n <span className=\"coupon-course__button-price\">\n <em>¥{item.coupon}</em>\n <i>代金券</i>\n </span>\n <span className=\"coupon-course__button-label\">立即领券</span>\n </a>\n }\n\n {\n (isFormal === 0 && item.course_status === 2) &&\n <a className=\"coupon-course__button\">\n <span className=\"coupon-course__button-price\">\n <em>¥{item.coupon}</em>\n <i>代金券</i>\n </span>\n <span className=\"coupon-course__button-label\">11.11开始使用</span>\n </a>\n }\n {\n (isFormal === 1 && item.course_status === 2) &&\n <a onClick={() => this.toCourse2(item.course_id)} className=\"coupon-course__button\">\n <span className=\"coupon-course__button-price\">\n <em>¥{item.coupon}</em>\n <i>代金券</i>\n </span>\n <span className=\"coupon-course__button-label\">开始使用</span>\n </a>\n }\n {\n item.course_status === 3 &&\n <a onClick={() => this.toCourse(item.course_id)}\n className=\"course-button\"\n data-type=\"study\"\n >开始学习</a>\n }\n </div>\n }\n {\n item.type === 1 &&\n <div className=\"cent-course__footer\">\n {\n (item.course_status === 1 || item.course_status === 2) &&\n <a onClick={() => this.toCourse(item.course_id)} className=\"course-button\">1分钱开团</a>\n }\n {\n item.course_status === 3 &&\n <a onClick={() => this.toCourse(item.course_id)} className=\"course-button\" data-type=\"study\">开始学习</a>\n }\n </div>\n }\n </CourseItem>\n ))\n }\n </div>\n {\n (expand.courseList && expand.courseList.length > 4) &&\n <button className=\"more-button\" onClick={() => this.handleToMore('expand')}>\n {expand.isMore? '展开更多' : '收起'}\n </button>\n }\n </>\n }\n </div>\n )\n }\n}\n\nexport default ListFrame(CourseList);\n","import React, { Component } from 'react';\nimport { browser } from '@/utils';\nimport './index.scss'\n\nexport default class SharePopup extends Component {\n render() {\n return (\n <div className=\"share__container\" onClick={() => {\n if(this.props.isClose) {\n this.props.toClose();\n }\n }}>\n {\n browser.isWeixin &&\n <div className=\"share__row\">\n <img src='https://julyedu-cdn.oss-cn-beijing.aliyuncs.com/active19_1111/m/throw_icon.png' />\n </div>\n }\n <div className=\"share__content\">\n <p className=\"share__text\">分享活动页到朋友圈、qq、微博分别</p>\n <div className='share__rule'>\n <img className={'share__add2'} src='https://julyedu-cdn.oss-cn-beijing.aliyuncs.com/active19_1111/m/add2.png' />\n <span>(每个平台每天一次)</span>\n </div>\n </div>\n </div>\n )\n }\n}\n","import React, { Component } from 'react';\nimport { http } from '@/utils';\nimport { Tabs } from 'antd-mobile';\nimport ListFrame from './../listFrame/index';\nimport './index.scss';\n\nclass LuckDraw extends Component {\n constructor(props) {\n super(props);\n this.state = {\n tabs: [],\n prizes: []\n };\n }\n\n componentDidMount() {\n this.fetchActivityPrize();\n }\n\n fetchActivityPrize = () => {\n http.get(`${API.home}/sys/activity/prize_data`).then(res => {\n const { code , data: { list = [] } } = res.data;\n if(code === 200) {\n this.setState({\n tabs: list.map(item => {\n return {\n title: item.date\n }\n }),\n prizes: list\n });\n }\n });\n }\n\n render() {\n const { tabs, prizes } = this.state;\n return (\n <div className=\"luck-draw__container\">\n <Tabs swipeable={false}\n tabs={tabs}\n tabBarBackgroundColor=\"transparent\"\n tabBarUnderlineStyle={{\n display: 'none'\n }}\n >\n {\n prizes.map(({ son }, index) => {\n return (\n <div className=\"tab__body\" key={index}>\n {\n son.map(val => (\n <div key={val.id}>\n <h2 className=\"prize__label\">\n <i className=\"prize__label-icon\"></i>\n <span>{val.time}</span>\n </h2>\n <div className=\"prize__content\">\n {\n val.data.map((v, k) => (\n <div className=\"prize__container\" key={`${val.id}-${k}`}>\n <div className=\"prize__image\">\n <img src={v.img} alt=\"image\"/>\n </div>\n <p className=\"prize__desc\">{v.name}</p>\n <p className=\"prize__desc\">(*{v.num})</p>\n </div>\n ))\n }\n </div>\n </div>\n ))\n }\n </div>\n )\n })\n }\n </Tabs>\n </div>\n )\n }\n}\n\nexport default ListFrame(LuckDraw);","import React, { Component } from 'react';\nimport { connect } from 'react-redux';\nimport { Link } from 'react-router-dom';\nimport { http, getParam, SendMessageToApp } from '@/utils';\nimport { Toast } from \"antd-mobile\";\nimport ListFrame from './../listFrame/index';\nimport ListHeader from './../listHeader';\nimport './index.scss';\n\n@connect(({user})=> ({\n uid: user && user.data && user.data.uid ? user.data.uid :''\n}))\nclass CollectBlessing extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n rules: [\n 'app/h5/pc端活动页签到+5点福气值(每天一次)',\n '关注七月在线微信服务号+30点福气值(仅限一次)',\n '分享活动页到朋友圈、qq、微博,分别+2点福气值(每个平台每天一次)',\n '浏览指定课程详情页,一门课程+2点福气值(每天一次)',\n '邀请好友注册,+10点福气值/人(无上限)',\n '活动期间每购买一门课程+20点福气值',\n ],\n welfareRuleList: [\n {\n range: '50~100',\n rules: [\n {id: 1, text: '1.每天一次抽奖机会;'},\n {id: 2, text: '2.中奖概率翻2倍', des: '(福气值越高,中奖概率越大);'},\n {id: 3, text: '3.满111减11、满1111减111。'},\n ]\n },\n {\n range: '101~190',\n rules: [\n {id: 1, text: '1.每天两次抽奖机会;'},\n {id: 2, text: '2.中奖概率翻3倍', des: '(福气值越高,中奖概率越大);'},\n {id: 3, text: '3.满111减31、满1111减211;'},\n {id: 4, text: '4.AI水平测试增加1次。'},\n ]\n },\n {\n range: '>190',\n rules: [\n {id: 1, text: '1.每天三次抽奖机会;'},\n {id: 2, text: '2.中奖概率翻4倍', des: '(福气值越高,中奖概率越大);'},\n {id: 3, text: '3.满111减51、满1111减411;'},\n {id: 4, text: '4.AI水平测试增加2次。'},\n ]\n }\n ],\n seconds: 5,\n };\n }\n\n qqToShare = () => {\n const { uid, history } = this.props;\n if(getParam('version')) {\n if(!uid) {\n SendMessageToApp(\"toLogin\");\n }else {\n SendMessageToApp(\"QQshare\", {\n title: 'AI充电节,积福气享1折秒课,超10万元奖品来就送!!',\n desc: '把这门超5万人报名的【Python基础入门 升级版】课程送给你,附200元红包,请笑纳!--七月在线',\n link: 'https://m.julyedu.com/blessingPreheat',\n imgUrl: 'https://julyedu-cdn.oss-cn-beijing.aliyuncs.com/active19_1111/m/index-share-img.png',\n });\n }\n }else {\n if(!uid) {\n history.push('/passport');\n }else {\n history.push('/blessingPreheat?utm_source=qq&utm_medium=11&utm_campaign=QQ11&utm_content=11&utm_term=11')\n this.fetchUserBlessing(3, () => {\n this.handleToAddBlessing(3);\n });\n }\n }\n }\n\n wechatToShare = () => {\n const { uid, history } = this.props;\n if(getParam('version')) {\n if(!uid) {\n SendMessageToApp(\"toLogin\");\n }else {\n SendMessageToApp(\"WXshare\", {\n title: 'AI充电节,积福气享1折秒课,超10万元奖品来就送!!',\n desc: '把这门超5万人报名的【Python基础入门 升级版】课程送给你,附200元红包,请笑纳!--七月在线',\n link: 'https://m.julyedu.com/blessingPreheat',\n imgUrl: 'https://julyedu-cdn.oss-cn-beijing.aliyuncs.com/active19_1111/m/index-share-img.png',\n });\n }\n }else {\n if(!uid) {\n history.push('/passport');\n }else {\n history.push('/blessingPreheat?utm_source=1&utm_medium=1&utm_campaign=11&utm_content=1&utm_term=1');\n this.fetchUserBlessing(1, () => {\n this.handleToAddBlessing(1);\n });\n }\n }\n }\n\n weiboToShare = () => {\n const { uid, history } = this.props;\n if(getParam('version')) {\n if(!uid) {\n SendMessageToApp(\"toLogin\");\n }else {\n SendMessageToApp(\"WBshare\", {\n title: 'AI充电节,积福气享1折秒课,超10万元奖品来就送!!',\n desc: '把这门超5万人报名的【Python基础入门 升级版】课程送给你,附200元红包,请笑纳!--七月在线',\n link: 'https://m.julyedu.com/blessingPreheat',\n imgUrl: 'https://julyedu-cdn.oss-cn-beijing.aliyuncs.com/active19_1111/m/index-share-img.png',\n });\n }\n }else {\n if(!uid) {\n history.push('/passport');\n }else {\n history.push('/blessingPreheat?utm_source=sina&utm_medium=11&utm_campaign=sina11&utm_content=1&utm_term=11');\n this.fetchUserBlessing(2, () => {\n this.handleToAddBlessing(2);\n });\n }\n }\n }\n\n fetchUserBlessing(key, cb) {\n const { handleToShowShare } = this.props;\n let { seconds } = this.state;\n http.get(`${API.home}/sys/user/blessing`).then(res => {\n const { code, data } = res.data;\n if(code === 200) {\n if(data.today_shared_platforms.some(item => item === key)) {\n handleToShowShare();\n Toast.info('今日已+2点福气值”~', 2, null, false);\n }else {\n handleToShowShare();\n this.shareTimer && clearInterval(this.shareTimer);\n this.shareTimer = setInterval(() => {\n this.setState(\n {\n seconds: (--seconds)\n },\n () => {\n if (seconds === 0) {\n this.setState({\n seconds: 5\n });\n typeof cb === 'function' && cb();\n clearInterval(this.shareTimer);\n }\n }\n );\n }, 1000);\n }\n }\n });\n }\n\n handleToAddBlessing = (key) => {\n http.post(`${API.home}/sys/add/blessing`, {\n share_platform: key, // 1 朋友圈 2 微博 3 qq\n type: 3 // 1:签到;3:分享;4:浏览课程;\n }).then(res => {\n const {code } = res.data;\n if (code === 200) {\n Toast.info('+2点福气值~', 2, null, false);\n }\n });\n }\n\n handleToInvite = () => {\n const { uid, history } = this.props;\n if(!uid) {\n if(getParam('version')) {\n SendMessageToApp(\"toLogin\");\n }else {\n history.push('/passport')\n }\n }else {\n if(getParam('version')) {\n history.push('/invite?version=' + getParam('version') + '&plat_form='+ getParam('plat_form'))\n } else {\n history.push('/invite')\n }\n }\n }\n\n render() {\n const {\n isSign,\n userInfo: {blessingVal = 0, buyBlessing = 0, inviteBlessing = 0, isFollow = 0 },\n isLogin,\n handleToShowNotice,\n handleToShowList,\n toLogin,\n toSection\n } = this.props;\n const { rules, welfareRuleList, seconds } = this.state;\n return (\n <div className=\"collect-blessing\">\n {\n isLogin\n ? (\n <ListHeader text={`我的福气值: ${blessingVal}分`} size=\"middle\" styles={{margin: '20px 0 0 0'}} />\n )\n : (\n <ListHeader size=\"middle\" styles={{margin: '20px 0 0 0'}} >\n <span className=\"text_nologin\">我的福气值:</span>\n <span onClick={toLogin} className=\"login__btn\">登录</span>\n </ListHeader>\n )\n }\n <p className='activity__over'>活动结束前福气榜前50名可获奖品一份</p>\n {\n welfareRuleList.map((item, index) => (\n <div className=\"rules__item\" key={index}>\n <div className=\"item__left\">\n <div className='tip__bubble'>\n <div className=\"tip__text\">福气值</div>\n <div className='tip__style'></div>\n </div>\n <div className='range__number'>{item.range}</div>\n </div>\n <div className=\"item__right\">\n {\n item.rules.map(item => {\n return (\n <p key={item.id}>\n {item.text}\n <span>{item.des}</span>\n </p>\n )\n })\n }\n </div>\n </div>\n ))\n }\n <ListHeader text=\"福气值积攒规则\" size=\"middle\" styles={{margin: '30px 0 0'}} />\n {\n rules.map((item, index) => (\n <div className=\"collect-blessing__item\" key={index}>\n <i className=\"collect-blessing__num\">{index+1}</i>\n <p className=\"collect-blessing__title\">{item}</p>\n {\n index === 0 &&\n <>\n {\n (isLogin && isSign)\n ? (\n <button className=\"collect-blessing__content\" data-status=\"done\">\n 已加5点\n </button>\n )\n : (\n <button onClick={toLogin} className=\"collect-blessing__content\">\n 点击<br/>签到\n </button>\n )\n }\n </>\n }\n {\n index === 1 &&\n <>\n {\n isFollow === 1\n ? (\n <button className=\"collect-blessing__content\" data-status=\"done\" onClick={handleToShowNotice}>\n 已加30点\n </button>\n )\n : (\n <button className=\"collect-blessing__content\" onClick={handleToShowNotice}>\n 关注<br/>二维码\n </button>\n )\n }\n </>\n }\n {\n index === 2 &&\n <div className=\"collect-blessing__content\" data-layout=\"column\">\n <p className=\"collect-blessing__label\">去分享</p>\n <div className=\"collect-blessing__share\">\n <button\n className=\"collect-blessing__share-button\"\n data-type=\"qq\"\n onClick={this.qqToShare}\n ></button>\n <button\n className=\"collect-blessing__share-button\"\n data-type=\"wechat\"\n onClick={this.wechatToShare}\n ></button>\n <button\n className=\"collect-blessing__share-button\"\n data-type=\"weibo\"\n onClick={this.weiboToShare}\n ></button>\n </div>\n </div>\n }\n {\n index === 3 &&\n <button className=\"collect-blessing__content\" onClick={handleToShowList}>\n 浏览课程<br/>详情页\n </button>\n }\n {\n index === 4 &&\n <button className=\"collect-blessing__content\" onClick={this.handleToInvite}>\n <span>邀请链接</span>\n {\n inviteBlessing > 0 && <i>已加{inviteBlessing}点</i>\n }\n </button>\n }\n {\n index === 5 &&\n <button className=\"collect-blessing__content\" onClick={toSection}>\n <span>去选课</span>\n {\n buyBlessing > 0 && <i>已加{buyBlessing}点</i>\n }\n </button>\n }\n </div>\n ))\n }\n </div>\n )\n }\n}\n\nexport default ListFrame(CollectBlessing);","import React, {Component} from 'react';\nimport {http, getParam, SendMessageToApp} from '@/utils';\nimport listFrame from './../listFrame/index';\nimport './index.scss';\nimport {Toast} from \"antd-mobile\"\nimport {connect} from \"react-redux\";\nimport {Link, withRouter} from \"react-router-dom\"\n\n\nclass ReserveCourse extends Component {\n constructor(props) {\n super(props);\n this.state = {\n courseData: [],\n isShowMore: false\n };\n }\n\n componentDidMount() {\n this.fetchAICourse();\n }\n\n\n shouldComponentUpdate(nextProps, nextState, nextContext) {\n if(this.props.isApp !== nextProps.isApp) {\n this.fetchAICourse();\n return false;\n }\n return true;\n }\n\n fetchAICourse = () => {\n http.get(`${API.home}/sys/pre_coursee`).then(res => {\n const {code, data, msg} = res.data;\n if (code === 200) {\n this.setState({\n courseData: JSON.stringify(data) == '{}' ? []:data.filter((item, index) => index < 4),\n courseDataAll: data\n })\n } else {\n Toast.info(msg, 2);\n }\n });\n }\n\n\n // 立即付定金\n expandPaydj = (courseId) => {\n const {user, history} = this.props;\n const uid = user && user.data && user.data.uid;\n if (!uid) {\n if (!getParam('version')) {\n this.props.history.push('/passport/login')\n } else {\n SendMessageToApp(\"toLogin\");\n }\n\n } else {\n if (!getParam('version')) {\n this.props.history.push(\n `/deposit-order?oid=${courseId}&source=${2}`,\n {\n id: courseId,\n isexpand: 1,\n sourcenum: 2\n }\n )\n } else {\n SendMessageToApp(\"earnestMoney\", courseId);\n }\n }\n }\n // 立即付尾款\n expandPaywk = (courseId, time,day) => {\n const {user, history} = this.props;\n const uid = user && user.data && user.data.uid;\n if (!uid) {\n if (!getParam('version')) {\n this.props.history.push('/passport/login')\n } else {\n SendMessageToApp(\"toLogin\");\n }\n\n } else {\n let timeStamp = Date.parse(new Date()) / 1000;\n if (timeStamp >= time) {\n if (!getParam('version')) {\n this.props.history.push(\n '/final-deposit-order?source=1',\n {\n id: courseId,\n sourcenum: 1\n }\n )\n } else {\n SendMessageToApp(\"TailMoney\");\n }\n } else {\n Toast.info(\"付尾款时间将在\" + day + \"开启\", 2);\n }\n }\n }\n // 去学习\n tostudy = (courseId) => {\n if (!getParam('version')) {\n this.props.history.push(`/getDetail?id=${courseId}`)\n } else {\n SendMessageToApp(\"toCourse\", courseId);\n }\n }\n // 查看更多\n showMoreData = () => {\n this.setState({\n isShowMore: !this.state.isShowMore,\n courseData: this.state.isShowMore ? this.state.courseDataAll.filter((item, index) => index < 4) : this.state.courseDataAll,\n })\n }\n\n render() {\n const {courseData, isShowMore} = this.state;\n return (\n <div className='reserve-course-module'>\n <CourseList courseData={courseData}\n expandPaydj={this.expandPaydj}\n expandPaywk={this.expandPaywk}\n tostudy={this.tostudy}/>\n\n <button className=\"more-button\" onClick={this.showMoreData}>\n {isShowMore ? '收起' : '展开更多'}\n </button>\n\n </div>\n )\n }\n}\n\nfunction CourseList(props) {\n const {courseData, expandPaydj, expandPaywk, tostudy} = props\n return (\n <div className=\"course-list\">\n <ul>\n {\n courseData.map((item, index) => {\n return (\n <li className=\"course-item-box\" key={index}>\n <a onClick={() => tostudy(item.course_id)}>\n <div className=\"top\">\n <div className=\"square\">\n <p className=\"circular\">\n 到手最低¥<span>{Number(item.price) - Number(item.deduction_amount) - Number(item.limit_amount)}</span>\n </p>\n </div>\n <img className=\"course-img\" src={item.image_name} alt=\"\"/>\n </div>\n </a>\n\n <p className=\"count-price\">\n =原价¥{item.price}\n <span>-抵扣¥<i>{item.deduction_amount}</i></span>\n <span>-膨胀券¥<i>{item.limit_amount}</i></span>\n </p>\n\n <div className=\"btn\">\n {\n item.is_buy === 0 &&\n <button className=\"to-expand-buy1\"\n onClick={() => expandPaydj(item.course_id)}>立即付定金</button>\n }\n {\n item.is_buy === 1 &&\n <button\n className=\"to-expand-buy2\"\n onClick={() => expandPaywk(item.course_id, item.start_timestamp,item.final_start_time)}\n >立即付尾款</button>\n }\n {\n item.is_buy === 2 &&\n <button className=\"to-study\"\n onClick={() => tostudy(item.course_id)}>开始学习</button>\n }\n\n </div>\n </li>\n )\n })\n }\n </ul>\n </div>\n )\n}\n\nexport default listFrame(connect(\n state => ({\n user: state.user\n }),\n)(withRouter(ReserveCourse)))\n","import React, { Component } from 'react'\nimport './index.scss'\nimport listFrame from './../listFrame/index';\nimport { http, SendMessageToApp, getParam} from \"@/utils\"\n\nclass LevelTest extends Component {\n constructor(props) {\n super(props);\n this.state = {\n testNumber: '',\n number: 1,\n prizeListUrl: [\n {\n url:\n \"https://julyedu-cdn.oss-cn-beijing.aliyuncs.com/active19_1111/AIExam/top1.png\"\n },\n {\n url:\n \"https://julyedu-cdn.oss-cn-beijing.aliyuncs.com/active19_1111/AIExam/top2.png\"\n },\n {\n url:\n \"https://julyedu-cdn.oss-cn-beijing.aliyuncs.com/active19_1111/AIExam/top3-4.png\"\n },\n {\n url:\n \"https://julyedu-cdn.oss-cn-beijing.aliyuncs.com/active19_1111/AIExam/top5-7.png\"\n },\n {\n url:\n \"https://julyedu-cdn.oss-cn-beijing.aliyuncs.com/active19_1111/AIExam/top8-10.png\"\n },\n {\n url:\n \"https://julyedu-cdn.oss-cn-beijing.aliyuncs.com/active19_1111/AIExam/top11-20.png\"\n }\n ],\n }\n }\n\n componentDidMount() {\n const {isLogin} = this.props;\n if(isLogin) {\n http.get(`${API.home}/sys/ai_test/get_user_testinfo`).then(res => {\n let {code, data: {user_test_total, user_residue_number}} = res.data;\n if(code === 200) {\n this.setState({\n testNumber: user_test_total,\n number: user_residue_number\n })\n }\n });\n }\n }\n\n startTest = () => {\n const {isLogin, toLogin} = this.props;\n if(isLogin) {\n var _czc = _czc || [];\n _czc.push([\"_trackEvent\", 'AI水平测试', 'm端双十一AI水平测试-点击测试']);\n\n if(getParam('version')) {\n window.location.href = `${API.m}/levelTest/test?version=${getParam('version')}`;\n }else{\n window.location.href = `${API.m}/levelTest/test`;\n }\n }else{\n toLogin();\n }\n }\n\n render() {\n let {\n testNumber,\n number,\n prizeListUrl,\n } = this.state;\n const {isLogin, testSum} = this.props;\n return (\n <>\n <div className=\"level__test_module\">\n <div className='start__test' onClick={this.startTest}>\n <img className='test-img' src=\"https://julyedu-cdn.oss-cn-beijing.aliyuncs.com/active19_1111/m/test_icon.png\" />\n <div className=\"button__text\">\n <p>点击测试</p>\n </div>\n </div>\n <div className='test__number'>\n 已有\n <span className='number'>\n {testNumber || testSum}\n </span>\n 人参加测试\n </div>\n <div className='prize__rules'>\n <div className=\"prize__title\">— 活动奖品 —</div>\n <div className=\"prize__list\">\n {\n prizeListUrl.map((item, index) => {\n return (\n <div className='prize__container' key={index}>\n <img src={item.url} />\n </div>\n )\n })\n }\n </div>\n\n <div className=\"prize__title\">— 活动规则 —</div>\n <div className=\"rules__text\">\n <p>1. 11月5日至11月13日之间每人有一次测试机会,可通过“集福气”活动额外获得2次测试机会;</p>\n <p>2. 单次测试时间为一小时,超时自动提交试卷;</p>\n <p>3. 试卷内容为Python基础(8道题*3分)、机器学习(12道题*3分)、深度学习(10道题*4分),总分100分;</p>\n <p>4. 无固定试卷,参与测试时从试题库中随机抽题组卷;</p>\n <p>5. 排行榜实时更新,分数相同则用时短者排名更高,多次测试保留最高分;</p>\n <p>6. 如发现某账号有作弊嫌疑,七月在线有权清空账号测试成绩;</p>\n <p>7. 活动最终解释权归七月在线所有。</p>\n </div>\n </div>\n </div>\n </>\n )\n }\n}\n\nexport default listFrame(LevelTest)\n","import React, { Component } from 'react'\nimport './index.scss'\nimport {http} from \"@/utils\"\nimport ListHeader from './../listHeader';\n\nexport default class RankList extends Component {\n constructor(props) {\n super(props);\n this.state = {\n rankList: []\n }\n }\n\n componentDidMount() {\n http.get(`${API.home}/sys/ai_test/ranking/50`).then(res => {\n let data = res.data.data;\n let code = res.data.code;\n if(code === 200) {\n this.setState({\n rankList: data.rankings\n })\n }\n });\n }\n\n formart = (time) => {\n let date = time * 1000,\n hours = 0,\n minutes = 0,\n seconds = 0;\n hours = `${parseInt(date / (60 * 60 * 1000))}`.padStart(2, 0);\n minutes = `${parseInt((date - hours * 3600000) / 60000)}`.padStart(2, 0);\n seconds = `${parseInt(\n (date - hours * 3600000 - minutes * 60000) / 1000\n )}`.padStart(2, 0);\n return `${minutes}'${seconds}\"`;\n }\n\n render() {\n let {rankList} = this.state;\n return (\n <>\n <ListHeader text=\"测试排行榜\" styles={{margin: '20px 0 10px'}} size='middle' />\n <div className=\"sort__rules\">\n 仅显示前50名\n </div>\n <div className=\"rank__list_module\">\n <div className=\"rank__table_head\">\n <div className=\"table_head table_head__sort\">排名</div>\n <div className=\"table_head table_head__user_info\">用户</div>\n <div className=\"table_head table_head__time\">用时</div>\n <div className=\"table_head table_head__score\">成绩</div>\n <div className=\"table_head table_head__prize\">奖品</div>\n </div>\n <div className=\"rank__table_body\">\n {\n rankList.map((item, index)=>{\n return (\n <div className=\"table__tr\" key={index}>\n <div className='table__body table_head__sort'>\n {\n index > 2 ? (index + 1) : (\n null\n )\n }\n </div>\n <div className='table__body table_head__user_info'>\n <img className=\"user__avatar\" src={item.avatar} />\n <span className=\"user__name\">{item.user_name}</span>\n </div>\n <div className='table__body table_head__time'>{this.formart(item.cost_time)}</div>\n <div className='table__body table_head__score'>{item.score}</div>\n <div className='table__body table_head__prize'>{item.prize}</div>\n </div>\n )\n })\n }\n </div>\n </div>\n </>\n )\n }\n}\n","import React, { Component } from 'react'\nimport './index.scss'\nimport { Tabs, Toast } from \"antd-mobile\"\nimport { getParam, http, SendMessageToApp, browser } from \"@/utils\"\nimport { Popup } from \"@common/index\"\nimport QRCode from 'qrcode'\nimport { uniqBy } from 'lodash'\nimport { connect } from 'react-redux'\nimport { withRouter } from 'react-router-dom'\n\n\n@connect(state => ({user: state.user}))\nclass Live extends Component {\n\n popupInstance = null\n\n state = {\n tabs: [],\n lives: [],\n preheatLives: [],\n todayIndex: '',\n isApp: getParam('version'),\n QRCodeUrl: '',\n }\n\n\n componentDidMount() {\n http.get(`${API.home}/sys/get_live_info`)\n .then(res => {\n const {data, code, msg} = res.data\n if (code == 200) {\n let tabs = uniqBy(data, item => item.date)\n let todayIndex = tabs.findIndex(item => item['is_today'])\n tabs = tabs.map(item => ({title: item.date}))\n\n this.setState({\n tabs,\n lives: data,\n todayIndex: todayIndex < 0 ? 0 : todayIndex,\n })\n\n } else {\n Toast.info(msg, 2, null, false)\n }\n\n })\n }\n\n\n toLogin = () => {\n const {history} = this.props\n if (!getParam('version')) {\n history.push('/passport')\n } else {\n SendMessageToApp(\"toLogin\")\n }\n }\n\n toLiveRoom = id => {\n const {history, isLogin} = this.props\n var _czc = _czc || []\n var name = '直播间id=' + id\n _czc.push([\"_trackEvent\", name, 'm端双十一大咖直播-正在直播'])\n if (this.state.isApp) {\n if (isLogin) {\n SendMessageToApp('toLiveRoom', id)\n } else {\n SendMessageToApp(\"toLogin\")\n }\n } else {\n if (isLogin) {\n window.location.href = `${window.location.protocol}//www.julyedu.com/live/m_room/${id}`\n } else {\n history.push('/passport')\n }\n }\n }\n\n saveImage = () => {\n let version = getParam('version')\n version = typeof version === 'string' ? version.replace('.', '').replace('.', '').slice(0, 3) : ''\n const {QRCodeUrl} = this.state\n if (version && parseInt(version) < 451) {\n Toast.info('当前不支持此功能,升级到最新版本app可以点击保存二维码!', 2, null, false)\n } else {\n SendMessageToApp('generateQRCode', QRCodeUrl)\n }\n }\n\n checkVideo = (url) => {\n let version = getParam('version');\n const {history, user} = this.props;\n if(!version) {\n if (user.hasError) {\n this.toLogin()\n }else{\n const vCourseId = url.split('/')[0];\n history.push(`/play/video?id=${vCourseId}`)\n }\n }else{\n Toast.info('当前版本不支持此功能,请前往h5/pc查看回放该直播', 2, null, false);\n }\n }\n\n makeSubscribe = id => {\n const {user} = this.props\n if (user.hasError) {\n this.toLogin()\n }\n\n var name = '直播间id=' + id\n _czc.push([\"_trackEvent\", name, 'm端双十一大咖直播-立即预约'])\n\n http.get(`${API['base-api']}/sys/createLiveQrcode/${id}`)\n .then(res => {\n const {data} = res\n if (data.errno == 200) {\n this.setState(() => ({\n QRCodeUrl: data.data.url,\n }))\n QRCode.toDataURL(data.data.url, (err, url) => {\n if (!this.popupInstance) {\n this.popupInstance = Popup({\n title: '扫码关注“七月在线”服务号即可预约',\n content: (\n <>\n <img id={'live-qr-code'} src={url} alt=\"\"/>\n {\n browser.isAndroidApp ? (\n <button className={'save-image'} onClick={this.saveImage}>保存二维码</button>\n ) : null\n }\n </>\n ),\n close: () => new Promise(resolve => {\n this.popupInstance = null\n resolve()\n })\n })\n }\n })\n } else if(data.errno == 4030 || data.errno == 4040){\n }else {\n Toast.info(data.msg, 2, null, false)\n }\n })\n }\n\n render() {\n const {tabs, lives, todayIndex} = this.state\n return (\n <div id={'live'}>\n <div className=\"title\">\n <img src=\"https://julyedu-cdn.oss-cn-beijing.aliyuncs.com/active19_1111/title-decorate-left.png\" alt=\"\"/>\n <span>大咖直播</span>\n <img src=\"https://julyedu-cdn.oss-cn-beijing.aliyuncs.com/active19_1111/title-decorate-right.png\" alt=\"\"/>\n </div>\n <div className=\"live-container\">\n {\n todayIndex !== '' &&\n <Tabs\n tabs={tabs}\n tabBarBackgroundColor={'transparent'}\n tabBarActiveTextColor={'#5600DF'}\n tabBarInactiveTextColor={'#FFF604'}\n tabBarUnderlineStyle={{display: 'none'}}\n initialPage={todayIndex}\n swipeable={false}\n >\n {\n tabs.map((item, index) => {\n const todayLives = lives.filter(liveItem => liveItem.date === item.title)\n return (\n <div key={index}>\n {\n todayLives && todayLives.map((item, index) => {\n return (\n <LiveContent item={item} key={index} makeSubscribe={this.makeSubscribe}\n toLiveRoom={this.toLiveRoom} checkVideo={this.checkVideo}/>\n )\n })\n }\n </div>\n )\n })\n }\n </Tabs>\n\n }\n </div>\n </div>\n )\n }\n}\n\nfunction LiveContent({item, makeSubscribe, toLiveRoom, checkVideo}) {\n return (\n <div className=\"content\">\n {\n item['is_teacher']\n ? <div className=\"tag teacher\">讲师分享</div>\n : <div className=\"tag student\">学员分享</div>\n }\n <div className=\"person-info\">\n <div className=\"left\">\n <img\n src={item.avatar}\n alt=\"头像\"\n className=\"avatar\"/>\n </div>\n <div className=\"right\">\n <div className=\"name\">讲师:{item['teacher']}</div>\n <div className=\"profession\">{item['teacher_desc']}</div>\n </div>\n </div>\n <div className=\"title\">{item.title}</div>\n <div className=\"time\">直播时间:{item.time}</div>\n <div className=\"outline\">\n <div className=\"outline-title\">内容大纲:</div>\n <ul>\n {\n item['content'].map((content, index) => {\n return <li key={index}>{content}</li>\n })\n }\n </ul>\n </div>\n {\n item['on_live']\n ? <button className={'on-living'} onClick={() => {\n toLiveRoom(item['room_url'])\n }}>正在直播</button>\n :\n item['is_end']\n ? item.transcribe_url === '' ? <button className={'subscribed'}>已结束</button> : <button className={'on-living'} onClick={() => checkVideo(item.transcribe_url)}>查看回放</button>\n : item['is_subscribe']\n ? <button className={'subscribed'}>已预约</button>\n : <button className={'subscribe'}\n onClick={makeSubscribe.bind(this, item['live_id'])}>立即预约</button>\n }\n </div>\n )\n}\n\nexport default withRouter(Live)\n","import React, { Component } from 'react';\nimport './index.scss';\n\nclass Banner extends Component {\n navTop = 183\n prevY = 0\n state = {\n navs: [\n {\n text: '积福气',\n id: 'lucky-value'\n },\n {\n text: '幸运大抽奖',\n id: 'lucky-draw'\n },\n {\n text: '预付定金',\n id: 'deposit'\n },\n {\n text: '精品特惠',\n id: 'best-courses'\n },\n {\n text: 'AI测试',\n id: 'ai-test'\n },\n {\n text: '大咖直播',\n id: 'live'\n },\n ],\n index: 0,\n }\n\n // componentDidMount() {\n // window.addEventListener('scroll', throttle(this.calcNavActive, 100))\n // }\n\n // componentWillUnmount() {\n // window.removeEventListener('scroll', throttle(this.calcNavActive, 100))\n // }\n\n\n // calcNavActive = () => {\n // const {navs, index} = this.state\n // const y = window.scrollY\n // let swipeDirection = y > this.prevY ? 'up' : 'down'\n // let _index\n // if (swipeDirection === 'up') {\n // _index = (index + 1) >= navs.length ? index : index + 1\n\n // } else {\n // _index = (index - 1) <= 0 ? 0 : index - 1\n // }\n // let el = document.querySelector(`#${navs[_index].id}`)\n // let nav = document.querySelector('#main-nav')\n // if(el) {\n // let top = el.offsetTop\n\n // if (y <= this.navTop) {\n // nav.classList.remove('fixed')\n // } else {\n // !nav.classList.contains('fixed') && nav.classList.add('fixed')\n // }\n\n // if (swipeDirection === 'up') {\n // if (y + 30 + 30 >= top) {\n // this.setState({\n // index: _index\n // })\n // }\n // } else {\n // if (y + 30 + 20 <= top) {\n // this.setState({\n // index: _index\n // })\n // }\n // }\n // this.prevY = y\n // }\n\n // }\n\n // toSection = (i, e) => {\n // e.preventDefault()\n // let top = document.querySelector(`#${this.state.navs[i].id}`).offsetTop\n // this.setState({\n // index: i\n // })\n // window.scrollTo({\n // top: top - 60,\n // left: 0\n // })\n // }\n\n\n render() {\n const { toSection, navs, index, isFormal, onlyShow } = this.props;\n return (\n <div id={'main-banner'}>\n <div className={`banner ${isFormal ? 'formal_banner' : ''} ${onlyShow ? 'fc_banner' : ''}`}></div>\n <nav id={'main-nav'}>\n <ul>\n {\n navs.map((item, i) => {\n return (\n <li key={i} className={index === i ? 'active' : ''}>\n <a href={`#${item.id}`} onClick={(e) => toSection(i, e)}>{item.text}</a>\n </li>\n )\n })\n }\n </ul>\n </nav>\n </div>\n )\n }\n}\n\nexport default Banner\n","import React, { Component } from 'react'\nimport { http } from \"@/utils\"\nimport { Toast, Tabs } from 'antd-mobile'\nimport './index.scss'\nimport 'swiper/dist/css/swiper.min.css'\nimport { Link, withRouter } from 'react-router-dom'\nimport classnames from 'classnames'\nimport Swiper from 'swiper'\nimport { Popup } from \"@common/index\"\nimport QRCode from 'qrcode'\nimport { connect } from 'react-redux'\n\n\n@connect(state => ({user: state.user}))\nclass FormalDraw extends Component {\n\n swiper = null\n popupInstance = null\n subscribePopupInstance = null\n\n state = {\n prizes: [],\n currentDisplayPrizes: [],\n tabs: [],\n today: '',\n initialPageIndex: 0,\n list: [],\n activeTimeRangeIndex: 0,\n userValue: {},\n }\n\n componentDidMount() {\n this.getPrizeData()\n }\n\n shouldComponentUpdate(nextProps, nextState, nextContext) {\n if (this.props.isApp !== nextProps.isApp) {\n this.getPrizeData()\n return false\n }\n return true\n }\n\n getPrizeData = () => {\n http.get(`${API.home}/sys/activity/prize_data`)\n .then(res => {\n const {data, code, msg} = res.data\n if (code == 200) {\n let oneDay = data.list.find(item => item.date === data.value.today) || data.list[0]\n const today = oneDay.date\n const activeIndex = oneDay['son'].findIndex(item => item.status == 3)\n this.setState({\n tabs: data.list.map(item => ({title: item.date})),\n today,\n initialPageIndex: data.list.findIndex(item => item.date == today) || 0,\n list: data.list,\n userValue: data.value,\n activeTimeRangeIndex: activeIndex < 0 ? 0 : activeIndex\n }, () => {\n this.initializeSwiper()\n })\n } else {\n Toast.info(msg, 2, null, false)\n }\n })\n }\n\n initializeSwiper = () => {\n new Swiper(this.swiper, {\n slidesPerView: 'auto',\n scrollbar: {\n el: '.swiper-scrollbar',\n draggable: true\n }\n })\n }\n\n changeTab = (tab) => {\n const {list} = this.state\n const data = list.filter(item => item.date === tab.title)\n let index = data[0]['son'].findIndex(item => item.status == 3)\n this.setState({\n today: tab.title,\n activeTimeRangeIndex: index < 0 ? 0 : index\n }, () => {\n this.initializeSwiper()\n })\n }\n\n draw = id => {\n let {surplus, is_prize, hot_value} = this.state.userValue\n if (hot_value < 50) {\n Toast.info('你的福气值未达到参与抽奖所需福气值分数,快去积攒福气值吧', 2, null, false)\n } else if (is_prize == 1) {\n Toast.info('你已参与当前时段抽奖', 2, () => {\n this.requestDraw(id, true)\n }, false)\n } else if (surplus < 1) {\n Toast.info('你的抽奖次数已用光,快去积攒福气值可获得更多抽奖机会', 2, null, false)\n } else {\n this.requestDraw(id)\n }\n }\n\n requestDraw = (id, isDrawn) => {\n let {surplus} = this.state.userValue\n http.post(`${API.home}/sys/activity/prize`, {\n id\n }).then(res => {\n const {code, msg, data} = res.data\n if (code == 200) {\n var _czc = _czc || []\n _czc.push([\"_trackEvent\", '点击抽奖', 'm端双十一正式活动-点击抽奖'])\n QRCode.toDataURL(data.url, (err, url) => {\n this.popupInstance = Popup({\n title: '你已成功参与本时段抽奖',\n className: 'join-lottery',\n content: (\n <>\n <div className=\"text\">\n <div className=\"code\">抽奖码为:{data.code}</div>\n <div className=\"time\">本时段的中奖结果将在{data.date}公布</div>\n <div className=\"hint\">你可关注‘七月在线’服务号第一时间获得中奖信息。</div>\n <img src={url} className='qr-code' alt=\"\"/>\n </div>\n <button onClick={() => {\n this.popupInstance.close()\n }}>知道了\n </button>\n </>\n )\n })\n this.setState({\n userValue: {...this.state.userValue, ...{surplus: isDrawn ? surplus : --surplus}, ...{is_prize: 1}}\n })\n })\n } else {\n Toast.info(msg, 2, null, false)\n }\n })\n }\n\n lotteryFunc = (status, id) => {\n const {hasError} = this.props.user\n if (hasError && status != 4) {\n this.props.toLogin()\n return\n }\n if (status == 3) {\n this.draw(id)\n } else if (status == 2) {\n this.subscribe(id)\n } else if (status == 4) {\n location.href = `/prize-winner-list?tid=${id}`\n }\n }\n\n subscribe = (id) => {\n var _czc = _czc || []\n _czc.push([\"_trackEvent\", '预约抽奖', 'm端双十一正式页-立即预约'])\n if (this.subscribePopupInstance) {\n return\n }\n if (!this.state.userValue['is_pre']) {\n http.get(`${API[\"base-api\"]}/sys/activity/create_pre_qrcode`, {params: {id}})\n .then(res => {\n const {code, data, msg} = res.data\n if (code == 200) {\n this.subscribePopupInstance = QRCode.toDataURL(data.url, (err, url) => {\n Popup({\n title: '微信扫码“七月在线”服务号即可预约',\n className: 'subscribe',\n content: <img src={url} alt=\"\" className=\"qr-code\"/>,\n close: () => new Promise(resolve => {\n this.subscribePopupInstance = null\n resolve()\n })\n })\n })\n } else {\n Toast.info(msg, 2, null, false)\n }\n })\n } else {\n http.get(`${API[\"base-api\"]}/activity_pre/${id}`)\n .then(res => {\n const {code} = res.data\n if (code == 200) {\n Toast.info('预约成功', 2, null, false)\n }\n })\n .catch(err => {\n console.log(err)\n })\n }\n\n\n }\n\n render() {\n const {tabs, today, initialPageIndex, list, activeTimeRangeIndex, userValue} = this.state\n const {hasError} = this.props.user\n const isLogin = !hasError\n const schedule = userValue.schedule <= 2 ? 2 : userValue.schedule\n return (\n list.length > 0 ?\n <div id={'formal-draw'}>\n {\n list.length &&\n <Tabs\n tabs={tabs}\n initialPage={initialPageIndex}\n tabBarBackgroundColor={'transparent'}\n tabBarActiveTextColor={'#5600DF'}\n tabBarInactiveTextColor={'#FFF604'}\n tabBarUnderlineStyle={{display: 'none'}}\n onTabClick={this.changeTab}\n swipeable={false}\n >\n {\n list.map((listItem, index) => {\n return (\n <div className={`content ${(isLogin && today === userValue.today) ? 'current' : ''}`} key={index}>\n {\n (isLogin && (today === userValue.today))\n ?\n <div className=\"prize_number_con\">\n 当日剩余抽奖次数:\n <span className={'prize__number'}>{userValue.surplus}次</span>\n </div>\n : \"\"\n }\n <div className=\"title\">\n <img src=\"https://julyedu-cdn.oss-cn-beijing.aliyuncs.com/active19_1111/title-decorate-left.png\"\n alt=\"\"/>\n {\n isLogin\n ?\n <div className=\"hot-value\">中奖概率值:<span className={'grade'}>{userValue['hot_value']}分</span>\n </div>\n : <div className=\"hot-value\">中奖概率值:<Link to={'/passport'}>登录</Link></div>\n }\n <img\n src=\"https://julyedu-cdn.oss-cn-beijing.aliyuncs.com/active19_1111/title-decorate-right.png\"\n alt=\"\"/>\n </div>\n\n {\n isLogin ?\n <div className=\"progress-bar\">\n <img className={'locator'}\n src=\"https://julyedu-cdn.oss-cn-beijing.aliyuncs.com/active19_1111/locator.png\"\n alt=\"\"\n style={{\n left: `${schedule - (11 / 330 - (6 / 330)) * 100}%`\n }}\n />\n <div className=\"progress\" style={{\n width: `${schedule}%`\n }}></div>\n </div>\n : null\n }\n <ul className=\"time-ranges\">\n {\n listItem.son && listItem.son.map((item, i) => {\n let statusContent\n switch (item.status) {\n case 5:\n statusContent = '已预约'\n break\n case 4:\n statusContent = (\n <>\n <span>已结束</span>\n <Link to={`/prize-winner-list?tid=${item.id}`}>查看中奖名单</Link>\n </>\n )\n break\n case 3:\n statusContent = (\n <>\n <div>立即抽奖</div>\n <div>{item.num}人正在参与</div>\n </>\n )\n break\n case 2:\n statusContent = '立即预约'\n break\n default:\n statusContent = '即将开启'\n }\n return (\n <li key={i}\n className={classnames(`status-${item.status}`, {active: activeTimeRangeIndex === i})}>\n <div className={'status-bar'} onClick={() => {\n this.setState({activeTimeRangeIndex: i}, () => {\n this.initializeSwiper()\n })\n }}>\n <img className={'icon-clock'}\n src={\n item.status == 3\n ? 'https://julyedu-cdn.oss-cn-beijing.aliyuncs.com/active19_1111/m/m-icon-clock-purple.png'\n : \"https://julyedu-cdn.oss-cn-beijing.aliyuncs.com/active19_1111/m/m-icon-clock.png\"\n }\n alt=\"\"/>\n <div className=\"time\">\n <span>{item.time}</span>\n </div>\n <div className=\"status\"\n onClick={this.lotteryFunc.bind(this, item.status, item.id)}>{statusContent}</div>\n </div>\n {\n activeTimeRangeIndex === i &&\n listItem.date === today &&\n <div className=\"swiper-container\" ref={el => this.swiper = el}>\n <ul className={'prizes swiper-wrapper'}>\n {\n item.data.map((prize, index) => {\n return (\n <li key={index} className={'swiper-slide'}>\n {\n prize.level === 1 &&\n item.status === 3 &&\n <div className=\"tip\">\n 满10000人释放\n </div>\n }\n <img src={prize.img} alt=\"\"/>\n <div className='prize-name'>\n <div>{prize.name}</div>\n <div>*{prize.num}</div>\n </div>\n </li>\n )\n })\n }\n <li className='swiper-scrollbar'></li>\n </ul>\n </div>\n }\n </li>\n )\n })\n }\n </ul>\n </div>\n )\n })\n }\n </Tabs>\n }\n </div>\n : null\n )\n }\n}\n\nexport default withRouter(FormalDraw)\n","import React, { Component } from 'react'\nimport QRCode from 'qrcode'\nimport { http, SendMessageToApp, wxShare, is_weixin, getParam } from '@/utils'\nimport { Link } from 'react-router-dom'\nimport { throttle, findIndex, debounce } from 'lodash'\nimport RulePopup from './rulePopup/index'\nimport CoursePopup from './coursePopup/index'\nimport RecordPopup from './recordPopup/index'\nimport CourseList from './courseList/index'\nimport SharePopup from './sharePopup/index'\nimport LuckDraw from './luckDraw/index'\nimport CollectBlessing from './collectBlessing/index'\nimport ReserveCourse from './ReserveCourse/index'\nimport ListHeader from './listHeader/index'\nimport LevelTest from './levelTest/index'\nimport RankList from './rankList/index'\nimport './index.scss'\nimport { Popup } from '@/common'\nimport { Toast } from \"antd-mobile\"\nimport Live from './live'\nimport Banner from './banner'\nimport cookie from \"js-cookie\"\nimport { setCurrentUser, startFetchUser } from \"@/store/userAction\"\nimport { addDays } from \"date-fns\"\nimport { compose } from \"redux\"\nimport { connect } from \"react-redux\"\nimport FormalDraw from \"./formal-draw\"\n\n\nclass BlessingPreheat extends Component {\n\n recordInstance = null\n\n constructor(props) {\n super(props)\n this.navTop = 183\n this.prevY = 0\n this.state = {\n userInfoList: [],\n // userInfoList: [{\n // token:'fcfef221e60ab7a2-92a80d5d30196999',\n // uid:'545292',\n // uname:'xzhtest2',\n // avatar_file:''\n // }],\n isRule: false,\n isCourse: false,\n inviteUrl: '',\n inviteVisible: false,\n joinLotteryVisible: false,\n timelineShareVisible: false,\n showRecordList: false,\n isFormal: false, // 1正式 0 预热\n onlyShow: false, // 14号返场\n isServer: false,\n serverUrl: '',\n shareMark: false,\n userInfo: {},\n isSign: false,\n navs: [\n {\n text: '积福气',\n id: 'lucky-value'\n },\n {\n text: '幸运大抽奖',\n id: 'lucky-draw'\n },\n {\n text: '预付定金',\n id: 'deposit'\n },\n {\n text: '精品特惠',\n id: 'best-courses'\n },\n {\n text: 'AI测试',\n id: 'ai-test'\n },\n {\n text: '大咖直播',\n id: 'live'\n },\n ],\n formalNavs: [\n {\n text: '幸运大抽奖',\n id: 'lucky-draw'\n },\n {\n text: '积福气',\n id: 'lucky-value'\n },\n {\n text: '精品特惠',\n id: 'best-courses'\n },\n {\n text: 'AI测试',\n id: 'ai-test'\n },\n {\n text: '大咖直播',\n id: 'live'\n },\n ],\n encoreNavs: [\n {\n text: '精品特惠',\n id: 'best-courses'\n },\n {\n text: '大咖直播',\n id: 'live'\n },\n {\n text: '幸运大抽奖',\n id: 'lucky-draw'\n },\n {\n text: '积福气',\n id: 'lucky-value'\n },\n {\n text: 'AI测试',\n id: 'ai-test'\n },\n ],\n index: 0,\n userHasError: props.user.hasError,\n isApp: false,\n isClose: false,\n testSum: 0,\n address: {\n name: '',\n phone: '',\n address: ''\n },\n addressPopupVisible: false\n }\n }\n\n componentDidMount() {\n const _this = this;\n this.fetchUserBlessing()\n // setTimeout(function(){\n // // 这里有获取ID的步骤,由于运营过多的调整,导致顺序不定,所以包含ID的title必须要放到判断中(防止出现多个title),设置定时器是因为如果返回较慢 获取不到ID导致报错\n // _this.setInitialNavActiveStatus()\n // }, 50);\n // window.addEventListener('scroll', throttle(this.calcNavActive, 100))\n if (is_weixin()) {\n wxShare({\n title: 'AI充电节,积福气享1折秒课,超10万元奖品来就送!!',\n desc: '把这门超5万人报名的【Python基础入门 升级版】课程送给你,附200元红包,请笑纳!--七月在线',\n link: window.location.href,\n imgUrl: 'https://julyedu-cdn.oss-cn-beijing.aliyuncs.com/active19_1111/m/index-share-img.png',\n })\n }\n\n // 获取App登录信息\n window['loginInfo'] = result => {\n this.loginInfo(result)\n }\n\n window['getNewData'] = result => {\n this.fetchUserBlessing()\n }\n window['QQWXWBshare'] = result => {\n http.post(`${API.home}/sys/add/blessing`, {\n share_platform: result, // 1 朋友圈 2 微博 3 qq\n type: 3 // 1:签到;3:分享;4:浏览课程;\n }).then(res => {\n const {code} = res.data\n if (code === 200) {\n Toast.info('+2点福气值~', 2, null, false)\n this.fetchUserBlessing()\n }\n })\n }\n\n }\n\n componentWillUpdate() {\n const {isFormal} = this.state;\n if(isFormal === 1) {\n document.title = `11.11-11.13 AI充电节,为AI出击!重磅好课1折秒,海量奖品来就送-七月在线`\n }else{\n document.title = `11.11-11.13 AI充电节,预热来袭!积福气享1折秒课,海量奖品来就送-七月在线`\n }\n }\n\n// 获取app登录数据\n loginInfo = (result) => {\n this.setState({\n userInfoList: result\n }, () => {\n if (this.state.userInfoList.length) {\n this.props.startFetchUser()\n this.appLogin()\n }\n })\n\n }\n// 保存cookie\n appLogin = () => {\n let expires = addDays(new Date(), 90)\n this.state.userInfoList.map((item, index) => {\n cookie.set(\"token\", item.token, {expires, path: '/', domain: '.julyedu.com'})\n cookie.set(\"plat\", item.plat, {expires, path: '/', domain: '.julyedu.com'})\n cookie.set(\"uid\", item.uid, {expires, path: '/', domain: '.julyedu.com'})\n cookie.set(\"uname\", item.uname, {expires, path: '/', domain: '.julyedu.com'})\n cookie.set(\"avatar_file\", item.avatar_file, {expires, path: '/', domain: '.julyedu.com'})\n })\n\n if (cookie.get(\"token\") && cookie.get(\"uid\")) {\n this.fetchUserBlessing()\n this.setState({\n isApp: true\n })\n }\n\n this.props.setCurrentUser(this.transformUser(this.state.userInfoList))\n }\n transformUser = res => {\n let payload\n\n res.map((item, index) => {\n payload = {\n hasError: false,\n data: {\n username: item.uname,\n avatar: item.avatar_file,\n token: item.token,\n uid: item.uid\n },\n isFetching: false\n }\n })\n\n return payload\n }\n\n\n getActiveIndex = (arr, n) => {\n for (let i = 0, len = arr.length; i < len; i++) {\n if (arr[i] > n) {\n if (!i) {\n return i\n } else {\n if (Math.abs(n - arr[i]) < Math.abs(n - arr[i - 1])) {\n return i\n } else {\n return i - 1\n }\n }\n }\n }\n\n }\n\n fetchMoudleId = (str) => {\n const {navs} = this.state\n return findIndex(navs, item => item.id === str)\n }\n\n componentWillUnmount () {\n window.removeEventListener('scroll', this.calcNavActive);\n }\n\n setInitialNavActiveStatus = () => {\n const observer = new MutationObserver(debounce((list, observer) => {\n const navs = this.state.navs.map(item => document.querySelector(`#${item.id}`))\n if (navs.every(item => item)) {\n const navsTop = navs.map(item => item.offsetTop)\n const index = this.getActiveIndex(navsTop, window.pageYOffset)\n this.setState({index, navsTop}, () => {\n this.calcNavActive()\n observer.disconnect()\n })\n }\n }, 30))\n observer.observe(document.querySelector('#blessing-preheat'), {childList: true, subtree: true})\n }\n\n initNav = (isFormal) => {\n const {formalNavs, onlyShow, encoreNavs} = this.state\n if (isFormal) {\n if(onlyShow) {\n this.setState({\n navs: encoreNavs\n }, () => {\n this.setInitialNavActiveStatus()\n window.addEventListener('scroll', throttle(this.calcNavActive, 100))\n })\n \n } else {\n this.setState({\n navs: formalNavs\n }, () => {\n this.setInitialNavActiveStatus()\n window.addEventListener('scroll', throttle(this.calcNavActive, 100))\n })\n \n }\n\n }\n }\n\n fetchMoudleId = (str) => {\n const {navs} = this.state\n return findIndex(navs, item => item.id === str)\n }\n\n fetchUserBlessing = () => {\n const {userInfo} = this.state\n const {history} = this.props;\n http.get(`${API.home}/sys/user/blessing`).then(res => {\n const {code, data} = res.data\n if (code === 200) {\n if(data.is_over) {\n if(!getParam('version')) {\n history.push('/');\n } else {\n SendMessageToApp(\"toQualityCourse\");\n }\n }\n this.setState(()=>({\n isSign: !!data.today_signed,\n isFormal: data.is_activity,\n onlyShow: data.onlyShow,\n testSum: parseInt(data.user_test_total, 10) || 0,\n userInfo: Object.assign({}, userInfo, {\n isFollow: data.subscribed,\n blessingVal: data.user_blessing_value,\n buyBlessing: (data.types_total_blessing_value && data.types_total_blessing_value.buy_course) ? data.types_total_blessing_value.buy_course : 0,\n inviteBlessing: (data.types_total_blessing_value && data.types_total_blessing_value.invite) ? data.types_total_blessing_value.invite : 0,\n })\n }));\n if (data.is_login === 1) {\n this.handleToSign()\n }\n this.initNav(data.is_activity)\n }\n })\n }\n\n\n handleToAddBlessing = (key) => {\n http.post(`${API.home}/sys/add/blessing`, {\n share_platform: key, // 1 朋友圈 2 微博 3 qq\n type: 3 // 1:签到;3:分享;4:浏览课程;\n }).then(res => {\n const {code} = res.data\n if (code === 200) {\n Toast.info('+2点福气值~', 2, null, false)\n }\n })\n }\n\n\n handleToSign = () => {\n const {userInfo} = this.state\n http.post(`${API.home}/sys/add/blessing`, {\n type: 1 // 1:签到;3:分享;4:浏览课程;\n }).then(res => {\n const {code} = res.data\n if (code === 200) {\n this.setState({\n isSign: true,\n userInfo: Object.assign({}, userInfo, {\n blessingVal: userInfo.blessingVal + 5\n })\n })\n\n Toast.info('+5点福气值~', 2, null, false)\n }\n })\n }\n\n handleToHide = (key) => {\n let obj = {}\n obj[key] = false\n this.setState({\n ...obj\n })\n }\n\n handleToShow = (key, isLogin = false) => {\n // 需要用户登录 并且用户未登录\n const isLoginnew = !this.props.user.hasError\n\n if (isLogin && !isLoginnew) {\n this.toLogin()\n } else {\n if (key === 'shareMark') {\n this.setState({\n isClose: false\n })\n setTimeout(() => {\n this.setState({\n isClose: true\n })\n }, 5000)\n }\n let obj = {}\n obj[key] = true\n this.setState({\n ...obj\n })\n }\n }\n\n handleToShowNotice = () => {\n http.get(`${API['base-api']}/sys/activity/create_blessing_qrcode`).then(res => {\n const {errno, data, msg} = res.data\n if (errno === 200) {\n QRCode.toDataURL(data.url, {\n width: 120,\n height: 120,\n margin: 1\n }).then(url => {\n Popup({\n title: '扫码关注“七月在线”服务号',\n content: <img src={url} alt=\"barcode\" className=\"qr-code\"/>,\n className: 'invite-popup'\n })\n })\n .catch(err => {\n console.error(err)\n })\n } else if (errno === 4030 || errno === 4040) {\n this.toLogin()\n } else {\n Toast.info(msg, 2, null, false)\n }\n })\n }\n\n toLogin = () => {\n const {history} = this.props\n if (!getParam('version')) {\n history.push('/passport')\n } else {\n SendMessageToApp(\"toLogin\")\n }\n }\n\n onCopy = () => {\n Toast.info('复制成功', 2, null, false)\n }\n\n toSection = (i, e) => {\n const {navs} = this.state\n e.preventDefault()\n let top = document.querySelector(`#${navs[i].id}`).offsetTop\n this.setState({\n index: i\n })\n window.scrollTo({\n top: top - 60,\n left: 0\n })\n }\n\n calcNavActive = () => {\n const {navs, index} = this.state\n \n const y = window.scrollY\n let swipeDirection = y > this.prevY ? 'up' : 'down'\n let _index\n if (swipeDirection === 'up') {\n if(Number.isInteger(index)){\n _index = (index + 1) >= navs.length ? index : index + 1\n\n }else {\n _index = 0\n }\n } else {\n if(Number.isInteger(index)){\n _index = (index - 1) <= 0 ? 0 : index - 1\n }else {\n _index = 0\n }\n }\n let el = document.querySelector(`#${navs[_index].id}`)\n let nav = document.querySelector('#main-nav')\n if (el) {\n\n let top = el.offsetTop\n\n if (y <= this.navTop) {\n nav.classList.remove('fixed')\n } else {\n !nav.classList.contains('fixed') && nav.classList.add('fixed')\n }\n\n if (swipeDirection === 'up') {\n if (y + 30 + 30 >= top) {\n this.setState({\n index: _index\n })\n }\n } else {\n if (y + 30 + 20 <= top) {\n this.setState({\n index: _index\n })\n }\n }\n this.prevY = y\n }\n }\n\n getMyPrizeRecord = () => {\n const isLoginnew = !this.props.user.hasError\n const {history} = this.props\n if (!isLoginnew) {\n history.push('/passport')\n }else{\n http.get(`${API.home}/sys/activity/my_lotteries`)\n .then(res => {\n const {code, data, msg} = res.data\n if (code == 200) {\n this.recordInstance = Popup({\n title: '我的中奖纪录',\n className: 'prize-record-popup',\n content: (\n <div className={'record-container'}>\n <div className=\"list-title\">\n <div>时间</div>\n <div>奖品名称</div>\n </div>\n <ul>\n {\n Array.isArray(data)\n ? data.map((item, index) => {\n return (\n <li key={index}>\n <div className=\"time\">{item.time}</div>\n <div className=\"name\"\n onClick={this.showAddressPopup.bind(this, item['is_virtual'], item.prize)}>{item.prize}</div>\n </li>\n )\n })\n : <li style={{justifyContent: 'center'}}>暂无中奖纪录</li>\n }\n </ul>\n </div>\n )\n })\n } else {\n Toast.info(msg, 2, null, false)\n }\n })\n }\n }\n\n submitAddress = debounce(() => {\n http.post(`${API.home}/sys/collect_info`, {\n ...this.state.address\n })\n .then(res => {\n const {data, code, msg} = res.data\n if (code == 200) {\n\n this.setState({\n addressPopupVisible: false\n })\n\n } else {\n Toast.info(msg, 2, null, false)\n }\n })\n }, 500)\n\n setAddressState = e => {\n const value = e.target.value\n const name = e.target.name\n this.setState({\n address: {\n ...this.state.address, ...{\n [name]: value\n }\n }\n })\n }\n\n showAddressPopup = (isVirtual, prize) => {\n if (isVirtual) {\n Toast.info(`恭喜你抽中${prize},奖品已存放到你的账户`, 2, null, false)\n return\n }\n http.get(`${API.home}/sys/user_address_info`)\n .then(res => {\n const {data, code, msg} = res.data\n if (code == 200) {\n this.recordInstance && this.recordInstance.close()\n this.setState({\n address: {\n ...this.state.address, ...{\n name: data.name,\n phone: Number(data.phone),\n address: data.address\n }\n },\n addressPopupVisible: true\n })\n } else {\n Toast.info(msg, 2, null, false)\n }\n })\n }\n\n render() {\n const {\n navs,\n userInfo,\n isRule,\n isCourse,\n isFormal,\n isSign,\n showRecordList,\n shareMark,\n index,\n isApp,\n isClose,\n testSum,\n address,\n addressPopupVisible,\n onlyShow,\n } = this.state\n const {history} = this.props\n const isLogin = !this.props.user.hasError\n return (\n <div id={'blessing-preheat'}>\n <Banner\n isFormal={isFormal}\n navs={navs}\n toSection={this.toSection}\n index={index}\n onlyShow={onlyShow}\n />\n\n {/* 精品课程特惠专区--返场 */}\n {\n onlyShow && (\n <>\n <ListHeader id={'best-courses'} text=\"精品课程特惠专区\" styles={{margin: '60px 0 15px'}}/>\n <CourseList\n isApp={isApp}\n isFormal={isFormal}\n isLogin={isLogin}\n history={this.props.history}\n toLogin={this.toLogin}\n />\n </>\n )\n }\n\n {/* 大咖直播--返场 */}\n {\n onlyShow && <Live isFormal={isFormal} isLogin={isLogin}/>\n }\n\n {/* 抽奖--正式 */}\n {\n isFormal === 1 &&\n <>\n <ListHeader id={'lucky-draw'} text=\"幸运大抽奖\" styles={{margin: onlyShow ? '30px 0 10px' : '60px 0 10px'}}/>\n {\n onlyShow ? (\n <p className='active_over'>活动已结束</p>\n ) : null\n }\n <div className=\"formal-draw-btns\">\n <button className=\"luck-draw__button\" onClick={() => this.handleToShow('isRule')}>活动规则></button>\n <button className='prize-record' onClick={this.getMyPrizeRecord}>中奖记录></button>\n </div>\n <FormalDraw toLogin={this.toLogin} isApp={isApp}/>\n </>\n\n }\n\n {/* 积福气 */}\n <ListHeader id={'lucky-value'} text=\"积福气,享受更多福利\" styles={{margin: '30px 0 15px'}}/>\n {\n onlyShow ? (\n <p className='active_over'>活动已结束</p>\n ) : null\n }\n <Link className=\"blessing__sort\" to=\"/blessingRank\"></Link>\n\n\n <CollectBlessing\n isSign={isSign}\n userInfo={userInfo}\n isLogin={isLogin}\n history={this.props.history}\n toSection={(e) => this.toSection(this.fetchMoudleId('best-courses'), e)}\n handleToShowList={() => this.handleToShow('isCourse')}\n handleToShowNotice={this.handleToShowNotice}\n toLogin={this.toLogin}\n handleToShowShare={() => this.handleToShow('shareMark')}\n />\n\n {/* 幸运大抽奖--预热 */}\n {\n isFormal === 0 &&\n <>\n <ListHeader id={'lucky-draw'} text=\"幸运大抽奖\" styles={{margin: '30px 0 10px'}}/>\n <p className=\"luck-draw__tip\">- 将于11月11日10点开启 -</p>\n <button className=\"luck-draw__button\" onClick={() => this.handleToShow('isRule')}>活动规则></button>\n <LuckDraw/>\n </>\n\n }\n\n {/*定金--只在预热期间显示*/}\n {\n isFormal === 0 &&\n <>\n <ListHeader id={'deposit'} text=\"预付1元定金,最高可省100元\" styles={{margin: '30px 0 15px'}}/>\n <ReserveCourse isApp={isApp}/>\n </>\n }\n\n {/* 精品课程特惠专区 */}\n {\n !onlyShow && (\n <>\n <ListHeader id={'best-courses'} text=\"精品课程特惠专区\" styles={{margin: '30px 0 15px'}}/>\n <CourseList\n isApp={isApp}\n isFormal={isFormal}\n isLogin={isLogin}\n history={this.props.history}\n toLogin={this.toLogin}\n />\n </>\n )\n }\n\n {\n isRule &&\n <RulePopup handleToHide={() => this.handleToHide('isRule')}/>\n }\n {\n isCourse &&\n <CoursePopup toLogin={this.toLogin} history={history} isLogin={isLogin}\n handleToHide={() => this.handleToHide('isCourse')}/>\n }\n {\n showRecordList &&\n <RecordPopup\n history={this.props.history}\n handleToHide={() => this.handleToHide('showRecordList')}\n />\n }\n {\n shareMark &&\n <SharePopup isClose={isClose} toClose={() => this.handleToHide('shareMark')}/>\n }\n <ListHeader id={'ai-test'} text=\"全国AI工程师水平测试\" styles={{margin: '30px 0 15px'}}/>\n {\n onlyShow ? (\n <p className='active_over'>活动已结束</p>\n ) : null\n }\n <div className=\"test__record\" onClick={() => this.handleToShow('showRecordList', true)}>\n 测试记录>\n </div>\n <LevelTest\n history={history}\n testSum={testSum}\n isLogin={isLogin}\n toLogin={this.toLogin}\n />\n\n\n <RankList></RankList>\n\n {/* 大咖直播 -- 正式活动 */}\n {\n !onlyShow && <Live isFormal={isFormal} isLogin={isLogin}/>\n }\n\n {\n addressPopupVisible &&\n <div className=\"address-mask\">\n <div className=\"address-popup\">\n <div className=\"title\">收货信息</div>\n <div className=\"address-info-container\">\n <div className=\"tip\">请及时填写收货信息,获得实物奖品后将第一时间为您邮寄</div>\n <input type=\"text\"\n placeholder={'收件人'}\n name={'name'}\n onChange={e => {\n this.setAddressState(e)\n }}\n value={address.name}\n />\n <input type=\"tel\"\n placeholder={'联系方式'}\n name={'phone'}\n onChange={e => {\n this.setAddressState(e)\n }}\n value={address.phone}\n />\n <input type=\"text\"\n placeholder={'收货地址'}\n name={'address'}\n onChange={e => {\n this.setAddressState(e)\n }}\n value={address.address}\n />\n <button type='button'\n className={(address.name != '' && address.phone != '' && address.address != '') ? 'active' : ''}\n onClick={this.submitAddress}\n >提交\n </button>\n <i className={'iconfont iconiconfront-2'} onClick={() => {\n this.setState({\n addressPopupVisible: false\n })\n }}/>\n </div>\n </div>\n </div>\n }\n </div>\n )\n }\n}\n\nexport default compose(\n connect(\n state => ({user: state.user}),\n {setCurrentUser, startFetchUser}\n )\n)(BlessingPreheat)\n","import React, { Component } from 'react';\nimport classnames from 'classnames';\nimport './index.scss';\n\nclass ListHeader extends Component {\n render() {\n const { text, size, styles, id } = this.props;\n const cls = size? `list-header--${size}` : '';\n return (\n <div id={id} className={classnames(\"list-header\", cls)} style={styles}>\n <i className=\"list-header__decorate\" data-position=\"left\"></i>\n {\n text\n ? <h2 className=\"list-header__content\">{text}</h2>\n : this.props.children\n }\n <i className=\"list-header__decorate\" data-position=\"right\"></i>\n </div>\n )\n }\n}\n\nexport default ListHeader;\n"],"sourceRoot":""}