{"version":3,"sources":["components/python/pythomDes/Description/index.js","components/python/pythomDes/NoWorry/index.js","components/python/pythomDes/Study/index.js","components/python/pythomDes/Test/index.js","components/python/pythomDes/Team/index.js","components/python/pythomDes/Experience/index.js","components/python/pythomDes/Progream/index.js","components/python/pythomDes/index.js","components/python/index.js"],"names":["Description","className","src","alt","this","props","list","map","item","index","DesList","key","Component","url","title","subTitle","NoWorry","WorryItem","Study","Change","data","cn","str","toString","ci","Number","cs","Math","floor","cv","length","replace","syllabus","name","lessons","number","info","allSyllabusShow","onClick","hide","show","Test","practice","stage","questions","question","icon","allPracticeShow","Team","state","teacherList","avatar","des","Experience","isOnline","tryLearn","Progream","q","a","DefineItem","desInfo","titleUrl","style","width","subWidth","height","bottomUrl","PythonDes","connect","user","signUp","hasError","toLogin","toDetail","toLearn","backwardVersion","http","post","API","course_id","getParam","then","res","code","msg","SendMessageToApp","setState","toApp","closePop","id","onlyoneUse","setTimeout","clearTimeout","get","errno","history","push","simple","showAll","allSyllabus","allPractice","hideSome","slice","getStatus","payMoney","course_info","price1","courseInfo","defineList","desList","worryList","isPay","nextProps","nextState","nextContext","isAppUpdate","console","log","is_dist","fontSize","display","type","Python","setCurrentUser","startFetchUser","loginInfo","result","userInfoList","appLogin","expires","addDays","Date","forEach","cookie","set","token","path","domain","plat","uid","uname","avatar_file","fetchCourseInfo","transformUser","payload","username","isFetching","home","version","browser","isAndroidApp","isIOSApp","is_pay","document","_this","window"],"mappings":"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","file":"mrstaticjs/python-class.61971222.chunk.js","sourcesContent":["/* eslint-disable jsx-a11y/alt-text */\nimport React, { Component } from \"react\"\nimport \"./index.scss\"\n\nexport default class Description extends Component {\n render() {\n return (\n <div className={\"description\"}>\n <img\n className={\"left\"}\n src=\"https://julyedu-cdn.oss-cn-beijing.aliyuncs.com/h5_python_class/left.png\"\n alt=\"\"\n />\n <img\n className={\"right\"}\n src=\"https://julyedu-cdn.oss-cn-beijing.aliyuncs.com/h5_python_class/right.png\"\n alt=\"\"\n />\n <p className={\"title\"}>课 / 程 / 介 / 绍</p>\n <p className={\"sub__title\"}>\n 对话式交互教学+课后实操,17节课全面掌握Python基础语法\n </p>\n <img\n src={\n \"https://julyedu-cdn.oss-cn-beijing.aliyuncs.com/h5_python_class/diannao.png\"\n }\n />\n {this.props.list.map((item, index) => {\n return <DesList item={item} key={index}></DesList>\n })}\n </div>\n )\n }\n}\n\nfunction DesList(props) {\n const { url, title, subTitle } = props.item\n return (\n <div className={\"des__container\"}>\n <img src={url} alt=\"\" />\n <div>\n <p className={\"item__title\"}>{title}</p>\n <p className={\"item__sub\"}>{subTitle}</p>\n </div>\n </div>\n )\n}\n","import React, { Component } from \"react\"\nimport \"./index.scss\"\n\nexport default class NoWorry extends Component {\n render() {\n return (\n <div className={\"worry__container\"}>\n <img\n className={\"left\"}\n src=\"https://julyedu-cdn.oss-cn-beijing.aliyuncs.com/h5_python_class/worry_left.png\"\n alt=\"\"\n />\n <p className={\"title\"}>你 / 的 / 担 / 忧</p>\n <p className={\"sub__title\"}>\n 全新的课程形式,轻松、有趣的课程内容,解除你所有的担忧\n </p>\n {this.props.list.map((item, index) => {\n return <WorryItem item={item} key={index}></WorryItem>\n })}\n </div>\n )\n }\n}\n\nfunction WorryItem(props) {\n const { url, title, subTitle } = props.item\n return (\n <div className={\"item__container\"}>\n <div className={\"head\"}></div>\n <img src={url} alt=\"\" />\n <p className={\"title\"}>{title}</p>\n <p className={\"des\"}>{subTitle}</p>\n </div>\n )\n}\n","import React, { Component } from \"react\"\nimport \"./index.scss\"\n\nexport default class Study extends Component {\n Change = (data) => {\n let cn = [\"一\", \"二\", \"三\", \"四\", \"五\", \"六\", \"七\", \"八\", \"九\", \"十\"]\n let newStr = \"\"\n let str = data.toString()\n let ci = Number(str) % 10\n let cs = Math.floor(Number(str) / 10)\n let cv = \"\"\n if (str.length > 1) {\n if (cs === 1) {\n cv = ci >= 1 ? cn[9] + cn[ci - 1] : cn[9]\n } else {\n cv = ci > 1 ? cn[cs - 1] + cn[9] + cn[ci - 1] : cn[cs - 1] + cn[9]\n }\n } else {\n cv = cn[ci - 1]\n }\n newStr = str.replace(str, cv)\n return newStr\n }\n\n render() {\n return (\n <div className={\"study__container\"}>\n <img\n className={\"learn_left\"}\n src=\"https://julyedu-cdn.oss-cn-beijing.aliyuncs.com/h5_python_class/learn_left.png\"\n alt=\"\"\n />\n <img\n className={\"learn_bottom\"}\n src=\"https://julyedu-cdn.oss-cn-beijing.aliyuncs.com/h5_python_class/learn_bottom.png\"\n alt=\"\"\n />\n <p className={\"title\"}>阶 / 梯 / 学 / 习</p>\n <p className={\"sub__title\"}>17节课堂教学,带你掌握Python技术入门知识</p>\n <div className={\"step__container\"}>\n <div className={\"item__container\"}>\n <img\n src=\"https://julyedu-cdn.oss-cn-beijing.aliyuncs.com/h5_python_class/wanzheng.png\"\n alt=\"\"\n />\n <p>完整的Python基础知识体系</p>\n <div className={\"item__line\"}></div>\n </div>\n <div className={\"item__container\"}>\n <img\n src=\"https://julyedu-cdn.oss-cn-beijing.aliyuncs.com/h5_python_class/siwei.png\"\n alt=\"\"\n />\n <p>灵活的编程思维和实操技巧</p>\n <div className={\"item__line\"}></div>\n </div>\n <div className={\"item__container\"}>\n <img\n src=\"https://julyedu-cdn.oss-cn-beijing.aliyuncs.com/h5_python_class/shicao.png\"\n alt=\"\"\n />\n <p>丰富有趣的实操训练</p>\n </div>\n </div>\n\n <div className={\"table__container\"}>\n <div className={\"table__head\"}>\n <div className={\"head_title order_number\"}>序号</div>\n <div className={\"head_title chapter\"}>章节</div>\n <div className={\"head_title points\"}>知识点</div>\n </div>\n <div className={\"table__body\"}>\n {this.props.syllabus.map((item, index) => {\n return (\n <div className={\"item__container\"} key={index}>\n <div className={\"item__title\"}>\n {\"第\" + this.Change(index + 1) + \"阶段 \" + item.name}\n </div>\n {item.lessons.map((item, index) => {\n return (\n <div className={\"item__content\"} key={index}>\n <div className={\"content order_number number_center\"}>\n {item.number}\n </div>\n <div className={\"content chapter\"}>{item.name}</div>\n <div className={\"content points\"}>{item.info.name}</div>\n </div>\n )\n })}\n </div>\n )\n })}\n </div>\n <div className={\"table__bottom\"}>\n {this.props.allSyllabusShow ? (\n <div onClick={() => this.props.hide(1)}>\n <p>收起</p>\n <img\n src=\"https://julyedu-cdn.oss-cn-beijing.aliyuncs.com/h5_python_class/shouqi.png\"\n alt=\"\"\n />\n </div>\n ) : (\n <div onClick={() => this.props.show(1)}>\n <p>展开更多</p>\n <img\n src=\"https://julyedu-cdn.oss-cn-beijing.aliyuncs.com/h5_python_class/zhankai.png\"\n alt=\"\"\n />\n </div>\n )}\n </div>\n </div>\n </div>\n )\n }\n}\n","import React, { Component } from \"react\"\nimport \"./index.scss\"\n\nexport default class Test extends Component {\n Change = (data) => {\n let cn = [\"一\", \"二\", \"三\", \"四\", \"五\", \"六\", \"七\", \"八\", \"九\", \"十\"]\n let newStr = \"\"\n let str = data.toString()\n let ci = Number(str) % 10\n let cs = Math.floor(Number(str) / 10)\n let cv = \"\"\n if (str.length > 1) {\n if (cs === 1) {\n cv = ci >= 1 ? cn[9] + cn[ci - 1] : cn[9]\n } else {\n cv = ci > 1 ? cn[cs - 1] + cn[9] + cn[ci - 1] : cn[cs - 1] + cn[9]\n }\n } else {\n cv = cn[ci - 1]\n }\n newStr = str.replace(str, cv)\n return newStr\n }\n\n render() {\n return (\n <div className={\"test_container\"}>\n <p className={\"title\"}>课 / 后 / 实 / 操</p>\n <p className={\"sub_title\"}>\n 涵盖完整知识体系,让你掌握实用高效的编程技巧\n </p>\n <div className={\"table_container\"}>\n <div className={\"table_head\"}>\n <span>序号</span>\n <span>实操项目</span>\n </div>\n <div className={\"table_body\"}>\n {this.props.practice.map((item, index) => {\n return (\n <div className=\"stage-item\" key={index}>\n <div className=\"stage\">{`第${this.Change(item.stage)}阶段 ${\n item.name\n }`}</div>\n {item.questions.map((question, index) => {\n return (\n <div key={index} className={\"line\"}>\n <span>{question.number}</span>\n <div className={\"test_name\"}>\n <img src={question.icon} alt=\"\" />\n <p>{question.name}</p>\n </div>\n </div>\n )\n })}\n </div>\n )\n })}\n </div>\n <div className={\"table_bottom\"}>\n {this.props.allPracticeShow ? (\n <div onClick={() => this.props.hide(2)}>\n <p>收起</p>\n <img\n src=\"https://julyedu-cdn.oss-cn-beijing.aliyuncs.com/h5_python_class/shouqi.png\"\n alt=\"\"\n />\n </div>\n ) : (\n <div onClick={() => this.props.show(2)}>\n <p>展开更多</p>\n <img\n src=\"https://julyedu-cdn.oss-cn-beijing.aliyuncs.com/h5_python_class/zhankai.png\"\n alt=\"\"\n />\n </div>\n )}\n </div>\n </div>\n </div>\n )\n }\n}\n","import React, { Component } from \"react\"\nimport \"./index.scss\"\n\nexport default class Team extends Component {\n constructor(props) {\n super(props)\n this.state = {\n teacherList: [\n {\n avatar:\n \"https://julyedu-cdn.oss-cn-beijing.aliyuncs.com/h5_python_class/teacher1.png\",\n name: \"陈博士\",\n des:\n \"七月在线AI Lab负责人兼科学家。历任浪潮集团数据科学家,国家电网人工智能行业应用方向团队负责人。参与过一国家863项目,且曾主持一山东省自主创新及成果转化专项,发明专利十余项,专业论文十余篇。\",\n },\n {\n avatar:\n \"https://julyedu-cdn.oss-cn-beijing.aliyuncs.com/h5_python_class/teacher2.png\",\n name: \"孙老师\",\n des:\n \"10多年开发经验,先后任职国内知名互联网企业,从事人工智能方向的实施,擅长全栈开发,将机器学习/深度学习结合到实际生产运营中。\",\n },\n {\n avatar:\n \"https://julyedu-cdn.oss-cn-beijing.aliyuncs.com/h5_python_class/teacher3.png\",\n name: \"史老师\",\n des:\n \"计算机专业毕业,多年开发经验,熟悉 Python,熟悉 linux 环境下系统编程,具有多年的 Web 后端开发经验,授课思路清晰明了,通俗易懂,幽默风趣的讲课方式将枯燥的知识以通俗的方式展现,深受学生好评。\",\n },\n {\n avatar:\n \"https://julyedu-cdn.oss-cn-beijing.aliyuncs.com/h5_python_class/teacher4.png\",\n name: \"珊酱\",\n des:\n \"班主任的工作是一项非常辛苦和琐碎的工作,不付出艰辛的劳动和辛苦的汗水是不会有收获的。历经数万名学员的一对一服务,始终坚持给学员做到最好的服务和最严格的要求,学员的点滴进步和成长就是我最大的期望!\",\n },\n ],\n }\n }\n render() {\n const { teacherList } = this.state\n return (\n <div className={\"team_container\"}>\n <img\n className={\"team_top\"}\n src=\"https://julyedu-cdn.oss-cn-beijing.aliyuncs.com/h5_python_class/team_top.png\"\n alt=\"\"\n />\n <img\n className={\"team_bottom\"}\n src=\"https://julyedu-cdn.oss-cn-beijing.aliyuncs.com/h5_python_class/team_bottom.png\"\n alt=\"\"\n />\n <p className={\"title\"}>教/学/团/队</p>\n <p className={\"sub_title\"}>讲师+助教+班主任全程陪伴,哪里不会问哪里</p>\n <ul>\n {teacherList.map((item, index) => {\n return (\n <li key={index} className={\"item_li\"}>\n <img className={\"item_image\"} src={item.avatar} alt=\"\" />\n <div className={\"item_info\"}>\n <span className={\"name\"}>{item.name}</span>\n <p className={\"des\"}>{item.des}</p>\n </div>\n </li>\n )\n })}\n </ul>\n </div>\n )\n }\n}\n","import React, { Component } from \"react\"\nimport \"./index.scss\"\n\nexport default class Experience extends Component {\n render() {\n const { isOnline, tryLearn } = this.props\n return (\n <div className={\"experience_container\"}>\n <p className={\"title\"}>试 / 学 / 体 / 验</p>\n\n {isOnline ? (\n <>\n <div className={\"experience\"}>\n <img\n src=\"https://julyedu-cdn.oss-cn-beijing.aliyuncs.com/h5_python_class/L%402x.png\"\n alt=\"\"\n />\n <div>\n <p>限时福利免费试学</p>\n <p>开始颠覆你想象的学习</p>\n </div>\n <img\n src=\"https://julyedu-cdn.oss-cn-beijing.aliyuncs.com/h5_python_class/r%402x.png\"\n alt=\"\"\n />\n </div>\n <div className={\"btn\"} onClick={tryLearn}>\n 立即体验\n </div>\n </>\n ) : (\n <>\n <div className={\"experience\"}>\n <img\n src=\"https://julyedu-cdn.oss-cn-beijing.aliyuncs.com/h5_python_class/L%402x.png\"\n alt=\"\"\n />\n <div>\n <p>上架后可免费试学</p>\n <p>体验颠覆你想象的学习</p>\n </div>\n <img\n src=\"https://julyedu-cdn.oss-cn-beijing.aliyuncs.com/h5_python_class/r%402x.png\"\n alt=\"\"\n />\n </div>\n <div className={\"btn btn--online\"}>即将上架敬请期待</div>\n </>\n )}\n </div>\n )\n }\n}\n","import React, { Component } from \"react\"\nimport \"./index.scss\"\n\nexport default class Progream extends Component {\n constructor(props) {\n super(props)\n this.state = {\n list: [\n {\n q: \"课程学习周期是多久?\",\n a:\n \"每天学习1小时,课程采用通关制解锁的方式,根据自己的时间和学习速度灵活调整。\",\n },\n {\n q: \"我没有Python基础可以学习吗?\",\n a:\n \"我们的课程是面向零基础的小伙伴设计的,课程通过故事叙述的方式由浅入深,层层递进,尽可能帮助大家理解并且掌握所学知识,没有任何基础是可以学习的。\",\n },\n {\n q: \"学习过程中遇到了困难怎么办?\",\n a: \"我们为学员配备了专门的助教,有问题随时可以咨询助教老师。\",\n },\n {\n q: \"需要自己安装代码运行环境吗?\",\n a:\n \"在平台上学习不需要安装任何环境,该课程包含的知识点实操以及课后实操都可以在平台上完成。\",\n },\n ],\n }\n }\n render() {\n const { list } = this.state\n return (\n <div className={\"pro_container\"}>\n <img\n src=\"https://julyedu-cdn.oss-cn-beijing.aliyuncs.com/h5_python_class/pro_left.png\"\n alt=\"\"\n />\n <p>常 / 见 / 问 / 题</p>\n <ul>\n {list.map((item, index) => {\n return (\n <li key={index} className={\"q_item\"}>\n <div className={\"q\"}>\n {\" \"}\n <p>{`Q:${item.q}`}</p> <span></span>\n </div>\n <div className={\"a__container\"}>\n <div>A:</div>\n <p>{item.a}</p>\n </div>\n </li>\n )\n })}\n </ul>\n </div>\n )\n }\n}\n","/* eslint-disable eqeqeq, jsx-a11y/alt-text */\nimport React, { Component } from \"react\"\nimport \"./index.scss\"\nimport Description from \"./Description/index.js\"\nimport NoWorry from \"./NoWorry/index.js\"\nimport Study from \"./Study/index.js\"\nimport Test from \"./Test/index.js\"\nimport Team from \"./Team/index.js\"\nimport Experience from \"./Experience/index.js\"\nimport Progream from \"./Progream/index.js\"\nimport Mask from \"./../poup/index.js\"\nimport { http, getParam, SendMessageToApp } from \"src/utils\"\nimport { connect } from \"react-redux\"\nimport { Toast } from \"antd-mobile\"\nimport ShareRank from \"src/components/detail/shareRank\"\n\n@connect((state) => ({\n user: state.user,\n}))\nclass PythonDes extends Component {\n constructor(props) {\n super(props)\n this.state = {\n syllabus: [], // 阶梯学习\n allSyllabus: [], // 阶梯学习\n allSyllabusShow: false,\n practice: [], // 课后实操\n allPractice: [], // 课后实操\n allPracticeShow: false,\n toApp: false,\n defineList: [\n {\n titleUrl:\n \"https://julyedu-cdn.oss-cn-beijing.aliyuncs.com/h5_python_class/trophy.png\",\n title: \"排名第1的编程语言\",\n subTitle: \"2018世界编程语言排行榜中,Python排名第1\",\n subWidth: \"180px\",\n bottomUrl:\n \"https://julyedu-cdn.oss-cn-beijing.aliyuncs.com/h5_python_class/program_lan.png\",\n desInfo: {\n width: \"240px\",\n height: \"170px\",\n },\n },\n {\n titleUrl:\n \"https://julyedu-cdn.oss-cn-beijing.aliyuncs.com/h5_python_class/kaifa.png\",\n title: \"开发快速、简单易掌握\",\n subTitle: \"严谨的代码编写格式,语法格式简单易理解完成一个相同的任务\",\n subWidth: \"260px\",\n bottomUrl:\n \"https://julyedu-cdn.oss-cn-beijing.aliyuncs.com/h5_python_class/kuaisu.png\",\n desInfo: {\n width: \"212px\",\n height: \"106px\",\n },\n },\n {\n titleUrl:\n \"https://julyedu-cdn.oss-cn-beijing.aliyuncs.com/h5_python_class/lingyu.png\",\n title: \"适用领域广\",\n subTitle: \"Python工程师可从事多领域编程工作,人才年需求增长6倍\",\n subWidth: \"230px\",\n bottomUrl:\n \"https://julyedu-cdn.oss-cn-beijing.aliyuncs.com/h5_python_class/jiandan.png\",\n desInfo: {\n width: \"234px\",\n height: \"106px\",\n },\n },\n ],\n desList: [\n {\n url:\n \"https://julyedu-cdn.oss-cn-beijing.aliyuncs.com/h5_python_class/xingshi.png\",\n title: \"全新课程形式\",\n subTitle: \"对话式交互教学,轻松、生动、不无聊\",\n },\n {\n url:\n \"https://julyedu-cdn.oss-cn-beijing.aliyuncs.com/h5_python_class/huanjing.png\",\n title: \"在线编程环境\",\n subTitle: \"无需安装任何编程软件\",\n },\n {\n url:\n \"https://julyedu-cdn.oss-cn-beijing.aliyuncs.com/h5_python_class/rumen.png\",\n title: \"17天零基础入门\",\n subTitle: \"降低学习门槛,17天入门人工智能\",\n },\n ],\n worryList: [\n {\n url:\n \"https://julyedu-cdn.oss-cn-beijing.aliyuncs.com/h5_python_class/jiechu.png\",\n title: \"初次接触,担心学不会\",\n subTitle:\n \"本课程专门为零基础的你打造,全篇通过最白话沟通交流的方式进行讲解,无论你有无编程经验都可以轻松理解并且掌握。\",\n },\n {\n url:\n \"https://julyedu-cdn.oss-cn-beijing.aliyuncs.com/h5_python_class/xuexi.png\",\n title: \"想学习,没有坚持下来\",\n subTitle:\n \"以故事性的方式编写学习内容, 把生硬的知识点有趣化。精美的图片+幽默的文字+代码编写让你越学越想学。\",\n },\n {\n url:\n \"https://julyedu-cdn.oss-cn-beijing.aliyuncs.com/h5_python_class/zhishidian.png\",\n title: \"知识点掌握了,不知如何运用\",\n subTitle:\n \"每节课的知识点都设有代码编写部分,每节课课后都有课后实操。有多次代码编写练习的机会,助你真正学以致用。\",\n },\n ],\n payMoney: 0,\n isOnline: true, //课程是否上架\n courseInfo: {},\n }\n }\n\n // 立即报名\n signUp = () => {\n // 已登录\n if (!this.props.user.hasError) {\n this.toDetail()\n } else {\n // 未登录\n this.toLogin()\n }\n }\n\n // 立即体验、免费试学\n tryLearn = () => {\n // 已登录\n if (!this.props.user.hasError) {\n this.toLearn()\n } else {\n // 未登录\n this.toLogin()\n }\n }\n\n toLearn = () => {\n const { backwardVersion } = this.props\n http\n .post(`${API[\"home\"]}/m/it/user/trialCourse`, {\n course_id: getParam(\"id\"),\n })\n .then((res) => {\n const { code, msg } = res.data\n if (code == 200) {\n if (!getParam(\"version\")) {\n // H5\n this.setState({\n toApp: true,\n })\n } else {\n // APP\n if (backwardVersion) {\n Toast.info(\n \"当前版本不支持该课程模式,请升级到最新版本或前往PC端体验\",\n 2\n )\n } else {\n SendMessageToApp(\"toLearn\", getParam(\"id\"))\n }\n }\n } else {\n Toast.info(msg, 2)\n }\n })\n }\n\n closePop = () => {\n this.setState({\n toApp: false,\n })\n }\n\n toDetail = () => {\n const { backwardVersion } = this.props\n const id = getParam(\"id\")\n if (!getParam(\"version\")) {\n // H5\n http\n .get(`${API[\"base-api\"]}/m/cart/addtopreorder/[${id}]`)\n .then((res) => {\n if (res.data.errno === 0) {\n this.props.history.push(`/order?id=${id}`, { simple: 1 })\n } else {\n Toast.info(res.data.msg, 2)\n }\n })\n } else {\n // APP\n if (backwardVersion) {\n Toast.info(\n \"当前版本不支持该课程模式,请升级到最新版本或前往PC端购买\",\n 2\n )\n let onlyoneUse = setTimeout(() => {\n clearTimeout(onlyoneUse)\n onlyoneUse = null\n SendMessageToApp(\"toPay\", id)\n }, 2000)\n } else {\n SendMessageToApp(\"toPay\", id)\n }\n }\n }\n\n toLogin = () => {\n if (!getParam(\"version\")) {\n // H5\n this.props.history.push(\"/passport\")\n } else {\n // APP\n SendMessageToApp(\"toLogin\")\n }\n }\n\n showAll = (key) => {\n if (key === 1) {\n this.setState({\n syllabus: this.state.allSyllabus,\n allSyllabusShow: true,\n })\n }\n if (key === 2) {\n this.setState({\n practice: this.state.allPractice,\n allPracticeShow: true,\n })\n }\n }\n hideSome = (key) => {\n if (key === 1) {\n this.setState({\n syllabus: this.state.allSyllabus.slice(0, 2),\n allSyllabusShow: false,\n })\n }\n if (key === 2) {\n this.setState({\n practice: this.state.allPractice.slice(0, 2),\n allPracticeShow: false,\n })\n }\n }\n\n getStatus = () => {\n http\n .get(`${API[\"home\"]}/web/it_detail?course_id=${getParam(\"id\")}`)\n .then((res) => {\n const { code, data, msg } = res.data\n if (code == 200) {\n this.setState({\n syllabus: data.syllabus.slice(0, 2),\n allSyllabus: data.syllabus,\n practice: data.practice.slice(0, 2),\n allPractice: data.practice,\n payMoney: data.course_info.price1,\n courseInfo: data.course_info,\n })\n } else {\n Toast.info(msg)\n }\n })\n }\n\n componentDidMount() {\n this.getStatus()\n\n const { backwardVersion, isPay } = this.props\n if (backwardVersion && isPay === 1) {\n Toast.info(\"当前版本不支持该课程模式,请升级到最新版本或前往PC端学习\", 2)\n }\n }\n\n shouldComponentUpdate(nextProps, nextState, nextContext) {\n if (this.props.isAppUpdate !== nextProps.isAppUpdate) {\n this.getStatus()\n return false\n }\n return true\n }\n\n render() {\n const {\n defineList,\n desList,\n worryList,\n syllabus,\n practice,\n allSyllabusShow,\n allPracticeShow,\n toApp,\n payMoney,\n isOnline,\n courseInfo,\n } = this.state\n console.log(courseInfo)\n return (\n <div className={\"python__des\"}>\n <div className={\"des__start\"}></div>\n {!!courseInfo.is_dist && <ShareRank courseInfo={courseInfo} />}\n <div className={\"python__define\"}>\n <img\n className={\"left__decorate\"}\n src={\n \"https://julyedu-cdn.oss-cn-beijing.aliyuncs.com/h5_python_class/left__decorate.png\"\n }\n ></img>\n <img\n className={\"right__decorate\"}\n src={\n \"https://julyedu-cdn.oss-cn-beijing.aliyuncs.com/h5_python_class/right__decorate.png\"\n }\n ></img>\n <p className={\"define__title\"}>什 / 么 / 是 / Python</p>\n {defineList.map((item, index) => {\n return <DefineItem item={item} key={index}></DefineItem>\n })}\n </div>\n <div className={\"course__introduce\"}></div>\n {isOnline ? (\n <div className={\"bottom__btn_group\"}>\n <div className={\"course__price\"}>\n <div className={\"money\"}>\n {payMoney}\n <span style={{ fontSize: \"18px\" }}>元</span>\n </div>\n <div className={\"discount\"}>\n 限时特惠\n <div className={\"triangle\"}></div>\n </div>\n </div>\n\n <div className={\"btn__group\"}>\n <div className={\"try__study\"} onClick={this.tryLearn}>\n 免费试学\n </div>\n <div className={\"sign__now\"} onClick={this.signUp}>\n 立即报名\n </div>\n </div>\n </div>\n ) : (\n <div className=\"bottom__btn_group\">\n <p className=\"online__label\">Python人工智能</p>\n <button className=\"online__button\">即将上架 敬请期待</button>\n </div>\n )}\n\n {/* 课程介绍 */}\n <Description list={desList} />\n\n <NoWorry list={worryList}></NoWorry>\n\n <Study\n syllabus={syllabus}\n allSyllabusShow={allSyllabusShow}\n show={this.showAll}\n hide={this.hideSome}\n ></Study>\n\n {/* 课后实操 */}\n <Test\n practice={practice}\n allPracticeShow={allPracticeShow}\n show={this.showAll}\n hide={this.hideSome}\n />\n <Team />\n\n {/* 试学体验 */}\n <Experience tryLearn={this.tryLearn} isOnline={isOnline} />\n <img\n style={{\n display: \"block\",\n width: \"100%\",\n height: \"8px\",\n }}\n src=\"https://julyedu-cdn.oss-cn-beijing.aliyuncs.com/h5_python_class/changjian.png\"\n alt=\"\"\n />\n\n {/* 常见问题 */}\n <Progream />\n {toApp && <Mask type={1} closePop={this.closePop} />}\n </div>\n )\n }\n}\n\nfunction DefineItem(props) {\n const {\n item,\n item: { desInfo },\n } = props\n return (\n <div className={\"number_one\"}>\n <img className={\"trophy\"} src={item.titleUrl}></img>\n <p className={\"item__title\"}>{item.title}</p>\n <p className={\"item__subtitle\"} style={{ width: item.subWidth }}>\n {item.subTitle}\n </p>\n <img\n style={{ width: desInfo.width, height: desInfo.height }}\n src={item.bottomUrl}\n ></img>\n </div>\n )\n}\n\nexport default PythonDes\n","import React, { Component } from \"react\"\nimport { http, getParam, browser, SendMessageToApp } from \"src/utils\"\nimport PythonDes from \"./pythomDes\"\nimport PythonStudy from \"./pythonStudy\"\nimport { connect } from \"react-redux\"\nimport { addDays } from \"date-fns\"\nimport cookie from \"js-cookie\"\nimport { setCurrentUser, startFetchUser } from \"src/store/userAction\"\n\n@connect(\n (state) => ({\n user: state.user,\n }),\n { setCurrentUser, startFetchUser }\n)\nclass Python extends Component {\n constructor(props) {\n super(props)\n this.state = {\n isPay: \"\",\n userInfoList: [],\n isAppUpdate: false,\n backwardVersion: false, // 默认是新版本\n }\n }\n\n componentDidMount() {\n document.title =\n \"Python人工智能 [P1级,驰援武汉 本图文小课注册即送] - 七月在线\"\n const _this = this\n this.fetchCourseInfo()\n // 获取App登录信息\n window[\"loginInfo\"] = (result) => {\n _this.loginInfo(result)\n }\n }\n\n // 获取app登录数据\n loginInfo = (result) => {\n this.setState(\n {\n userInfoList: result,\n },\n () => {\n if (this.state.userInfoList.length) {\n this.props.startFetchUser()\n this.appLogin()\n }\n }\n )\n }\n\n // 保存cookie\n appLogin = () => {\n let expires = addDays(new Date(), 90)\n this.state.userInfoList.forEach((item, index) => {\n cookie.set(\"token\", item.token, {\n expires,\n path: \"/\",\n domain: \".julyedu.com\",\n })\n cookie.set(\"plat\", item.plat, {\n expires,\n path: \"/\",\n domain: \".julyedu.com\",\n })\n cookie.set(\"uid\", item.uid, {\n expires,\n path: \"/\",\n domain: \".julyedu.com\",\n })\n cookie.set(\"uname\", item.uname, {\n expires,\n path: \"/\",\n domain: \".julyedu.com\",\n })\n cookie.set(\"avatar_file\", item.avatar_file, {\n expires,\n path: \"/\",\n domain: \".julyedu.com\",\n })\n })\n\n if (cookie.get(\"token\") && cookie.get(\"uid\")) {\n this.setState({\n isAppUpdate: true,\n })\n this.fetchCourseInfo()\n }\n\n this.props.setCurrentUser(this.transformUser(this.state.userInfoList))\n }\n\n transformUser = (res) => {\n let payload\n\n res.forEach((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 fetchCourseInfo = () => {\n const id = getParam(\"id\")\n http.get(`${API.home}/m/course/detail/${id}`).then((res) => {\n const { data, code } = res.data\n if (code === 200) {\n let version = getParam(\"version\")\n if (version) {\n version = version.replace(/\\./g, \"\").slice(0, 3)\n if (browser.isAndroidApp && version < 453) {\n // 安卓的低版本\n this.setState({\n backwardVersion: true,\n isPay: 0,\n })\n } else if (browser.isIOSApp && version < 380) {\n // ISO的低版本\n this.setState({\n backwardVersion: true,\n isPay: 0,\n })\n } else {\n // 安卓/IOS 的高版本\n if (data.course_info.is_pay === 1) {\n // 在APP内未登录-去登陆-登录后还显示此页;如果是已购买的用户 就需要跳转到 APP已购买的原生页面\n SendMessageToApp(\"toSyllabusChapter\", id) // 跳转到APP的已购买详情页 id 是课程ID\n return\n }\n this.setState({\n backwardVersion: false,\n isPay: data.course_info.is_pay,\n })\n }\n } else {\n this.setState({\n backwardVersion: false,\n isPay: data.course_info.is_pay,\n })\n }\n }\n })\n }\n\n render() {\n const { isPay, isAppUpdate, backwardVersion } = this.state\n // 旧版本 无论购买未购买 都跳转到 未购买的详情页; 如果是已购买就提示更新APP\n return (\n <div>\n {isPay === 0 && (\n <PythonDes\n backwardVersion={backwardVersion}\n history={this.props.history}\n isAppUpdate={isAppUpdate}\n isPay={isPay}\n />\n )}\n {isPay === 1 && !getParam(\"version\") && (\n <PythonStudy isAppUpdate={isAppUpdate} />\n )}\n </div>\n )\n }\n}\n\nexport default Python\n"],"sourceRoot":""}