{"version":3,"sources":["components/activity/treasure-box/common/commonContainer/index.js","components/activity/treasure-box/common/commonPopup/index.js","components/activity/treasure-box/preheat/LiveRoom/index.js","components/activity/treasure-box/preheat/YearCourse/index.js","components/activity/treasure-box/treasure-box/rank.js","components/activity/treasure-box/treasure-box/team.js","components/activity/treasure-box/common/prizes/index.js","components/activity/treasure-box/common/user-bullet-screen/index.js","components/activity/treasure-box/treasure-box/index.js","components/activity/treasure-box/preheat/nav.js","components/activity/treasure-box/preheat/index.js","components/blessingPreheat/courseItem/index.js"],"names":["CommonContainer","props","Object","classCallCheck","this","possibleConstructorReturn","getPrototypeOf","call","id","react_default","a","createElement","className","title","React","Children","map","children","child","Fragment","Component","index","_this","computedStyle","top","concat","width","closePopup","mark","onClick","style","e","stopPropagation","src","alt","LiveRoom","connect","state","user","getLiveInfo","http","get","API","home","then","res","_res$data","data","code","msg","setState","list","toast_default","info","subscribe","_this$props$user","hasError","toLogin","_res$data2","errno","QRCode","toDataURL","url","err","showMark","subUrl","QRCodeUrl","tip","toLivingRoom","_this$props$user2","window","location","href","protocol","checkVideo","_this$props$user3","vCourseId","split","saveImage","version","getParam","replace","slice","parseInt","SendMessageToApp","history","push","nextProps","nextState","nextContext","isAppUpdate","_this2","_this$state","commonPopup_index","browser","isAndroidApp","commonContainer_CommonContainer","length","item","key","avatar","teacher","transcribe_url","withRouter","YearCourse","getLength","assertThisInitialized","sum","fetchBigCourse","bigcourse","assign","isMore","course","courseList","fetchFreeCourse","freecourse","_res$data3","course_info","filter","fetchGroupCourse","groupcourse","_res$data4","fetchAICourse","addshowMore","_res$data5","getList","_this2$state","basic","advanced","higher","expand","toQQque","toCourse","courseId","handleToMore","objectSpread","freeStudy","tofreeStudy","closePopupWish","isshowFollow","setTimeout","toJoinList","wish","getQRcodeUrl","uid","_res$data6","qrUrl","followBarcode","addWishList","isLogin","isFollow","_res$data7","is_follow","post","course_id","_res$data8","success","saveImage2","getTeamInfo","_res$data9","removable_data","removable","currentId","toBoxList","search","toYearWish","toInviteFriends","oid","params","arguments","undefined","number","price","course_title","desc","link","m","imgUrl","image_name","isCountDown","condition","val","formatTitleAndKey","formatCourseData","_this2$state2","toCart","_res$data10","toContinueBargain","image","bargainToOrder","_this2$props","_res$data11","bargain","_this$props","stage","treasureStage","TreasureRank","fetchRankInfo","JSON","stringify","rank","rankList","switchMoreRank","handleToVip","_this$state2","data-skip","data-num","user_name","num","prize_name","data-more","TeamInfo","prize_info","is_my_team","member","my_team","fillTeam","getRemovable","toYearTreasure","close","current","createTeam","sessionStorage","setItem","treasure_code","len","i","head_img","nobody","jsCookie","total","_this$state3","_this$state3$info","name","stage_no","Text","compose","SystemBulletScreen","Loadable","__webpack_require__","bind","Prizes","closeIcon","prizes","notices","rule","unfoldList","getPrizes","showRules","Popup","content","dangerouslySetInnerHTML","__html","showMore","prev","bg","innerBox","prizeBox","headHeight","parseFloat","getComputedStyle","getPropertyValue","footerHeight","h","prizeList","scrollHeight","scrollListHeight","height","showSystemNotices","bullets","ref","el","img_name","backgroundImage","is_captain","mode","grant_max","surplus","UserBulletScreen","bulletScreenData","initializeBulletScreen","indexArray","toConsumableArray","Array","slidesPerRequest","keys","removed","swiper","Swiper","direction","allowTouchMove","autoplay","on","transitionEnd","_this3","slides","removeSlide","start","activeIndex","stop","getBulletScreenData","appendSlide","getSlides","avatar_file","initializeSwiper","destroy","TreasureBox","textAlign","fontSize","color","marginTop","common_prizes","user_bullet_screen","treasure_box_team","treasure_box_treasure_box_rank","setCurrentUser","startFetchUser","currentOpenId","treasure_stage","activity_stage","userInfoList","userInfo","banner","loginInfo","result","appLogin","expires","addDays","Date","cookie","set","token","path","domain","plat","uname","transformUser","payload","username","isFetching","getStage","Number","document","treasure_box","treasure_box_preheat_YearCourse","CourseItem","_Users_xzh_dnmp_www_mr_julyedu_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_0__","_Users_xzh_dnmp_www_mr_julyedu_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__","_Users_xzh_dnmp_www_mr_julyedu_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__","startCountDown","time","date","hours","minutes","seconds","setInterval","padStart","countdown","newTime","react__WEBPACK_IMPORTED_MODULE_5___default"],"mappings":"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","file":"mrstatic/js/treasure-box-home.9bdd83a9.chunk.js","sourcesContent":["import React, { Component } from 'react'\nimport './index.scss'\n\nexport default class CommonContainer extends Component {\n constructor(props) {\n super(props)\n }\n render() {\n const { id } = this.props;\n return (\n <div className='common_container' id={id}>\n <div className='container_top'></div>\n <div className='container_content'>\n {\n this.props.title &&\n <div className='title_container'>\n <i></i>\n <p>{this.props.title}</p>\n <i></i>\n </div>\n }\n {\n React.Children.map(this.props.children, function (child) {\n return <>{child}</>;\n })\n }\n </div>\n <div className='container_bottom'></div>\n </div>\n )\n }\n}\n","import React, { Component } from 'react';\nimport './index.scss';\n\nexport default class index extends Component {\n constructor(props) {\n super(props);\n }\n computedStyle = () => {\n return {\n 'top': `${this.props.top}px`,\n 'width': `${this.props.width}px`\n }\n }\n\n // 控制点击空白处是否关闭弹窗 需要传递一个boolean属性 mark\n closePopup = () => {\n if(this.props.mark) {\n this.props.closePopup();\n }\n }\n\n render() {\n return (\n <div className='popup__container' onClick={this.closePopup}>\n <div className='content__container' style={this.computedStyle()} onClick={(e) => {e.stopPropagation()}}>\n <img className=\"close__btn\" onClick={this.props.closePopup} src='https://julyedu-cdn.oss-cn-beijing.aliyuncs.com/newyear20/H5/close-btn.png' alt=\"\" />\n {\n React.Children.map(this.props.children, function (child) {\n return <>{child}</>;\n })\n }\n </div>\n </div>\n )\n }\n}\n","import React, { Component } from 'react';\nimport './index.scss';\nimport { Toast } from 'antd-mobile';\nimport {Link, withRouter} from \"react-router-dom\"\nimport { getParam, http, SendMessageToApp, browser } from \"@/utils\"\nimport CommonContainer from './../../common/commonContainer/index'\nimport CommonPopup from './../../common/commonPopup/index';\nimport { connect } from 'react-redux';\nimport { Popup } from \"@common/index\"\nimport QRCode from 'qrcode'\n@connect(state => ({\n user: state.user\n}))\nclass LiveRoom extends Component {\n constructor(props) {\n super(props);\n this.state = {\n list: [],\n showMark: false,\n subUrl: '',\n QRCodeUrl: '',\n }\n }\n\n componentDidMount() {\n this.getLiveInfo();\n }\n shouldComponentUpdate(nextProps, nextState, nextContext) {\n if (this.props.isAppUpdate !== nextProps.isAppUpdate) {\n this.getLiveInfo();\n return false\n }\n return true\n }\n getLiveInfo = () => {\n http.get(`${API.home}/activity/get_live_info`).then(res => {\n const { code, data, msg } = res.data;\n if (code === 200) {\n this.setState({\n list: data\n })\n } else {\n Toast.info(msg);\n }\n });\n }\n // 预约直播\n subscribe = (id) => {\n // 检查是否已登录\n const {hasError, data = {}} = this.props.user;\n if(hasError) {\n this.toLogin();\n }else{\n http.get(`${API['base-api']}/sys/createLiveQrcode/${id}`).then(res => {\n let { errno, data, msg } = res.data;\n if (errno === 200) {\n QRCode.toDataURL(data.url, (err, url) => {\n this.setState({\n showMark: true,\n subUrl: url,\n QRCodeUrl: data.url,\n })\n })\n } else {\n Toast.info(msg);\n }\n });\n }\n\n }\n // 已预约 给提示\n tip = () => {\n Toast.info('你已预约该直播');\n }\n // 去直播间\n toLivingRoom = (id) => {\n const {hasError, data = {}} = this.props.user;\n if(hasError) {\n this.toLogin();\n }else{\n window.location.href = `${window.location.protocol}//www.julyedu.com/live/m_room/${id}`\n }\n }\n // 查看回放\n checkVideo = (url) => {\n const {hasError, data = {}} = this.props.user;\n if(hasError) {\n this.toLogin();\n }else{\n const vCourseId = url.split('/')[0];\n window.location.href = `/play/video?id=${vCourseId}`\n }\n }\n // 关闭弹框\n closePopup = () => {\n this.setState({\n showMark: false,\n })\n // 关闭弹框的时候再次查询接口 查询预约状态\n this.getLiveInfo();\n }\n\n // APP内需要保存图片 是否还是这样做 需要确认\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 // 去登录\n toLogin = () => {\n if (!getParam('version')) {\n this.props.history.push('/passport/login')\n } else {\n SendMessageToApp(\"toLogin\")\n }\n }\n\n render() {\n const { list,showMark,subUrl } = this.state;\n return (\n <div className='live__container'>\n {\n showMark && (\n <CommonPopup top={50} closePopup={this.closePopup} mark={true}>\n <div className='sub__code_container'>\n <p className='sub__title'>扫码关注“七月在线”服务号即可预约</p>\n <img className='sub__qr_code' id={'live-qr-code'} src={subUrl} alt=\"\"/>\n {\n browser.isAndroidApp ? (\n <button className={'save-image'} onClick={this.saveImage}>保存二维码</button>\n ) : null\n }\n </div>\n </CommonPopup>\n )\n }\n\n <CommonContainer title='“薪”年好课免费学' id=\"year-live\">\n <ul className='live__list'>\n {\n list.length && (\n list.map((item, index) => {\n return <li key={index} className='live_room_item'>\n <img className='user__avatar' src={item.avatar} alt=\"\" />\n <div className='live__info'>\n <div className=\"theme\">\n <span>主题:</span>\n <p>{item.title}</p>\n </div>\n {/*<div className=\"info__item\">*/}\n {/*<span>时间:</span>*/}\n {/*<p>{item.date}</p>*/}\n {/*</div>*/}\n <div className=\"info__item\">\n <span>讲师:</span>\n <p>{item.teacher}</p>\n </div>\n {/*{*/}\n {/*item.on_live == 0 && item.is_end == 0 && item.is_subscribe == 0 && (*/}\n {/*<span onClick={ ()=>this.subscribe(item.live_id)} className=\"order__btn\">立即预约</span>*/}\n {/*)*/}\n {/*}*/}\n\n {/*{*/}\n {/*item.is_end == 1 && item.transcribe_url=='' && (*/}\n {/*<span className=\"order__btn live__end\">已结束</span>*/}\n {/*)*/}\n {/*}*/}\n\n {/*{*/}\n {/*item.on_live == 0 && item.is_end == 0 && item.is_subscribe == 1 && (*/}\n {/*<span onClick={this.tip} className=\"order__btn subscribed\">已预约</span>*/}\n {/*)*/}\n {/*}*/}\n {/*{*/}\n {/*item.on_live == 1 && item.is_end == 0 && (*/}\n {/*<span onClick={()=>this.toLivingRoom(item.room_url)} className=\"order__btn living\">正在直播</span>*/}\n {/*)*/}\n {/*}*/}\n {\n item.transcribe_url != '' && (\n <span onClick={() => this.checkVideo(item.transcribe_url)} className=\"order__btn check__video\">点击查看</span>\n )\n }\n\n </div>\n </li>\n })\n )\n }\n </ul>\n </CommonContainer>\n </div>\n )\n }\n}\nexport default withRouter(LiveRoom)\n","import React, { Component } from 'react'\nimport './index.scss'\nimport { http, SendMessageToApp, getParam, browser } from '@/utils'\nimport CommonContainer from './../../common/commonContainer/index'\nimport CourseItem from '../../../../blessingPreheat/courseItem/index'\nimport { withRouter } from \"react-router-dom\"\nimport CommonPopup from './../../common/commonPopup/index'\nimport { Toast } from 'antd-mobile'\nimport QRCode from 'qrcode'\nimport { connect } from \"react-redux\"\nimport dateFns from 'date-fns';\n\n@connect(state => ({\n user: state.user\n}))\n\nclass YearCourse extends Component {\n constructor(props) {\n super(props)\n this.state = {\n tofreeStudy: false,\n basic: {\n course: [],\n courseList: [],\n isMore: false,\n addshowMore: false,\n },\n advanced: {\n course: [],\n courseList: [],\n isMore: false,\n addshowMore: false,\n },\n higher: {\n course: [],\n courseList: [],\n isMore: false,\n addshowMore: false,\n },\n expand: {\n course: [],\n courseList: [],\n isMore: false,\n addshowMore: false,\n },\n bigcourse: {\n course: [],\n courseList: [],\n isMore: false,\n },\n freecourse: {\n course: [],\n courseList: [],\n isMore: false,\n },\n groupcourse: {\n course: [],\n courseList: [],\n isMore: false,\n },\n isshowFollow: false, // 是否提示关注公众号\n wish: {\n id: '',\n key: \"\"\n },\n followBarcode: '',\n qrUrl: '',\n sum: '',\n removable: '',\n currentId: '',\n }\n }\n\n componentDidMount() {\n this.getTeamInfo()\n this.getLength()\n this.fetchBigCourse()\n // this.fetchFreeCourse()\n this.fetchGroupCourse()\n // AI之路-基础\n this.fetchAICourse('one', false)\n // AI之路-进阶\n this.fetchAICourse('two', false)\n // AI之路-高阶\n this.fetchAICourse('three', false)\n // AI之路-拓展\n this.fetchAICourse('four', false)\n }\n\n shouldComponentUpdate(nextProps, nextState, nextContext) {\n if (this.props.isAppUpdate !== nextProps.isAppUpdate) {\n this.getTeamInfo()\n this.getLength()\n this.fetchBigCourse()\n // this.fetchFreeCourse()\n this.fetchGroupCourse()\n // AI之路-基础\n this.fetchAICourse('one')\n // AI之路-进阶\n this.fetchAICourse('two')\n // AI之路-高阶\n this.fetchAICourse('three')\n // AI之路-拓展\n this.fetchAICourse('four')\n return false\n }\n return true\n }\n\n getLength = () => {\n let _this = this\n http.get(`${API.home}/activity/wish_sum`).then(res => {\n const { code, data } = res.data\n if (code == 200) {\n _this.setState({\n sum: data.sum\n })\n }\n })\n }\n\n fetchBigCourse = () => {\n const { bigcourse } = this.state\n http.get(`${API.home}/activity/preheat_data`).then(res => {\n const { code, data } = res.data\n if (code === 200) {\n this.setState({\n bigcourse: Object.assign({}, bigcourse, {\n isMore: false,\n course: data,\n courseList: data,\n })\n })\n }\n })\n }\n fetchFreeCourse = () => {\n const { freecourse } = this.state\n http.get(`${API['base-api']}/assistance/detail`).then(res => {\n const { errno, data } = res.data\n if (errno === 200) {\n this.setState({\n freecourse: Object.assign({}, freecourse, {\n isMore: data.course_info.length > 4 ? true : false,\n course: data.course_info.length > 4 ? data.course_info.filter((item, index) => index < 4) : data.course_info,\n courseList: data.course_info,\n })\n })\n }\n })\n }\n\n fetchGroupCourse = () => {\n const { groupcourse } = this.state\n http.get(`${API.home}/activity/excellent_course`).then(res => {\n const { code, data } = res.data\n if (code === 200) {\n this.setState({\n groupcourse: Object.assign({}, groupcourse, {\n isMore: data.length > 4 ? true : false,\n course: data.length > 4 ? data.filter((item, index) => index < 4) : data,\n courseList: data,\n })\n })\n }\n })\n }\n\n fetchAICourse = (key, addshowMore) => {\n http.get(`${API.home}/activity/four_stage/${key}`).then(res => {\n const { code, data } = res.data\n if (code === 200) {\n this.getList(key, data, addshowMore)\n }\n })\n }\n\n getList = (key, data, addshowMore) => {\n const { basic, advanced, higher, expand } = this.state\n if (key === 'one') {\n this.setState({\n basic: Object.assign({}, basic, {\n isMore: data.length > 4 && !addshowMore ? true : false,\n course: data.length > 4 && !addshowMore ? data.filter((item, index) => index < 4) : data,\n courseList: data,\n addshowMore: addshowMore,\n })\n })\n }\n if (key === 'two') {\n this.setState({\n advanced: Object.assign({}, advanced, {\n isMore: data.length > 4 && !addshowMore ? true : false,\n course: data.length > 4 && !addshowMore ? data.filter((item, index) => index < 4) : data,\n courseList: data,\n addshowMore: addshowMore,\n })\n })\n }\n if (key === 'three') {\n this.setState({\n higher: Object.assign({}, higher, {\n isMore: data.length > 4 && !addshowMore ? true : false,\n course: data.length > 4 && !addshowMore ? data.filter((item, index) => index < 4) : data,\n courseList: data,\n addshowMore: addshowMore,\n })\n })\n }\n if (key === 'four') {\n this.setState({\n expand: Object.assign({}, expand, {\n isMore: data.length > 4 && !addshowMore ? true : false,\n course: data.length > 4 && !addshowMore ? data.filter((item, index) => index < 4) : data,\n courseList: data,\n addshowMore: addshowMore,\n })\n })\n }\n }\n\n toQQque = () => {\n if (!getParam('version')) {\n location.href = 'http://q.url.cn/s/Vbkup6m?_type=wpa'\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 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 addshowMore: !this.state[key]['addshowMore']\n }\n this.setState({\n ...data\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 addshowMore: !this.state[key]['addshowMore']\n }\n\n this.setState({\n ...data\n })\n }\n }\n\n // 去登录\n toLogin = () => {\n if (!getParam('version')) {\n this.props.history.push('/passport/login')\n } else {\n SendMessageToApp(\"toLogin\")\n }\n }\n\n // 免费学习\n freeStudy = () => {\n this.setState({\n tofreeStudy: true,\n })\n }\n\n // 关闭弹框\n closePopup = () => {\n this.setState({\n tofreeStudy: false,\n })\n }\n\n closePopupWish = () => {\n const _this = this\n _this.setState({\n isshowFollow: false\n })\n\n setTimeout(function () {\n _this.toJoinList(_this.state.wish.id, _this.state.wish.key)\n }, 200)\n }\n\n getQRcodeUrl = () => {\n let _this = this\n http.get(`${API['base-api']}/wx/user_temporary_qrcode/${_this.props.user.data.uid}`)\n .then(res => {\n const { errno, data, msg } = res.data\n if (errno == 0) {\n this.setState({\n qrUrl: data.url\n })\n QRCode.toDataURL(data.url, (err, url) => {\n this.setState({\n followBarcode: url,\n })\n })\n } else {\n Toast.info(msg, 2)\n }\n })\n }\n\n // 点击加入心愿单登录验证,在判断是否关注公众号,已关注的话直接加入,未关注弹出二维码弹窗,点击关闭按钮加入心愿单\n addWishList = (id, key) => {\n const _this = this\n const isLogin = !this.props.user.hasError\n _this.setState({\n wish: {\n id: id,\n key: key\n }\n })\n\n if (isLogin) {\n _this.isFollow(id, key)\n } else {\n _this.toLogin()\n }\n }\n\n isFollow = (id, key) => {\n const _this = this\n http.get(`${API.home}/sys/user/isFollowWeChat`).then(res => {\n const { code, data, msg } = res.data\n if (code === 200) {\n _this.setState({\n isshowFollow: !data.is_follow\n })\n\n if (!_this.state.isshowFollow) {\n _this.toJoinList(id, key)\n } else {\n _this.getQRcodeUrl()\n }\n } else {\n Toast.info(msg, 2)\n }\n })\n }\n\n toJoinList = (id, key) => {\n const _this = this\n http.post(`${API.home}/activity/join_list`, { course_id: id })\n .then(res => {\n const { code, msg } = res.data\n if (code == 200) {\n Toast.success('已成功加入心愿单', 3)\n _this.getLength()\n if (key === '1') {\n _this.fetchAICourse('one', _this.state.basic.addshowMore)\n }\n if (key === '2') {\n _this.fetchAICourse('two', _this.state.advanced.addshowMore)\n }\n if (key === '3') {\n _this.fetchAICourse('three', _this.state.higher.addshowMore)\n }\n if (key === '4') {\n _this.fetchAICourse('four', _this.state.expand.addshowMore)\n }\n if (key === 'group') {\n _this.fetchGroupCourse()\n }\n } else {\n Toast.info(msg, 2)\n }\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.qrUrl\n if (version && parseInt(version) < 451) {\n Toast.info('当前不支持此功能,升级到最新版本app可以点击保存二维码!', 3, null, false)\n } else {\n SendMessageToApp('generateQRCode', QRCodeUrl)\n }\n }\n\n saveImage2 = () => {\n let version = getParam('version')\n version = typeof version === 'string' ? version.replace('.', '').replace('.', '').slice(0, 3) : ''\n const QRCodeUrl = 'https://julyedu-cdn.oss-cn-beijing.aliyuncs.com/2018christyear/h5/qrcode.jpg'\n if (version && parseInt(version) < 451) {\n Toast.info('当前不支持此功能,升级到最新版本app可以点击保存二维码!', 3, null, false)\n } else {\n SendMessageToApp('saveImage', QRCodeUrl)\n }\n }\n\n // 获取队伍信息\n getTeamInfo = () => {\n http.get(`${API.home}/sys/treasure/teamInfo`).then(res => {\n const { code, data, msg } = res.data\n if (code === 200) {\n const { info, removable_data } = data\n this.setState({\n removable: info.removable,\n currentId: info.removable > 0 ? removable_data[0].id : null\n })\n } else {\n Toast.info(msg)\n }\n })\n }\n\n // 跳转到我的宝箱列表页\n toBoxList = () => {\n const isLogin = !this.props.user.hasError\n const { currentId } = this.state\n let search = ''\n if (currentId) {\n search = `?id=${currentId}`\n }\n if (isLogin) {\n if (!getParam('version')) {\n this.props.history.push(`/box/yearTreasure${search}`)\n } else {\n this.props.history.push(`/box/yearTreasure${search}?version=${getParam('version')}`)\n }\n } else {\n this.toLogin()\n }\n }\n\n toYearWish = () => {\n const isLogin = !this.props.user.hasError\n if (isLogin) {\n if (!getParam('version')) {\n this.props.history.push('/year/yearWish')\n } else {\n this.props.history.push(`/year/yearWish?version=${getParam('version')}`)\n }\n\n } else {\n this.toLogin()\n }\n\n }\n\n toInviteFriends = (oid, params = {}) => {\n const { history } = this.props\n if (getParam('version')) {\n let data = {\n title: `【仅剩${params.number}个名额】我${params.price}元拼了《${params.course_title}》`,\n desc: params.course_title,\n link: `${API.m}/togroup?id=${oid}&is_originator=1`,\n imgUrl: params.image_name,\n }\n SendMessageToApp(\"toShare\", data)\n } else {\n history.push(`/togroup?id=${oid}`);\n }\n }\n\n isCountDown = (condition, val) => {\n if (condition) {\n return val;\n }\n return '';\n }\n\n formatTitleAndKey = (key) => {\n let data = null;\n switch (key) {\n case 1:\n data = {\n title: '基础',\n key: 'basic'\n };\n break;\n case 2:\n data = {\n title: '进阶',\n key: 'advanced'\n };\n break;\n case 3:\n data = {\n title: '高阶',\n key: 'higher'\n };\n break;\n case 4:\n data = {\n title: '扩展',\n key: 'expand'\n };\n break;\n default:\n data = null;\n break;\n }\n return data;\n }\n\n formatCourseData = (key) => {\n const { basic, advanced, higher, expand } = this.state;\n let data = null;\n switch (key) {\n case 1:\n data = basic;\n break;\n case 2:\n data = advanced;\n break;\n case 3:\n data = higher;\n break;\n case 4:\n data = expand;\n break;\n default:\n data = null;\n break;\n }\n return data;\n }\n\n toCart = (id) => {\n const { history } = this.props;\n http.post(`${API.home}/m/cart/add`, {\n course_id: id\n }).then((res) => {\n const { code, msg } = res.data;\n // code 15001 已加入购物车\n if (code === 200 || code === 15001) {\n if(getParam('version')) {\n SendMessageToApp('toShoppingCart')\n }else {\n history.push('/shopcart');\n }\n } else if (code === 4030 || code === 4040) {\n this.toLogin();\n } else {\n Toast.info(msg, 2);\n }\n })\n };\n\n toContinueBargain = (id, price, code, image) => {\n const { history } = this.props;\n if(getParam('version')) {\n let data = {\n title: '我发现一门好课,快来帮我砍价吧!',\n desc: `我已经砍了${price}元,看看你能砍多少`,\n link: `${API.m}/bargain-middle-page?id=${id}&bargaincode=${code}&is_originator=1`,\n imgUrl: image,\n }\n SendMessageToApp(\"toShare\", data)\n }else {\n history.push(`/bargain-middle-page?id=${id}&bargaincode=${code}&is_originator=1`);\n }\n }\n\n // 砍完价去支付\n bargainToOrder = (id) => {\n const { history, user } = this.props;\n if(user.hasError) {\n this.toLogin();\n }else{\n if(getParam('version')) {\n SendMessageToApp('toPay', id)\n }else {\n http.get(`${API['base-api']}/m/cart/addtopreorder/[${id}]`).then((res) => {\n const { errno, msg } = res.data;\n if (errno === 0) {\n history.push(`/order?id=[${id}]`, {bargain: 1});\n } else {\n Toast.info(msg, 2);\n }\n })\n }\n }\n }\n\n render() {\n const {\n bigcourse,\n freecourse,\n groupcourse,\n basic,\n advanced,\n higher,\n expand,\n removable,\n sum,\n } = this.state\n const { stage,treasureStage } = this.props\n return (\n <div className={'year-index-course'}>\n\n {\n removable > 0 && (\n <div className='nav-right-wish nav-right'>\n <span onClick={this.toBoxList} className='nav-right__link'>未开宝箱\n <i className=\"nav-right__number\">{removable}</i>\n </span>\n </div>\n )\n }\n </div>\n )\n }\n}\n\nexport default withRouter(YearCourse)\n","import React, { Component } from 'react';\nimport { http, getParam, SendMessageToApp } from '@/utils';\nimport './rank.scss'\n\nclass TreasureRank extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n rank: [],\n rankList: [],\n isMore: false,\n }\n }\n\n componentDidMount() {\n this.fetchRankInfo();\n }\n\n fetchRankInfo = () => {\n http.get(`${API.home}/sys/treasure/ranking`).then(res => {\n const { code, data } = res.data;\n if(code === 200) {\n if(JSON.stringify(data) !== '{}') {\n if(data.length > 5) {\n this.setState({\n rank: data.filter((item, index) => index < 5),\n rankList: data,\n isMore: true,\n });\n }else {\n this.setState({\n rank: data,\n rankList: data,\n isMore: false,\n });\n }\n }\n }\n });\n }\n\n switchMoreRank = () => {\n const { rankList, isMore } = this.state;\n if(isMore) {\n this.setState({\n rank: rankList,\n isMore: false,\n })\n }else {\n this.setState({\n rank: rankList.filter((item, index) => index < 5),\n isMore: true,\n })\n }\n }\n\n handleToVip = (id) => {\n const { history } = this.props;\n if(id) {\n if(getParam('version')) {\n SendMessageToApp('toCourse', id);\n }else {\n history.push(`/detail?id=${id}`);\n }\n }\n }\n\n render() {\n const { rank, isMore } = this.state;\n return (\n <>\n {\n rank.length !== 0 &&\n <div data-skip=\"rank\">\n <div className=\"rank-title\">\n <i className=\"rank-title__decorate\"></i>\n <h2 className=\"rank-title__txt\">宝箱达人榜</h2>\n <i className=\"rank-title__decorate\"></i>\n </div>\n <p className=\"rank-desc\">宝箱数量前50名可额外获得一份奖品,数量相同的用时短者排名在前</p>\n <dl className=\"rank-header\">\n <dd className=\"rank-column\">排名</dd>\n <dd className=\"rank-column\">用户</dd>\n <dd className=\"rank-column\">宝箱数量</dd>\n <dd className=\"rank-column\">奖品</dd>\n </dl>\n <div className=\"rank-body\">\n {\n rank.map((item, index) => (\n <dl className=\"rank-item\" key={index}>\n <dd className=\"rank-column\">\n {\n index <= 2\n ? <span className=\"rank-column__number\" data-num={index}></span>\n : <span>{index+1}</span>\n }\n </dd>\n <dd className=\"rank-column\">\n <span className=\"rank-column__name\">{item.user_name}</span>\n </dd>\n <dd className=\"rank-column\">\n <span>{item.num}</span>\n </dd>\n <dd className=\"rank-column\">\n {\n item.url\n ? <a className=\"rank-column__txt\" onClick={() => this.handleToVip(item.url)}>{item.prize_name}</a>\n : <span className=\"rank-column__txt\">{item.prize_name}</span>\n }\n </dd>\n </dl>\n ))\n }\n <div className=\"rank-more\" onClick={this.switchMoreRank}>\n <span className=\"rank-more__txt\">{isMore? '展开' : '收起'}</span>\n <i className=\"rank-more__icon\" data-more={isMore}></i>\n </div>\n </div>\n </div>\n }\n </>\n )\n }\n}\n\nexport default TreasureRank;","import React, { Component } from 'react';\nimport './team.scss'\nimport { getParam, http, SendMessageToApp } from \"@/utils\"\nimport { Toast } from 'antd-mobile';\nimport {withRouter} from 'react-router-dom';\nimport {compose} from \"redux\"\nimport { connect } from \"react-redux\";\nimport jsCookie from 'js-cookie'\n\nclass TeamInfo extends Component {\n constructor(props) {\n super(props);\n this.state = {\n is_my_team: false, // 是否有自己的队伍\n prize_info: [],\n info: {\n removable: 0,\n total: 0\n },\n member: [],\n removable_data: [],\n my_team: {},\n }\n }\n\n componentDidMount() {\n this.getTeamInfo();\n }\n\n // 获取队伍信息\n getTeamInfo = () => {\n http.get(`${API.home}/sys/treasure/teamInfo`).then(res => {\n const { code, data, msg } = res.data;\n if (code === 200) {\n const { prize_info, is_my_team, info, member, removable_data, my_team } = data;\n this.setState({\n prize_info,\n is_my_team,\n info,\n member: this.fillTeam(member, is_my_team),\n removable_data,\n my_team\n })\n let currentId = null;\n if(info.removable > 0) {\n currentId = removable_data[0].id;\n }\n this.props.getRemovable(info.removable, currentId);\n } else {\n Toast.info(msg);\n }\n })\n }\n\n // 跳转到我的宝箱页\n toYearTreasure = (close) => {\n if(this.props.user.hasError) {\n this.toLogin();\n } else {\n let search = '';\n if(close) {\n const {removable_data, info: {removable}} = this.state;\n if(removable > 0) {\n let current = removable_data[0];\n search = `?id=${current.id}`;\n }\n }\n if (!getParam('version')) {\n this.props.history.push(`/box/yearTreasure${search}`);\n } else {\n this.props.history.push(`/box/yearTreasure${search}?version=${getParam('version')}`);\n }\n }\n\n }\n\n // 去登录\n toLogin = () => {\n if (!getParam('version')) {\n this.props.history.push('/passport/login')\n } else {\n SendMessageToApp(\"toLogin\")\n }\n }\n\n shouldComponentUpdate(nextProps, nextState, nextContext) {\n if (this.props.isAppUpdate !== nextProps.isAppUpdate) {\n this.getTeamInfo();\n return false\n }\n return true\n }\n\n // 邀请好友组队\n createTeam = () => {\n if(this.props.user.hasError) {\n this.toLogin();\n } else {\n sessionStorage.setItem('showShareTip', '1')\n const {is_my_team, my_team: {treasure_code}} = this.state;\n if(is_my_team) { // 有自己的队伍\n // 直接跳转\n\n if (!getParam('version')) {\n //todo 跳转\n // this.props.history.push('/box/landing?origin=1&treasure_code=' + treasure_code);\n window.location.assign('https://h5.julyedu.com/box/landing?origin=1&treasure_code=' + treasure_code);\n } else {\n window.location.assign('https://h5.julyedu.com/box/landing?origin=1&treasure_code=' + treasure_code + '&version='+ getParam('version'));\n }\n\n }else{ // 没自己的队伍\n // 请求创建队伍的接口\n http.get(`${API.home}/sys/treasure/createMyTeam`).then(res => {\n const { code, data, msg } = res.data;\n if (code === 200) {\n const { treasure_code } = data;\n if (!getParam('version')) {\n window.location.assign('https://h5.julyedu.com/box/landing?origin=1&treasure_code=' + treasure_code);\n } else {\n window.location.assign('https://h5.julyedu.com/box/landing?origin=1&treasure_code=' + treasure_code + '&version='+ getParam('version'));\n }\n } else {\n Toast.info(msg);\n }\n });\n }\n }\n }\n\n // 队伍成员信息必须满五个 不满的需要填充\n fillTeam = (list, is_my_team) => {\n let len = list.length;\n // 没有创建队伍 并且没有加入他人队伍\n if(this.props.user.hasError) {\n for(let i=0;i<5-len;i++) {\n list.push({\n head_img: '',\n user_name: '',\n nobody: true,\n })\n }\n } else {\n if(len === 0 && !is_my_team) {\n list.push({\n head_img: jsCookie.get('avatar_file'),\n user_name: jsCookie.get('user_name'),\n })\n for(let i=0;i<4;i++) {\n list.push({\n head_img: '',\n user_name: '',\n nobody: true,\n })\n }\n }else{\n for(let i=0;i<5-len;i++) {\n list.push({\n head_img: '',\n user_name: '',\n nobody: true,\n })\n }\n }\n }\n\n return list;\n }\n\n render() {\n const { prize_info, is_my_team, info: {removable, total}, member } = this.state;\n let name = '', stage_no = 0;\n if(prize_info.length > 0) {\n name = prize_info[0].name;\n stage_no = prize_info[0].stage_no;\n }\n // 显示文案控制\n let Text = '';\n if(total === 0) {\n Text = `我的宝箱`;\n } else if (removable === 0) {\n Text = `共${total}个宝箱`;\n } else {\n Text = `共${total}个宝箱/${removable}个未开`;\n }\n\n return (\n <div className='team_info__container'>\n <div className='team__member'>\n <ul className='member__list'>\n {\n member && member.length > 0 && (\n member.map((item, index) => {\n return <li key={index} className='member__item'>\n <div className='avatar__container'>\n {\n item.nobody ? (\n <img className='head__image' src=\"https://julyedu-cdn.oss-cn-beijing.aliyuncs.com/newyear20/H5/default-member-avatar.png\" alt=\"\"/>\n ) : (\n <img className='head__image' src={item.head_img} alt=\"\"/>\n )\n }\n {\n index === 0 ? (\n <img className='caption__flag' src=\"https://julyedu-cdn.oss-cn-beijing.aliyuncs.com/newyear20/H5/caption.png\" alt=\"\"/>\n ) : (null)\n }\n <div className='shadow'></div>\n </div>\n <div className={`member__join ${item.nobody ? '' : 'join'}`}></div>\n </li>\n })\n )\n }\n </ul>\n\n <div className='box__number'>\n <img onClick={() => this.toYearTreasure(true)} src=\"https://julyedu-cdn.oss-cn-beijing.aliyuncs.com/newyear20/H5/treasure-box-icon.png\" alt=\"\" />\n <p onClick={() => this.toYearTreasure(false)} className='box__text'>\n {Text}\n </p>\n <img className='position__arrow' src=\"https://julyedu-cdn.oss-cn-beijing.aliyuncs.com/newyear20/H5/arrow_jinzhan.png\" alt=\"\"/>\n {\n removable > 0 && (\n <div className='position__number'>{removable}</div>\n )\n }\n </div>\n </div>\n <div onClick={this.createTeam} className='invite__btn'>\n {\n is_my_team ? ('继续组队') : ('组队开宝箱')\n }\n </div>\n {\n stage_no > 0 && name && <p className='stage_prize'>{`第${stage_no}个宝箱必中${name}`}</p>\n }\n </div>\n )\n }\n}\nexport default compose(\n connect(\n state => ({user: state.user}),\n null\n ),\n withRouter\n)(TeamInfo)\n","import React, { Component } from 'react'\nimport { http } from \"@/utils\"\nimport './prizes.scss'\nimport { Popup } from \"@common/index\"\nimport { Toast } from \"antd-mobile\"\n\n\nimport Loadable from '@loadable/component'\n\nconst SystemBulletScreen = Loadable(() => import(/* webpackChunkName: 'system-notices' */'@components/activity/newyear-2019/common/system-bullet-screen'))\n\nclass Prizes extends Component {\n\n prizeBox\n prizeList\n bg\n innerBox\n closeIcon = 'https://julyedu-cdn.oss-cn-beijing.aliyuncs.com/newyear20/H5/close-btn.png'\n\n state = {\n prizes: [],\n notices: [],\n rule: [],\n unfoldList: false,\n }\n\n componentDidMount() {\n this.getPrizes()\n }\n\n getPrizes = () => {\n http.get(`${API.home}/sys/prize_data`)\n .then(res => {\n const {code, data, msg} = res.data\n if (code == 200) {\n\n this.setState({\n prizes: data['prize_data'],\n notices: data['notices'],\n rule: data['rule']\n })\n\n } else {\n Toast.info(msg, 2, null, false)\n }\n })\n }\n\n\n showRules = () => {\n Popup({\n title: '组队开宝箱活动规则',\n className: 'landing-treasure-rules',\n content: <div dangerouslySetInnerHTML={{__html: this.state.rule}}/>,\n closeIcon: this.closeIcon\n })\n }\n\n\n showMore = () => {\n this.setState(prev => {\n if (this.state.unfoldList) {\n this.bg.style = this.innerBox.style = this.prizeBox.style = ''\n } else {\n let headHeight = parseFloat(getComputedStyle(this.prizeBox, ':before').getPropertyValue('height')),\n footerHeight = parseFloat(getComputedStyle(this.prizeBox, ':after').getPropertyValue('height')),\n innerOffsetTop = 0.12458,\n footerOffsetTop = 0.595,\n h = this.prizeList.scrollHeight,\n scrollListHeight = headHeight + h - (innerOffsetTop * headHeight) - (footerOffsetTop * footerHeight) + footerHeight,\n bottomOffset = 27\n\n this.prizeBox.style.height = `${scrollListHeight + bottomOffset}px`\n this.innerBox.style.height = `${h}px`\n this.bg.style.height = `${h - footerHeight + innerOffsetTop * headHeight + bottomOffset}px`\n }\n return {unfoldList: !prev.unfoldList}\n })\n\n }\n\n render() {\n const {\n showSystemNotices\n } = this.props\n const {notices} = this.state\n return (\n <>\n {(showSystemNotices && notices && notices.length) ? <SystemBulletScreen bullets={notices}/> : null}\n <div className={'prizes-box'} ref={el => this.prizeBox = el}>\n <a href=\"javascript:;\" className='rule-btn' onClick={this.showRules}>活动规则 > </a>\n <div className={`bg`} ref={el => this.bg = el}/>\n <div className={`inner-box`} ref={el => this.innerBox = el}>\n <ul className='prize-list' ref={el => this.prizeList = el}>\n {\n this.state.prizes.map((item, index) => {\n return (\n <li key={index}>\n {\n item.img_name\n ? <i className=\"prize-list__image\" style={{\n backgroundImage: `url(${item.img_name})`\n }}/>\n : <i className=\"prize-list__image\"/>\n }\n {/* <img src={item.img_name} alt=\"\"/> */}\n {\n item.is_captain != 0 && <span className='captain top-tag'>队长专属</span>\n }\n {\n item.mode === 2 && <span className='stage top-tag'>第{item.stage_no}个必中</span>\n }\n {\n item.grant_max\n ?\n <div className='bottom-bar'>\n <div className=\"progress-bar\"><span className={'progress'} style={{width: `${(item.surplus / item.grant_max) * 100}%`}}/></div>\n <span>限量{item.grant_max}份</span>\n </div>\n : <span className='no-limit'>不限量</span>\n }\n </li>\n )\n })\n }\n <li>\n <img src=\"https://julyedu-cdn.oss-cn-beijing.aliyuncs.com/newyear20/prize-placeholder.png\" alt=\"\"/>\n </li>\n </ul>\n </div>\n <div className=\"show-more\" onClick={this.showMore}>\n {\n this.state.unfoldList\n ? <div>\n 收起\n <img src=\"https://julyedu-cdn.oss-cn-beijing.aliyuncs.com/newyear20/H5/fold-icon.png\" alt=\"\"/>\n </div>\n : <div>\n 查看全部奖品\n <img src=\"https://julyedu-cdn.oss-cn-beijing.aliyuncs.com/newyear20/H5/unfold-icon.png\" alt=\"\"/>\n </div>\n }\n </div>\n </div>\n </>\n )\n }\n}\n\nexport default Prizes\n","import React, { Component } from 'react'\nimport { http } from \"@/utils\"\nimport Swiper from 'swiper'\nimport 'swiper/dist/css/swiper.min.css'\nimport './bullet-screen.scss'\n\nclass UserBulletScreen extends Component {\n\n swiper\n\n state = {\n bulletScreenData: []\n }\n\n componentDidMount() {\n this.getBulletScreenData(true)\n }\n\n componentWillUnmount() {\n this.swiper && this.swiper.destroy()\n }\n\n\n initializeBulletScreen = () => {\n const _this = this\n const slidesPerRequest = 20\n const indexArray = [...Array(slidesPerRequest - 1).keys()]\n let removed = false\n this.swiper = new Swiper('.swiper-container', {\n direction: 'vertical',\n allowTouchMove: false,\n autoplay: true,\n on: {\n transitionEnd() {\n if (this.slides.length > slidesPerRequest) {\n this.removeSlide(0)\n this.autoplay.start()\n }\n if (this.activeIndex === this.slides.length - 1 && !removed) {\n this.autoplay.stop()\n _this.getBulletScreenData().then(res => {\n removed = true\n this.removeSlide(indexArray)\n this.appendSlide(_this.getSlides(res))\n setTimeout(() => {\n this.autoplay.start()\n removed = false\n })\n })\n }\n }\n }\n })\n }\n\n getSlides = list => list.map(item => {\n return `\n <li class=\"swiper-slide\">\n <img class=\"avatar\" src=\"${item.avatar_file}\" alt=\"\">\n <span>${item.user_name} ${item.msg}</span>\n </li>\n `\n })\n\n getBulletScreenData = (initializeSwiper = false) => {\n return http.get(`${API.home}/sys/barrage_data`)\n .then(res => {\n const {data, code} = res.data\n if (code == 200) {\n if (initializeSwiper) {\n this.setState({\n bulletScreenData: data\n }, () => {\n this.initializeBulletScreen()\n })\n } else {\n return data\n }\n }\n })\n }\n\n\n render() {\n const {bulletScreenData} = this.state\n return (\n <div id=\"user-bullet-screen\" className='swiper-container'>\n <ul className='swiper-wrapper'>\n {\n bulletScreenData.length && bulletScreenData.map((item, index) => {\n return (\n <li className='swiper-slide' key={index}>\n <img src={item['avatar_file']}\n alt=\"\" className=\"avatar\"/>\n <span>{item.user_name} {item.msg}</span>\n </li>\n )\n })\n }\n </ul>\n </div>\n )\n }\n}\n\nexport default UserBulletScreen\n","import React, { Component } from 'react';\nimport { withRouter } from 'react-router-dom';\nimport CommonContainer from './../common/commonContainer/index';\nimport TreasureRank from './rank';\nimport TeamInfo from './team'\nimport Prizes from \"@components/activity/treasure-box/common/prizes\"\nimport UserBulletScreen from \"@components/activity/treasure-box/common/user-bullet-screen\"\n\nclass TreasureBox extends Component {\n constructor(props) {\n super(props);\n }\n render() {\n return (\n <CommonContainer id=\"year-treasure\" title={'组队开宝箱'}>\n <div style={{\n textAlign: 'center', \n fontSize: '12px', \n color: '#FFDC1E', \n marginTop: '10px'\n }}>邀请好友组队一起开宝箱,满5人后将随机获得以下奖品~</div>\n <Prizes showSystemNotices={true}/>\n <UserBulletScreen/>\n <TeamInfo isAppUpdate={this.props.isAppUpdate} getRemovable={this.props.getRemovable} />\n <TreasureRank history={this.props.history} />\n </CommonContainer>\n )\n }\n}\n\nexport default withRouter(TreasureBox);\n","import React, { Component } from 'react';\nimport classnames from 'classnames';\nimport { http } from '@/utils';\nimport './nav.scss';\n\nclass TreasureNav extends Component {\n constructor(props) {\n super(props);\n this.state = {\n isFixed: false,\n curIndex: 0,\n formatNavs: [],\n navs: [\n {\n id: 'year-live',\n name: '好课免费学'\n },\n {\n id: 'year-treasure',\n name: '组队开宝箱'\n },\n {\n id: 'year-wuhan',\n name: '驰援武汉'\n },\n {\n id: 'year-course',\n name: '重磅好课'\n },\n // {\n // id: 'year-free',\n // name: '免费学'\n // },\n {\n id: 'year-group',\n name: '1分拼团'\n },\n {\n id: 'year-discount',\n name: '抄底专区'\n },\n ]\n };\n }\n\n componentDidMount() {\n window.addEventListener('scroll', this.calcNavActive)\n }\n\n componentWillUnmount () {\n window.removeEventListener('scroll', this.calcNavActive);\n }\n\n componentWillReceiveProps(nextProps) {\n this.initNav(nextProps.treasure_stage,nextProps.activeStage);\n }\n\n initNav = (treasure_stage,activeStage) => {\n let {navs} = this.state;\n // treasure_stage,宝箱阶段,0-不在活动时间,1-活动时间内\n let data = this.state.navs\n if(treasure_stage === 0) {\n data = navs.filter(item => item.id !== 'year-treasure')\n }\n if(activeStage === 3) {\n data = data.filter(item => item.id !== 'year-free')\n }\n this.setState({\n formatNavs: data\n })\n }\n\n calcNavActive = () => {\n const { formatNavs } = this.state;\n const { id } = this.props;\n const bannerEl = document.querySelector(`#${id}`);\n setTimeout(() => {\n let y = window.scrollY,\n len = formatNavs.length - 1;\n this.setState({\n isFixed: y >= bannerEl.offsetHeight\n });\n for (; len > -1; len--) {\n let el = document.querySelector(`#${formatNavs[len].id}`);\n if (el && (y + 200) >= el.offsetTop) {\n this.setState({\n curIndex: len\n })\n break;\n }\n }\n }, 100);\n }\n\n selectToNav = (i) => {\n const { formatNavs } = this.state;\n const id = `#${formatNavs[i]['id']}`;\n let el = document.querySelector(id);\n if(el) {\n this.setState({\n curIndex: i\n });\n window.scrollTo({\n top: el.offsetTop,\n left: 0\n });\n }\n }\n\n render() {\n const { isFixed, curIndex, formatNavs } = this.state;\n return (\n <div className={classnames(\"treasure-nav\", {'fixed': isFixed})} data-skip=\"nav\">\n {\n formatNavs.map((item, index) => (\n <a\n href={`#${item.id}`}\n className={classnames(\"treasure-nav__item\", {'active': index === curIndex})}\n key={item.id}\n onClick={() => this.selectToNav(index)}\n >{item.name}</a>\n ))\n }\n </div>\n )\n }\n}\n\nexport default TreasureNav;","import React, {Component} from 'react'\nimport './index.scss'\nimport LiveRoom from './LiveRoom/index'\nimport YearCourse from './YearCourse/index'\nimport TreasureBox from './../treasure-box/index'\nimport TreasureNav from './nav'\nimport CommonPopup from './../common/commonPopup/index'\nimport cookie from \"js-cookie\"\nimport {setCurrentUser, startFetchUser} from \"@/store/userAction\"\nimport {SendMessageToApp, getParam, http} from '@/utils'\nimport {addDays} from \"date-fns\"\nimport {connect} from \"react-redux\"\nimport {Toast} from 'antd-mobile'\nimport {compose} from \"redux\"\n\n@connect(state => ({\n user: state.user\n }),\n {setCurrentUser, startFetchUser}\n)\n\nexport default class index extends Component {\n state = {\n removable: 0, // 未拆宝箱的数量\n currentOpenId: 0, // 当前要拆的宝箱的队伍的ID\n treasure_stage: 0, // 宝箱的活动阶段\n activity_stage: 0, // 整个活动的阶段\n userInfoList: [],\n userInfo: {},\n isAppUpdate: false,\n showMark: false,\n banner: 'https://julyedu-cdn.oss-cn-beijing.aliyuncs.com/treasure-active/m/box_banner.png'\n }\n\n componentDidMount() {\n const _this = this\n // 获取App登录信息\n window['loginInfo'] = result => {\n _this.loginInfo(result)\n }\n _this.getStage()\n document.title = '粽子节,开宝箱免费学AI课程,现金红包,京东购物卡送不停!-七月在线';\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.setState({\n isAppUpdate: 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 // 关闭弹框\n closePopup = () => {\n this.setState({\n showMark: false,\n })\n }\n\n // 获取未拆宝箱数量\n getRemovable = (removable, currentOpenId) => {\n\n }\n\n // 获取活动以及宝箱的阶段\n getStage = () => {\n http.get(`${API.home}/activity/stage`).then(res => {\n const {code, data, msg} = res.data\n if (code === 200) {\n if(Number(data.treasure_stage) === 0) {\n this.props.history.push('/');\n return;\n }\n // treasure_stage,宝箱阶段,0-不在活动时间,1-活动时间内\n this.setState({\n activity_stage: data.activity_stage,\n treasure_stage: data.treasure_stage\n })\n\n if(data.activity_stage == 3){\n this.setState({\n banner: 'https://julyedu-cdn.oss-cn-beijing.aliyuncs.com/treasure-active/m/box_banner.png',\n })\n } else {\n this.setState({\n banner: 'https://julyedu-cdn.oss-cn-beijing.aliyuncs.com/treasure-active/m/box_banner.png',\n })\n }\n } else {\n Toast.info(msg, 2)\n }\n })\n }\n\n render() {\n const {\n banner,\n activity_stage,\n treasure_stage,\n } = this.state\n return (\n <div className={'year-index'}>\n <div className=\"banner-treasure\">\n {/* <div id=\"banner\" className=\"banner-treasure__header\"\n style={{backgroundImage: `url(${banner})`}}></div> */}\n <img src={banner} alt=\"\"/>\n {/* <div className=\"banner-treasure__nav\">\n <TreasureNav id=\"banner\" treasure_stage={treasure_stage} activeStage={activity_stage}/>\n </div> */}\n {/*<div className=\"banner-treasure__decorate\"></div>*/}\n </div>\n\n {/* 大咖直播 */}\n {/* <LiveRoom isAppUpdate={this.state.isAppUpdate}/> */}\n\n {/* 组队开宝箱 */}\n {\n treasure_stage === 1 &&\n <TreasureBox isAppUpdate={this.state.isAppUpdate} getRemovable={this.getRemovable}/>\n }\n\n {/* 课程 */}\n <YearCourse stage={activity_stage} treasureStage={treasure_stage} isAppUpdate={this.state.isAppUpdate} />\n\n {/*好友加入队伍提醒;获得宝箱提醒;开售提醒弹窗,需要自取,注意修改文案*/}\n {\n this.state.showMark &&\n <CommonPopup top={50} closePopup={this.closePopup} mark={true}>\n <div className='sub__code_container'>\n <p className='sub__title'>提醒服务</p>\n <p className='sub__tip'>有好友加入队伍后第一时间通知我~</p>\n <img className='sub__qr_code' id={'live-qr-code'}\n src='//julyedu-cdn.oss-cn-beijing.aliyuncs.com/2018christyear/h5/qrcode.jpg' alt=\"\"/>\n <p className='sub__tip'>长按识别/扫码 关注【七月在线】服务号即可预约</p>\n </div>\n </CommonPopup>\n }\n\n {/*规则弹窗*/}\n {\n this.state.showMark &&\n <CommonPopup top={50} closePopup={this.closePopup} mark={true}>\n <div className='sub__code_container'>\n <p className='sub__title'>组队开宝箱活动规则</p>\n <p className='sub__rule'>\n 1. 活动期间(3月26日-3月31日)可随时参与开宝箱;<br/>\n 2. 当前队伍满员后可继续创建新队伍;<br/>\n 3. 每人有一次机会加入好友的队伍;<br/>\n 4. 队伍满员后所有成员均可随机获得宝箱内奖品,队长奖励更丰厚哦~<br/>\n 5. 代金券、课程等虚拟奖品将直接发放至账户,实物奖品活动结束后统一邮寄;<br/>\n 6. 现金可提现:我的 → 赚奖学金 → 提现。\n </p>\n </div>\n </CommonPopup>\n }\n\n\n <div className={'btm-rule'}>* 本活动解释权归北京七月在线科技有限公司所有 *</div>\n </div>\n )\n }\n}\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"],"sourceRoot":""}