{"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/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/courseItem/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","CourseList","fetchAICourse","basic","advanced","higher","expand","isMore","course","filter","_this$state2","group","training","_res$data2","excellent_course","ai_elite_courses","handleToMore","objectSpread","toQQque","toCourse","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","courseItem","image","image_name","toReceiveCoupon","coupon","data-type","SharePopup","isClose","toClose","browser","isWeixin","src","LuckDraw","fetchActivityPrize","_res$data$data$list","list","tabs","title","date","prizes","tabs_default","swipeable","tabBarBackgroundColor","tabBarUnderlineStyle","display","_ref","son","val","time","v","k","img","alt","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","_this$state4","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","CourseItem","_Users_zhanghaozhe_server_mr_julyedu_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_0__","_Users_zhanghaozhe_server_mr_julyedu_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__","_Users_zhanghaozhe_server_mr_julyedu_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__","startCountDown","countdown","newTime","react__WEBPACK_IMPORTED_MODULE_5___default","children","ListHeader","cls","data-position"],"mappings":"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","file":"mrstatic/js/blessing-preheat.ca77d437.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 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,onlyShow} = this.state;\n    if(isFormal === 1) {\n      document.title = `11.11-11.13 AI充电节,为AI出击!重磅好课1折秒,海量奖品来就送-七月在线`\n      if(onlyShow) {\n        document.title = `11.14 AI充电节 返场钜惠!200本纸质书送完即止!`\n      }\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 './index.scss';\n\nclass CourseItem extends Component {\n  constructor(props) {\n    super(props);\n    this.state = {\n      countdown: ''\n    }\n  }\n\n  componentDidMount() {\n    const { time } = this.props;\n    this.startCountDown(time);\n  }\n\n  componentWillReceiveProps(nextProps) {\n    const { time: newTime } = nextProps\n    const { time: oldTime } = this.props;\n    if(oldTime != newTime) {\n      this.startCountDown(newTime);\n    }\n  }\n\n  startCountDown = (time) => {\n    if(time) {\n      let date = time * 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  render() {\n    const { image, toCourse, id} = this.props;\n    const { countdown } = this.state;\n    return (\n      <div className=\"course-container\">\n        <div className=\"course__cover\">\n          {\n            countdown &&\n            <p className=\"course__time\">{countdown}</p>\n          }\n          <img src={image} alt=\"cover\" onClick={() => toCourse(id)}/>\n        </div>\n        {this.props.children}\n      </div>\n    );\n  }\n}\n\nexport default CourseItem;\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":""}