Commit 5c5de6e3 by zhanghaozhe

Merge branch 'limit-free' into dev

parents 3acad2bd 51265987
......@@ -269,10 +269,12 @@ function CourseList({modules, toDetail}) {
{item.is_buy
? <a className="isbuy">已购买</a>
: item.is_limit_free
? <p className={'course-price'}>
? <Link to={`/detail?id=${item.course_id}`}>
<p className={'course-price'}>
<span className={'free'}>免费领取</span>
<span className={'old'}>¥{item.price}</span>
</p>
</Link>
: <p className="course-price">
<span className="new">¥{item.discounts_price}</span>
<span className="old">¥{item.price}</span>
......
......@@ -525,14 +525,20 @@ class BtnStatus extends Component {
}
{
//todo 联调
info.is_limit_free && info.limit_free_status == 0 && <div className='btns-box'>
<a className='consult consult-m' onClick={()=>this.qimoChatClick()}>
<i className='iconfont iconerji'></i>
<span>课程咨询</span>
</a>
<button className={'get-course btn'} onClick={() => {this.props.getCourse(info.course_id)}}>立即领取</button>
<button className={'get-course btn'} onClick={() => {
const {history, user, getCourse} = this.props
if(user.hasError){
history.push('/passport')
}else {
getCourse(info.course_id)
}
}}>立即领取</button>
</div>
}
......
......@@ -523,6 +523,7 @@ class Detail extends Component {
</button>
<button onClick={() => {
history.push(`/play/video?id=${id}`)
instance.close()
}}>立即学习
</button>
</div>
......@@ -539,6 +540,8 @@ class Detail extends Component {
render() {
const {course: {course_info = {}}, barInfo, singleBox, singleType, isRedPacket, countDownTime} = this.state;
const {d, h, m} = this.formatTime(course_info.limit_free_time)
let courseInfo = '',
service = '',
number = 0,
......@@ -616,7 +619,6 @@ class Detail extends Component {
</div>
}
{
//todo 联调
course_info.is_limit_free
?
course_info.limit_free_status == 0
......@@ -627,7 +629,7 @@ class Detail extends Component {
:
course_info.limit_free_status == 1
? <div className={'time-limit'}>
<span>有效期7天,051423分后过期</span>
<span>有效期7天,{d}{h}{m}分后过期</span>
</div>
: null
: null
......@@ -649,13 +651,13 @@ class Detail extends Component {
is_vip 1是属于vip赠的 0是不在vip范围内的
*/}
{
course_info.is_baoming === 1 && course_info.is_pay == 1 && course_info.contact_type == 1 && course_info.course_qq &&
!(course_info.is_limit_free && course_info.limit_free_status == 1) && course_info.is_baoming === 1 && course_info.is_pay == 1 && course_info.contact_type == 1 && course_info.course_qq &&
<div className='group'>
上课QQ群:{course_info.course_qq},加群请备注您的学号:{course_info.uid}
</div>
}
{
course_info.is_baoming === 1 && course_info.is_pay == 1 && course_info.contact_type == 2 && course_info.course_qq &&
!(course_info.is_limit_free && course_info.limit_free_status == 1) && course_info.is_baoming === 1 && course_info.is_pay == 1 && course_info.contact_type == 2 && course_info.course_qq &&
<div className='group'>
请添加班主任微信:{course_info.course_qq},添加时备注学号:{course_info.uid}
</div>
......
......@@ -92,7 +92,11 @@ class LimitFree extends Component {
this.getData()
}}>知道了
</button>
<button onClick={this.toPlay.bind(this, id)}>立即学习</button>
<button onClick={() => {
this.toPlay(id)
instance.close()
}}>立即学习
</button>
</div>
})
......@@ -169,7 +173,11 @@ class LimitFree extends Component {
bottom = <div className={'bottom'}>
<span className={'red'}>限时免费</span>
<span className={'origin-price'}>¥{item.price0}</span>
<button onClick={this.getCourse.bind(this, item.course_id)}>免费领取</button>
<button onClick={e => {
e.stopPropagation()
this.getCourse(item.course_id)
}}>免费领取
</button>
</div>
break
case 1:
......
......@@ -18,7 +18,6 @@ class Purchased extends Component {
componentDidMount() {
this.getList()
this.limitFreeCountDown()
}
// 获取订单
......@@ -41,14 +40,6 @@ class Purchased extends Component {
history.push(`/detail?id=${id}`)
// }));
}
limitFreeCountDown = timestamp => {
//todo 联调
const later = new Date(timestamp)
const earlier = Date.now()
return dateCountDown(later, earlier)
}
render() {
const {user} = this.props
const uid = user && user.data && user.data.uid
......@@ -84,8 +75,7 @@ class Purchased extends Component {
</div>
)
const status = (
// item.is_aist && <span className='status'>返现</span>
<span className='limit-free-status'>{'*'}{'*'}{'*'}分后过期</span>
item.is_aist && <span className='status'>返现</span>
)
const courseExpire = (
item.course_expire && item.course_expire != '' &&
......
......@@ -112,20 +112,6 @@ html, body, #root {
background: linear-gradient(to bottom, #FF4000, #FD7700);
}
.limit-free-status {
position: absolute;
right: 0;
top: 8px;
width: 112px;
height: 20px;
background: #FF0000;
border-radius: 10px 0 0 10px;
line-height: 20px;
color: #fff;
text-align: center;
font-size: 11px;
}
.course-expire {
display: inline-block;
text-align: center;
......
......@@ -79,7 +79,7 @@ class MyCourses extends Component {
handleClick = (id, item) => {
const {history} = this.props
const {mode, course_id} = item
if(mode && mode == 6){
if (mode && mode == 6) {
history.push(`/python?id=${course_id}`)
return
}
......@@ -156,11 +156,11 @@ class MyCourses extends Component {
)
const status = (
item.is_aist && <span className='status'>返现</span>
)
const courseExpire = (
item.course_expire && item.course_expire!='' &&
<span className='course-expire'>{item.course_expire}</span>
item.is_aist
? <span className='status'>返现</span>
: item.course_expire
? <span className='course-expire'>{item.course_expire}</span>
: null
)
return (
<VList img={item.image_name}
......@@ -169,7 +169,6 @@ class MyCourses extends Component {
key={index}
info={Info}
status={status}
courseExpire={courseExpire}
item={item}
id={item['v_course_id']}
/>
......
import React, { Component } from 'react'
import HeaderBar from '@/common/HeaderBar'
import './video.scss'
import { NavLink, Route, Redirect, Switch} from 'react-router-dom'
import { NavLink, Route, Redirect, Switch } from 'react-router-dom'
import { http, getParam, browser } from '@/utils'
import Recommendation from './recommendation'
import VideoCatalog from './video-catalog'
......@@ -9,8 +9,8 @@ import DatumCatalog from './datum-catalog'
import { Toast } from 'antd-mobile'
import videojs from 'video.js'
import 'video.js/dist/video-js.min.css'
import { Modal} from "antd-mobile"
import { Loading} from '@/common'
import { Modal } from "antd-mobile"
import { Loading } from '@/common'
import { connect } from "react-redux"
import jsCookie from 'js-cookie'
import Single from "@/components/detail/single";
......@@ -104,12 +104,12 @@ class Video extends Component {
nowPrice: 0,// 单集购买需要
laterPrice: 0,// 单集购买需要
limitFreeNoPromptChecked: false,
showLimitFreePopup: true //todo 联调
showLimitFreePopup: false,
limitFreePopup: {}
}
componentDidMount() {
console.log(this.props.location.hash)
if (window.location.protocol === 'https:') {
window.location.replace('http' + window.location.href.slice(5))
return
......@@ -527,6 +527,11 @@ class Video extends Component {
}
clearInterval(this.timer);
this.timer = null;
if (this.state.limitFreePopup.is_free) {
this.setState({
showLimitFreePopup: true
})
}
})
}
......@@ -607,6 +612,7 @@ class Video extends Component {
}),
this.playSetup
)
this.getLimitFreePopup(data.course.course_id)
} else {
Toast.info(data.msg)
}
......@@ -736,9 +742,54 @@ class Video extends Component {
}
}
getLimitFreePopup = id => {
http.post(`${API.home}/sys/popup`, {
course_id: id
})
.then(res => {
const {code, msg, data} = res.data
if (code === 200) {
this.setState({
limitFreePopup: data
})
} else {
Toast.info(msg, 2, null, false)
}
})
}
checkNeverShowLimitFreePopup = () => {
http.post(`${API.home}/sys/checklist`, {
course_id: this.state.course.course_id
})
.then(res => {
const {code, msg} = res.data
if (code === 200) {
this.setState({
limitFreePopup: {...this.state.limitFreePopup, is_free: 0}
})
}else {
Toast.info(msg, 2, null, false)
}
})
}
render() {
let {match, location, history} = this.props
const {videoList, activeIndex, isAuth, salePrice, course, singleBox, singleType, showLimitFreePopup} = this.state;
const {
videoList,
activeIndex,
isAuth,
salePrice,
course,
singleBox,
singleType,
showLimitFreePopup,
limitFreePopup
} = this.state;
let toHref = '';
if (location.state && location.state.to && location.state.to === 'detail') {
toHref = `/detail?id=${course.course_id}`
......@@ -875,13 +926,13 @@ class Video extends Component {
<div className={'limit-free-cover'}>
<div className="free-popup">
<div className="title">
<span>想领取【AI工程师必备干货礼包】? 想深入了解进阶课程? 职业前景不明朗? 资深规划师免费为你服务!</span>
<span>{limitFreePopup.pop_descbition}</span>
</div>
<div className={'des'}>
<img className="qrcode"
src="https://julyedu-cdn.oss-cn-beijing.aliyuncs.com/tinypng-common/right_weixin.png" alt=''/>
src={limitFreePopup.wechat_img} alt=''/>
<span>长按/扫码识别</span>
<span>添加时请备注<span>142</span>哦</span>
<span>添加时请备注<span>{course.course_id}</span>哦</span>
<div className="no-prompt">
<label htmlFor="no-prompt">
<span className={`checkbox-label ${this.state.limitFreeNoPromptChecked ? 'checked' : 'unchecked'}`}>
......@@ -900,7 +951,7 @@ class Video extends Component {
this.setState({
showLimitFreePopup: false
})
localStorage.setItem('neverShowLimitFreePopup', '1')
this.checkNeverShowLimitFreePopup()
}}/>
</div>
</div>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment