import React, {Component} from 'react' import './share.scss' import {http, getParam, browser, wxShare,is_weixin} from '@/utils' import {Toast} from 'antd-mobile' import {connect} from "react-redux"; import {Link} from "react-router-dom"; import showAlert from '@common/deposit/end-expansion-alert' class ExpandShare extends Component { state = { isShow: false, //活动规则 step: 0, // 区分弹窗 data: '', //膨胀券相关 courseList: [], // 预售课程列表 isshowMore: true, // 是否显示查看更多 pageCount: 1, // 页码 helpData: '',// 帮助好友助力数据 courseListMore: '', // 所有课程 } componentDidMount() { this.getListorData() this.getCourseList() if(is_weixin()) { wxShare({ title: 'AI充电节,预热来袭!80元红包送给你,手要快!', desc: '积福气享1折秒课,超10万元奖品来就送--七月在线', link: window.location.href, imgUrl: 'https://julyedu-cdn.oss-cn-beijing.aliyuncs.com/active19_1111/m/dj-share-img.png', }) } } // 获取膨胀券相关 getListorData = () => { http.get(`${API['base-api']}/sys/help_list/${getParam('deposit_code')}`).then((res) => { const {data, errno, msg} = res.data if (errno == 200) { this.setState({ data: data }) } else { Toast.info(msg, 2) } }) } // 获取课程列表 getCourseList = () => { const _this = this http.get(`${API['base-api']}/anniversary2019/pre_course`).then((res) => { const {data, errno, msg} = res.data if (errno == 200) { if (JSON.stringify(data) == '{}') { _this.setState({ isshowMore: false, courseList: [] }) } else if (data.length <= 6) { _this.setState({ isshowMore: false, courseList: data }) } else { _this.setState({ isshowMore: true, courseList: data.slice(0, 6), courseListMore: data }) } } else { Toast.info(msg, 2) } }) } // 获取更多课程 getMoreCourseList = () => { this.setState({ courseList: this.state.courseListMore, isshowMore: false }) } // 立即付定金 expandPaydj = (courseId) => { const {user, history} = this.props; const uid = user && user.data && user.data.uid; if (!uid) { this.props.history.push('/passport/login') } else { this.props.history.push( `/deposit-order?oid=${courseId}&source=${1}`, { id: courseId, isexpand: 1, sourcenum: 1 } ) } } // 立即付尾款 expandPaywk = (courseId, time, day) => { const {user, history} = this.props; const uid = user && user.data && user.data.uid; if (!uid) { this.props.history.push('/passport/login') } else { let timeStamp = Date.parse(new Date()) / 1000; if (timeStamp >= time) { this.props.history.push( '/final-deposit-order?source=1', { id: courseId, sourcenum: 1 } ) } else { Toast.info("付尾款时间将在" + day + "开启", 2); } } } // 去学习 tostudy = (courseId) => { this.props.history.push(`/getDetail?id=${courseId}`) } // 显示活动规则 showRule = () => { this.setState({ isShow: true, step: 1 }) } // 邀请好友 share = () => { const {user, history} = this.props; const uid = user && user.data && user.data.uid; if (!uid) { this.props.history.push('/passport/login') } else { this.setState({ isShow: true, step: 0 }) } } // 帮好友助力 helpFriend = (id) => { const {user, history} = this.props; const uid = user && user.data && user.data.uid; if (!uid) { this.props.history.push('/passport/login') } else { http.post(`${API['base-api']}/sys/help/${id}`).then((res) => { const {data, errno, msg} = res.data if (errno == 200) { this.setState({ isShow: true, step: 2, helpData: data }) this.getListorData() } else if (errno === 17018 || errno === 17020) { this.setState({ isShow: true, step: 4 }) } else { Toast.info(msg, 2) } }) } } // 结束助力 isendExpand = (data) => { const {user, history} = this.props; const uid = user && user.data && user.data.uid; if (!uid) { this.props.history.push('/passport/login') } else { const {amount, limit_amount, id} = data showAlert({ amount, limit_amount, onCancel: () => { this.setState({ isShow: false }) }, onConfirm: () => { http.post(`${API['base-api']}/sys/end_expansion`, { id }) .then(res => { const {errno, msg} = res.data if (errno == 200) { this.setState({ isShow: false }) this.getListorData() } else { Toast.info(msg) } }) } }) } } // 关闭弹窗 close = () => { this.setState({ isShow: false }) } render() { const {isShow, step, data, courseList, isshowMore, helpData} = this.state return ( <div className="expand-box"> <div className="banner"> <img src="https://julyedu-cdn.oss-cn-beijing.aliyuncs.com/active19_1111/m/dj-banner.png" alt=""/> <span onClick={() => this.showRule()}/> </div> <div className="all-contnet"> <div className="content"> {/*进度||膨胀券*/} { <ExpansionStatus data={data}/> } {/*button*/} { <ButtonStatus data={data} share={this.share} helpFriend={this.helpFriend} isendExpand={this.isendExpand}/> } </div> {/*好友助力列表*/} { (data.oneself === 1 || data.help_list && data.help_list.length !== 0) && <FriendList data={data}/> } {/*预售课程列表*/} { <CourseList data={courseList} isshowMore={isshowMore} getMoreCourseList={this.getMoreCourseList} expandPaydj={this.expandPaydj} expandPaywk={this.expandPaywk} tostudy={this.tostudy} /> } </div> { isShow && <div className='mbc-box'> { step === 0 && <ShareBox close={this.close} share={this.share} data={data}/> } { step === 1 && <ActiveRule/> } { step === 2 && <AssistanceSuccess share={this.share} data={data} helpData={helpData}/> } { step === 4 && <AssistanceErron close={this.close}/> } { (step === 1 || step === 2) && <img className="close" onClick={() => this.close()} src="https://julyedu-cdn.oss-cn-beijing.aliyuncs.com/Public/img/guanbi_icon.png" alt=""/> } </div> } </div> ) } } // 活动规则 function ActiveRule() { return ( <div className='content active-rule'> <div className="title">活动规则</div> <p>1、本活动期间,可以助力1位好友不同课程发起的膨胀,但是只能为同一好友;</p> <p>2、好友发起膨胀后,可以随时终止膨胀;</p> <p>3、膨胀券膨胀完成后,以优惠券形式发放到参与活动的账号(包括所有助力好友),该膨胀券为全场通用券,可在购买任一课程后进行抵扣(包括已付定金课程);</p> <p>4、如有疑问,可联系七月在线客服微信:julyedukefu;</p> <p>*本活动最终解释权归七月在线所有</p> </div> ) } // 邀请好友 分享弹窗 function ShareBox(props) { const {close, data} = props return ( <div className='content'> <div onClick={() => close()} className="fiexd"></div> <div className="share-box"> { browser.isWeixin && <img src="//julyedu-cdn.oss-cn-beijing.aliyuncs.com/share/throw_icon.png" alt=""/> } <p>邀请好友助力</p> <p>膨胀券翻倍膨胀,{data.start_amount}元变{data.limit_amount}元!</p> <span>送助力好友{data.limit_amount}元</span> </div> </div> ) } //助力成功弹窗 function AssistanceSuccess(props) { const {helpData, share, data} = props return ( <div className='content assistance-success'> <div className="title">助力成功</div> <p className="add-price"> <img src="https://julyedu-cdn.oss-cn-beijing.aliyuncs.com/active19_717/m/add-money.png" alt=""/> +{helpData.help_amount} </p> <p className="all-price"> <span>{helpData.sale_amount}</span>元 </p> <p className="assistance-tip">感谢你的助力,你们离{data.limit_amount}元又更近了哦!<br/>可以邀请其他小伙伴一起助力~</p> <button onClick={() => share()}>邀请更多好友拿{data.limit_amount}元</button> </div> ) } // 助力失败弹窗 function AssistanceErron(props) { const {close} = props return ( <div className="content assistance-erron"> <div className="title">温馨提示</div> <p>很遗憾~</p> <p>你已经帮别的好友助过力了,</p> <p>不能再帮这位好友助力!</p> <button onClick={() => close()}>知道了</button> </div> ) } // 判断是否结束膨胀 function ExpansionStatus(props) { const {data} = props //is_end: 0 判断活动是否结束 0否1是 // is_end_expansion: 0,是否是自己结束膨胀 0否1是 if (data.is_end === 0 && data.is_end_expansion === 0) { return ( <ProgressData data={data}/> ) } else { return ( <EndExpansion data={data}/> ) } } // 没有结束膨胀的情况 function ProgressData(props) { const data = props.data return ( <div> <div className="user-mess"> <img src={data.avatar_file} alt="user"/> 帮我助力,送你{data.limit_amount}元 </div> <div className="progress-box"> <div className="progress-base"> <span className="progress-active" style={{width: (data.amount - data.start_amount) / data.limit_amount * 100 + '%'}}> <span className="ending"> <span className="tip">{data.amount}元 <i/></span> </span> </span> </div> <div className="progress-price"> <span>{data.start_amount}元</span> <span>{data.limit_amount}元</span> </div> </div> { data.help_list.length === 0 && <div className="help-mess no">还没有好友为{data.oneself === 1 ? '你' : 'Ta'}助力哦~</div> } { data.help_list.length > 0 && <div className="help-mess has">已有<span className="FF19A0">{data.help_list.length}</span>位好友助力</div> } </div> ) } // 结束膨胀的情况 function EndExpansion(props) { const data = props.data return ( <div className='coupon-box'> <div className="coupon"> <p className="coupon-name">红包膨胀优惠券</p> <p className="coupon-price"><span>{data.amount}</span>元</p> <p className="coupon-time">有效期至:{data.expire_time}</p> </div> <div className="tip"> <ul> { new Array(19).fill('1').map((item, index) => { return <li key={index}/> }) } </ul> 全场通用 </div> <p className="over-mess">该礼券已成功发放至账户</p> <p className="over-mess">可在七月在线pc/app-我的-优惠券查看</p> </div> ) } // 按钮 function ButtonStatus(props) { const {data, share, helpFriend, isendExpand} = props // data.oneself 判断是否是自己 0帮好友助力 1自己 // data.is_help 是否已经帮好友助力 0 未助力 1已助力 // data.s_end: 0 判断活动是否结束 0否1是 // data.is_end_expansion: 0,是否是自己结束膨胀 0否1是 return ( <div> { data.is_end === 0 && <div className='btns'> { data.oneself === 1 && data.is_end_expansion === 0 && <button className="active" onClick={() => share()}>邀请好友助力</button> } { data.oneself === 1 && data.is_end_expansion === 1 && data.amount !== data.limit_amount && <button className="over">您已结束膨胀</button> } { data.oneself === 1 && data.is_end_expansion === 1 && data.amount === data.limit_amount && <button className="over">达到膨胀上限,快去使用吧</button> } { data.oneself === 0 && data.is_help === 0 && data.is_end_expansion === 0 && <button className="active" onClick={() => helpFriend(data.id)}>帮ta助力</button> } { data.oneself === 0 && data.is_help === 1 && data.is_end_expansion === 0 && <button className="active" onClick={() => share()}>邀请更多好友拿{data.limit_amount}元</button> } { data.oneself === 0 && data.is_end_expansion === 1 && data.amount === data.limit_amount && <button className="over">达到膨胀上限,快去使用吧</button> } { data.oneself === 0 && data.is_end_expansion === 1 && data.amount !== data.limit_amount && <button className="over">你的好友已结束助力</button> } </div> } { data.is_end === 1 && <div className="btns"> <button className="over">活动已结束</button> </div> } { data.is_end === 0 && data.is_end_expansion === 0 && data.oneself === 1 && <div className="overBtn"> <p onClick={() => isendExpand(data)}>结束助力使用礼券</p> </div> } </div> ) } // 好友助力列表 function FriendList(props) { const data = props.data return ( <div className="friend-list"> <p className="title"> <img src="https://julyedu-cdn.oss-cn-beijing.aliyuncs.com/active19_717/m/expand-right.png" alt=""/> <span>好友助力</span> <img src="https://julyedu-cdn.oss-cn-beijing.aliyuncs.com/active19_717/m/expand-left.png" alt=""/> </p> { data.help_list.length === 0 && <div className="null-list"> <p className="tips first-tips">还没有好友为你助力,</p> <p className="tips">赶紧去邀请好友吧!</p> </div> } { data.help_list.length > 0 && <div className="all-list"> <p className="friend-status"><span className="FF19A0">{data.help_list.length}</span>位好友共助力<span className="FF19A0">{data.amount - data.start_amount}</span>元</p> <ul className="all-list-box"> { data.help_list.map((item, index) => { return ( <li className="item" key={index}> <img className="avait" src={item.avatar} alt=""/> <span className="time">助力时间:{item.add_time}</span> <span className="zlprice FF19A0">{item.amount}元</span> </li> ) }) } </ul> </div> } </div> ) } //预售课程 function CourseList(props) { const {data, isshowMore, getMoreCourseList, expandPaydj, expandPaywk, tostudy} = props return ( <div className="advance-sale-course"> <p className="title"> <img src="https://julyedu-cdn.oss-cn-beijing.aliyuncs.com/active19_717/m/expand-right.png" alt=""/> <span>预售课程</span> <img src="https://julyedu-cdn.oss-cn-beijing.aliyuncs.com/active19_717/m/expand-left.png" alt=""/> </p> <div className="course-list"> <ul> { data.map((item, index) => { return ( <li className="course-item" key={index}> <Link to={`/getDetail?id=${item.course_id}`}> <img className="course-img" src={item.image_name} alt=""/> </Link> <p className="old-price">原价:<span>¥{item.price}</span></p> <p className="handsel">定金¥{item.deposit_amount},可抵扣¥{item.deduction_amount}</p> <div className="btn"> { item.is_buy === 0 && <a className="to-expand-buy1" onClick={() => expandPaydj(item.course_id)}>立即付定金</a> } { item.is_buy === 1 && <a className="to-expand-buy2" onClick={() => expandPaywk(item.course_id, item.start_timestamp, item.final_start_time)}>立即付尾款</a> } { item.is_buy === 2 && <button className="to-study" onClick={() => tostudy(item.course_id)}>开始学习</button> } </div> </li> ) }) } </ul> </div> { isshowMore && <div className="more"> <div onClick={() => getMoreCourseList()}> 查看更多 <img src="https://julyedu-cdn.oss-cn-beijing.aliyuncs.com/active19_717/m/expand-btm.png" alt=""/> </div> </div> } </div> ) } export default connect( state => ({ user: state.user }), )(ExpandShare)