63.494a1f0a.chunk.js.map 16.4 KB
Newer Older
wangshuo committed
1
{"version":3,"sources":["components/limit-free/index.js","common/v-list-base/index.js"],"names":["showToast","msg","info","LimitFree","state","tab","courses","navItemStyle","tabActiveIndex","getData","Promise","all","http","get","API","home","then","res","data","tabData","tabCode","code","tabMsg","coursesData","coursesCode","coursesMsg","setState","handleClick","id","props","history","push","changeTab","e","index","getCourse","courseId","vCourseId","user","hasError","post","course_id","instance","Popup","className","closable","clickMaskClose","title","src","alt","content","onClick","close","toPlay","formatTime","seconds","d","Math","floor","toString","padStart","h","m","document","this","arrow","ref","el","nav","length","map","item","key","style","href","target","category_name","category","category_id","des","bottom","course_status","play_times","price0","stopPropagation","v_course_id","course_expire","StudyButton","price1","to","course_title","img","image_name","Component","connect","WithFullSize","VList","bind","status"],"mappings":"oTAYA,SAASA,EAAUC,GACjB,IAAMC,KAAKD,EAAK,EAAG,MAAM,G,IAGrBE,E,4MAEJC,MAAQ,CACNC,IAAK,GACLC,QAAS,GACTC,aAAc,GACdC,eAAgB,G,EAQlBC,QAAU,WACRC,QAAQC,IAAI,CACVC,IAAKC,IAAL,UAAYC,IAAIC,KAAhB,kBACAH,IAAKC,IAAL,UAAYC,IAAIC,KAAhB,kBACCC,MAAK,SAACC,GAAS,IAAD,cACQA,EADR,GACRZ,EADQ,KACHC,EADG,OAEuCD,EAAIa,KAA5CC,EAFC,EAEPD,KAAqBE,EAFd,EAEQC,KAAoBC,EAF5B,EAEuBrB,IAFvB,EAOXK,EAAQY,KAHJK,EAJO,EAIbL,KACMM,EALO,EAKbH,KACKI,EANQ,EAMbxB,IAEc,MAAZmB,EACF,EAAKM,SAAS,CACZrB,IAAKc,IAGPnB,EAAUsB,GAEQ,MAAhBE,EACF,EAAKE,SAAS,CACZpB,QAASiB,IAGXvB,EAAUyB,O,EAKhBE,YAAc,SAACC,GACb,EAAKC,MAAMC,QAAQC,KAAnB,qBAAsCH,K,EAGxCI,UAAY,SAACC,EAAGC,GACa,EAAK9B,MAAxBI,iBACe0B,GACrB,EAAKR,SAAS,CACZlB,eAAgB0B,K,EAKtBC,UAAY,SAACC,EAAUC,GAAe,IAAD,EACT,EAAKR,MAAvBS,EAD2B,EAC3BA,KAAMR,EADqB,EACrBA,QACVQ,EAAKC,SACPT,EAAQC,KAAK,aAGfnB,IACG4B,KADH,UACW1B,IAAIC,KADf,0BAC6C,CACzC0B,UAAWL,IAEZpB,MAAK,SAACC,GAAS,IAAD,EACSA,EAAIC,KAAlBG,EADK,EACLA,KAAMpB,EADD,EACCA,IACd,GAAa,MAAToB,EACF,IAAMqB,EAAWC,YAAM,CACrBC,UAAW,mBACXC,UAAU,EACVC,gBAAgB,EAChBC,MACE,6BACE,yBACEC,IAAI,gFACJC,IAAI,KAEN,4GAGJC,QACE,yBAAKN,UAAW,QACd,4BACEO,QAAS,WACPT,EAASU,QACT,EAAK3C,YAHT,sBAQA,4BACE0C,QAAS,WACP,EAAKE,OAAOhB,GACZK,EAASU,UAHb,oCAYNpD,EAAUC,O,EAKlBoD,OAAS,SAACzB,GACR,EAAKC,MAAMC,QAAQC,KAAnB,yBAA0CH,K,EAG5C0B,WAAa,SAACC,GAAD,MAAc,CACzBC,EAAGC,KAAKC,MAAMH,EAAU,GAAK,GAAK,IAC/BI,WACAC,SAAS,EAAG,KACfC,EAAGJ,KAAKC,MAAOH,EAAU,GAAK,GAAM,IACjCI,WACAC,SAAS,EAAG,KACfE,EAAGL,KAAKC,MAAOH,EAAU,GAAM,IAC5BI,WACAC,SAAS,EAAG,O,kEAhHfG,SAAShB,MAAQ,mFACjBiB,KAAKvD,Y,+BAkHG,IAAD,SACgDuD,KAAK5D,MAApDC,EADD,EACCA,IAAKC,EADN,EACMA,QAASC,EADf,EACeA,aAAcC,EAD7B,EAC6BA,eACpC,OACE,yBAAKoC,UAAU,cACb,kBAAC,IAAD,CAAWqB,OAAO,EAAMlB,MAAO,6BAC/B,yBAAKH,UAAU,UACb,yBACEI,IAAI,iFACJC,IAAI,MAGR,6BAEE,wBAAIiB,IAAK,SAACC,GAAD,OAAS,EAAKC,IAAMD,IAC1B9D,KACGA,EAAIgE,QACNhE,EAAIiE,KAAI,SAACC,EAAMrC,GACb,OACE,wBACEsC,IAAKtC,EACLU,UAAWV,IAAU1B,EAAiB,SAAW,GACjDiE,MAAOlE,EACP4C,QAAS,SAAClB,GAAD,OAAO,EAAKD,UAAUC,EAAGC,KAElC,uBAAGwC,KAAI,mBAAcH,EAAK3C,IAAM+C,OAAQ,SACrCJ,EAAKK,oBAMlB,yBAAKhC,UAAU,gBAEjB,4BACA,yBAAKA,UAAU,eACb,4BACGvC,KACGA,EAAIgE,QACNhE,EAAIiE,KAAI,SAACO,GACP,OACE,wBAAIL,IAAKK,EAASjD,GAAIgB,UAAW,YAC/B,wBAAIhB,GAAE,kBAAaiD,EAASjD,KAC1B,yBACEoB,IAAI,wFACJC,IAAI,KAEN,8BAAO4B,EAASD,gBAElB,wBAAIhC,UAAW,WACZtC,GACCA,EAAQ+D,QACR/D,EAAQgE,KAAI,SAACC,EAAMrC,GACjB,GAAIqC,EAAKO,aAAeD,EAASjD,GAC/B,OAAO,KAMT,IAAImD,EAAKC,EACT,OAAQT,EAAKU,eACX,KAAK,EACHF,EACE,yBAAKnC,UAAW,WACd,uBAAGA,UAAU,gCACb,8BAAO2B,EAAKW,WAAZ,uBAGJF,EACE,yBAAKpC,UAAW,UACd,0BAAMA,UAAW,OAAjB,4BACA,0BAAMA,UAAW,gBAAjB,OACI2B,EAAKY,QAET,4BACEhC,QAAS,SAAClB,GACRA,EAAEmD,kBACF,EAAKjD,UACHoC,EAAK9B,UACL8B,EAAKc,eALX,6BAaJ,MACF,KAAK,EAAL,MACsB,EAAK/B,WACvBiB,EAAKe,eADC9B,EADV,EACUA,EAAGK,EADb,EACaA,EAAGC,EADhB,EACgBA,EAGdiB,EACE,yBAAKnC,UAAW,eACd,uBAAGA,UAAW,8BACd,8BACGY,EADH,SACOK,EADP,SACWC,EADX,6BAKJkB,EACE,yBAAKpC,UAAW,UACd,0BAAMA,UAAW,aAAjB,sBACA,kBAAC2C,EAAD,CAAa3D,GAAI2C,EAAK9B,aAG1B,MACF,KAAK,EACHsC,EACE,yBAAKnC,UAAW,eACd,uBAAGA,UAAW,8BACd,8BAAO2B,EAAKW,WAAZ,uBAGJF,EACE,yBAAKpC,UAAW,UACd,0BAAMA,UAAW,OAAjB,OAA0B2B,EAAKiB,QAC/B,0BAAM5C,UAAW,gBAAjB,OACI2B,EAAKY,QAET,kBAAC,IAAD,CAAMM,GAAE,qBAAgBlB,EAAK9B,YAA7B,6BAKJ,MACF,KAAK,EACHsC,EACE,yBAAKnC,UAAW,WACd,uBAAGA,UAAU,gCACb,8BAAO2B,EAAKW,WAAZ,uBAGJF,EACE,yBAAKpC,UAAU,UACb,0BAAMA,UAAW,aAAjB,sBACA,kBAAC2C,EAAD,CAAa3D,GAAI2C,EAAK9B,aAK9B,IAAMvC,EACJ,yBAAK0C,UAAU,QACb,yBAAKA,UAAU,SAAS2B,EAAKmB,cAC5BX,EACAC,GAGL,OACE,kBAAC,IAAD,CACEW,IAAKpB,EAAKqB,WACVjE,YAAa,EAAKA,YAClBC,GAAI2C,EAAK9B,UACTvC,KAAMA,EACNsE,IAAKtC,cAU3B,yBAAKU,UAAU,WAAf,yC,GAjSgBiD,aAuSxB,SAASN,EAAT,GAA8B,IAAP3D,EAAM,EAANA,GACrB,OAAO,kBAAC,IAAD,CAAM6D,GAAE,yBAAoB7D,IAA5B,4BAGMkE,uBACb,SAAC1F,GAAD,MAAY,CAAEkC,KAAMlC,EAAMkC,QAC1B,KAFawD,CAGbC,YAAa5F,K,4DCzSA6F,IAlBD,SAACnE,GACb,OACE,wBACEe,UAAU,mBACVO,QAAStB,EAAMF,YAAYsE,U,EAAWpE,EAAMD,GAAIC,EAAM0C,OAEtD,yBAAK3B,UAAU,WACb,yBAAKA,UAAU,SACZf,EAAMqE,OACP,yBAAKlD,IAAKnB,EAAM8D,IAAK1C,IAAI,MAE1BpB,EAAM3B,MAER2B,EAAMxB,O","file":"mrstaticjs/63.494a1f0a.chunk.js","sourcesContent":["/* eslint-disable eqeqeq, default-case */\nimport React, { Component } from \"react\"\nimport { http } from \"src/utils\"\nimport \"./index.scss\"\nimport { HeaderBar } from \"src/common/index\"\nimport { WhiteSpace, Toast } from \"antd-mobile\"\nimport VList from \"src/common/v-list-base\"\nimport { Popup } from \"src/common/index\"\nimport WithFullSize from \"src/HOCs/WithFullSize\"\nimport { connect } from \"react-redux\"\nimport { Link } from \"react-router-dom\"\n\nfunction showToast(msg) {\n  Toast.info(msg, 2, null, false)\n}\n\nclass LimitFree extends Component {\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([\n      http.get(`${API.home}/sys/category`),\n      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 {\n        data: coursesData,\n        code: coursesCode,\n        msg: coursesMsg,\n      } = 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  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  getCourse = (courseId, vCourseId) => {\n    const { user, history } = this.props\n    if (user.hasError) {\n      history.push(\"/passport\")\n      return\n    }\n    http\n      .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          const instance = Popup({\n            className: \"get-course-popup\",\n            closable: false,\n            clickMaskClose: false,\n            title: (\n              <div>\n                <img\n                  src=\"https://julyedu-cdn.oss-cn-beijing.aliyuncs.com/time_limited_free/M/check.png\"\n                  alt=\"\"\n                />\n                <div>课程有效期7天,快去学习吧~</div>\n              </div>\n            ),\n            content: (\n              <div className={\"btns\"}>\n                <button\n                  onClick={() => {\n                    instance.close()\n                    this.getData()\n                  }}\n                >\n                  知道了\n                </button>\n                <button\n                  onClick={() => {\n                    this.toPlay(vCourseId)\n                    instance.close()\n                  }}\n                >\n                  立即学习\n                </button>\n              </div>\n            ),\n          })\n        } else {\n          showToast(msg)\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)\n      .toString()\n      .padStart(2, \"0\"),\n    h: Math.floor((seconds / 60 / 60) % 24)\n      .toString()\n      .padStart(2, \"0\"),\n    m: Math.floor((seconds / 60) % 60)\n      .toString()\n      .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\n            src=\"https://julyedu-cdn.oss-cn-beijing.aliyuncs.com/time_limited_free/M/banner.png\"\n            alt=\"\"\n          />\n        </div>\n        <nav>\n          {/*<div className=\"prev-cover\"></div>*/}\n          <ul ref={(el) => (this.nav = el)}>\n            {tab &&\n              !!tab.length &&\n              tab.map((item, index) => {\n                return (\n                  <li\n                    key={index}\n                    className={index === tabActiveIndex ? \"active\" : \"\"}\n                    style={navItemStyle}\n                    onClick={(e) => this.changeTab(e, index)}\n                  >\n                    <a href={`#category${item.id}`} target={\"_self\"}>\n                      {item.category_name}\n                    </a>\n                  </li>\n                )\n              })}\n          </ul>\n          <div className=\"next-cover\"></div>\n        </nav>\n        <WhiteSpace />\n        <div className=\"course-list\">\n          <ul>\n            {tab &&\n              !!tab.length &&\n              tab.map((category) => {\n                return (\n                  <li key={category.id} className={\"category\"}>\n                    <h2 id={`category${category.id}`}>\n                      <img\n                        src=\"https://julyedu-cdn.oss-cn-beijing.aliyuncs.com/time_limited_free/M/category-icon.png\"\n                        alt=\"\"\n                      />\n                      <span>{category.category_name}</span>\n                    </h2>\n                    <ul className={\"courses\"}>\n                      {courses &&\n                        courses.length &&\n                        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 = (\n                                <div className={\"learner\"}>\n                                  <i className=\"iconfont iconRectangleCopy4\" />\n                                  <span>{item.play_times}人学习</span>\n                                </div>\n                              )\n                              bottom = (\n                                <div className={\"bottom\"}>\n                                  <span className={\"red\"}>限时免费</span>\n                                  <span className={\"origin-price\"}>\n                                    ¥{item.price0}\n                                  </span>\n                                  <button\n                                    onClick={(e) => {\n                                      e.stopPropagation()\n                                      this.getCourse(\n                                        item.course_id,\n                                        item.v_course_id\n                                      )\n                                    }}\n                                  >\n                                    免费领取\n                                  </button>\n                                </div>\n                              )\n                              break\n                            case 1:\n                              const { d, h, m } = this.formatTime(\n                                item.course_expire\n                              )\n                              des = (\n                                <div className={\"remain-time\"}>\n                                  <i className={\"iconfont iconiconfront-21\"} />\n                                  <span>\n                                    {d}天{h}时{m}分后过期\n                                  </span>\n                                </div>\n                              )\n                              bottom = (\n                                <div className={\"bottom\"}>\n                                  <span className={\"purchased\"}>已领取</span>\n                                  <StudyButton id={item.course_id} />\n                                </div>\n                              )\n                              break\n                            case 2:\n                              des = (\n                                <div className={\"remain-time\"}>\n                                  <i className={\"iconfont iconiconfront-21\"} />\n                                  <span>{item.play_times}人学习</span>\n                                </div>\n                              )\n                              bottom = (\n                                <div className={\"bottom\"}>\n                                  <span className={\"red\"}>¥{item.price1}</span>\n                                  <span className={\"origin-price\"}>\n                                    ¥{item.price0}\n                                  </span>\n                                  <Link to={`/detail?id=${item.course_id}`}>\n                                    立即购买\n                                  </Link>\n                                </div>\n                              )\n                              break\n                            case 3:\n                              des = (\n                                <div className={\"learner\"}>\n                                  <i className=\"iconfont iconRectangleCopy4\" />\n                                  <span>{item.play_times}人学习</span>\n                                </div>\n                              )\n                              bottom = (\n                                <div className=\"bottom\">\n                                  <span className={\"purchased\"}>已购买</span>\n                                  <StudyButton id={item.course_id} />\n                                </div>\n                              )\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\n                              img={item.image_name}\n                              handleClick={this.handleClick}\n                              id={item.course_id}\n                              info={info}\n                              key={index}\n                            />\n                          )\n                        })}\n                    </ul>\n                  </li>\n                )\n              })}\n          </ul>\n        </div>\n        <div className=\"no-more\">-没有更多了-</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)(WithFullSize(LimitFree))\n","import React from \"react\"\nimport \"./index.scss\"\n\nconst VList = (props) => {\n  return (\n    <li\n      className=\"v-list-base-item\"\n      onClick={props.handleClick.bind(this, props.id, props.item)}\n    >\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":""}