Commit 2ad44c74 by xuzhenghua

Merge branch '0821bug' of gitlab.julyedu.com:baiguangyao/mr-julyedu

# Conflicts:
#	src/components/order/payOrder/PayOrder.scss
parents 5ca713ee 8c5d1cf5
......@@ -30,7 +30,7 @@ class HeaderBar extends Component {
}
{
toHref && typeof toHref === 'function' &&
<i className='iconfont iconiconfront-68' onClick={toHref}>1</i>
<i className='iconfont iconiconfront-68' onClick={toHref}></i>
}
{
toHref && typeof toHref === 'string' &&
......
......@@ -12,15 +12,25 @@ class HeaderBar extends Component {
}
goShop = () => {
location.replace('/shopcart');
location.replace('/shopcart')
}
render() {
{
console.log(this.props.toHref);
}
return (
<div className='preferential'>
<div className="search-nav">
<i className={'iconfont iconiconfront-68 return'} onClick={this.return.bind(this)}></i>
{
!this.props.toHref &&
<i className={'iconfont iconiconfront-68 return'} onClick={this.return.bind(this)}></i>
}
{
this.props.toHref &&
<i className={'iconfont iconiconfront-68 return'} onClick={this.props.toHref}></i>
}
<SearchBar
placeholder="搜索课程"
cancelText={" "}
......
......@@ -10,6 +10,11 @@
position: relative;
width: 125px;
height: 90px;
img {
width: 100%;
height: 100%;
border-radius: 3px;
}
a {
position: relative;
......@@ -42,8 +47,6 @@
.order-title {
font-size: 16px;
color: $color_333;
height: 18px;
line-height: 18px;
}
.order-content {
......
......@@ -66,7 +66,7 @@ class BargainMiddlePage extends Component {
limitPeople: res.data.data.course.limit_people,
bargainData: res.data.data.bargain,
width: (res.data.data.bargain.bargain_price / res.data.data.bargain.total_price).toFixed(2) * 100 + '%'
},
},
() => {
if (this.state.bargainData.expire_time) {
let date = this.state.bargainData.expire_time * 1000
......@@ -147,6 +147,19 @@ class BargainMiddlePage extends Component {
}
})
}
// 我要砍价列表的去支付
toCartBottom=(id)=>{
let data = {
course_id: id
}
http.post(`${API.home}/m/cart/add`, data).then((res) => {
if (res.data.code === 200 || res.data.code === 15001) {
this.props.history.push('/shopcart')
} else {
Toast.info(res.data.msg, 2);
}
})
}
// 查看更多
getMore = () => {
......@@ -425,7 +438,7 @@ class BargainMiddlePage extends Component {
bottom={
<CourseBottom
item={item}
toCart={this.toCart}
toCartBottom={this.toCartBottom.bind(this,item.course_id)}
toDetail={this.toCourseDetail}
/>
}
......@@ -533,7 +546,7 @@ function CourseBottom(props) {
// Buttons = <Link to={`/detail?id=${props.item.course_id}`} className={'bargain'}>我要砍价</Link>
Buttons = <a href="javascript:;" onClick={() => props.toDetail(props.item.course_id)} className={'bargain'}>我要砍价</a>
} else if (props.item.bargain_status === 3) {
Buttons = <Link to={`/play/video?id=${props.item.course_id}`} className={'bargain'}>去学习</Link>
Buttons = <Link to={`/play/video?id=${props.item.v_course_id}`} className={'bargain'}>去学习</Link>
} else {
Buttons = (
<div className="btns">
......@@ -551,7 +564,7 @@ function CourseBottom(props) {
}
<button onClick={props.toCart}
<button onClick={props.toCartBottom}
className={'purchase-btn'}>¥{props.item.pay_price}去支付
</button>
</div>
......
......@@ -112,6 +112,10 @@ class Classify extends Component {
}));
}
toClassify=()=>{
location.replace('/classify');
}
render() {
const bottom = (
<i className={'iconfont iconiconfront-69 pull-down'}></i>
......@@ -124,7 +128,7 @@ class Classify extends Component {
return (
<div className='class-child'>
<HeaderSearch></HeaderSearch>
<HeaderSearch toHref={this.toClassify}></HeaderSearch>
<Loading isLoading={this.state.isLoading}>
<div className='class-content'>
<WhiteSpace/>
......
......@@ -8,6 +8,7 @@ import { api, getParam, http } from "@/utils"
import Ranking from "@/components/bargainMiddlePage/ranking"
import { compose } from "redux"
import { withRouter } from 'react-router-dom'
import {connect} from "react-redux";
class Bargain extends Component {
......@@ -125,7 +126,13 @@ class Bargain extends Component {
// 我要砍价
iWantBargain = () => {
this.toKanjia(getParam('id'), 1, 0)
const {user} = this.props
const uid = user && user.data && user.data.uid
if(!uid){
this.props.history.push('/passport/login')
} else {
this.toKanjia(getParam('id'), 1, 0)
}
}
// 砍价接口
......@@ -170,11 +177,14 @@ class Bargain extends Component {
}
render() {
const {user} = this.props
const uid = user && user.data && user.data.uid
return (
<div className={'bargain-func'}>
{/*bargain_status 砍价状态 0-砍价中,1砍价结束,待支付,2砍价过期(没有砍价记录没有砍价信息),3已购买*/}
{
this.state.info.bargain_status === 2 &&
(this.state.info.bargain_status === 2 || !uid) &&
<BargainIntro limitPeople={this.state.limitPeople} iWantBargain={this.iWantBargain}/>
}
{
......@@ -394,5 +404,11 @@ function UseArtifact(props) {
export default compose(
connect(
state => ({
user: state.user
}),
null
),
withRouter
)(Bargain)
......@@ -110,13 +110,13 @@ class OutLine extends Component {
{
// 已购买直播结束已上传视频:正常播放按钮,点击播放课程
!introduce.is_aist && item.class_status === 2 &&
<Link to={`/play/video?id=${introduce.v_course_id}`} className='iconfont icondanseshixintubiao-23 icon-right-22'></Link>
<Link to={`/play/video?id=${introduce.v_course_id + '&video_id=' + item.video_id}`} className='iconfont icondanseshixintubiao-23 icon-right-22'></Link>
}
{
// 返现课程 是返现课程 未开课 已开课 是返现课程 未开课 已开课 已练习
introduce.is_aist && item.is_open && introduce.is_baoming === 1 &&
<Link to={`/play/video?id=${introduce.v_course_id}`} className='aist aist_open'></Link>
<Link to={`/play/video?id=${introduce.v_course_id + '&video_id=' + item.video_id}`} className='aist aist_open'></Link>
}
......
......@@ -28,10 +28,10 @@ function OrderList(props) {
<div className="order-info">
{/* <Link to={`/detail?id=${course_id}`}> */}
<p
className='order-title'
style={{
overflow: 'hidden',
textOverflow: 'ellipsis',
className='order-title'
style={{
overflow: 'hidden',
textOverflow: 'ellipsis',
whiteSpace: 'nowrap'
}}
onClick={() => props.toDetail(course_id)}
......@@ -52,12 +52,12 @@ function OrderList(props) {
);
return (
<OrderItem
{...item}
src={image_name}
id={course_id}
key={index}
info={Info}
<OrderItem
{...item}
src={image_name}
id={course_id}
key={index}
info={Info}
isaist={props.isaist}
toDetail={props.toDetail}
>
......@@ -286,7 +286,6 @@ class Order extends Component {
}
});
} else if (this.props.location.state && this.props.location.state.group === 1){
console.log(2);
// 获取一键开团的课程
Promise.all([http.get(`${API.home}/m/course/detail/${getParam('id')}`),http.get(`${API['base-api']}/m/order/preorder`)]).then(resList => {
let courseInfo = resList[0],
......
......@@ -108,8 +108,6 @@
justify-content: space-around;
.order-title {
height: 18px;
line-height: 18x;
color: $color_333;
font-size: $font_16;
}
......
.pay-order {
width: 100%;
background-color: #f5f5f5;
margin-bottom: 50px;
.order-number {
background-color: #fff;
span {
font-size: 15px;
color: #333333;
}
width: 100%;
background-color: #f5f5f5;
margin-bottom: 50px;
.number {
font-size: 12px;
color: #666666;
}
.order-number {
background-color: #fff;
.money {
color: #ff3131;
}
span {
font-size: 15px;
color: #333333;
}
.number {
font-size: 12px;
color: #666666;
}
.pay-type-list {
.am-list-body {
&::after {
display: none;
}
}
.am-list-header {
color: #333333;
font-size: 15px;
background-color: #fff;
}
.iconalipay {
font-size: 22px;
color: #01aaef;
}
.iconweixinzhifu {
font-size: 22px;
color: #3baf34;
}
.money {
color: #ff3131;
}
}
.iconhuabei {
font-size: 22px;
color: #01aaef;
}
.pay-type-list {
.am-list-header {
color: #333333;
font-size: 15px;
background-color: #fff;
}
.am-radio-inner {
width: 20px;
height: 20px;
border-radius: 50%;
background-color: #c1c1c1;
}
.iconzhifubaox- {
font-size: 22px;
color: #01aaef;
}
.am-radio-inner:after {
display: block;
border-color: #fff;
top: 0;
right: 6px;
}
.iconweixinzhifu {
font-size: 22px;
color: #3baf34;
}
.am-radio.am-radio-checked .am-radio-inner {
background-color: #009aff;
border-radius: 50%;
width: 20px;
height: 20px;
}
.iconhuabei {
font-size: 22px;
color: #01aaef;
}
.am-radio.am-radio-checked .am-radio-inner:after {
display: block;
}
.am-radio-inner {
width: 20px;
height: 20px;
border-radius: 50%;
background-color: #c1c1c1;
}
.am-radio-inner:after {
display: block;
border-color: #fff;
top: 0;
right: 6px;
}
.pay-tip {
width: 100%;
height: 30px;
line-height: 30px;
text-align: center;
font-size: 12px;
color: #ff3131;
background-color: #fff4ce;
.am-radio.am-radio-checked .am-radio-inner {
background-color: #009aff;
border-radius: 50%;
width: 20px;
height: 20px;
}
.am-radio.am-radio-checked .am-radio-inner:after {
display: block;
}
}
.pay-button {
position: fixed;
bottom: 0;
.pay-tip {
width: 100%;
height: 30px;
line-height: 30px;
text-align: center;
font-size: 12px;
color: #ff3131;
background-color: #fff4ce;
}
.pay-button {
position: fixed;
bottom: 0;
width: 100%;
height: 44px;
line-height: 44px;
text-align: center;
color: #fff;
font-size: 18px;
background-color: #18b4ed;
z-index: 9;
}
.check-staging {
position: fixed;
width: 100%;
height: 100%;
top: 0;
left: 0;
background-color: rgba(0, 0, 0, $alpha: 0.6);
z-index: 19;
.container {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
width: 300px;
border-radius: 6px;
background-color: #FFF;
padding-bottom: 10px;
.check-title{
color: #333333;
font-size: 16px;
text-align: center;
width: 100%;
height: 44px;
line-height: 44px;
text-align: center;
color: #fff;
font-size: 18px;
background-color: #18b4ed;
z-index: 9;
border-bottom: 1px solid #DDDDDD;
border-top-left-radius: 6px;
border-top-right-radius: 6px;
}
}
.check-staging {
position: fixed;
width: 100%;
height: 100%;
top: 0;
left: 0;
background-color: rgba(0, 0, 0, $alpha: 0.6);
z-index: 19;
.container {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
width: 300px;
border-radius: 6px;
background-color: #FFF;
padding-bottom: 10px;
.check-title {
color: #333333;
font-size: 16px;
text-align: center;
width: 100%;
height: 44px;
line-height: 44px;
border-bottom: 1px solid #DDDDDD;
border-top-left-radius: 6px;
border-top-right-radius: 6px;
}
}
.am-list-item .am-list-line .am-list-extra {
flex-basis: 16%;
}
.am-radio-inner {
width: 20px;
height: 20px;
border-radius: 50%;
border: 1px solid #BFBFBF;
background-color: #fff;
}
.am-radio-inner:after {
display: block;
border-color: #fff;
top: 0;
right: 6px;
}
.am-radio.am-radio-checked .am-radio-inner {
background-color: #009aff;
border: 1px solid #FFF;
border-radius: 50%;
width: 20px;
height: 20px;
}
.am-radio.am-radio-checked .am-radio-inner:after {
display: block;
}
}
.am-list-item .am-list-line .am-list-extra {
flex-basis: 16%;
}
.order-info {
position: relative;
flex: 1;
.am-radio-inner {
width: 20px;
height: 20px;
border-radius: 50%;
border: 1px solid #BFBFBF;
background-color: #fff;
}
.order-title {
font-size: 16px;
color: $color_333;
}
.am-radio-inner:after {
display: block;
border-color: #fff;
top: 0;
right: 6px;
}
.order-content {
font-size: 14px;
color: $color_666;
margin-top: 14px;
line-height: 18px;
}
.am-radio.am-radio-checked .am-radio-inner {
background-color: #009aff;
border: 1px solid #FFF;
border-radius: 50%;
width: 20px;
height: 20px;
}
.order-des {
height: 24px;
line-height: 33px;
position: absolute;
bottom: 0;
.am-radio.am-radio-checked .am-radio-inner:after {
display: block;
}
.order-newprice {
font-size: 16px;
color: $redprice;
}
.order-price {
font-size: 12px;
color: $color_999;
margin-left: 15px;
text-decoration: line-through;
}
}
}
.order-info {
position: relative;
flex: 1;
.v-list-item {
padding: 10px 15px;
background-color: #fff;
border-bottom: 1px solid #e7eaf1;
.order-title {
font-size: 16px;
color: $color_333;
}
.content {
border: none;
padding-bottom: 0;
.cover {
flex: inherit;
width: 42.2%;
.order-content {
font-size: 14px;
color: $color_666;
margin-top: 14px;
line-height: 18px;
img {
width: 100%;
height: 100%;
}
.order-des {
height: 24px;
line-height: 33px;
.order-newprice {
font-size: 16px;
color: $redprice;
}
.order-price {
font-size: 12px;
color: $color_999;
margin-left: 15px;
text-decoration: line-through;
}
.course-status {
background-color: rgba(224, 46, 36, 0.6);
}
}
}
.v-list-item {
padding: 10px 15px;
background-color: #fff;
.content {
border: none;
.info {
width: 52.3%;
position: relative;
display: block;
.title {
font-size: 16px;
color: $color_333;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
height: 16px;
line-height: 16px;
}
.contact {
font-size: 14px;
color: $color_666;
margin-top: 14px;
}
.des {
position: absolute;
bottom: 0;
.cover {
flex: inherit;
width: 42.2%;
.course-price {
.price {
color: $red;
font-size: 12px;
}
img {
width: 100%;
}
.new {
color: $red;
font-size: 16px;
}
.course-status {
background-color: rgba(224, 46, 36, 0.6);
}
}
.old {
color: $color_999;
font-size: 12px;
display: inline-block;
margin-left: 15px;
text-decoration: line-through;
}
}
.info {
width: 52.3%;
position: relative;
display: block;
.title {
font-size: 16px;
color: $color_333;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
height: 16px;
line-height: 16px;
}
.contact {
font-size: 14px;
color: $color_666;
margin-top: 14px;
}
.des {
position: absolute;
bottom: 0;
.course-price {
.price {
color: $red;
font-size: 12px;
}
.new {
color: $red;
font-size: 16px;
}
.old {
color: $color_999;
font-size: 12px;
display: inline-block;
margin-left: 15px;
text-decoration: line-through;
}
}
.isbuy {
display: inline-block;
width: 61px;
height: 18px;
background-color: $bg_active;
border-radius: 9px;
color: $white;
font-size: 12px;
text-align: center;
line-height: 18px;
}
}
.isbuy {
display: inline-block;
width: 61px;
height: 18px;
background-color: $bg_active;
border-radius: 9px;
color: $white;
font-size: 12px;
text-align: center;
line-height: 18px;
}
}
}
}
}
......@@ -364,13 +364,6 @@ class Video extends Component {
if (this.lessonAvailable()) {
if (this.hasAuth()) {
Promise.resolve().then(() => {
let {videoList, course} = this.state
let videoIndex = videoList.findIndex(item => item.id == course.last_video_id)
this.setState({
activeIndex: videoIndex < 0 ? 0 : videoIndex
})
this.initializePlayer()
this.playWithAuth()
})
......@@ -425,8 +418,12 @@ class Video extends Component {
}
lessonAvailable = () => {
const {videoList, activeIndex} = this.state
return videoList[activeIndex]['video_size'] !== 0
let {videoList, course} = this.state
let videoIndex = videoList.findIndex(item => item.id == course.last_video_id)
this.setState({
activeIndex: videoIndex
})
return videoList[videoIndex]['video_size'] !== 0
}
getCoursePrice = () => {
......@@ -450,8 +447,13 @@ class Video extends Component {
}
hasAuth = () => {
const {course, videoList, activeIndex} = this.state
let lesson = videoList[activeIndex]
const {course, videoList} = this.state
let videoIndex = videoList.findIndex(item => item.id == course.last_video_id)
this.setState({
activeIndex: videoIndex
})
let lesson = videoList[videoIndex]
if (lesson['video_auth']) {
this.setState({
......
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