62.cbe2eeb8.chunk.js.map 16.6 KB
Newer Older
zhanghaozhe committed
1
{"version":3,"sources":["components/limit-free/index.js","common/v-list-base/index.js"],"names":["showToast","msg","antd_mobile_lib_toast__WEBPACK_IMPORTED_MODULE_9___default","a","info","LimitFree","state","tab","courses","navItemStyle","tabActiveIndex","getData","Promise","all","http","get","concat","API","home","then","res","_res","Object","_Users_zhanghaozhe_server_mr_julyedu_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_2__","_tab$data","data","tabData","tabCode","code","tabMsg","_courses$data","coursesData","coursesCode","coursesMsg","_this","setState","handleClick","id","props","history","push","changeTab","e","index","getCourse","courseId","vCourseId","_this$props","user","hasError","post","course_id","_res$data","instance","Popup","className","closable","clickMaskClose","title","react__WEBPACK_IMPORTED_MODULE_10___default","createElement","src","alt","content","onClick","close","toPlay","formatTime","seconds","d","Math","floor","toString","padStart","h","m","document","this","_this2","_this$state","_common_index__WEBPACK_IMPORTED_MODULE_13__","arrow","ref","el","nav","length","map","item","key","style","href","target","category_name","antd_mobile_lib_white_space__WEBPACK_IMPORTED_MODULE_1___default","category","category_id","des","bottom","course_status","play_times","price0","stopPropagation","v_course_id","_this2$formatTime","course_expire","StudyButton","price1","react_router_dom__WEBPACK_IMPORTED_MODULE_17__","to","course_title","_common_v_list_base__WEBPACK_IMPORTED_MODULE_14__","img","image_name","Component","_ref","connect","WithFullSize","VList","react__WEBPACK_IMPORTED_MODULE_0___default","bind","status"],"mappings":"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","file":"mrstatic/js/62.cbe2eeb8.chunk.js","sourcesContent":["import React, { Component } from 'react'\nimport { http } from \"@/utils\"\nimport './index.scss'\nimport { HeaderBar } from \"@common/index\"\nimport { WhiteSpace, Toast } from \"antd-mobile\";\nimport VList from '@/common/v-list-base'\nimport { Popup } from \"@common/index\"\nimport WithFullSize from \"@/HOCs/WithFullSize\"\nimport { connect } from \"react-redux\";\nimport { Link } from \"react-router-dom\";\n\n\nfunction showToast(msg) {\n  Toast.info(msg, 2, null, false)\n}\n\nclass LimitFree extends Component {\n\n  nav\n  state = {\n    tab: {},\n    courses: [],\n    navItemStyle: {},\n    tabActiveIndex: 0\n  }\n\n  componentDidMount() {\n    document.title = '助力春招,好课限免--七月在线'\n    this.getData()\n  }\n\n  getData = () => {\n    Promise.all([http.get(`${API.home}/sys/category`), http.get(`${API.home}/sys/course`)])\n      .then(res => {\n        const [tab, courses] = res\n        const {data: tabData, code: tabCode, msg: tabMsg} = tab.data\n        const {data: coursesData, code: coursesCode, msg: coursesMsg} = courses.data\n        if (tabCode == 200) {\n          this.setState({\n            tab: tabData\n          })\n        } else {\n          showToast(tabMsg)\n        }\n        if (coursesCode === 200) {\n          this.setState({\n            courses: coursesData\n          })\n        } else {\n          showToast(coursesMsg)\n        }\n      })\n  }\n\n\n  handleClick = id => {\n    this.props.history.push(`/detail?id=${id}`)\n  }\n\n  changeTab = (e, index) => {\n    const {tabActiveIndex} = this.state\n    if (tabActiveIndex !== index) {\n      this.setState({\n          tabActiveIndex: index\n        }\n      )\n    }\n  }\n\n  getCourse = (courseId, vCourseId) => {\n    const {user, history} = this.props\n    if (user.hasError) {\n      history.push('/passport')\n      return\n    }\n    http.post(`${API.home}/sys/limitFree/receive`, {\n      course_id: courseId\n    })\n      .then(res => {\n        const {code, msg} = res.data\n        if (code === 200) {\n\n          const instance = Popup({\n            className: 'get-course-popup',\n            closable: false,\n            clickMaskClose: false,\n            title: <div>\n              <img src=\"https://julyedu-cdn.oss-cn-beijing.aliyuncs.com/time_limited_free/M/check.png\" alt=\"\"/>\n              <div>课程有效期7天,快去学习吧~</div>\n            </div>,\n            content: <div className={'btns'}>\n              <button onClick={() => {\n                instance.close()\n                this.getData()\n              }}>知道了\n              </button>\n              <button onClick={() => {\n                this.toPlay(vCourseId)\n                instance.close()\n              }}>立即学习\n              </button>\n            </div>\n          })\n\n        } else {\n          showToast(msg)\n        }\n      })\n\n  }\n\n  toPlay = id => {\n    this.props.history.push(`/play/video?id=${id}`)\n  }\n\n  formatTime = seconds => ({\n    d: Math.floor(seconds / 60 / 60 / 24).toString().padStart(2, '0'),\n    h: Math.floor(seconds / 60 / 60 % 24).toString().padStart(2, '0'),\n    m: Math.floor(seconds / 60 % 60).toString().padStart(2, '0')\n  })\n\n  render() {\n    const {tab, courses, navItemStyle, tabActiveIndex} = this.state\n    return (\n      <div className='limit-free'>\n        <HeaderBar arrow={true} title={'限时免费'}></HeaderBar>\n        <div className=\"banner\">\n          <img src=\"https://julyedu-cdn.oss-cn-beijing.aliyuncs.com/time_limited_free/M/banner.png\" alt=\"\"/>\n        </div>\n        <nav>\n          {/*<div className=\"prev-cover\"></div>*/}\n          <ul ref={el => this.nav = el}>\n            {\n              tab && !!tab.length && tab.map((item, index) => {\n                return (\n                  <li key={index} className={index === tabActiveIndex ? 'active' : ''} style={navItemStyle}\n                      onClick={e => this.changeTab(e, index)}>\n                    <a href={`#category${item.id}`} target={'_self'}>{item.category_name}</a>\n                  </li>\n                )\n              })\n            }\n          </ul>\n          <div className=\"next-cover\"></div>\n        </nav>\n        <WhiteSpace/>\n        <div className=\"course-list\">\n          <ul>\n            {\n              tab && !!tab.length && tab.map(category => {\n                return (\n                  <li key={category.id} className={'category'}>\n                    <h2 id={`category${category.id}`}>\n                      <img src=\"https://julyedu-cdn.oss-cn-beijing.aliyuncs.com/time_limited_free/M/category-icon.png\"\n                           alt=\"\"/>\n                      <span>{category.category_name}</span>\n                    </h2>\n                    <ul className={'courses'}>\n                      {\n                        courses && courses.length && courses.map((item, index) => {\n                          if (item.category_id != category.id) {\n                            return null\n                          }\n                          /*\n                          * course_status:\n                          * 0未领取 1已领取未过期 2 已领取已过期 3 正常已购买\n                          * */\n                          let des, bottom\n                          switch (item.course_status) {\n                            case 0:\n                              des = <div className={'learner'}>\n                                <i className='iconfont iconRectangleCopy4'/>\n                                <span>{item.play_times}人学习</span>\n                              </div>\n                              bottom = <div className={'bottom'}>\n                                <span className={'red'}>限时免费</span>\n                                <span className={'origin-price'}>¥{item.price0}</span>\n                                <button onClick={e => {\n                                  e.stopPropagation()\n                                  this.getCourse(item.course_id, item.v_course_id)\n                                }}>免费领取\n                                </button>\n                              </div>\n                              break\n                            case 1:\n                              const {d, h, m} = this.formatTime(item.course_expire)\n                              des = <div className={'remain-time'}>\n                                <i className={'iconfont iconiconfront-21'}/>\n                                <span>{d}天{h}时{m}分后过期</span>\n                              </div>\n                              bottom = <div className={'bottom'}>\n                                <span className={'purchased'}>已领取</span>\n                                <StudyButton id={item.course_id}/>\n                              </div>\n                              break\n                            case 2:\n                              des = <div className={'remain-time'}>\n                                <i className={'iconfont iconiconfront-21'}/>\n                                <span>{item.play_times}人学习</span>\n                              </div>\n                              bottom = <div className={'bottom'}>\n                                <span className={'red'}>¥{item.price1}</span>\n                                <span className={'origin-price'}>¥{item.price0}</span>\n                                <Link to={`/detail?id=${item.course_id}`}>立即购买</Link>\n                              </div>\n                              break\n                            case 3:\n                              des = <div className={'learner'}>\n                                <i className='iconfont iconRectangleCopy4'/>\n                                <span>{item.play_times}人学习</span>\n                              </div>\n                              bottom = <div className=\"bottom\">\n                                <span className={'purchased'}>已购买</span>\n                                <StudyButton id={item.course_id}/>\n                              </div>\n                          }\n\n                          const info = (\n                            <div className='info'>\n                              <div className='title'>{item.course_title}</div>\n                              {des}\n                              {bottom}\n                            </div>\n                          )\n                          return (\n                            <VList img={item.image_name}\n                                   handleClick={this.handleClick}\n                                   id={item.course_id}\n                                   info={info}\n                                   key={index}\n                            />\n                          )\n                        })\n                      }\n                    </ul>\n                  </li>\n\n                )\n              })\n            }\n          </ul>\n        </div>\n        <div className=\"no-more\">\n          -没有更多了-\n        </div>\n      </div>\n    );\n  }\n}\n\nfunction StudyButton({id}) {\n  return <Link to={`/play/video?id=${id}`}>立即学习</Link>\n}\n\nexport default connect(\n  state => ({user: state.user}),\n  null\n)\n(WithFullSize(LimitFree))","import React from 'react';\nimport './index.scss'\n\nconst VList = (props) => {\n    return (\n        <li className='v-list-base-item' onClick={props.handleClick.bind(this, props.id, props.item)}>\n            <div className=\"content\">\n                <div className=\"cover\">\n                    {props.status}\n                    <img src={props.img} alt=\"\"/>\n                </div>\n                {props.info}\n            </div>\n            {props.tab}\n        </li>\n    );\n};\n\nexport default VList;\n"],"sourceRoot":""}