{"version":3,"sources":["components/blessingPreheat/courseItem/index.js","components/activity/newyear-2019/common/commonContainer/index.js","components/activity/newyear-2019/common/prizes/index.js","components/activity/newyear-2019/common/user-bullet-screen/index.js","components/activity/newyear-2019/common/commonPopup/index.js","components/activity/newyear-2019/preheat/YearCourse/index.js"],"names":["CourseItem","props","startCountDown","time","date","hours","minutes","seconds","setInterval","parseInt","padStart","setState","countdown","state","this","nextProps","newTime","image","toCourse","id","className","src","alt","onClick","children","Component","CommonContainer","title","React","Children","map","child","SystemBulletScreen","Loadable","Prizes","closeIcon","prizes","notices","rule","unfoldList","getPrizes","http","get","API","home","then","res","data","code","msg","info","showRules","Popup","content","dangerouslySetInnerHTML","__html","showMore","prev","bg","style","innerBox","prizeBox","headHeight","parseFloat","getComputedStyle","getPropertyValue","footerHeight","h","prizeList","scrollHeight","scrollListHeight","height","showSystemNotices","length","bullets","ref","el","href","item","index","key","img_name","backgroundImage","is_captain","mode","stage_no","grant_max","width","surplus","UserBulletScreen","bulletScreenData","initializeBulletScreen","_this","indexArray","Array","slidesPerRequest","keys","removed","swiper","Swiper","direction","allowTouchMove","autoplay","on","transitionEnd","slides","removeSlide","start","activeIndex","stop","getBulletScreenData","appendSlide","getSlides","setTimeout","list","avatar_file","user_name","initializeSwiper","destroy","computedStyle","top","closePopup","mark","e","stopPropagation","YearCourse","connect","user","getLength","sum","fetchBigCourse","bigcourse","Object","assign","isMore","course","courseList","fetchFreeCourse","freecourse","errno","course_info","filter","fetchGroupCourse","groupcourse","fetchAICourse","addshowMore","getList","basic","advanced","higher","expand","toQQque","getParam","SendMessageToApp","window","location","courseId","history","push","handleToMore","toLogin","freeStudy","tofreeStudy","closePopupWish","isshowFollow","toJoinList","wish","getQRcodeUrl","uid","qrUrl","url","QRCode","toDataURL","err","followBarcode","addWishList","isLogin","hasError","isFollow","is_follow","post","course_id","success","saveImage","version","replace","slice","QRCodeUrl","saveImage2","getTeamInfo","removable_data","removable","currentId","toBoxList","search","toYearWish","toInviteFriends","oid","params","number","price","course_title","desc","link","m","imgUrl","image_name","isCountDown","condition","val","formatTitleAndKey","formatCourseData","toCart","toContinueBargain","bargainToOrder","bargain","nextState","nextContext","isAppUpdate","stage","Number","is_vip","is_buy","is_audition","data-stage","is_assemble","add_time","data-status","data-color","price1","progress","order_id","Fragment","type","end_time","already_bargain","original_price","pdd_price","low_prize","data-layout","bargain_code","actual_payment","is_join","price2","browser","isAndroidApp","withRouter"],"mappings":"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","file":"mrstaticjs/2.2f8131f4.chunk.js","sourcesContent":["/* eslint-disable eqeqeq */\nimport 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(\n          (date - hours * 3600000 - minutes * 60000) / 1000\n        )}`.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          {countdown && <p className=\"course__time\">{countdown}</p>}\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","import React, { Component } from \"react\"\nimport \"./index.scss\"\n\nexport default class CommonContainer extends Component {\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          {this.props.title && (\n            <div className=\"title_container\">\n              <i></i>\n              <p>{this.props.title}</p>\n              <i></i>\n            </div>\n          )}\n          {React.Children.map(this.props.children, function (child) {\n            return <>{child}</>\n          })}\n        </div>\n        <div className=\"container_bottom\"></div>\n      </div>\n    )\n  }\n}\n","/* eslint-disable eqeqeq, jsx-a11y/anchor-is-valid, no-script-url */\nimport React, { Component } from \"react\"\nimport { http } from \"src/utils\"\nimport \"./prizes.scss\"\nimport { Popup } from \"src/common/index\"\nimport { Toast } from \"antd-mobile\"\n\nimport Loadable from \"@loadable/component\"\n\nconst SystemBulletScreen = Loadable(() =>\n  import(\n    /* webpackChunkName: 'system-notices' */ \"src/components/activity/newyear-2019/common/system-bullet-screen\"\n  )\n)\n\nclass Prizes extends Component {\n  prizeBox\n  prizeList\n  bg\n  innerBox\n  closeIcon =\n    \"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`).then((res) => {\n      const { code, data, msg } = res.data\n      if (code == 200) {\n        this.setState({\n          prizes: data[\"prize_data\"],\n          notices: data[\"notices\"],\n          rule: data[\"rule\"],\n        })\n      } else {\n        Toast.info(msg, 2, null, false)\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  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(\n            getComputedStyle(this.prizeBox, \":before\").getPropertyValue(\n              \"height\"\n            )\n          ),\n          footerHeight = parseFloat(\n            getComputedStyle(this.prizeBox, \":after\").getPropertyValue(\"height\")\n          ),\n          innerOffsetTop = 0.12458,\n          footerOffsetTop = 0.595,\n          h = this.prizeList.scrollHeight,\n          scrollListHeight =\n            headHeight +\n            h -\n            innerOffsetTop * headHeight -\n            footerOffsetTop * footerHeight +\n            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 = `${\n          h - footerHeight + innerOffsetTop * headHeight + bottomOffset\n        }px`\n      }\n      return { unfoldList: !prev.unfoldList }\n    })\n  }\n\n  render() {\n    const { showSystemNotices } = this.props\n    const { notices } = this.state\n    return (\n      <>\n        {showSystemNotices && notices && notices.length ? (\n          <SystemBulletScreen bullets={notices} />\n        ) : null}\n        <div className={\"prizes-box\"} ref={(el) => (this.prizeBox = el)}>\n          <a href=\"javascript:;\" className=\"rule-btn\" onClick={this.showRules}>\n            活动规则 &gt;{\" \"}\n          </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              {this.state.prizes.map((item, index) => {\n                return (\n                  <li key={index}>\n                    {item.img_name ? (\n                      <i\n                        className=\"prize-list__image\"\n                        style={{\n                          backgroundImage: `url(${item.img_name})`,\n                        }}\n                      />\n                    ) : (\n                      <i className=\"prize-list__image\" />\n                    )}\n                    {/* <img src={item.img_name} alt=\"\"/> */}\n                    {item.is_captain != 0 && (\n                      <span className=\"captain top-tag\">队长专属</span>\n                    )}\n                    {item.mode === 2 && (\n                      <span className=\"stage top-tag\">\n                        第{item.stage_no}个必中\n                      </span>\n                    )}\n                    {item.grant_max ? (\n                      <div className=\"bottom-bar\">\n                        <div className=\"progress-bar\">\n                          <span\n                            className={\"progress\"}\n                            style={{\n                              width: `${\n                                (item.surplus / item.grant_max) * 100\n                              }%`,\n                            }}\n                          />\n                        </div>\n                        <span>限量{item.grant_max}份</span>\n                      </div>\n                    ) : (\n                      <span className=\"no-limit\">不限量</span>\n                    )}\n                  </li>\n                )\n              })}\n              <li>\n                <img\n                  src=\"https://julyedu-cdn.oss-cn-beijing.aliyuncs.com/newyear20/prize-placeholder.png\"\n                  alt=\"\"\n                />\n              </li>\n            </ul>\n          </div>\n          <div className=\"show-more\" onClick={this.showMore}>\n            {this.state.unfoldList ? (\n              <div>\n                收起\n                <img\n                  src=\"https://julyedu-cdn.oss-cn-beijing.aliyuncs.com/newyear20/H5/fold-icon.png\"\n                  alt=\"\"\n                />\n              </div>\n            ) : (\n              <div>\n                查看全部奖品\n                <img\n                  src=\"https://julyedu-cdn.oss-cn-beijing.aliyuncs.com/newyear20/H5/unfold-icon.png\"\n                  alt=\"\"\n                />\n              </div>\n            )}\n          </div>\n        </div>\n      </>\n    )\n  }\n}\n\nexport default Prizes\n","import React, { Component } from \"react\"\nimport { http } from \"src/utils\"\nimport Swiper from \"swiper\"\nimport \"swiper/dist/css/swiper.min.css\"\nimport \"./bullet-screen.scss\"\n\nclass UserBulletScreen extends Component {\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  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) =>\n    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`).then((res) => {\n      const { data, code } = res.data\n      if (code === 200) {\n        if (initializeSwiper) {\n          this.setState(\n            {\n              bulletScreenData: data,\n            },\n            () => {\n              this.initializeBulletScreen()\n            }\n          )\n        } else {\n          return data\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          {bulletScreenData.length &&\n            bulletScreenData.map((item, index) => {\n              return (\n                <li className=\"swiper-slide\" key={index}>\n                  <img src={item[\"avatar_file\"]} alt=\"\" className=\"avatar\" />\n                  <span>\n                    {item.user_name} {item.msg}\n                  </span>\n                </li>\n              )\n            })}\n        </ul>\n      </div>\n    )\n  }\n}\n\nexport default UserBulletScreen\n","import React, { Component } from \"react\"\nimport \"./index.scss\"\n\nexport default class index extends Component {\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\n          className=\"content__container\"\n          style={this.computedStyle()}\n          onClick={(e) => {\n            e.stopPropagation()\n          }}\n        >\n          <img\n            className=\"close__btn\"\n            onClick={this.props.closePopup}\n            src=\"https://julyedu-cdn.oss-cn-beijing.aliyuncs.com/newyear20/H5/close-btn.png\"\n            alt=\"\"\n          />\n          {React.Children.map(this.props.children, function (child) {\n            return <>{child}</>\n          })}\n        </div>\n      </div>\n    )\n  }\n}\n","/* eslint-disable jsx-a11y/anchor-is-valid, eqeqeq */\nimport React, { Component } from \"react\"\nimport \"./index.scss\"\nimport { http, SendMessageToApp, getParam, browser } from \"src/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\"\n\n@connect((state) => ({\n  user: state.user,\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:\n              data.course_info.length > 4\n                ? data.course_info.filter((item, index) => index < 4)\n                : 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:\n              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:\n            data.length > 4 && !addshowMore\n              ? data.filter((item, index) => index < 4)\n              : 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:\n            data.length > 4 && !addshowMore\n              ? data.filter((item, index) => index < 4)\n              : 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:\n            data.length > 4 && !addshowMore\n              ? data.filter((item, index) => index < 4)\n              : 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:\n            data.length > 4 && !addshowMore\n              ? data.filter((item, index) => index < 4)\n              : data,\n          courseList: data,\n          addshowMore: addshowMore,\n        }),\n      })\n    }\n  }\n\n  toQQque = () => {\n    if (!getParam(\"version\")) {\n      window.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(\n          (item, index) => index < 4\n        ),\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\n      .get(\n        `${API[\"base-api\"]}/wx/user_temporary_qrcode/${_this.props.user.data.uid}`\n      )\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\n      .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 =\n      typeof version === \"string\"\n        ? version.replace(\".\", \"\").replace(\".\", \"\").slice(0, 3)\n        : \"\"\n    const QRCodeUrl = this.state.qrUrl\n    if (version && parseInt(version) < 451) {\n      Toast.info(\n        \"当前不支持此功能,升级到最新版本app可以点击保存二维码!\",\n        3,\n        null,\n        false\n      )\n    } else {\n      SendMessageToApp(\"generateQRCode\", QRCodeUrl)\n    }\n  }\n\n  saveImage2 = () => {\n    let version = getParam(\"version\")\n    version =\n      typeof version === \"string\"\n        ? version.replace(\".\", \"\").replace(\".\", \"\").slice(0, 3)\n        : \"\"\n    const QRCodeUrl =\n      \"https://julyedu-cdn.oss-cn-beijing.aliyuncs.com/2018christyear/h5/qrcode.jpg\"\n    if (version && parseInt(version) < 451) {\n      Toast.info(\n        \"当前不支持此功能,升级到最新版本app可以点击保存二维码!\",\n        3,\n        null,\n        false\n      )\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(`/year/yearTreasure${search}`)\n      } else {\n        this.props.history.push(\n          `/year/yearTreasure${search}?version=${getParam(\"version\")}`\n        )\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    } else {\n      this.toLogin()\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\n      .post(`${API.home}/m/cart/add`, {\n        course_id: id,\n      })\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(\n        `/bargain-middle-page?id=${id}&bargaincode=${code}&is_originator=1`\n      )\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\n          .get(`${API[\"base-api\"]}/m/cart/addtopreorder/[${id}]`)\n          .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      groupcourse,\n      basic,\n      advanced,\n      higher,\n      expand,\n      removable,\n    } = this.state\n    const { stage } = this.props\n    return (\n      <div className={\"year-index-course\"}>\n        <div className=\"nav-right-wish nav-right\">\n          <span onClick={this.toBoxList} className=\"nav-right__link\">\n            未开宝箱\n            {removable > 0 && <i className=\"nav-right__number\">{removable}</i>}\n          </span>\n        </div>\n\n        <CommonContainer title=\"驰援武汉 注册即送\" id=\"year-wuhan\">\n          <div className=\"course-box course-conter\">\n            <div className=\"course-item\">\n              <span>注册即送</span>\n              <a href=\"/detail?id=224\">\n                <img\n                  src=\"http://julyedu-img-public.oss-cn-beijing.aliyuncs.com/Public/Image/75d1c3cef5.png\"\n                  alt=\"\"\n                />\n              </a>\n            </div>\n            <div className=\"course-item\">\n              <span>注册即送</span>\n              <a href=\"/detail?id=206\">\n                <img\n                  src=\"https://julyedu-img-public.oss-cn-beijing.aliyuncs.com/Public/Image/b001fac23f.png\"\n                  alt=\"\"\n                />\n              </a>\n            </div>\n            <div className=\"course-item\">\n              <span>注册即送</span>\n              <a href=\"/detail?id=230\">\n                <img\n                  src=\"https://julyedu-img-public.oss-cn-beijing.aliyuncs.com/Public/Image/d0fb0a479b.png\"\n                  alt=\"\"\n                />\n              </a>\n            </div>\n          </div>\n        </CommonContainer>\n\n        {/* 重磅好课 */}\n        <CommonContainer title=\"重磅好课限时免费试听\" id=\"year-course\">\n          {bigcourse.course && bigcourse.course.length > 0 && (\n            <>\n              <div className=\"bigcourse course-box\">\n                {bigcourse.course.map((item) => (\n                  <CourseItem\n                    image={item.image_name}\n                    key={item.course_id}\n                    id={item.course_id}\n                    toCourse={this.toCourse}\n                  >\n                    <div className=\"coupon-course__footer\">\n                      {Number(item.is_vip) === 1 && (\n                        <a\n                          className=\"btn big-course\"\n                          onClick={() => this.toQQque()}\n                        >\n                          首购¥99起\n                        </a>\n                      )}\n\n                      {item.is_vip == 0 && (\n                        <>\n                          {item.is_buy == 1 && (\n                            <a\n                              onClick={() => this.toCourse(item.course_id)}\n                              className=\"btn to-study\"\n                            >\n                              开始学习\n                            </a>\n                          )}\n                          {item.is_buy == 0 && (\n                            <a\n                              onClick={() => this.toQQque()}\n                              className=\"btn big-course\"\n                            >\n                              {item.is_audition == 1\n                                ? \"免费试听\"\n                                : \"抢团报名额\"}\n                            </a>\n                          )}\n                        </>\n                      )}\n                    </div>\n                  </CourseItem>\n                ))}\n              </div>\n              {/* {\n                                (bigcourse.courseList && bigcourse.courseList.length > 4) &&\n                                <button\n                                    className=\"more-button\"\n                                    onClick={() => this.handleToMore('bigcourse')}\n                                >{bigcourse.isMore ? '查看更多' : '收起'}</button>\n                            } */}\n            </>\n          )}\n        </CommonContainer>\n\n        {/* 人气好课免费学 */}\n        {/*{*/}\n        {/*Number(stage) !== 3 &&*/}\n        {/*<CommonContainer title='人气好课免费学' id='year-free'>*/}\n        {/*<a className='boss__add' href=\"/active/givecourse?activename=shuangdan\">更有42本技术书籍免费送</a>*/}\n        {/*{*/}\n        {/*(freecourse.course && freecourse.course.length > 0) &&*/}\n        {/*<>*/}\n        {/*<div className='freecourse course-box'>*/}\n        {/*{*/}\n        {/*freecourse.course.map(item => (*/}\n        {/*<CourseItem*/}\n        {/*image={item.image_name}*/}\n        {/*key={item.course_id}*/}\n        {/*id={item.course_id}*/}\n        {/*toCourse={this.toCourse}*/}\n        {/*>*/}\n        {/*<div className=\"coupon-course__footer\">*/}\n        {/*{*/}\n        {/*item.is_buy == 1 &&*/}\n        {/*<a*/}\n        {/*onClick={() => this.toCourse(item.course_id)}*/}\n        {/*className=\"btn to-study\"*/}\n        {/*>开始学习</a>*/}\n        {/*}*/}\n        {/*{*/}\n        {/*item.is_buy == 0 &&*/}\n        {/*<a*/}\n        {/*onClick={() => this.freeStudy()}*/}\n        {/*className=\"btn free-study\"*/}\n        {/*>点击免费学</a>*/}\n        {/*}*/}\n        {/*<p className=\"free-course-num\">*/}\n        {/*已送出<span>{item.act_num}</span>个课程*/}\n        {/*</p>*/}\n        {/*</div>*/}\n        {/*</CourseItem>*/}\n        {/*))*/}\n        {/*}*/}\n        {/*</div>*/}\n        {/*{*/}\n        {/*(freecourse.courseList && freecourse.courseList.length > 4) &&*/}\n        {/*<button*/}\n        {/*className=\"more-button\"*/}\n        {/*onClick={() => this.handleToMore('freecourse')}*/}\n        {/*>{freecourse.isMore ? '查看更多' : '收起'}</button>*/}\n        {/*}*/}\n        {/*</>*/}\n        {/*}*/}\n        {/*</CommonContainer>*/}\n        {/*}*/}\n\n        {/* stage,活动阶段 0-不在活动时间 1-预热 2-正式 3-返场 */}\n        {Number(stage) !== 1 && (\n          <>\n            {/* 精品好课1分开抢 */}\n            <CommonContainer title=\"精品好课1分秒\" id=\"year-group\">\n              {groupcourse.course && groupcourse.course.length > 0 && (\n                <>\n                  <div className=\"groupcourse course-box\" data-stage=\"2\">\n                    {groupcourse.course.map((item) => (\n                      <CourseItem\n                        image={item.image_name}\n                        key={item.course_id}\n                        id={item.course_id}\n                        time={this.isCountDown(\n                          item.is_assemble === 1,\n                          item.add_time\n                        )}\n                        toCourse={this.toCourse}\n                      >\n                        <div className=\"coupon-course__footer\">\n                          {/* is_assemble 0 未拼团 1 正在拼团 2 已购买 */}\n                          {item.is_assemble == 2 && (\n                            <>\n                              <p className={\"course-title text-overflow-1\"}>\n                                {item.course_title}\n                              </p>\n                              <div className=\"status\">\n                                <a\n                                  onClick={() => this.toCourse(item.course_id)}\n                                  className=\"btn to-group\"\n                                  data-status=\"study\"\n                                >\n                                  开始学习\n                                </a>\n                              </div>\n                            </>\n                          )}\n                          {item.is_assemble != 2 && (\n                            <>\n                              <div className=\"type\">\n                                <span className=\"tag\" data-color=\"green\">\n                                  拼团价\n                                </span>\n                              </div>\n                              <div className=\"price price-group\">\n                                <span className=\"price-label\">¥</span>\n                                <span className=\"new-price\">0.01</span>\n                                <span className=\"old-price\">\n                                  <s>¥{item.price1}</s>\n                                </span>\n                              </div>\n                              {item.is_assemble == 0 && (\n                                <div className=\"progree-and-sale\">\n                                  <div className=\"progress\">\n                                    <i\n                                      className=\"progress_bar\"\n                                      style={{\n                                        width: `${item.progress}%`,\n                                      }}\n                                    ></i>\n                                  </div>\n                                  <p className=\"sale-sum\">\n                                    {Number(item.sum <= 285)\n                                      ? `已抢${item.sum}个`\n                                      : \"即将售罄\"}\n                                  </p>\n                                </div>\n                              )}\n                              <div className=\"status\">\n                                {item.is_assemble == 0 && (\n                                  <a\n                                    onClick={() =>\n                                      this.toCourse(item.course_id)\n                                    }\n                                    className=\"status-btn to-group\"\n                                  >\n                                    马上抢&gt;&gt;\n                                  </a>\n                                )}\n                                {item.is_assemble == 1 && (\n                                  <a\n                                    onClick={() =>\n                                      this.toInviteFriends(item.order_id, {\n                                        number: item.number,\n                                        course_title: item.course_title,\n                                        image_name: item.image_name,\n                                        price: 0.01,\n                                      })\n                                    }\n                                    className=\"status-btn to-group\"\n                                    data-status=\"done\"\n                                  >\n                                    已参团,邀请好友参团\n                                  </a>\n                                )}\n                              </div>\n                            </>\n                          )}\n                        </div>\n                      </CourseItem>\n                    ))}\n                  </div>\n                  {groupcourse.courseList && groupcourse.courseList.length > 4 && (\n                    <button\n                      className=\"more-button\"\n                      onClick={() => this.handleToMore(\"groupcourse\")}\n                    >\n                      {groupcourse.isMore ? \"查看更多\" : \"收起\"}\n                    </button>\n                  )}\n                </>\n              )}\n            </CommonContainer>\n\n            {/* 好课价到,等你抄底 */}\n            <CommonContainer title=\"“薪”年价到,等你抄底!\" id=\"year-discount\">\n              {[1, 2, 3, 4].map((item) => {\n                const keys = this.formatTitleAndKey(item)\n                const data = this.formatCourseData(item)\n                return (\n                  <React.Fragment key={item}>\n                    <h4 className=\"ai-course__subtitle\">{keys.title}</h4>\n                    {data.course && data.course.length > 0 && (\n                      <>\n                        <div className=\"groupcourse course-box\">\n                          {data.course.map((val) => {\n                            return (\n                              <CourseItem\n                                image={val.image_name}\n                                key={val.course_id}\n                                id={val.course_id}\n                                time={this.isCountDown(\n                                  val.type === 2,\n                                  val.end_time\n                                )}\n                                toCourse={this.toCourse}\n                              >\n                                <div className=\"coupon-course__footer\">\n                                  {/* type 1 立即参团 2 已参团 3 我要砍价 4 已参加砍价 可以继续砍价 5 马上抢 6 开始学习 7 已参加一分钱拼团 8 砍价待支付 */}\n\n                                  {(val.type === 4 || val.type === 8) && (\n                                    <div className=\"bargain-price\">\n                                      已砍{val.already_bargain}元\n                                    </div>\n                                  )}\n\n                                  {val.type === 0 && (\n                                    <>\n                                      <div className=\"type\">\n                                        <span\n                                          className=\"tag\"\n                                          data-color=\"green\"\n                                        >\n                                          活动价\n                                        </span>\n                                      </div>\n                                      <div className=\"price price-group\">\n                                        <span className=\"price-label\">¥</span>\n                                        <span className=\"new-price\">\n                                          {val.original_price}\n                                        </span>\n                                        <span className=\"old-price\">\n                                          <s>¥{val.price1}</s>\n                                        </span>\n                                      </div>\n                                    </>\n                                  )}\n                                  {(val.type === 1 || val.type === 2) && (\n                                    <>\n                                      <div className=\"type\">\n                                        <span\n                                          className=\"tag\"\n                                          data-color=\"green\"\n                                        >\n                                          拼团价\n                                        </span>\n                                      </div>\n                                      <div className=\"price price-group\">\n                                        <span className=\"price-label\">¥</span>\n                                        <span className=\"new-price\">\n                                          {val.pdd_price}\n                                        </span>\n                                        <span className=\"old-price\">\n                                          <s>¥{val.original_price}</s>\n                                        </span>\n                                      </div>\n                                    </>\n                                  )}\n                                  {(val.type === 3 ||\n                                    val.type === 4 ||\n                                    val.type === 8) && (\n                                    <>\n                                      <div className=\"type\">\n                                        <span\n                                          className=\"tag\"\n                                          data-color=\"green\"\n                                        >\n                                          好友帮帮砍\n                                        </span>\n                                      </div>\n                                      <div className=\"price price-group\">\n                                        <span className=\"price-label\">\n                                          到手最低:¥\n                                        </span>\n                                        <span className=\"new-price\">\n                                          {val.low_prize}\n                                        </span>\n                                        <span className=\"old-price\">\n                                          <s>¥{val.original_price}</s>\n                                        </span>\n                                      </div>\n                                    </>\n                                  )}\n                                  {val.type === 6 && (\n                                    <p\n                                      className={\"course-title text-overflow-1\"}\n                                    >\n                                      {val.course_title}\n                                    </p>\n                                  )}\n\n                                  <div\n                                    className=\"status\"\n                                    data-layout={val.type === 4 ? \"row\" : \"\"}\n                                  >\n                                    {val.type === 0 && (\n                                      <a\n                                        onClick={() =>\n                                          this.toCart(val.course_id)\n                                        }\n                                        className=\"status-btn to-group\"\n                                      >\n                                        立即购买\n                                      </a>\n                                    )}\n                                    {val.type === 1 && (\n                                      <a\n                                        onClick={() =>\n                                          this.toCourse(val.course_id)\n                                        }\n                                        className=\"status-btn to-group\"\n                                      >\n                                        立即参与拼团\n                                      </a>\n                                    )}\n                                    {val.type === 2 && (\n                                      <a\n                                        onClick={() =>\n                                          this.toInviteFriends(val.order_id, {\n                                            number: val.number,\n                                            course_title: val.course_title,\n                                            image_name: val.image_name,\n                                            price: val.pdd_price,\n                                          })\n                                        }\n                                        className=\"status-btn to-group\"\n                                        data-status=\"done\"\n                                      >\n                                        已参团,邀请好友参团\n                                      </a>\n                                    )}\n                                    {val.type === 3 && (\n                                      <a\n                                        onClick={() =>\n                                          this.toCourse(val.course_id)\n                                        }\n                                        className=\"status-btn to-group\"\n                                      >\n                                        我要砍价\n                                      </a>\n                                    )}\n                                    {val.type === 4 && (\n                                      <>\n                                        <a\n                                          onClick={() =>\n                                            this.toContinueBargain(\n                                              val.course_id,\n                                              val.already_bargain,\n                                              val.bargain_code,\n                                              val.image_name\n                                            )\n                                          }\n                                          className=\"status-btn to-group\"\n                                        >\n                                          继续砍价\n                                        </a>\n                                        <a\n                                          onClick={() =>\n                                            this.bargainToOrder(val.course_id)\n                                          }\n                                          className=\"status-btn to-group\"\n                                        >\n                                          支付{val.actual_payment}元\n                                        </a>\n                                      </>\n                                    )}\n                                    {val.type === 8 && (\n                                      <a\n                                        onClick={() =>\n                                          this.bargainToOrder(val.course_id)\n                                        }\n                                        className=\"status-btn to-group\"\n                                      >\n                                        支付{val.actual_payment}元\n                                      </a>\n                                    )}\n                                    {val.type === 6 && (\n                                      <a\n                                        onClick={() =>\n                                          this.toCourse(val.course_id)\n                                        }\n                                        className=\"btn to-group\"\n                                        data-status=\"study\"\n                                      >\n                                        开始学习\n                                      </a>\n                                    )}\n                                  </div>\n                                </div>\n                              </CourseItem>\n                            )\n                          })}\n                        </div>\n                        {data.courseList && data.courseList.length > 4 && (\n                          <button\n                            className=\"more-button\"\n                            onClick={() => this.handleToMore(keys.key)}\n                          >\n                            {data.isMore ? \"查看更多\" : \"收起\"}\n                          </button>\n                        )}\n                      </>\n                    )}\n                  </React.Fragment>\n                )\n              })}\n            </CommonContainer>\n          </>\n        )}\n        {Number(stage) === 1 && (\n          <>\n            {/* 精品好课1分开抢 */}\n            <CommonContainer title=\"精品好课1分开抢\" id=\"year-group\">\n              {groupcourse.course && groupcourse.course.length > 0 && (\n                <>\n                  <div className=\"groupcourse course-box\">\n                    {groupcourse.course.map((item) => (\n                      <CourseItem\n                        image={item.image_name}\n                        key={item.course_id}\n                        id={item.course_id}\n                        toCourse={this.toCourse}\n                      >\n                        <div className=\"group-num\">限量300个</div>\n                        <div className=\"coupon-course__footer\">\n                          {item.is_buy == 1 && (\n                            <>\n                              <p className={\"course-title text-overflow-1\"}>\n                                {item.course_title}\n                              </p>\n                              <a\n                                onClick={() => this.toCourse(item.course_id)}\n                                className=\"btn to-study\"\n                              >\n                                开始学习\n                              </a>\n                            </>\n                          )}\n                          {item.is_buy == 0 && (\n                            <>\n                              <div className=\"type\">\n                                <span className=\"tag\">拼团价</span>\n                                <span className=\"time\">12月23日开团</span>\n                              </div>\n                              <div className=\"price\">\n                                ¥<span className=\"new-price\">0.01</span>\n                                <span className=\"old-price\">\n                                  现价:<s>¥{item.price1}</s>\n                                </span>\n                              </div>\n                              <div className=\"status\">\n                                <a\n                                  onClick={() => this.toCourse(item.course_id)}\n                                  className=\"status-btn to-buy\"\n                                >\n                                  直接购买\n                                </a>\n                                {item.is_join == 1 && (\n                                  <a className=\"status-btn add-wish\">\n                                    <img\n                                      src=\"https://julyedu-cdn.oss-cn-beijing.aliyuncs.com/newyear20/PC/add-success.png\"\n                                      alt=\"\"\n                                    />\n                                    已加心愿单\n                                  </a>\n                                )}\n                                {item.is_join == 0 && (\n                                  <a\n                                    onClick={() =>\n                                      this.addWishList(item.course_id, \"group\")\n                                    }\n                                    className=\"status-btn add-wish-success\"\n                                  >\n                                    <img\n                                      src=\"https://julyedu-cdn.oss-cn-beijing.aliyuncs.com/newyear20/H5/like_icon.png\"\n                                      alt=\"\"\n                                    />\n                                    加入心愿单\n                                  </a>\n                                )}\n                              </div>\n                            </>\n                          )}\n                        </div>\n                      </CourseItem>\n                    ))}\n                  </div>\n                  {groupcourse.courseList && groupcourse.courseList.length > 4 && (\n                    <button\n                      className=\"more-button\"\n                      onClick={() => this.handleToMore(\"groupcourse\")}\n                    >\n                      {groupcourse.isMore ? \"查看更多\" : \"收起\"}\n                    </button>\n                  )}\n                </>\n              )}\n            </CommonContainer>\n\n            {/* 好课价到,等你抄底 */}\n            <CommonContainer title=\"好课价到,等你抄底\" id=\"year-discount\">\n              <h4 className=\"ai-course__subtitle\">基础</h4>\n              {basic.course && basic.course.length > 0 && (\n                <>\n                  <div className=\"groupcourse course-box\">\n                    {basic.course.map((item) => (\n                      <CourseItem\n                        image={item.image_name}\n                        key={item.course_id}\n                        id={item.course_id}\n                        toCourse={this.toCourse}\n                      >\n                        <div className=\"coupon-course__footer\">\n                          {item.is_buy == 1 && (\n                            <>\n                              <p className={\"course-title text-overflow-1\"}>\n                                {item.course_title}\n                              </p>\n                              <a\n                                onClick={() => this.toCourse(item.course_id)}\n                                className=\"btn to-study\"\n                              >\n                                开始学习\n                              </a>\n                            </>\n                          )}\n                          {item.is_buy == 0 && (\n                            <>\n                              <div className=\"type\">\n                                {item.type == 0 && (\n                                  <>\n                                    <span className=\"tag\">活动价</span>\n                                    <span className=\"time\">12.23开始</span>\n                                  </>\n                                )}\n                                {item.type == 1 && (\n                                  <>\n                                    <span className=\"tag\">拼团价</span>\n                                    <span className=\"time\">12.23开团</span>\n                                  </>\n                                )}\n                                {item.type == 2 && (\n                                  <>\n                                    <span className=\"tag\">好友帮帮砍</span>\n                                    <span className=\"time\">12.23开砍</span>\n                                  </>\n                                )}\n                              </div>\n                              <div className=\"price\">\n                                {item.type == 2 ? \"到手最低:¥\" : \"¥\"}\n                                <span className=\"new-price\">{item.price2}</span>\n                                <span className=\"old-price\">\n                                  {item.type == 2 ? \"\" : \"现价:\"}\n                                  <s>¥{item.price1}</s>\n                                </span>\n                              </div>\n                              <div className=\"status\">\n                                <a\n                                  onClick={() => this.toCourse(item.course_id)}\n                                  className=\"status-btn to-buy\"\n                                >\n                                  直接购买\n                                </a>\n                                {item.is_join == 1 && (\n                                  <a className=\"status-btn add-wish\">\n                                    <img\n                                      src=\"https://julyedu-cdn.oss-cn-beijing.aliyuncs.com/newyear20/PC/add-success.png\"\n                                      alt=\"\"\n                                    />\n                                    已加心愿单\n                                  </a>\n                                )}\n                                {item.is_join == 0 && (\n                                  <a\n                                    onClick={() =>\n                                      this.addWishList(item.course_id, \"1\")\n                                    }\n                                    className=\"status-btn add-wish-success\"\n                                  >\n                                    <img\n                                      src=\"https://julyedu-cdn.oss-cn-beijing.aliyuncs.com/newyear20/H5/like_icon.png\"\n                                      alt=\"\"\n                                    />\n                                    加入心愿单\n                                  </a>\n                                )}\n                              </div>\n                            </>\n                          )}\n                        </div>\n                      </CourseItem>\n                    ))}\n                  </div>\n                  {basic.courseList && basic.courseList.length > 4 && (\n                    <button\n                      className=\"more-button\"\n                      onClick={() => this.handleToMore(\"basic\")}\n                    >\n                      {basic.isMore ? \"查看更多\" : \"收起\"}\n                    </button>\n                  )}\n                </>\n              )}\n              <h4 className=\"ai-course__subtitle\">进阶</h4>\n              {advanced.course && advanced.course.length > 0 && (\n                <>\n                  <div className=\"groupcourse course-box\">\n                    {advanced.course.map((item) => (\n                      <CourseItem\n                        image={item.image_name}\n                        key={item.course_id}\n                        id={item.course_id}\n                        toCourse={this.toCourse}\n                      >\n                        <div className=\"coupon-course__footer\">\n                          {item.is_buy == 1 && (\n                            <>\n                              <p className={\"course-title text-overflow-1\"}>\n                                {item.course_title}\n                              </p>\n                              <a\n                                onClick={() => this.toCourse(item.course_id)}\n                                className=\"btn to-study\"\n                              >\n                                开始学习\n                              </a>\n                            </>\n                          )}\n                          {item.is_buy == 0 && (\n                            <>\n                              <div className=\"type\">\n                                {item.type == 0 && (\n                                  <>\n                                    <span className=\"tag\">活动价</span>\n                                    <span className=\"time\">12.23开始</span>\n                                  </>\n                                )}\n                                {item.type == 1 && (\n                                  <>\n                                    <span className=\"tag\">拼团价</span>\n                                    <span className=\"time\">12.23开团</span>\n                                  </>\n                                )}\n                                {item.type == 2 && (\n                                  <>\n                                    <span className=\"tag\">好友帮帮砍</span>\n                                    <span className=\"time\">12.23开砍</span>\n                                  </>\n                                )}\n                              </div>\n                              <div className=\"price\">\n                                {item.type == 2 ? \"到手最低:¥\" : \"¥\"}\n                                <span className=\"new-price\">{item.price2}</span>\n                                <span className=\"old-price\">\n                                  {item.type == 2 ? \"\" : \"现价:\"}\n                                  <s>¥{item.price1}</s>\n                                </span>\n                              </div>\n                              <div className=\"status\">\n                                <a\n                                  onClick={() => this.toCourse(item.course_id)}\n                                  className=\"status-btn to-buy\"\n                                >\n                                  直接购买\n                                </a>\n                                {item.is_join == 1 && (\n                                  <a className=\"status-btn add-wish\">\n                                    <img\n                                      src=\"https://julyedu-cdn.oss-cn-beijing.aliyuncs.com/newyear20/PC/add-success.png\"\n                                      alt=\"\"\n                                    />\n                                    已加心愿单\n                                  </a>\n                                )}\n                                {item.is_join == 0 && (\n                                  <a\n                                    onClick={() =>\n                                      this.addWishList(item.course_id, \"2\")\n                                    }\n                                    className=\"status-btn add-wish-success\"\n                                  >\n                                    <img\n                                      src=\"https://julyedu-cdn.oss-cn-beijing.aliyuncs.com/newyear20/H5/like_icon.png\"\n                                      alt=\"\"\n                                    />\n                                    加入心愿单\n                                  </a>\n                                )}\n                              </div>\n                            </>\n                          )}\n                        </div>\n                      </CourseItem>\n                    ))}\n                  </div>\n                  {advanced.courseList && advanced.courseList.length > 4 && (\n                    <button\n                      className=\"more-button\"\n                      onClick={() => this.handleToMore(\"advanced\")}\n                    >\n                      {advanced.isMore ? \"查看更多\" : \"收起\"}\n                    </button>\n                  )}\n                </>\n              )}\n              <h4 className=\"ai-course__subtitle\">高阶</h4>\n              {higher.course && higher.course.length > 0 && (\n                <>\n                  <div className=\"groupcourse course-box\">\n                    {higher.course.map((item) => (\n                      <CourseItem\n                        image={item.image_name}\n                        key={item.course_id}\n                        id={item.course_id}\n                        toCourse={this.toCourse}\n                      >\n                        <div className=\"coupon-course__footer\">\n                          {item.is_buy == 1 && (\n                            <>\n                              <p className={\"course-title text-overflow-1\"}>\n                                {item.course_title}\n                              </p>\n                              <a\n                                onClick={() => this.toCourse(item.course_id)}\n                                className=\"btn to-study\"\n                              >\n                                开始学习\n                              </a>\n                            </>\n                          )}\n                          {item.is_buy == 0 && (\n                            <>\n                              <div className=\"type\">\n                                {item.type == 0 && (\n                                  <>\n                                    <span className=\"tag\">活动价</span>\n                                    <span className=\"time\">12.23开始</span>\n                                  </>\n                                )}\n                                {item.type == 1 && (\n                                  <>\n                                    <span className=\"tag\">拼团价</span>\n                                    <span className=\"time\">12.23开团</span>\n                                  </>\n                                )}\n                                {item.type == 2 && (\n                                  <>\n                                    <span className=\"tag\">好友帮帮砍</span>\n                                    <span className=\"time\">12.23开砍</span>\n                                  </>\n                                )}\n                              </div>\n                              <div className=\"price\">\n                                {item.type == 2 ? \"到手最低:¥\" : \"¥\"}\n                                <span className=\"new-price\">{item.price2}</span>\n                                <span className=\"old-price\">\n                                  {item.type == 2 ? \"\" : \"现价:\"}\n                                  <s>¥{item.price1}</s>\n                                </span>\n                              </div>\n                              <div className=\"status\">\n                                <a\n                                  onClick={() => this.toCourse(item.course_id)}\n                                  className=\"status-btn to-buy\"\n                                >\n                                  直接购买\n                                </a>\n                                {item.is_join == 1 && (\n                                  <a className=\"status-btn add-wish\">\n                                    <img\n                                      src=\"https://julyedu-cdn.oss-cn-beijing.aliyuncs.com/newyear20/PC/add-success.png\"\n                                      alt=\"\"\n                                    />\n                                    已加心愿单\n                                  </a>\n                                )}\n                                {item.is_join == 0 && (\n                                  <a\n                                    onClick={() =>\n                                      this.addWishList(item.course_id, \"3\")\n                                    }\n                                    className=\"status-btn add-wish-success\"\n                                  >\n                                    <img\n                                      src=\"https://julyedu-cdn.oss-cn-beijing.aliyuncs.com/newyear20/H5/like_icon.png\"\n                                      alt=\"\"\n                                    />\n                                    加入心愿单\n                                  </a>\n                                )}\n                              </div>\n                            </>\n                          )}\n                        </div>\n                      </CourseItem>\n                    ))}\n                  </div>\n                  {higher.courseList && higher.courseList.length > 4 && (\n                    <button\n                      className=\"more-button\"\n                      onClick={() => this.handleToMore(\"higher\")}\n                    >\n                      {higher.isMore ? \"查看更多\" : \"收起\"}\n                    </button>\n                  )}\n                </>\n              )}\n              <h4 className=\"ai-course__subtitle\">扩展</h4>\n              {expand.course && expand.course.length > 0 && (\n                <>\n                  <div className=\"groupcourse course-box\">\n                    {expand.course.map((item) => (\n                      <CourseItem\n                        image={item.image_name}\n                        key={item.course_id}\n                        id={item.course_id}\n                        toCourse={this.toCourse}\n                      >\n                        <div className=\"coupon-course__footer\">\n                          {item.is_buy == 1 && (\n                            <>\n                              <p className={\"course-title text-overflow-1\"}>\n                                {item.course_title}\n                              </p>\n                              <a\n                                onClick={() => this.toCourse(item.course_id)}\n                                className=\"btn to-study\"\n                              >\n                                开始学习\n                              </a>\n                            </>\n                          )}\n                          {item.is_buy == 0 && (\n                            <>\n                              <div className=\"type\">\n                                {item.type == 0 && (\n                                  <>\n                                    <span className=\"tag\">活动价</span>\n                                    <span className=\"time\">12.23开始</span>\n                                  </>\n                                )}\n                                {item.type == 1 && (\n                                  <>\n                                    <span className=\"tag\">拼团价</span>\n                                    <span className=\"time\">12.23开团</span>\n                                  </>\n                                )}\n                                {item.type == 2 && (\n                                  <>\n                                    <span className=\"tag\">好友帮帮砍</span>\n                                    <span className=\"time\">12.23开砍</span>\n                                  </>\n                                )}\n                              </div>\n                              <div className=\"price\">\n                                {item.type == 2 ? \"到手最低:¥\" : \"¥\"}\n                                <span className=\"new-price\">{item.price2}</span>\n                                <span className=\"old-price\">\n                                  {item.type == 2 ? \"\" : \"现价:\"}\n                                  <s>¥{item.price1}</s>\n                                </span>\n                              </div>\n                              <div className=\"status\">\n                                <a\n                                  onClick={() => this.toCourse(item.course_id)}\n                                  className=\"status-btn to-buy\"\n                                >\n                                  直接购买\n                                </a>\n                                {item.is_join == 1 && (\n                                  <a className=\"status-btn add-wish\">\n                                    <img\n                                      src=\"https://julyedu-cdn.oss-cn-beijing.aliyuncs.com/newyear20/PC/add-success.png\"\n                                      alt=\"\"\n                                    />\n                                    已加心愿单\n                                  </a>\n                                )}\n                                {item.is_join == 0 && (\n                                  <a\n                                    onClick={() =>\n                                      this.addWishList(item.course_id, \"4\")\n                                    }\n                                    className=\"status-btn add-wish-success\"\n                                  >\n                                    <img\n                                      src=\"https://julyedu-cdn.oss-cn-beijing.aliyuncs.com/newyear20/H5/like_icon.png\"\n                                      alt=\"\"\n                                    />\n                                    加入心愿单\n                                  </a>\n                                )}\n                              </div>\n                            </>\n                          )}\n                        </div>\n                      </CourseItem>\n                    ))}\n                  </div>\n                  {expand.courseList && expand.courseList.length > 4 && (\n                    <button\n                      className=\"more-button\"\n                      onClick={() => this.handleToMore(\"expand\")}\n                    >\n                      {expand.isMore ? \"查看更多\" : \"收起\"}\n                    </button>\n                  )}\n                </>\n              )}\n            </CommonContainer>\n          </>\n        )}\n\n        {this.state.tofreeStudy && (\n          <CommonPopup top={100} closePopup={this.closePopup} mark={false}>\n            <div className=\"sub__code_container\">\n              <p className=\"sub__title\">提醒服务</p>\n              <p className=\"sub__tip\">\n                进入服务号回复<i>77</i>免费领取课程\n              </p>\n              <img\n                className=\"sub__qr_code\"\n                id={\"live-qr-code\"}\n                src=\"//julyedu-cdn.oss-cn-beijing.aliyuncs.com/2018christyear/h5/qrcode.jpg\"\n                alt=\"\"\n              />\n              {browser.isAndroidApp ? (\n                <button className={\"save-image\"} onClick={this.saveImage2}>\n                  保存二维码\n                </button>\n              ) : (\n                <p className=\"sub__tip\">长按识别/扫码 关注【七月在线】服务号</p>\n              )}\n            </div>\n          </CommonPopup>\n        )}\n        {this.state.isshowFollow && (\n          <CommonPopup top={100} closePopup={this.closePopupWish} mark={false}>\n            <div className=\"sub__code_container\">\n              <p className=\"sub__title\">提醒服务</p>\n              <p className=\"sub__tip\">课程开售立即提醒,不错过任何优惠哦!</p>\n              <img\n                className=\"sub__qr_code\"\n                id={\"live-qr-code\"}\n                src={this.state.followBarcode}\n                alt=\"\"\n              />\n              {browser.isAndroidApp ? (\n                <button className={\"save-image\"} onClick={this.saveImage}>\n                  保存二维码\n                </button>\n              ) : (\n                <p className=\"sub__tip\">长按识别/扫码 关注【七月在线】服务号</p>\n              )}\n            </div>\n          </CommonPopup>\n        )}\n      </div>\n    )\n  }\n}\n\nexport default withRouter(YearCourse)\n"],"sourceRoot":""}