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
4976342b
Commit
4976342b
authored
Dec 11, 2019
by
FE
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
split first step success
parent
844f037b
Show whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
501 additions
and
228 deletions
+501
-228
src/common/bindPhone/index.js
+40
-29
src/common/confirmPhone/index.js
+20
-1
src/components/activity/newyear-2019/common/splitSuccess/index.js
+58
-29
src/components/activity/newyear-2019/common/splitSuccess/index.scss
+1
-1
src/components/activity/newyear-2019/myTreasure/index.js
+244
-30
src/components/activity/newyear-2019/myTreasure/prize.js
+80
-0
src/components/activity/newyear-2019/myTreasure/prize.scss
+13
-0
src/components/activity/newyear-2019/myTreasure/team.js
+33
-138
src/components/activity/newyear-2019/myTreasure/team.scss
+12
-0
No files found.
src/common/bindPhone/index.js
View file @
4976342b
...
@@ -7,11 +7,12 @@ import { http, getParam } from '@/utils';
...
@@ -7,11 +7,12 @@ import { http, getParam } from '@/utils';
import
'./index.scss'
;
import
'./index.scss'
;
class
BindPhone
extends
Component
{
class
BindPhone
extends
Component
{
captchaInstance
=
null
;
constructor
(
props
)
{
constructor
(
props
)
{
super
(
props
),
super
(
props
),
this
.
state
=
{
this
.
state
=
{
validate
:
''
,
validate
:
''
,
captchaInstance
:
null
,
seconds
:
60
,
seconds
:
60
,
isFirst
:
true
,
isFirst
:
true
,
timer
:
null
,
timer
:
null
,
...
@@ -24,12 +25,27 @@ class BindPhone extends Component {
...
@@ -24,12 +25,27 @@ class BindPhone extends Component {
}
}
}
}
getCaptchaInstance
=
instance
=>
{
componentDidMount
()
{
this
.
initCountryInfo
();
}
initCountryInfo
=
()
=>
{
const
{
country
}
=
this
.
props
;
this
.
setState
({
this
.
setState
({
c
aptchaInstance
:
instance
c
ountry
});
});
}
}
toFetchCountryNum
=
()
=>
{
const
{
history
,
hideBindPhone
}
=
this
.
props
;
hideBindPhone
();
history
.
push
(
'/country'
);
}
getCaptchaInstance
=
instance
=>
{
this
.
captchaInstance
=
instance
;
}
onVerify
=
(
err
,
data
)
=>
{
onVerify
=
(
err
,
data
)
=>
{
if
(
err
)
{
if
(
err
)
{
console
.
log
(
err
);
console
.
log
(
err
);
...
@@ -40,12 +56,13 @@ class BindPhone extends Component {
...
@@ -40,12 +56,13 @@ class BindPhone extends Component {
}
}
}
}
// 获取手机号验证码
handleToSend
=
({
tel
,
code
})
=>
{
handleToSend
=
({
tel
,
code
})
=>
{
let
{
validate
,
seconds
,
isFirst
,
isTimer
,
c
aptchaInstance
,
c
ountry
:
{
num
=
'86'
}
}
=
this
.
state
;
let
{
validate
,
seconds
,
isFirst
,
isTimer
,
country
:
{
num
=
'86'
}
}
=
this
.
state
;
if
(
validate
)
{
if
(
validate
)
{
if
(
!
isFirst
)
{
if
(
!
isFirst
)
{
Toast
.
info
(
'请重新进行滑块验证'
,
2
,
null
,
false
);
Toast
.
info
(
'请重新进行滑块验证'
,
2
,
null
,
false
);
captchaInstance
.
refresh
();
this
.
captchaInstance
.
refresh
();
this
.
setState
({
this
.
setState
({
isFirst
:
true
isFirst
:
true
});
});
...
@@ -55,7 +72,6 @@ class BindPhone extends Component {
...
@@ -55,7 +72,6 @@ class BindPhone extends Component {
if
(
!
tel
)
{
if
(
!
tel
)
{
Toast
.
info
(
'手机号码不能为空'
,
2
,
null
,
false
);
Toast
.
info
(
'手机号码不能为空'
,
2
,
null
,
false
);
}
else
if
(
!
/^
\d
+$/
.
test
(
tel
))
{
}
else
if
(
!
/^
\d
+$/
.
test
(
tel
))
{
// }else if (!validateTel(tel)) {
Toast
.
info
(
'请输入正确格式的手机号码'
,
2
,
null
,
false
);
Toast
.
info
(
'请输入正确格式的手机号码'
,
2
,
null
,
false
);
}
else
{
}
else
{
...
@@ -102,32 +118,29 @@ class BindPhone extends Component {
...
@@ -102,32 +118,29 @@ class BindPhone extends Component {
}
}
// 绑定手机
// 绑定手机
toContinueBind
=
(
isValid
=
1
)
=>
{
toBindPhone
=
()
=>
{
const
{
accountInfo
:
{
tel
,
code
},
country
:
{
num
=
'86'
}
}
=
this
.
state
;
const
{
accountInfo
:
{
tel
,
code
},
country
:
{
num
=
'86'
}
}
=
this
.
state
;
// is_valid 是否验证 1:验证(默认),0不验证
const
{
handleToConfirmPhone
,
successBindPhone
}
=
this
.
props
;
http
.
post
(
const
params
=
{
`
${
API
[
'passport-api'
]}
/m/personal/bindPhone`
,
{
area_code
:
`00
${
num
}
`
,
area_code
:
`00
${
num
}
`
,
phone_num
:
tel
,
mobile
:
tel
,
code
:
code
,
code
:
code
,
type
:
1
,
act_type
:
'treasure'
,
// 宝箱
is_valid
:
isValid
};
http
.
post
(
`
${
API
.
home
}
/sys/v2/user/bindMobile`
,
{
...
params
,
type
:
1
,
// 1:绑定,2:修改绑定
is_valid
:
1
,
// is_valid 是否验证 1:验证(默认),0不验证
}
}
).
then
(
res
=>
{
).
then
(
res
=>
{
const
{
errno
,
data
,
msg
}
=
res
.
data
;
const
{
errno
,
data
,
msg
}
=
res
.
data
;
if
(
errno
===
200
)
{
if
(
errno
===
200
)
{
if
(
isValid
)
{
if
(
data
.
tip_info
)
{
if
(
data
.
tip_info
)
{
this
.
setState
({
handleToConfirmPhone
(
params
,
data
.
tip_info
);
type
:
10
,
bindInfo
:
data
.
tip_info
})
}
else
{
this
.
receviceAfterBind
();
}
}
else
{
}
else
{
this
.
receviceAfterBind
();
successBindPhone
();
}
}
}
else
{
}
else
{
Toast
.
info
(
msg
,
2
,
null
,
false
);
Toast
.
info
(
msg
,
2
,
null
,
false
);
...
@@ -137,7 +150,7 @@ class BindPhone extends Component {
...
@@ -137,7 +150,7 @@ class BindPhone extends Component {
render
()
{
render
()
{
const
{
desc
,
skip
=
'year'
}
=
this
.
props
;
const
{
desc
,
skip
=
'year'
}
=
this
.
props
;
const
{
country
,
validate
,
isTimer
}
=
this
.
state
;
const
{
country
,
validate
,
isTimer
,
seconds
}
=
this
.
state
;
return
(
return
(
<
Formik
<
Formik
initialValues
=
{{
initialValues
=
{{
...
@@ -163,7 +176,7 @@ class BindPhone extends Component {
...
@@ -163,7 +176,7 @@ class BindPhone extends Component {
...
values
...
values
}
}
});
});
this
.
to
ContinueBind
();
this
.
to
BindPhone
();
}}
}}
render
=
{({
values
:
{
tel
,
code
},
errors
})
=>
(
render
=
{({
values
:
{
tel
,
code
},
errors
})
=>
(
<
Form
className
=
"popup-form"
data
-
skip
=
{
skip
}
>
<
Form
className
=
"popup-form"
data
-
skip
=
{
skip
}
>
...
@@ -172,9 +185,7 @@ class BindPhone extends Component {
...
@@ -172,9 +185,7 @@ class BindPhone extends Component {
<
div
className
=
"poup-form__desc"
>
{
desc
}
<
/div
>
<
div
className
=
"poup-form__desc"
>
{
desc
}
<
/div
>
}
}
<
div
className
=
"popup-form__item"
>
<
div
className
=
"popup-form__item"
>
<
a
<
a
className
=
"popup-form__button--num"
onClick
=
{
this
.
toFetchCountryNum
}
>
className
=
"popup-form__button--num"
to
=
{
`/country?id=
${
getParam
(
'id'
)}
&share_code`
}
>
+
{
country
.
num
}
+
{
country
.
num
}
<
i
className
=
"iconfont iconiconfront-69"
/>
<
i
className
=
"iconfont iconiconfront-69"
/>
<
/a
>
<
/a
>
...
...
src/common/confirmPhone/index.js
View file @
4976342b
...
@@ -2,6 +2,25 @@ import React, { Component } from 'react';
...
@@ -2,6 +2,25 @@ import React, { Component } from 'react';
import
'./index.scss'
;
import
'./index.scss'
;
class
ConfirmPhone
extends
Component
{
class
ConfirmPhone
extends
Component
{
continueBindPhone
=
()
=>
{
const
{
data
,
successBindPhone
}
=
this
.
props
;
http
.
post
(
`
${
API
.
home
}
/sys/v2/user/bindMobile`
,
{
...
data
,
type
:
1
,
// 1:绑定,2:修改绑定
is_valid
:
0
,
// is_valid 是否验证 1:验证(默认),0不验证
}
).
then
(
res
=>
{
const
{
errno
,
msg
}
=
res
.
data
;
if
(
errno
===
200
)
{
successBindPhone
();
}
else
{
Toast
.
info
(
msg
,
2
,
null
,
false
);
}
});
}
render
()
{
render
()
{
const
{
bindInfo
=
{
},
desc
,
skip
=
'year'
}
=
this
.
props
;
const
{
bindInfo
=
{
},
desc
,
skip
=
'year'
}
=
this
.
props
;
return
(
return
(
...
@@ -55,7 +74,7 @@ class ConfirmPhone extends Component {
...
@@ -55,7 +74,7 @@ class ConfirmPhone extends Component {
onClick
=
{()
=>
this
.
handleToClose
(
false
)}
>
取消
<
/button
>
onClick
=
{()
=>
this
.
handleToClose
(
false
)}
>
取消
<
/button
>
<
button
<
button
className
=
"popup-bind__button popup-bind__button--confirm"
className
=
"popup-bind__button popup-bind__button--confirm"
onClick
=
{
()
=>
this
.
toContinueBind
(
0
)
}
>
继续绑定
<
/button
>
onClick
=
{
this
.
continueBindPhone
}
>
继续绑定
<
/button
>
<
/div
>
<
/div
>
<
/div
>
<
/div
>
)
)
...
...
src/components/activity/newyear-2019/common/splitSuccess/index.js
View file @
4976342b
...
@@ -2,44 +2,73 @@ import React, { Component } from 'react';
...
@@ -2,44 +2,73 @@ import React, { Component } from 'react';
import
'./index.scss'
;
import
'./index.scss'
;
class
SplitSuccess
extends
Component
{
class
SplitSuccess
extends
Component
{
computedBg
=
(
val
)
=>
{
return
val
?
{
backgroundImage
:
`url(
${
val
}
)`
}
:
{};
}
continueSplitTreasure
=
()
=>
{
const
{
ids
,
successSplitTreasure
,
handleToBindPhone
,
handleToBindAddress
}
=
this
.
props
;
const
params
=
ids
[
0
];
http
.
post
(
`
${
API
.
home
}
/sys/split_treasure`
,
params
).
then
(
res
=>
{
const
{
code
,
data
}
=
res
.
data
;
if
(
code
===
200
)
{
successSplitTreasure
();
}
else
if
(
code
===
12000
)
{
// 请先绑定手机号再拆宝箱
handleToBindPhone
();
}
else
if
(
code
===
12001
)
{
// 请先填写收货地址再拆宝箱
handleToBindAddress
();
}
})
}
render
()
{
render
()
{
const
{
handleToInvite
}
=
this
.
props
;
const
{
ids
,
data
:
{
member
=
[],
prize_img
,
prize_name
,
},
handleToInvite
,
children
,
}
=
this
.
props
;
return
(
return
(
<
div
data
-
skip
=
"split"
>
<
div
data
-
skip
=
"split"
>
<
div
className
=
"split-success__image"
>
<
div
className
=
"split-success__image"
>
<
img
src
=
""
alt
=
""
/>
<
img
src
=
{
prize_img
}
alt
=
""
/>
<
/div
>
<
/div
>
<
p
className
=
"split-success__prize"
>
AI100
题纸质书
<
/p
>
<
p
className
=
"split-success__prize"
>
{
prize_name
}
<
/p
>
<
a
href
=
""
className
=
"split-success__link"
>
<
span
>
查看
/
修改收货信息
<
/span
>
{
children
}
<
/a
>
<
div
className
=
"split-success__member"
>
<
div
className
=
"split-success__member"
>
<
div
className
=
"member-item"
>
{
<
span
className
=
"member-item__avatar"
>
member
.
map
((
item
,
index
)
=>
(
<
i
className
=
"member-item__captain"
>
队长
<
/i
>
<
div
className
=
"member-item"
key
=
{
index
}
>
<
/span
>
<
span
className
=
"member-item__avatar"
style
=
{
this
.
computedBg
(
item
.
avatar
)}
>
<
span
className
=
"member-item__prize"
>
AI100
题纸质书
<
/span
>
{
<
/div
>
item
.
is_captain
&&
<
i
className
=
"member-item__captain"
>
队长
<
/i
>
<
div
className
=
"member-item"
>
}
<
span
className
=
"member-item__avatar"
>
<
i
className
=
"member-item__captain"
>
队长
<
/i
>
<
/span
>
<
span
className
=
"member-item__prize"
>
AI100
题纸质书
<
/span
>
<
/div
>
<
div
className
=
"member-item"
>
<
span
className
=
"member-item__avatar"
>
<
i
className
=
"member-item__captain"
>
队长
<
/i
>
<
/span
>
<
span
className
=
"member-item__prize"
>
AI100
题纸质书
<
/span
>
<
/div
>
<
div
className
=
"member-item"
>
<
span
className
=
"member-item__avatar"
>
<
i
className
=
"member-item__captain"
>
队长
<
/i
>
<
/span
>
<
/span
>
<
span
className
=
"member-item__prize"
>
AI100
题纸质书
<
/span
>
{
item
.
prize
?
<
span
className
=
"member-item__prize"
>
{
item
.
prize
}
<
/span
>
:
<
span
className
=
"member-item__prize"
>
尚未拆开宝箱
<
/span
>
}
<
/div
>
<
/div
>
))
}
<
/div
>
<
/div
>
<
button
className
=
"split-success__jump"
onClick
=
{
handleToInvite
}
>
继续组队开宝箱
<
/button
>
{
ids
.
length
>
0
?
<
button
className
=
"split-success__jump"
onClick
=
{
this
.
continueSplitTreasure
}
>
继续开宝箱
<
/button
>
:
<
button
className
=
"split-success__jump"
onClick
=
{
handleToInvite
}
>
继续组队开宝箱
<
/button
>
}
<
/div
>
<
/div
>
);
);
}
}
...
...
src/components/activity/newyear-2019/common/splitSuccess/index.scss
View file @
4976342b
...
@@ -23,7 +23,7 @@
...
@@ -23,7 +23,7 @@
line-height
:
1
;
line-height
:
1
;
}
}
.
split-success__link
{
.
team-result
{
display
:
inline-block
;
display
:
inline-block
;
margin
:
8px
0
0
;
margin
:
8px
0
0
;
font-size
:
12px
;
font-size
:
12px
;
...
...
src/components/activity/newyear-2019/myTreasure/index.js
View file @
4976342b
import
React
,
{
Component
}
from
'react'
;
import
React
,
{
Component
}
from
'react'
;
import
{
connect
}
from
'react-redux'
;
import
{
HeaderBar
,
Popup
}
from
'@common'
;
import
{
HeaderBar
,
Popup
}
from
'@common'
;
import
AddressPopup
from
'@common/addressPopup/index'
;
import
AddressPopup
from
'@common/addressPopup/index'
;
import
BindPhone
from
'@common/bindPhone/index'
;
import
BindPhone
from
'@common/bindPhone/index'
;
import
ConfirmPhone
from
'@common/confirmPhone/index'
;
import
ConfirmPhone
from
'@common/confirmPhone/index'
;
import
TreasureTeam
from
'./team'
;
import
TreasureTeam
from
'./team'
;
import
{
http
}
from
'@/utils'
;
import
PrizeStatus
from
'./prize'
;
import
SplitSuccess
from
'./../common/splitSuccess/index'
;
import
{
http
,
getParam
}
from
'@/utils'
;
import
'./index.scss'
;
import
'./index.scss'
;
@
connect
(({
country
,
user
})
=>
({
country
,
userInfo
:
user
.
data
}))
class
MyTreasure
extends
Component
{
class
MyTreasure
extends
Component
{
popupInstance
=
null
;
constructor
(
props
)
{
constructor
(
props
)
{
super
(
props
);
super
(
props
);
...
@@ -16,43 +24,174 @@ class MyTreasure extends Component {
...
@@ -16,43 +24,174 @@ class MyTreasure extends Component {
isEmpty
:
false
,
isEmpty
:
false
,
seconds
:
3
,
seconds
:
3
,
teams
:
[],
teams
:
[],
bindInfo
:
{
ids
:
[],
// 未拆宝箱统计
email
:
'a'
,
bindInfo
:
{},
// 绑定手机号冲突信息
wechat_nickname
:
'b'
,
qq_nickname
:
'c'
,
sina_nickname
:
'd'
,
},
// 绑定手机号冲突信息
};
};
}
}
componentDidMount
()
{
componentDidMount
()
{
const
{
isEnd
,
bindInfo
}
=
this
.
state
;
const
{
isEnd
,
bindInfo
}
=
this
.
state
;
if
(
isEnd
)
{
if
(
isEnd
)
{
this
.
startCountDown
();
this
.
startCountDown
();
}
}
this
.
fetchMyTreasure
();
this
.
fetchMyTreasure
();
this
.
fetchActivityStatus
();
this
.
fetchActivityStatus
();
// 绑定地址--宝箱
}
Popup
({
// 页面加载时,是否需要拆宝箱
judgeIsHaveId
=
(
data
)
=>
{
const
id
=
getParam
(
'id'
);
if
(
id
)
{
const
newData
=
data
.
filter
(
item
=>
item
.
id
==
id
);
if
(
newData
.
length
>
0
)
{
const
params
=
{
team_num
:
newData
[
0
][
'team_num'
],
owner_uid
:
newData
[
0
][
'captain_uid'
]
};
this
.
toSplitTreasure
(
params
);
}
}
}
// 绑定手机号--展示
handleToBindPhone
=
(
id
)
=>
{
const
{
history
,
country
}
=
this
.
props
;
this
.
phoneInstance
=
Popup
({
title
:
'绑定手机号'
,
title
:
'绑定手机号'
,
content
:
<
BindPhone
desc
=
{
<>
content
:
<
BindPhone
history
=
{
history
}
country
=
{
country
}
hideBindPhone
=
{
this
.
hideBindPhone
.
bind
(
this
)}
handleToConfirmPhone
=
{
this
.
handleToConfirmPhone
}
successBindPhone
=
{()
=>
this
.
successBindPhone
(
id
)}
desc
=
{
<>
<
p
className
=
"phone-treasure__desc"
>
恭喜您获得
奖品名称(现金)
<
/p
>
<
p
className
=
"phone-treasure__desc"
>
恭喜您获得
奖品名称(现金)
<
/p
>
<
p
className
=
"phone-treasure__notice"
>
为了您的账户安全,请于
2019
年
12
月
31
日前绑定手机号,过期将失效
<
/p
>
<
p
className
=
"phone-treasure__notice"
>
为了您的账户安全,请于
2019
年
12
月
31
日前绑定手机号,过期将失效
<
/p
>
<
/>} /
>
<
/
>
}
/
>
});
});
}
}
handleToBindPhone
=
()
=>
{
// 绑定手机号--隐藏
hideBindPhone
()
{
if
(
this
.
phoneInstance
)
{
this
.
phoneInstance
.
close
();
}
}
}
handleToConfirmPhone
=
()
=>
{
// 绑定手机号--确认
handleToConfirmPhone
=
(
params
,
bindInfo
)
=>
{
this
.
confrimInstance
=
Popup
({
this
.
confrimInstance
=
Popup
({
title
:
'绑定确认'
,
title
:
'绑定确认'
,
content
:
<
ConfirmPhone
bindInfo
=
{
bindInfo
}
/
>
content
:
<
ConfirmPhone
data
=
{
params
}
bindInfo
=
{
bindInfo
}
successBindPhone
=
{
this
.
successBindPhone
}
/
>
});
});
}
}
// 绑定手机号--成功
successBindPhone
=
(
id
)
=>
{
const
{
teams
}
=
this
.
state
;
const
data
=
teams
.
map
(
item
=>
{
if
(
item
.
id
==
id
)
{
if
(
item
.
bind_address
)
{
this
.
handleToBindAddress
();
}
return
Object
.
assign
({},
item
,
{
bind_phone
:
false
,
});
}
return
item
;
})
this
.
setState
({
teams
:
data
});
}
// 拆宝箱--拆
toSplitTreasure
=
(
params
)
=>
{
const
{
ids
}
=
this
.
state
;
http
.
post
(
`
${
API
.
home
}
/sys/split_treasure`
,
params
).
then
(
res
=>
{
const
{
code
,
data
}
=
res
.
data
;
if
(
code
===
200
)
{
// 拆宝箱弹窗--成功
this
.
splitInstance
=
Popup
({
title
:
'恭喜你获得'
,
skip
:
'year'
,
content
:
<
SplitSuccess
ids
=
{
ids
}
data
=
{
data
}
handleToInvite
=
{
this
.
handleToInvite
}
successSplitTreasure
=
{()
=>
this
.
successSplitTreasure
(
data
)}
>
<
PrizeStatus
data
=
{
data
}
handleToBindPhone
=
{
this
.
handleToBindPhone
}
handleToBindAddress
=
{
this
.
handleToBindAddress
}
toComposeCoupon
=
{
this
.
toComposeCoupon
}
toUseCoupon
=
{
this
.
toUseCoupon
}
toCourseList
=
{
this
.
toCourseList
}
toFecthMoney
=
{
this
.
toFecthMoney
}
/
>
<
/SplitSuccess
>
});
// 跟新队伍状态
this
.
successSplitTreasure
(
data
);
if
(
data
.
bind_phone
)
{
setTimeout
(()
=>
{
this
.
handleToBindPhone
();
},
500
);
}
else
if
(
data
.
bind_address
)
{
setTimeout
(()
=>
{
this
.
handleToBindAddress
();
},
500
);
}
}
else
if
(
code
===
12000
)
{
// 绑定手机号
this
.
handleToBindPhone
();
}
else
if
(
code
===
12001
)
{
// 绑定地址
this
.
handleToBindAddress
();
}
});
}
// 拆宝箱--成功
successSplitTreasure
=
(
params
)
=>
{
const
{
userInfo
}
=
this
.
props
;
const
{
teams
}
=
this
.
state
;
const
data
=
teams
.
map
(
item
=>
{
if
(
item
.
id
==
params
.
id
)
{
return
Object
.
assign
({},
item
,
{
bind_phone
:
params
.
bind_phone
,
bind_address
:
params
.
bind_address
,
is_open
:
true
,
member
:
item
.
member
.
map
(
val
=>
{
if
(
val
.
uid
==
userInfo
.
uid
)
{
return
Object
.
assign
({},
val
,
{
is_open
:
true
,
prize_name
:
params
.
prize_name
});
}
return
val
;
})
});
}
else
{
return
item
;
}
});
this
.
initNoSplitInfo
(
data
);
this
.
setState
({
teams
:
data
});
}
// 绑定地址--展示
handleToBindAddress
=
()
=>
{
handleToBindAddress
=
()
=>
{
this
.
addressInstance
=
Popup
({
this
.
addressInstance
=
Popup
({
title
:
'收货信息'
,
title
:
'收货信息'
,
...
@@ -70,34 +209,51 @@ class MyTreasure extends Component {
...
@@ -70,34 +209,51 @@ class MyTreasure extends Component {
});
});
}
}
// 获取我的宝箱信息
fetchMyTreasure
=
()
=>
{
fetchMyTreasure
=
()
=>
{
http
.
get
(
`
${
API
.
home
}
/sys/treasure/my`
).
then
(
res
=>
{
http
.
get
(
`
${
API
.
home
}
/sys/treasure/my`
).
then
(
res
=>
{
const
{
code
,
data
}
=
res
.
data
;
const
{
code
,
data
}
=
res
.
data
;
if
(
code
===
200
)
{
if
(
code
===
200
)
{
this
.
rule
=
data
.
rule
;
this
.
rule
=
data
.
rule
;
if
(
Array
.
isArray
(
data
.
team
)
&&
data
.
team
.
length
>
0
)
{
if
(
Array
.
isArray
(
data
.
team
)
&&
data
.
team
.
length
>
0
)
{
const
teams
=
data
.
team
.
map
(
item
=>
{
this
.
initNoSplitInfo
(
data
.
team
);
return
Object
.
assign
({},
item
,
{
this
.
judgeIsHaveId
(
data
.
team
);
members
:
item
.
member
});
});
this
.
setState
({
this
.
setState
({
isEmpty
:
false
,
isEmpty
:
false
,
teams
,
teams
:
data
.
team
,
});
});
}
else
{
}
else
{
this
.
setState
({
this
.
setState
({
isEmpty
:
true
,
isEmpty
:
true
,
});
});
}
}
}
else
if
(
code
===
4030
||
code
===
4040
)
{
this
.
setState
({
isEmpty
:
true
,
});
}
}
});
});
}
}
// 统计未拆的宝箱信息
initNoSplitInfo
=
(
data
=
[])
=>
{
if
(
data
.
length
>
0
)
{
this
.
setState
({
ids
:
data
.
filter
(
item
=>
!
item
.
is_open
&&
item
.
status
===
2
).
map
(
val
=>
{
return
{
team_num
:
val
.
team_num
,
owner_uid
:
val
.
captain_uid
}
})
});
}
}
// 获取宝箱活动状态
fetchActivityStatus
=
()
=>
{
fetchActivityStatus
=
()
=>
{
http
.
get
(
`
${
API
.
home
}
/activity/stage`
).
then
(
res
=>
{
http
.
get
(
`
${
API
.
home
}
/activity/stage`
).
then
(
res
=>
{
const
{
code
,
data
}
=
res
.
data
;
const
{
code
,
data
}
=
res
.
data
;
if
(
code
===
200
)
{
if
(
code
===
200
)
{
// treasure_stage,宝箱阶段,0-不在活动时间,1-活动时间内
// treasure_stage,宝箱阶段,0-不在活动时间,1-活动时间内
this
.
setState
({
this
.
setState
({
...
@@ -110,7 +266,7 @@ class MyTreasure extends Component {
...
@@ -110,7 +266,7 @@ class MyTreasure extends Component {
startCountDown
=
()
=>
{
startCountDown
=
()
=>
{
const
{
history
}
=
this
.
props
;
const
{
history
}
=
this
.
props
;
let
{
seconds
}
=
this
.
state
;
let
{
seconds
}
=
this
.
state
;
if
(
this
.
timer
)
{
if
(
this
.
timer
)
{
clearInterval
(
this
.
timer
);
clearInterval
(
this
.
timer
);
}
}
this
.
setState
({
this
.
setState
({
...
@@ -120,7 +276,7 @@ class MyTreasure extends Component {
...
@@ -120,7 +276,7 @@ class MyTreasure extends Component {
this
.
setState
({
this
.
setState
({
seconds
:
seconds
--
seconds
:
seconds
--
});
});
if
(
seconds
===
0
)
{
if
(
seconds
===
0
)
{
this
.
setState
({
this
.
setState
({
seconds
:
0
seconds
:
0
});
});
...
@@ -130,15 +286,54 @@ class MyTreasure extends Component {
...
@@ -130,15 +286,54 @@ class MyTreasure extends Component {
},
1000
);
},
1000
);
}
}
updatedTreasureStatus
=
(
id
)
=>
{
console
.
log
(
id
);
}
// 邀请好友
handleToInvite
=
()
=>
{
const
{
history
}
=
this
.
props
;
const
{
team
}
=
this
.
state
;
history
.
push
(
`/activity/newyear-2019/landing?treasure_code=
${
team
.
treasure_code
}
&origin=1`
);
if
(
this
.
splitInstance
)
{
this
.
splitInstance
.
close
();
}
}
// 奖品,代金券碎片--合成
toComposeCoupon
=
()
=>
{
const
{
history
}
=
this
.
props
;
history
.
push
(
'/coupons/my-patch'
);
}
// 奖品,指定课程代金券--使用
toUseCoupon
=
()
=>
{
const
{
history
}
=
this
.
props
;
history
.
push
(
`/detail?id=
${
coupon
[
'limit_course'
]}
`
);
}
// 第三:奖品,通用课程代金券--使用
toCourseList
=
()
=>
{
const
{
history
}
=
this
.
props
;
history
.
push
(
'/classify'
);
}
// 第三:奖品,现金红包--提现
toFecthMoney
=
()
=>
{
const
{
history
}
=
this
.
props
;
history
.
push
(
'/scholarship'
);
}
render
()
{
render
()
{
const
{
isEnd
,
isEmpty
,
seconds
,
teams
}
=
this
.
state
;
const
{
history
,
userInfo
}
=
this
.
props
;
const
{
isEnd
,
isEmpty
,
seconds
,
teams
,
ids
}
=
this
.
state
;
return
(
return
(
<
div
data
-
skip
=
"treasure"
>
<
div
data
-
skip
=
"treasure"
>
<
HeaderBar
title
=
"我的宝箱"
arrow
=
{
true
}
/
>
<
HeaderBar
title
=
"我的宝箱"
arrow
=
{
true
}
/
>
{
{
isEnd
&&
isEnd
&&
<
p
className
=
"activity-end__desc"
>
<
p
className
=
"activity-end__desc"
>
活动已结束
<
br
/>
活动已结束
<
br
/>
{
seconds
}
s
后将自动返回首页
{
seconds
}
s
后将自动返回首页
<
/p
>
<
/p
>
}
}
...
@@ -159,9 +354,28 @@ class MyTreasure extends Component {
...
@@ -159,9 +354,28 @@ class MyTreasure extends Component {
<
TreasureTeam
<
TreasureTeam
data
=
{
item
}
data
=
{
item
}
key
=
{
index
}
key
=
{
index
}
userInfo
=
{
userInfo
}
history
=
{
history
}
splitInstance
=
{
this
.
splitInstance
}
toSplitTreasure
=
{()
=>
this
.
toSplitTreasure
({
team_num
:
item
.
team_num
,
owner_uid
:
item
.
captain_uid
})}
>
<
PrizeStatus
data
=
{{
bind_phone
:
item
.
bind_phone
,
bind_address
:
item
.
bind_address
,
prize_type
:
item
.
prize_type
,
}}
handleToBindPhone
=
{
this
.
handleToBindPhone
}
handleToBindPhone
=
{
this
.
handleToBindPhone
}
handleToBindAddress
=
{
this
.
handleToBindAddress
}
handleToBindAddress
=
{
this
.
handleToBindAddress
}
toComposeCoupon
=
{
this
.
toComposeCoupon
}
toUseCoupon
=
{
this
.
toUseCoupon
}
toCourseList
=
{
this
.
toCourseList
}
toFecthMoney
=
{
this
.
toFecthMoney
}
/
>
/
>
<
/TreasureTeam
>
))
))
}
}
<
/div
>
<
/div
>
...
...
src/components/activity/newyear-2019/myTreasure/prize.js
0 → 100644
View file @
4976342b
import
React
from
'react'
;
import
'./prize.scss'
;
export
default
(
props
)
=>
{
const
{
data
:
{
bind_phone
,
bind_address
,
prize_type
,
},
handleToBindPhone
,
handleToBindAddress
,
toComposeCoupon
,
toUseCoupon
,
toCourseList
,
toFecthMoney
,
}
=
props
;
return
(
<>
{
/* 第一:是否需要绑定手机号 */
}
{
bind_phone
&&
<
a
className
=
"team-result"
onClick
=
{
handleToBindPhone
}
>
<
span
>
绑定手机号
<
/span
>
<
/a
>
}
{
/* 第二:是否需要填写地址 */
}
{
(
!
bind_phone
&&
bind_address
)
&&
<
a
className
=
"team-result"
onClick
=
{
handleToBindAddress
}
>
<
span
>
查看
/
修改收货信息
<
/span
>
<
/a
>
}
{
/* 第三:奖品,代金券碎片 */
}
{
(
!
bind_phone
&&
!
bind_address
&&
prize_type
===
6
)
&&
<
a
className
=
"team-result"
onClick
=
{
toComposeCoupon
}
>
可合成代金券在购课时使用,
<
span
>
去合成
<
/span
>
<
/a
>
}
{
/* 第三:奖品,指定课程代金券 */
}
{
(
!
bind_phone
&&
!
bind_address
&&
prize_type
===
3
)
&&
<
a
className
=
"team-result"
onClick
=
{
toUseCoupon
}
>
已发放至您的账户,
<
span
>
去使用
<
/span
>
<
/a
>
}
{
/* 第三:奖品,通用课程代金券 */
}
{
(
!
bind_phone
&&
!
bind_address
&&
prize_type
===
4
)
&&
<
a
className
=
"team-result"
onClick
=
{
toCourseList
}
>
已发放至您的账户,
<
span
>
去使用
<
/span
>
<
/a
>
}
{
/* 第三:奖品,现金红包 */
}
{
(
!
bind_phone
&&
!
bind_address
&&
prize_type
===
7
)
&&
<
a
className
=
"team-result"
onClick
=
{
toFecthMoney
}
>
已存入您的账户,
<
span
>
去提现
<
/span
>
<
/a
>
}
{
/* 第三:奖品,线上课程 */
}
{
(
!
bind_phone
&&
!
bind_address
&&
prize_type
===
2
)
&&
<
a
className
=
"team-result"
>
已发放至您的账户
<
/a
>
}
<
/
>
)
}
\ No newline at end of file
src/components/activity/newyear-2019/myTreasure/prize.scss
0 → 100644
View file @
4976342b
.team-result
{
display
:
inline-block
;
margin
:
8px
0
0
;
font-size
:
12px
;
color
:
#666
;
text-align
:
center
;
line-height
:
1
;
span
{
text-decoration
:
underline
;
}
}
\ No newline at end of file
src/components/activity/newyear-2019/myTreasure/team.js
View file @
4976342b
import
React
,
{
Component
}
from
'react'
;
import
React
,
{
Component
}
from
'react'
;
import
classnames
from
'classnames'
;
import
classnames
from
'classnames'
;
import
{
withRouter
,
Link
}
from
'react-router-dom'
;
import
{
Link
}
from
'react-router-dom'
;
import
{
http
}
from
'@/utils'
;
import
{
Popup
}
from
'@common'
;
import
SplitSuccess
from
'./../common/splitSuccess/index'
;
import
'./team.scss'
;
import
'./team.scss'
;
class
TreasureTeam
extends
Component
{
class
TreasureTeam
extends
Component
{
...
@@ -19,26 +16,27 @@ class TreasureTeam extends Component {
...
@@ -19,26 +16,27 @@ class TreasureTeam extends Component {
this
.
initMemberInfo
();
this
.
initMemberInfo
();
}
}
handleToInvite
=
()
=>
{
componentWillReceiveProps
(
nextProps
)
{
const
{
history
}
=
this
.
props
;
const
{
data
:
oldData
}
=
this
.
props
;
history
.
push
(
'/activity/newyear-2019/landing'
)
;
const
{
data
:
newData
}
=
nextProps
;
if
(
this
.
splitInstance
)
{
if
(
newData
.
is_open
!=
oldData
.
is_open
)
{
this
.
splitInstance
.
close
(
);
this
.
initMemberInfo
(
newData
);
}
}
}
}
initMemberInfo
=
()
=>
{
initMemberInfo
=
(
params
=
{})
=>
{
const
{
data
}
=
this
.
props
;
const
{
data
,
userInfo
}
=
this
.
props
;
let
members
=
data
.
members
;
const
arr
=
JSON
.
stringify
(
params
)
!==
'{}'
?
params
:
data
;
let
len
=
members
.
length
-
5
;
let
member
=
arr
.
member
;
let
len
=
member
.
length
-
5
;
for
(;
len
<
0
;
len
++
)
{
for
(;
len
<
0
;
len
++
)
{
member
s
.
push
({});
member
.
push
({});
}
}
this
.
setState
({
this
.
setState
({
team
:
Object
.
assign
({},
data
,
{
team
:
Object
.
assign
({},
arr
,
{
member
s
member
}),
}),
currentMember
:
member
s
[
0
]
currentMember
:
member
.
filter
(
item
=>
item
.
uid
==
userInfo
.
uid
)
[
0
]
});
});
}
}
...
@@ -61,58 +59,32 @@ class TreasureTeam extends Component {
...
@@ -61,58 +59,32 @@ class TreasureTeam extends Component {
// 查看队友的奖品,条件:宝箱已拆
// 查看队友的奖品,条件:宝箱已拆
toCheckPrize
=
(
id
)
=>
{
toCheckPrize
=
(
id
)
=>
{
const
{
team
:
{
is_open
,
member
s
=
[]}
}
=
this
.
state
;
const
{
team
:
{
is_open
,
member
=
[]}
}
=
this
.
state
;
if
(
is_open
)
{
if
(
is_open
)
{
const
data
=
member
s
.
filter
(
item
=>
item
.
uid
===
id
);
const
data
=
member
.
filter
(
item
=>
item
.
uid
===
id
);
this
.
setState
({
this
.
setState
({
currentMember
:
data
[
0
]
currentMember
:
data
[
0
]
});
});
}
}
}
}
toSplitTreasure
=
()
=>
{
const
{
handleToBindPhone
,
handleToBindAddress
}
=
this
.
props
;
const
{
team
:
{
captain_uid
,
team_num
}
}
=
this
.
state
;
http
.
post
(
`
${
API
.
home
}
/sys/split_treasure`
,
{
team_num
:
team_num
,
owner_uid
:
captain_uid
}).
then
(
res
=>
{
const
{
code
,
data
}
=
res
.
data
;
if
(
code
===
200
)
{
// 拆宝箱弹窗--成功
this
.
splitInstance
=
Popup
({
title
:
'恭喜你获得'
,
skip
:
'year'
,
content
:
<
SplitSuccess
handleToInvite
=
{
this
.
handleToInvite
}
/
>
});
}
else
if
(
code
===
12000
)
{
// 绑定手机号
handleToBindPhone
();
}
else
if
(
code
===
12001
)
{
// 绑定地址
handleToBindAddress
();
}
});
}
render
()
{
render
()
{
const
{
const
{
team
:
{
team
:
{
id
,
is_captain
,
is_captain
,
status
,
status
,
team_num
,
team_num
,
lack_member
,
lack_member
,
is_open
,
is_open
,
members
=
[],
treasure_code
,
prize_type
,
member
=
[],
bing_phone
,
bing_address
,
},
},
currentMember
:
{
currentMember
prize_name
}
}
=
this
.
state
;
}
=
this
.
state
;
const
{
toSplitTreasure
,
children
}
=
this
.
props
;
return
(
return
(
<
div
className
=
"team-container"
data
-
skip
=
"team"
>
<
div
className
=
"team-container"
data
-
skip
=
"team"
>
{
{
...
@@ -143,11 +115,11 @@ class TreasureTeam extends Component {
...
@@ -143,11 +115,11 @@ class TreasureTeam extends Component {
}
}
<
div
className
=
"team-member"
>
<
div
className
=
"team-member"
>
{
{
member
s
.
map
((
item
,
index
)
=>
(
member
.
map
((
item
,
index
)
=>
(
<
div
<
div
className
=
{
this
.
computedClass
(
item
.
uid
)}
className
=
{
this
.
computedClass
(
item
.
uid
)}
onClick
=
{()
=>
this
.
toCheckPrize
(
item
.
uid
)}
onClick
=
{()
=>
this
.
toCheckPrize
(
item
.
uid
)}
key
=
{
i
tem
.
id
}
key
=
{
i
ndex
}
style
=
{
this
.
computedBg
(
item
.
head_img
)}
style
=
{
this
.
computedBg
(
item
.
head_img
)}
>
>
{
{
...
@@ -165,8 +137,8 @@ class TreasureTeam extends Component {
...
@@ -165,8 +137,8 @@ class TreasureTeam extends Component {
<>
<>
{
{
is_captain
is_captain
?
<
Link
className
=
"team-button"
to
=
"/activity/newyear-2019/landing"
>
继续邀请队友
<
/Link
>
?
<
Link
className
=
"team-button"
to
=
{
`/activity/newyear-2019/landing?treasure_code=
${
treasure_code
}
&origin=1`
}
>
继续邀请队友
<
/Link
>
:
<
Link
className
=
"team-button"
to
=
"/activity/newyear-2019/landing"
>
帮好友完成组队
<
/Link
>
:
<
Link
className
=
"team-button"
to
=
{
`/activity/newyear-2019/landing?treasure_code=
${
treasure_code
}
&origin=2`
}
>
帮好友完成组队
<
/Link
>
}
}
<
/
>
<
/
>
}
}
...
@@ -176,7 +148,7 @@ class TreasureTeam extends Component {
...
@@ -176,7 +148,7 @@ class TreasureTeam extends Component {
(
status
===
2
&&
!
is_open
)
&&
(
status
===
2
&&
!
is_open
)
&&
<>
<>
<
span
className
=
"team-icon"
data
-
direction
=
"left"
><
/span
>
<
span
className
=
"team-icon"
data
-
direction
=
"left"
><
/span
>
<
span
className
=
"team-button--split"
onClick
=
{
t
his
.
t
oSplitTreasure
}
><
/span
>
<
span
className
=
"team-button--split"
onClick
=
{
toSplitTreasure
}
><
/span
>
<
span
className
=
"team-icon"
data
-
direction
=
"right"
><
/span
>
<
span
className
=
"team-icon"
data
-
direction
=
"right"
><
/span
>
<
/
>
<
/
>
}
}
...
@@ -185,85 +157,8 @@ class TreasureTeam extends Component {
...
@@ -185,85 +157,8 @@ class TreasureTeam extends Component {
{
{
(
status
===
2
&&
is_open
)
&&
(
status
===
2
&&
is_open
)
&&
<>
<>
<
p
className
=
"team-prize"
>
{
prize_name
}
<
/p
>
<
p
className
=
"team-prize"
>
{
currentMember
.
prize_name
}
<
/p
>
{
children
}
{
/* 第一:是否需要绑定手机号 */
}
{
bing_phone
&&
<
a
className
=
"treamsure-team__result"
onClick
=
"$emit('to-bind-phone', data.bing_address)"
>
<
span
>
绑定手机号
<
/span
>
<
/a
>
}
{
/* 第二:是否需要填写地址 */
}
{
(
!
bing_phone
&&
bing_address
)
&&
<
a
className
=
"treamsure-team__result"
onClick
=
"$emit('to-bind-address')"
>
<
span
>
查看
/
修改收货信息
<
/span
>
<
/a
>
}
{
/* 第三:奖品,代金券碎片 */
}
{
(
!
bing_phone
&&
!
bing_address
&&
prize_type
===
6
)
&&
<
a
href
=
"/my/coupon"
target
=
"_blank"
className
=
"treamsure-team__result"
>
可合成代金券在购课时使用,
<
span
>
去合成
<
/span
>
<
/a
>
}
{
/* 第三:奖品,指定课程代金券 */
}
{
(
!
bing_phone
&&
!
bing_address
&&
prize_type
===
3
)
&&
<
a
href
=
"/my/coupon"
target
=
"_blank"
className
=
"treamsure-team__result"
>
已发放至您的账户,
<
span
>
去使用
<
/span
>
<
/a
>
}
{
/* 第三:奖品,通用课程代金券 */
}
{
(
!
bing_phone
&&
!
bing_address
&&
prize_type
===
4
)
&&
<
a
href
=
"/my/coupon"
target
=
"_blank"
className
=
"treamsure-team__result"
>
已发放至您的账户,
<
span
>
去使用
<
/span
>
<
/a
>
}
{
/* 第三:奖品,现金红包 */
}
{
(
!
bing_phone
&&
!
bing_address
&&
prize_type
===
7
)
&&
<
a
href
=
"/my/coupon"
target
=
"_blank"
className
=
"treamsure-team__result"
>
已存入您的账户,
<
span
>
去提现
<
/span
>
<
/a
>
}
{
/* 第三:奖品,线上课程 */
}
{
(
!
bing_phone
&&
!
bing_address
&&
prize_type
===
2
)
&&
<
a
href
=
"/my/coupon"
target
=
"_blank"
className
=
"treamsure-team__result"
>
已发放至您的账户
<
/a
>
}
<
/
>
<
/
>
}
}
<
/div
>
<
/div
>
...
@@ -272,4 +167,4 @@ class TreasureTeam extends Component {
...
@@ -272,4 +167,4 @@ class TreasureTeam extends Component {
}
}
}
}
export
default
withRouter
(
TreasureTeam
);
export
default
TreasureTeam
;
\ No newline at end of file
\ No newline at end of file
src/components/activity/newyear-2019/myTreasure/team.scss
View file @
4976342b
...
@@ -179,4 +179,15 @@
...
@@ -179,4 +179,15 @@
color
:
#303030
;
color
:
#303030
;
line-height
:
1
;
line-height
:
1
;
}
}
.team-result
{
margin
:
8px
0
0
;
font-size
:
12px
;
color
:
#666
;
line-height
:
1
;
span
{
text-decoration
:
underline
;
}
}
}
}
\ No newline at end of file
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