Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
M
mr-julyedu
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
baiguangyao
mr-julyedu
Commits
96352f1f
Commit
96352f1f
authored
Aug 22, 2019
by
FE
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
alipay modify
parent
57b9163f
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
507 additions
and
61 deletions
+507
-61
src/components/detail/audition/index.scss
+1
-1
src/components/detail/index.js
+77
-6
src/components/detail/single/index.js
+24
-53
src/components/detail/single/index.scss
+1
-1
src/components/detail/single/singleSuccess.js
+404
-0
No files found.
src/components/detail/audition/index.scss
View file @
96352f1f
...
...
@@ -6,7 +6,7 @@
right
:
0
;
bottom
:
0
;
background-color
:
rgba
(
0
,
0
,
0
,
.6
);
z-index
:
2
;
z-index
:
15
;
.content
{
width
:
300px
;
...
...
src/components/detail/index.js
View file @
96352f1f
...
...
@@ -7,6 +7,7 @@ import {HeaderBar, CallApp} from '../../common'
import
ShareRank
from
"./shareRank"
import
Audition
from
"./audition"
import
Single
from
"./single"
import
SingleSuccess
from
'./single/singleSuccess'
;
import
BtnStatus
from
"./btnstatus"
import
Carouselw
from
"./carousel"
import
{
connect
}
from
"react-redux"
...
...
@@ -25,7 +26,10 @@ class Detail extends Component {
isbuy
:
0
,
isvip
:
0
,
auditionBox
:
false
,
singleBox
:
false
,
singleType
:
1
,
shareRank
:
false
,
singMess
:
''
,
barInfo
:
''
,
...
...
@@ -39,6 +43,45 @@ class Detail extends Component {
componentDidMount
()
{
this
.
fetchCourseInfo
();
const
{
location
:
{
state
=
{}
}
}
=
this
.
props
;
if
(
state
.
oid
)
{
this
.
check
(
state
.
oid
);
}
}
// 判断支付是否成功
check
=
(
oid
)
=>
{
http
.
get
(
`
${
API
[
'base-api'
]}
/class_order_status/
${
oid
}
`
).
then
((
res
)
=>
{
if
(
Number
(
res
.
data
.
data
.
errno
)
===
200
)
{
// 正常购买单集成功
this
.
setState
({
singleType
:
6
,
})
}
else
if
(
Number
(
res
.
data
.
data
.
errno
)
===
201
)
{
// 0元参团
this
.
setState
({
singleType
:
4
,
})
}
else
if
(
Number
(
res
.
data
.
data
.
errno
)
===
202
)
{
// 0元购
this
.
setState
({
singleType
:
3
,
})
}
else
if
(
Number
(
res
.
data
.
data
.
errno
)
===
203
)
{
// 三天内特价
this
.
setState
({
nowPrice
:
res
.
data
.
data
.
data
.
now_price
,
laterPrice
:
res
.
data
.
data
.
data
.
three_day_later_price
,
singleType
:
2
,
})
}
else
{
Toast
.
info
(
res
.
data
.
data
.
msg
,
2
)
}
})
}
fetchCourseInfo
=
()
=>
{
...
...
@@ -88,6 +131,7 @@ class Detail extends Component {
}
// 点击子组件单集购买按钮
toSingleset
=
(
item
)
=>
{
console
.
log
(
this
.
props
);
const
{
user
}
=
this
.
props
const
uid
=
user
&&
user
.
data
&&
user
.
data
.
uid
if
(
!
uid
)
{
...
...
@@ -95,8 +139,9 @@ class Detail extends Component {
}
else
{
this
.
setState
({
singleBox
:
true
,
singleType
:
1
,
singMess
:
item
})
})
;
}
}
...
...
@@ -207,11 +252,17 @@ class Detail extends Component {
// 自组件传给父组件的boxHide
boxHide
=
(
val
)
=>
{
this
.
setState
({
auditionBox
:
val
,
singleBox
:
val
})
this
.
setState
({
auditionBox
:
val
,
singleBox
:
val
,
singleType
:
1
})
this
.
props
.
history
.
push
(
`/detail?id=
${
getParam
(
'id'
)}
`
);
}
render
()
{
const
{
course
:
{
course_info
=
{}
},
barInfo
}
=
this
.
state
;
const
{
course
:
{
course_info
=
{}
},
barInfo
,
singleBox
,
singleType
}
=
this
.
state
;
console
.
log
(
course_info
);
let
courseInfo
=
''
,
service
=
''
,
...
...
@@ -225,8 +276,14 @@ class Detail extends Component {
}
// }
const
{
share
,
countdown
,
list
,
outList
}
=
this
.
state
;
const
href
=
this
.
props
.
location
&&
this
.
props
.
location
.
state
?
this
.
props
.
location
.
state
.
href
:
undefined
;
let
href
=
this
.
props
.
location
&&
this
.
props
.
location
.
state
?
this
.
props
.
location
.
state
.
href
:
undefined
;
const
{
location
:
{
state
=
{}}
}
=
this
.
props
;
if
(
state
.
oid
)
{
href
=
'/classify'
}
return
(
<
div
>
<
div
className
=
'detail-box'
>
<
HeaderBar
title
=
'课程详情'
...
...
@@ -302,15 +359,28 @@ class Detail extends Component {
<
Audition
auditionBox
=
{
this
.
state
.
auditionBox
}
boxHide
=
{
this
.
boxHide
}
/
>
{
/*单集购买弹窗*/
}
{
singleBox
&&
<
Single
singleType
=
{
this
.
state
.
singleType
}
singleBox
=
{
this
.
state
.
singleBox
}
boxHide
=
{
this
.
boxHide
}
data
=
{
this
.
state
.
singMess
}
vcourseId
=
{
course_info
.
v_course_id
}
videoId
=
{
this
.
state
.
singMess
.
video_id
}
title
=
{
course_info
.
course_title
}
/
>
check
=
{
this
.
check
}
/>
}
{
/* 单集购买成功弹窗 */
}
{
singleType
!=
1
&&
<
SingleSuccess
boxHide
=
{
this
.
boxHide
}
data
=
{
this
.
state
.
singMess
}
singleType
=
{
singleType
}
videoId
=
{
this
.
state
.
singMess
.
video_id
}
/
>
}
{
/*分享赚钱*/
}
{
course_info
.
is_dist
&&
...
...
@@ -376,6 +446,7 @@ class Detail extends Component {
)
:
null
}
<
/div
>
<
/div
>
)
}
...
...
src/components/detail/single/index.js
View file @
96352f1f
...
...
@@ -12,7 +12,7 @@ class Single extends Component {
constructor
(
props
)
{
super
(
props
)
this
.
state
=
{
status
:
1
,
//
status: 1,
orderId
:
''
,
nowPrice
:
''
,
laterPrice
:
''
,
...
...
@@ -22,55 +22,25 @@ class Single extends Component {
endTime
:
''
,
groupOrderId
:
''
,
payType
:
'0'
,
// 1支付宝 0微信
singleBox
:
false
,
//
singleBox: false,
}
}
componentDidMount
()
{
if
(
getParam
(
'is_class'
)
===
1
||
getParam
(
'weixinpay'
))
{
this
.
payCallback
()
}
if
(
browser
.
isWeixin
)
{
this
.
isweixinPay
()
}
const
{
location
:
{
state
=
{}
}
}
=
this
.
props
;
console
.
log
(
state
);
if
(
state
.
oid
)
{
http
.
get
(
`
${
API
[
'base-api'
]}
/sys/orderStatus/
${
state
.
oid
}
`
).
then
((
res
)
=>
{
if
(
res
.
data
.
data
.
errno
==
'200'
)
{
// 正常购买单集成功
this
.
setState
({
status
:
6
})
}
else
if
(
res
.
data
.
data
.
errno
==
'201'
)
{
// 0元参团
this
.
setState
({
status
:
4
})
}
else
if
(
res
.
data
.
data
.
errno
==
'202'
)
{
// 0元购
this
.
setState
({
status
:
3
})
}
else
if
(
res
.
data
.
data
.
errno
==
'203'
)
{
// 三天内特价
this
.
setState
({
nowPrice
:
res
.
data
.
data
.
data
.
now_price
,
laterPrice
:
res
.
data
.
data
.
data
.
three_day_later_price
,
status
:
2
})
}
else
{
Toast
.
info
(
res
.
data
.
data
.
msg
,
2
)
}
})
}
// if (getParam('is_class') === 1 || getParam('weixinpay')) {
// console.log(0);
// this.payCallback()
// }
// if (browser.isWeixin) {
// this.isweixinPay()
// }
}
componentWillReceiveProps
(
nextProps
,
nextContext
)
{
this
.
setState
({
singleBox
:
nextProps
.
singleBox
})
// console.log(nextProps);
// this.setState({
// singleBox: nextProps.singleBox
// })
}
// 选择支付方式
...
...
@@ -344,14 +314,15 @@ class Single extends Component {
})
},
1000
)
}
const
{
singleType
}
=
this
.
props
;
console
.
log
(
this
.
state
.
singleBox
);
return
(
<
div
>
{
singleBox
&&
<
div
className
=
'popup-box'
>
{
this
.
state
.
status
===
1
&&
singleType
===
1
&&
<
div
className
=
'content singleset-payment'
>
<
div
className
=
'price-box'
>
<
span
>
实付款:
<
/span
>
...
...
@@ -386,7 +357,7 @@ class Single extends Component {
<
/div
>
}
{
this
.
state
.
status
===
2
&&
singleType
===
2
&&
<
div
className
=
'content payment-success'
>
<
div
className
=
"header"
>
<
i
className
=
'iconfont icondanseshixintubiao-5'
><
/i
>
...
...
@@ -400,7 +371,7 @@ class Single extends Component {
<
/div
>
}
{
this
.
state
.
status
===
3
&&
singleType
===
3
&&
<
div
className
=
'content zero'
>
<
div
className
=
"header"
>
<
i
className
=
'iconfont icondanseshixintubiao-5'
><
/i
>
...
...
@@ -411,7 +382,7 @@ class Single extends Component {
<
/div
>
}
{
this
.
state
.
status
===
4
&&
singleType
===
4
&&
<
div
className
=
'content zero'
>
<
div
className
=
"header"
>
<
i
className
=
'iconfont icondanseshixintubiao-5'
><
/i
>
...
...
@@ -422,7 +393,7 @@ class Single extends Component {
<
/div
>
}
{
this
.
state
.
status
===
6
&&
singleType
===
6
&&
<
div
className
=
'content zero'
>
<
div
className
=
"header"
>
<
i
className
=
'iconfont icondanseshixintubiao-5'
><
/i
>
...
...
@@ -432,7 +403,7 @@ class Single extends Component {
<
/div
>
}
{
this
.
state
.
status
===
7
&&
singleType
===
7
&&
<
div
className
=
'content group'
>
<
div
className
=
"header"
>
<
i
className
=
'iconfont icondanseshixintubiao-5'
><
/i
>
...
...
@@ -456,7 +427,7 @@ class Single extends Component {
}
<
i
onClick
=
{
this
.
colse
}
className
=
{
'iconfont iconiconfront-2 close'
}
><
/i
>
<
/div
>
}
<
/div
>
);
...
...
src/components/detail/single/index.scss
View file @
96352f1f
...
...
@@ -5,7 +5,7 @@
right
:
0
;
bottom
:
0
;
background-color
:
rgba
(
0
,
0
,
0
,
.6
);
z-index
:
2
;
z-index
:
5
;
.content
{
width
:
300px
;
...
...
src/components/detail/single/singleSuccess.js
0 → 100644
View file @
96352f1f
import
React
,
{
Component
}
from
'react'
import
'./index.scss'
import
{
getParam
,
http
,
browser
}
from
"@/utils"
;
import
{
Toast
}
from
'antd-mobile'
;
import
{
Link
,
withRouter
}
from
"react-router-dom"
;
import
{
compose
}
from
"redux"
;
import
{
connect
}
from
"react-redux"
;
import
{
differenceInHours
,
differenceInMinutes
,
differenceInSeconds
}
from
"date-fns"
;
class
Single
extends
Component
{
constructor
(
props
)
{
super
(
props
)
this
.
state
=
{
// status: 1,
orderId
:
''
,
nowPrice
:
''
,
laterPrice
:
''
,
hour
:
''
,
min
:
''
,
sec
:
''
,
endTime
:
''
,
groupOrderId
:
''
,
payType
:
'0'
,
// 1支付宝 0微信
// singleBox: false,
}
}
componentDidMount
()
{
if
(
getParam
(
'is_class'
)
===
1
||
getParam
(
'weixinpay'
))
{
console
.
log
(
0
);
this
.
payCallback
()
}
if
(
browser
.
isWeixin
)
{
this
.
isweixinPay
()
}
}
componentWillReceiveProps
(
nextProps
,
nextContext
)
{
// console.log(nextProps);
// this.setState({
// singleBox: nextProps.singleBox
// })
}
// 选择支付方式
check
=
(
type
)
=>
{
this
.
setState
({
payType
:
type
})
}
// 确定购买
toBuy
=
()
=>
{
http
.
get
(
`
${
API
.
home
}
/sys/createClassOrder/
${
this
.
props
.
data
.
video_id
}
`
).
then
((
res
)
=>
{
if
(
res
.
data
.
code
===
200
)
{
this
.
setState
({
orderId
:
res
.
data
.
data
.
order_id
})
this
.
state
.
payType
===
'1'
?
this
.
alipayPay
(
res
.
data
.
data
.
order_id
)
:
this
.
weixinPay
(
res
.
data
.
data
.
order_id
)
}
else
{
Toast
.
info
(
res
.
data
.
msg
,
2
)
}
})
}
// 微信支付
weixinPay
=
(
orderId
)
=>
{
// 微信内部-支付
if
(
browser
.
isWeixin
)
{
window
.
location
.
href
=
"https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx23dac6775ac82877&redirect_uri="
+
encodeURIComponent
(
window
.
location
.
href
+
"&aa=bb&oid="
+
orderId
).
toLowerCase
()
+
"&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect"
;
}
else
{
// 微信外部-支付
http
.
get
(
`
${
API
[
'base-api'
]}
/pay/wxpay/wap_charge/oid/
${
orderId
}
`
).
then
((
res
)
=>
{
if
(
res
.
data
.
errno
===
0
)
{
window
.
location
.
href
=
res
.
data
.
data
.
url
+
"&redirect_url="
+
encodeURIComponent
(
window
.
location
.
href
+
"&weixinpay=1&oid="
+
orderId
).
toLowerCase
();
}
else
{
Toast
.
info
(
res
.
data
.
msg
,
2
)
}
})
}
}
// 支付宝支付
alipayPay
=
(
orderId
)
=>
{
const
courseId
=
getParam
(
'id'
);
http
.
get
(
`
${
API
[
'base-api'
]}
/pay/alipay/wap_charge_new/oid/
${
orderId
}
`
).
then
((
res
)
=>
{
if
(
res
.
data
.
errno
===
0
)
{
window
.
location
=
res
.
data
.
data
.
url
;
courseId
&&
window
.
localStorage
.
setItem
(
'payCourse'
,
courseId
);
}
else
{
Toast
.
info
(
res
.
data
.
msg
,
2
)
}
})
}
// 微信内部支付
isweixinPay
=
()
=>
{
let
_this
=
this
;
let
weixin_code
=
getParam
(
'code'
)
if
(
weixin_code
)
{
if
(
!
getParam
(
'oid'
))
{
return
}
else
{
http
.
get
(
`
${
API
[
'base-api'
]}
/pay/wxpay/pub_charge/oid/
${
getParam
(
'oid'
)}
/code/
${
weixin_code
}
`
).
then
((
res
)
=>
{
if
(
res
.
data
.
errno
===
0
)
{
const
data
=
res
.
data
.
data
;
function
onBridgeReady
()
{
WeixinJSBridge
.
invoke
(
'getBrandWCPayRequest'
,
{
"appId"
:
data
.
appId
,
//公众号名称,由商户传入
"timeStamp"
:
data
.
timeStamp
,
//时间戳,自1970年以来的秒数
"nonceStr"
:
data
.
nonceStr
,
//随机串
"package"
:
data
.
package
,
"signType"
:
data
.
signType
,
//微信签名方式:
"paySign"
:
data
.
paySign
//微信签名
},
function
(
res
)
{
if
(
res
.
err_msg
==
"get_brand_wcpay_request:ok"
)
{
Toast
.
info
(
'支付成功'
,
2
);
_this
.
intervalPayStatus
=
setInterval
(
function
()
{
http
.
get
(
`
${
API
[
'base-api'
]}
/m/orderState/oid/
${
getParam
(
'oid'
)}
`
).
then
(
res
=>
{
if
(
res
.
data
.
errno
===
401
)
{
clearInterval
(
_this
.
intervalPayStatus
);
_this
.
intervalPayStatus
=
null
;
// 获取课程类型
http
.
get
(
`
${
API
[
'base-api'
]}
/class_order_status/
${
getParam
(
'oid'
)}
`
).
then
((
res
)
=>
{
if
(
Number
(
res
.
data
.
data
.
errno
)
===
200
)
{
// 正常购买单集成功
this
.
setState
({
status
:
6
,
showSingleBox
:
true
,
})
}
else
if
(
Number
(
res
.
data
.
data
.
errno
)
===
201
)
{
// 0元参团
this
.
setState
({
status
:
4
,
showSingleBox
:
true
,
})
}
else
if
(
Number
(
res
.
data
.
data
.
errno
)
===
202
)
{
// 0元购
this
.
setState
({
status
:
3
,
showSingleBox
:
true
,
})
}
else
if
(
Number
(
res
.
data
.
data
.
errno
)
===
203
)
{
// 三天内特价
this
.
setState
({
nowPrice
:
res
.
data
.
data
.
data
.
now_price
,
laterPrice
:
res
.
data
.
data
.
data
.
three_day_later_price
,
status
:
2
,
showSingleBox
:
true
,
})
}
else
{
Toast
.
info
(
res
.
data
.
data
.
msg
,
2
)
}
})
}
})
},
1000
)
}
else
{
alert
(
'支付失败'
)
}
}
)
}
if
(
typeof
WeixinJSBridge
==
"undefined"
)
{
if
(
document
.
addEventListener
)
{
document
.
addEventListener
(
'WeixinJSBridgeReady'
,
onBridgeReady
,
false
)
}
else
if
(
document
.
attachEvent
)
{
document
.
attachEvent
(
'WeixinJSBridgeReady'
,
onBridgeReady
)
document
.
attachEvent
(
'onWeixinJSBridgeReady'
,
onBridgeReady
)
}
}
else
{
onBridgeReady
()
}
}
else
{
Toast
.
info
(
res
.
data
.
msg
,
2
)
}
})
}
}
}
// 支付完成之后获取状态
payCallback
=
()
=>
{
const
_this
=
this
;
if
(
getParam
(
'oid'
))
{
_this
.
intervalPayStatus
=
setInterval
(
function
()
{
http
.
get
(
`
${
API
[
'base-api'
]}
/m/orderState/oid/
${
getParam
(
'oid'
)}
`
).
then
(
res
=>
{
if
(
res
.
data
.
errno
===
401
)
{
clearInterval
(
_this
.
intervalPayStatus
);
_this
.
intervalPayStatus
=
null
;
// 获取课程类型
http
.
get
(
`
${
API
[
'base-api'
]}
/class_order_status/
${
getParam
(
'oid'
)}
`
).
then
((
res
)
=>
{
if
(
Number
(
res
.
data
.
data
.
errno
)
===
200
)
{
// 正常购买单集成功
this
.
setState
({
status
:
6
,
showSingleBox
:
true
,
})
}
else
if
(
Number
(
res
.
data
.
data
.
errno
)
===
201
)
{
// 0元参团
this
.
setState
({
status
:
4
,
showSingleBox
:
true
,
})
}
else
if
(
Number
(
res
.
data
.
data
.
errno
)
===
202
)
{
// 0元购
this
.
setState
({
status
:
3
,
showSingleBox
:
true
,
})
}
else
if
(
Number
(
res
.
data
.
data
.
errno
)
===
203
)
{
// 三天内特价
this
.
setState
({
nowPrice
:
res
.
data
.
data
.
data
.
now_price
,
laterPrice
:
res
.
data
.
data
.
data
.
three_day_later_price
,
status
:
2
,
showSingleBox
:
true
,
})
}
else
{
Toast
.
info
(
res
.
data
.
data
.
msg
,
2
)
}
})
}
})
},
1000
)
}
}
// 特价购买全集
toBuyAll
=
()
=>
{
}
// 0元购买全集
zerobuyReceive
=
()
=>
{
Toast
.
success
(
'购买全集成功'
,
3
)
this
.
colse
()
}
// 0元参团
zerogroupBuy
=
()
=>
{
this
.
getOrderId
()
}
// 获取订单号-0元参团
getOrderId
=
()
=>
{
let
data
=
{
course_id
:
getParam
(
'id'
)
}
http
.
post
(
`
${
API
[
'base-api'
]}
/pdd/sys`
,
data
).
then
((
res
)
=>
{
if
(
res
.
data
.
errno
===
0
)
{
this
.
setState
({
groupOrderId
:
res
.
data
.
data
.
order_id
})
this
.
getOrderStatus
(
res
.
data
.
data
.
order_id
)
}
else
{
Toast
.
info
(
res
.
data
.
msg
,
2
)
}
})
}
// 获取订单状态-0元参团
getOrderStatus
=
(
id
)
=>
{
http
.
get
(
`
${
API
.
home
}
/m/pdd/order_status/
${
id
}
`
).
then
((
res
)
=>
{
if
(
res
.
data
.
code
===
200
)
{
this
.
getTime
(
res
.
data
.
data
.
pdd_order_id
)
}
else
{
Toast
.
info
(
res
.
data
.
msg
,
2
)
}
})
}
// 获取倒计时-0元参团
getTime
=
(
id
)
=>
{
http
.
get
(
`
${
API
.
home
}
/m/pdd_order_end_time/
${
id
}
`
).
then
((
res
)
=>
{
if
(
res
.
data
.
code
===
200
)
{
this
.
setState
({
endTime
:
res
.
data
.
data
.
end_time
,
status
:
7
})
}
else
{
Toast
.
info
(
res
.
data
.
msg
,
2
)
}
})
}
// 邀请好友参团
toGroup
=
()
=>
{
this
.
props
.
history
.
push
(
`/togroup?id=
${
this
.
state
.
groupOrderId
}
`
)
}
// 关闭弹窗
colse
=
()
=>
{
this
.
props
.
boxHide
(
false
);
this
.
setState
({
status
:
1
})
}
render
()
{
let
{
singleBox
}
=
this
.
state
;
if
(
this
.
state
.
endTime
)
{
let
date
=
this
.
state
.
endTime
*
1000
let
now
=
Date
.
now
()
setInterval
(()
=>
{
date
-=
1000
let
s
=
differenceInSeconds
(
new
Date
(
date
),
now
)
%
60
,
m
=
differenceInMinutes
(
new
Date
(
date
),
now
)
%
60
,
h
=
differenceInHours
(
new
Date
(
date
),
now
)
%
24
this
.
setState
({
hour
:
h
,
min
:
m
,
sec
:
s
,
})
},
1000
)
}
const
{
singleType
}
=
this
.
props
;
console
.
log
(
this
.
state
.
singleBox
);
return
(
<
div
className
=
'popup-box'
>
{
singleType
===
2
&&
<
div
className
=
'content payment-success'
>
<
div
className
=
"header"
>
<
i
className
=
'iconfont icondanseshixintubiao-5'
><
/i
>
<
span
>
购买成功
<
/span
>
<
/div
>
<
div
className
=
"dec"
>
·
3
天内购买全集,可直接抵扣该集费用,
{
this
.
state
.
nowPrice
}
元购买。
<
/div
>
<
div
className
=
"dec"
>
·
超过
3
天,按照未够集数
/
全部集数等比例计费,
{
this
.
state
.
laterPrice
}
元购买全集。
<
/div
>
<
Link
to
=
{
`/play/video?id=
${
this
.
props
.
vcourseId
}
&video_id=
${
this
.
props
.
data
.
video_id
}
`
}
className
=
'btn btn-18B4ED'
>
开始学习
<
/Link
>
<
div
className
=
'btn btn-FF4000'
onclick
=
{
this
.
toBuyAll
()}
>
¥
{
this
.
state
.
nowPrice
}
购买全集
<
/div
>
<
/div
>
}
{
singleType
===
3
&&
<
div
className
=
'content zero'
>
<
div
className
=
"header"
>
<
i
className
=
'iconfont icondanseshixintubiao-5'
><
/i
>
<
span
>
购买成功
<
/span
>
<
/div
>
<
div
className
=
"dec"
>
·
恭喜您获得
0
元拼团购买剩余课时的机会。
<
/div
>
<
div
className
=
'btn btn-FF4000'
onClick
=
{
this
.
zerogroupBuy
}
>
0
元参团
<
/div
>
<
/div
>
}
{
singleType
===
4
&&
<
div
className
=
'content zero'
>
<
div
className
=
"header"
>
<
i
className
=
'iconfont icondanseshixintubiao-5'
><
/i
>
<
span
>
购买成功
<
/span
>
<
/div
>
<
div
className
=
"dec"
>
·
恭喜您获得
0
元购买剩余课时的机会。
<
/div
>
<
div
className
=
'btn btn-FF4000'
onClick
=
{
this
.
zerobuyReceive
}
>
0
元购
<
/div
>
<
/div
>
}
{
singleType
===
6
&&
<
div
className
=
'content zero'
>
<
div
className
=
"header"
>
<
i
className
=
'iconfont icondanseshixintubiao-5'
><
/i
>
<
span
>
购买成功
<
/span
>
<
/div
>
<
Link
to
=
{
`/play/video?id=
${
this
.
props
.
vcourseId
}
&video_id=
${
this
.
props
.
data
.
video_id
}
`
}
className
=
'btn btn-18B4ED'
>
去学习
<
/Link
>
<
/div
>
}
{
singleType
===
7
&&
<
div
className
=
'content group'
>
<
div
className
=
"header"
>
<
i
className
=
'iconfont icondanseshixintubiao-5'
><
/i
>
<
span
>
参团成功
<
/span
>
<
/div
>
<
div
className
=
'group-img'
>
<
img
src
=
{
this
.
props
.
user
.
data
.
avatar
}
alt
=
""
/>
<
img
src
=
"https://julyedu-cdn.oss-cn-beijing.aliyuncs.com/images/weekend/train7/ellipsis.png"
alt
=
""
/>
<
img
src
=
"https://julyedu-cdn.oss-cn-beijing.aliyuncs.com/images/weekend/train7/ellipsis.png"
alt
=
""
/>
<
/div
>
<
div
className
=
'btn-l btn-FF4000'
onClick
=
{
this
.
toGroup
}
>
剩余
{
String
(
this
.
state
.
hour
).
padStart
(
2
,
0
)}
:
{
String
(
this
.
state
.
min
).
padStart
(
2
,
0
)}
:
{
String
(
this
.
state
.
sec
).
padStart
(
2
,
0
)}
邀请好友参团
<
/div
>
<
/div
>
}
<
i
onClick
=
{
this
.
colse
}
className
=
{
'iconfont iconiconfront-2 close'
}
><
/i
>
<
/div
>
);
}
}
export
default
compose
(
connect
(
state
=>
({
user
:
state
.
user
}),
null
),
withRouter
)(
Single
)
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment