{"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":"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","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":""}