import React from 'react' import LazyLoad from 'react-lazy-load' import { Link, withRouter } from "react-router-dom"; import { Course } from "@common/index" import './index.scss' // 课程模块儿公共组件 // 课程数量是奇数第一个课程需要横着展示沾满一行,课程数量是偶数一行显示两个 const HomeCourseList = function ({modules, history}) { const toDetail = id => { history.push(`/detail?id=${id}`) } return modules.length > 0 && modules.map((module, i) => { return <div key={i}> <Module module={module} toDetail={toDetail} /> <p className="borderTop"/> </div> }) } const Module = function CourseList({module, toDetail}) { let filterList = [] let isOdd = module.list.length % 2 === 0 if (module.name === '限时免费') { filterList = module.list } else { // 数量为奇数时,第一个课程显示大图(如后台未上传,前台显示小图),课程数量为偶数时,均显示小图 if (isOdd) { filterList = module.list } else { filterList = module.list[0].course_img === module.list[0].course_img_small ? module.list : module.list.slice(1) } } return <div className='category home-course-list'> <h2 className="title"> {module.name} { module.name === '限时免费' && <span className={'hot'}>hot</span> } </h2> { module.show_more === 1 && <Link className="more" to='/classify'>更多 ></Link> } { module.show_more === 2 ? module.name === '限时免费' ? <Link className="more" to={'/free'}>更多 ></Link> : <Link className="more" to={module.more_page}>更多 ></Link> : null } {/* <LazyLoad offset={50}> */} <ul className='index-course-detail'> { module.name !== '限时免费' && !isOdd && module.list[0].course_img !== module.list[0].course_img_small && <div className="category-vip" onClick={() => toDetail(module.list[0].course_id)}> <img src={module.list[0].course_img} alt=""/> </div> } { filterList.map((item, index) => { const top = item.is_limit_free ? null : ( <div> {item.is_audition === true && <span className='audition'><i className={'iconfont iconerji'}></i>试听</span> } {item.is_aist && <span className='return_bash'></span> } </div> ) const bottom = <Bottom course={item}/> const status = item.is_limit_free ? null : <div> {item.is_bargain && <p className='course-status'>砍价减{item.bargain_price}元</p> } {item.is_groupon && <p className='course-status'>拼团价{item.groupon_price}元</p> } </div> return ( <Course key={index} top={top} data={item} bottom={bottom} status={status} img={item.course_img_small} title={item.course_title} id={item.course_id} toDetail={toDetail} className='text-overflow-2' /> ) }) } </ul> {/* </LazyLoad> */} </div> } //限时免费 function LimitFree({course}) { /* * * limit_free_status: 0-未领取 1-已领取 2-已过期 * * */ switch (course.limit_free_status) { case 0: return <Link to={`/detail?id=${course.course_id}`}> <p className={'course-price'}> <span className={'free'}>免费领取</span> <span className={'old'}>¥{course.price}</span> </p> </Link> case 1: return <div className={'isbuy'}>已领取</div> default: return <p className="course-price"> <span className="new">¥{course.discounts_price}</span> <span className="old">¥{course.price}</span> </p> } } //课程底部 function Bottom({course}) { if (course.is_buy) { if (course.is_limit_free && course.limit_free_status === 1) { return <div class={'isbuy'}>已领取</div> } else { return <div className={'isbuy'}>已购买</div> } } else { return course.is_limit_free ? <LimitFree course={course}/> : <p className="course-price"> <span className="new">¥{course.discounts_price}</span> <span className="old">¥{course.price}</span> </p> } } export default withRouter(HomeCourseList)