Toggle navigation
Toggle navigation
This project
Loading...
Sign in
fe
/
YOHO-ACTIVITY-PHP
·
Commits
Go to a project
GitLab
Go to group
Project
Activity
Files
Commits
Pipelines
0
Builds
0
Graphs
Milestones
Issues
0
Merge Requests
0
Members
Labels
Wiki
Forks
Network
Create a new issue
Download as
Plain Diff
Browse Files
Authored by
毕凯
9 years ago
Commit
f8c98c9f95a73f962867a862ba3bb56d324904c2
2 parents
1019cf46
a1f32bc0
code review by liangzhifeng
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
387 additions
and
129 deletions
static/js/shopping-cart/select-coupon.js
static/sass/me/_address.scss
static/sass/me/_coupons.scss
static/sass/shopping-cart/_index.scss
static/sass/shopping-cart/_order-ensure.scss
static/sass/shopping-cart/_select-coupon.scss
template/m.yohobuy.com/actions/index/home/coupons.phtml
template/m.yohobuy.com/actions/index/shoppingCart/order-ensure.phtml
template/m.yohobuy.com/actions/index/shoppingCart/select-address.phtml
template/m.yohobuy.com/actions/index/shoppingCart/select-coupon.phtml
template/m.yohobuy.com/partials/layout/use.phtml
yohobuy/m.yohobuy.com/application/controllers/ShoppingCart.php
static/js/shopping-cart/select-coupon.js
0 → 100644
View file @
f8c98c9
var
$
=
require
(
'jquery'
),
Handlebars
=
require
(
'yoho.handlebars'
),
ellipsis
=
require
(
'mlellipsis'
),
loading
=
require
(
'../plugin/loading'
),
tip
=
require
(
'../plugin/tip'
);
var
page
=
1
,
canGetCoupon
=
true
,
isGetData
;
var
conponTmpl
=
Handlebars
.
compile
(
$
(
'#tmpl-coupon'
).
html
()),
conponNotAvaliableTmpl
=
Handlebars
.
compile
(
$
(
'#tmpl-coupon-not-avaliable'
).
html
());
ellipsis
.
init
();
function
getCouponDate
()
{
if
(
!
canGetCoupon
)
{
return
;
}
if
(
isGetData
)
{
return
;
}
loading
.
showLoadingMask
();
page
+=
1
;
isGetData
=
true
;
$
.
ajax
({
type
:
'POST'
,
url
:
'/home/couponData'
,
dataType
:
'html'
,
data
:
{
statuss
:
status
,
page
:
page
}
}).
then
(
function
(
coupons
)
{
var
notAvailableCoupons
=
[];
// 后端需要返回一个 coupons 列表,如下
// notAvailable 表示不可用的优惠券
coupons
=
[{
money
:
'99'
,
coupon_name
:
'满XX-减去吴悠右腿有益于有2222'
,
couponValidity
:
'20150129-20150430'
,
coupon_id
:
'22222'
},
{
money
:
'99'
,
coupon_name
:
'满XX-减去吴悠右腿有益于有2222'
,
couponValidity
:
'20150129-20150430'
,
coupon_id
:
'2222233'
},
{
money
:
'99'
,
coupon_name
:
'NONO满XX-减去吴悠右腿有益于有2222'
,
couponValidity
:
'20150129-20150430'
,
coupon_id
:
'2222233'
,
notAvailable
:
1
}];
// coupons 是个列表,如果不是列表,可能是服务器错误,这次翻页加载不算
if
(
!
$
.
isArray
(
coupons
))
{
page
--
;
return
;
}
// 每页10张,当不足10张时,说明已经加载完
if
(
coupons
.
length
<
10
)
{
canGetCoupon
=
false
;
}
// 第一页张数为 0 ,显示优惠券为空
if
(
!
coupons
.
length
&&
page
===
2
)
{
$
(
'.select-coupon-page'
).
html
(
$
(
'#tmpl-no-coupon'
).
html
());
return
;
}
// 把不可用的优惠券分离出来
$
.
each
(
coupons
,
function
(
i
,
coupon
)
{
if
(
coupon
.
notAvailable
)
{
notAvailableCoupons
.
push
(
coupon
);
}
});
if
(
notAvailableCoupons
.
length
)
{
$
(
'.not-avaliable-coupon-line'
).
show
();
}
$
(
'#coupon-list'
).
append
(
conponTmpl
({
coupons
:
coupons
}));
$
(
'#coupon-list-not'
).
append
(
conponNotAvaliableTmpl
({
notAvailableCoupons
:
notAvailableCoupons
}));
window
.
rePosFooter
();
}).
fail
(
function
()
{
page
-=
1
;
tip
.
show
(
'加载优惠券失败'
);
}).
always
(
function
()
{
isGetData
=
false
;
loading
.
hideLoadingMask
();
});
}
getCouponDate
();
$
(
window
).
scroll
(
function
()
{
if
(
$
(
window
).
scrollTop
()
+
$
(
window
).
height
()
>
$
(
'body'
).
height
()
*
0.9
)
{
getCouponDate
();
}
});
...
...
static/sass/me/_address.scss
View file @
f8c98c9
...
...
@@ -2,11 +2,12 @@
width
:
100%
;
background
:
#f0f0f0
;
.page-wrap
:first-child
{
padding-bottom
:
pxToRem
(
10px
);
}
// .page-wrap:first-child {
// padding-bottom: pxToRem(10px);
// }
.address-item
{
display
:
block
;
padding
:
pxToRem
(
20px
)
pxToRem
(
30px
);
color
:
#b0b0b0
;
background
:
#fff
;
...
...
static/sass/me/_coupons.scss
View file @
f8c98c9
.employ
{
width
:
100%
;
height
:
90rem
/
$pxConvertRem
;
.my-coupon-page
{
.employ
{
width
:
100%
;
height
:
90rem
/
$pxConvertRem
;
border-bottom
:
1px
solid
#e0e0e0
;
position
:
relative
;
span
{
width
:
49%
;
height
:
48rem
/
$pxConvertRem
;
line-height
:
48rem
/
$pxConvertRem
;
overflow
:
hidden
;
border-right
:
2px
solid
#e0e0e0
;
margin
:
21rem
/
$pxConvertRem
0
;
float
:
left
;
text-align
:
center
;
font-size
:
48em
/
$pxConvertRem
;
color
:
#b0b0b0
;
&
:last-of-type
{
border
:none
;
}
&
.active
{
color
:
#444444
;
}
}
}
#employ
{
width
:
100%
;
height
:
auto
;
overflow
:hidden
;
.employ-main
{
width
:
90
.625%
;
height
:
180rem
/
$pxConvertRem
;
overflow
:
hidden
;
margin
:
20rem
/
$pxConvertRem
auto
;
background-image
:
image-url
(
'me/employ/employ.jpg'
);
background-position
:
top
center
;
background-repeat
:no-repeat
;
background-size
:
100%
100%
;
color
:
#fff
;
position
:
relative
;
span
{
width
:
34
.482759%
;
height
:
100%
;
float
:
left
;
text-align
:
center
;
line-height
:
180rem
/
$pxConvertRem
;
font-size
:
50px
;
}
p
{
width
:
59
.517241%
;
height
:
auto
;
margin
:
0
3%
16em
/
$pxConvertRem
;
float
:
left
;
&
:first-of-type
{
margin-top
:
0
.75rem
;
font-size
:
18px
;
height
:
auto
;
min-height
:
42px
;
display
:
-
webkit-box
;
-webkit-line-clamp
:
2
;
-webkit-box-orient
:
vertical
;
border-bottom
:
1px
solid
#e0e0e0
;
position
:
relative
;
span
{
width
:
49%
;
height
:
48rem
/
$pxConvertRem
;
line-height
:
48rem
/
$pxConvertRem
;
overflow
:
hidden
;
border-right
:
2px
solid
#e0e0e0
;
margin
:
21rem
/
$pxConvertRem
0
;
float
:
left
;
text-align
:
center
;
font-size
:
48em
/
$pxConvertRem
;
color
:
#b0b0b0
;
&
:last-of-type
{
border
:none
;
}
&
.active
{
color
:
#444444
;
}
}
}
.coupon-list
{
width
:
100%
;
height
:
auto
;
overflow
:hidden
;
.employ-main
{
display
:
block
;
width
:
90
.625%
;
height
:
180rem
/
$pxConvertRem
;
overflow
:
hidden
;
margin
:
30rem
/
$pxConvertRem
auto
;
background-image
:
image-url
(
'me/employ/employ.jpg'
);
background-position
:
top
center
;
background-repeat
:no-repeat
;
background-size
:
100%
100%
;
color
:
#fff
;
position
:
relative
;
span
{
width
:
34
.482759%
;
height
:
100%
;
float
:
left
;
text-align
:
center
;
line-height
:
180rem
/
$pxConvertRem
;
font-size
:
50px
;
}
p
{
width
:
59
.517241%
;
height
:
auto
;
margin
:
0
3%
16em
/
$pxConvertRem
;
float
:
left
;
&
:first-of-type
{
margin-top
:
0
.75rem
;
font-size
:
16px
;
height
:
auto
;
min-height
:
42px
;
display
:
-
webkit-box
;
-webkit-line-clamp
:
2
;
-webkit-box-orient
:
vertical
;
overflow
:
hidden
;
}
}
i
{
width
:
100%
;
height
:
100%
;
overflow
:
hidden
;
display
:
block
;
position
:
absolute
;
top
:
0
;
left
:
0
;
background
:
image-url
(
'me/employ/employsy.png'
)
right
top
no-repeat
;
background-size
:auto
100
%
;
}
}
.null
{
width
:
100%
;
height
:auto
;
overflow
:
hidden
;
position
:
absolute
;
left
:
0
;
top
:
50%
;
@include
transform
(
translateY
(
-50%
));
i
{
width
:
100%
;
height
:
120rem
/
$pxConvertRem
;
overflow
:
hidden
;
display
:
block
;
background
:
image-url
(
'me/employ/not.png'
)
center
top
no-repeat
;
background-size
:auto
100
%
;
}
p
{
width
:
100%
;
height
:
auto
;
overflow
:
hidden
;
padding
:
20rem
/
$pxConvertRem
0
0
;
font-size
:
48em
/
$pxConvertRem
;
text-align
:
center
;
color
:
#444
;
}
a
{
width
:
73
.75%
;
height
:
80rem
/
$pxConvertRem
;
overflow
:
hidden
;
}
}
i
{
width
:
100%
;
height
:
100%
;
overflow
:
hidden
;
display
:
block
;
position
:
absolute
;
top
:
0
;
left
:
0
;
background
:
image-url
(
'me/employ/employsy.png'
)
right
top
no-repeat
;
background-size
:auto
100
%
;
}
}
.null
{
width
:
100%
;
height
:auto
;
overflow
:
hidden
;
position
:
absolute
;
left
:
0
;
top
:
50%
;
@include
transform
(
translateY
(
-50%
));
i
{
width
:
100%
;
height
:
120rem
/
$pxConvertRem
;
overflow
:
hidden
;
display
:
block
;
background
:
image-url
(
'me/employ/not.png'
)
center
top
no-repeat
;
background-size
:auto
100
%
;
}
p
{
width
:
100%
;
height
:
auto
;
overflow
:
hidden
;
padding
:
20rem
/
$pxConvertRem
0
0
;
font-size
:
48em
/
$pxConvertRem
;
text-align
:
center
;
color
:
#444
;
}
a
{
width
:
73
.75%
;
height
:
80rem
/
$pxConvertRem
;
overflow
:
hidden
;
font-size
:
56em
/
$pxConvertRem
;
line-height
:
80rem
/
$pxConvertRem
;
display
:
block
;
background
:
#444444
;
color
:
#fff
;
text-align
:
center
;
margin
:
60rem
/
$pxConvertRem
auto
0
;
@include
border-radius
(
.2rem
);
font-size
:
56em
/
$pxConvertRem
;
line-height
:
80rem
/
$pxConvertRem
;
display
:
block
;
background
:
#444444
;
color
:
#fff
;
text-align
:
center
;
margin
:
60rem
/
$pxConvertRem
auto
0
;
@include
border-radius
(
.2rem
);
}
}
}
}
}
.none
{
display
:
none
;
}
}
.none
{
display
:
none
;
}
\ No newline at end of file
...
...
static/sass/shopping-cart/_index.scss
View file @
f8c98c9
@import
"good"
,
"chose-panel"
,
"gift-advance-good"
,
"order-ensure"
;
@import
"good"
,
"chose-panel"
,
"gift-advance-good"
,
"order-ensure"
,
"select-coupon"
;
.icon-checkbox
:before
{
content
:
"\e61c"
;
}
...
...
static/sass/shopping-cart/_order-ensure.scss
View file @
f8c98c9
...
...
@@ -45,7 +45,7 @@
font-weight
:
normal
;
}
}
.dispatch
.title
{
margin-bottom
:
10rem
/
$pxConvertRem
;
}
...
...
@@ -85,6 +85,10 @@
height
:
90rem
/
$pxConvertRem
;
line-height
:
90rem
/
$pxConvertRem
;
border-bottom
:
1px
solid
#f7f7f7
;
a
{
display
:
block
;
}
}
.coupon-count
{
...
...
@@ -174,4 +178,4 @@
font-size
:
32rem
/
$pxConvertRem
;
}
}
}
\ No newline at end of file
}
...
...
static/sass/shopping-cart/_select-coupon.scss
0 → 100644
View file @
f8c98c9
.select-coupon-page
{
margin-top
:
pxToRem
(
30px
);
margin-bottom
:
pxToRem
(
30px
);
.coupon-list
{
.employ-main
:first-child
{
margin-top
:
0
;
}
.employ-main
:last-child
{
margin-bottom
:
0
;
}
}
%line
{
content
:
''
;
position
:
absolute
;
top
:
50%
;
border-top
:
1px
solid
#b0b0b0
;
width
:
pxToRem
(
120px
);
height
:
0
;
}
.not-avaliable-coupon-line
{
position
:
relative
;
margin-top
:
pxToRem
(
30px
);
margin-bottom
:
pxToRem
(
30px
);
font-size
:
pxToRem
(
14px
);
line-height
:
2
;
color
:
#b0b0b0
;
text-align
:
center
;
&
:before
{
@extend
%line
;
left
:
pxToRem
(
60px
);
}
&
:after
{
@extend
%line
;
right
:
pxToRem
(
60px
);
}
}
.not-avaliable
{
-webkit-filter
:
grayscale
(
100%
);
}
}
...
...
template/m.yohobuy.com/actions/index/home/coupons.phtml
View file @
f8c98c9
{
{>
layout/header
}
}
<div
class=
"yoho-page"
>
<div
class=
"yoho-page
my-coupon-page
"
>
<div
class=
"employ"
>
<span
class=
"active"
>未使用</span>
<span>已使用</span>
</div>
<div
id=
"employ"
></div>
<div
id=
"employ"
class=
"coupon-list"
></div>
</div>
{
{>
layout/footer
}
}
\ No newline at end of file
{
{>
layout/footer
}
}
...
...
template/m.yohobuy.com/actions/index/shoppingCart/order-ensure.phtml
View file @
f8c98c9
{
{>
layout/header
}
}
<div
class=
"order-ensure-page yoho-page"
>
{
{#
orderEnsure
}
}
<a
class=
"address-wrap block"
>
<a
class=
"address-wrap block"
href=
"/shoppingCart/selectAddress"
>
<p
class=
"infos"
>
收货地址
<span
class=
"per-info"
>
{
{name
}
}
{
{phoneNum
}
}</span>
...
...
@@ -43,7 +43,8 @@
<ul
class=
"sale-invoice"
>
{
{#
coupon
}
}
<li
class=
"coupon"
>
<a
href=
"{{url}}"
>
<a
href=
"/shoppingCart/selectCoupon"
>
<!--
<a
href=
"{{url}}"
>
-->
<span
class=
"title"
>优惠券</span>
{
{#if
count
}
}
<span
class=
"coupon-count"
>
...
...
@@ -120,4 +121,4 @@
</ul>
{
{/
orderEnsure
}
}
</div>
{
{>
layout/footer
}
}
\ No newline at end of file
{
{>
layout/footer
}
}
...
...
template/m.yohobuy.com/actions/index/shoppingCart/select-address.phtml
0 → 100644
View file @
f8c98c9
{
{>
layout/header
}
}
<div
class=
"my-address-page select-address-page yoho-page"
>
<div
class=
"page-wrap"
>
{
{#
address
}
}
<a
class=
"address-item"
href=
"/shoppingCart/orderEnsure?address_id={{address_id}}"
>
<span
class=
"name"
>
{
{consignee
}
}</span>
<span
class=
"tel"
>
{
{mobile
}
}</span>
<p
class=
"address-info"
>
{
{area
}
}
{
{address
}
}</p>
</a>
{
{/
address
}
}
</div>
</div>
{
{>
layout/footer
}
}
...
...
template/m.yohobuy.com/actions/index/shoppingCart/select-coupon.phtml
0 → 100644
View file @
f8c98c9
{
{>
layout/header
}
}
<div
class=
"yoho-page select-coupon-page my-coupon-page"
>
<div
id=
"coupon-list"
class=
"coupon-list"
></div>
<div
class=
"not-avaliable-coupon-line hide"
>不可使用的优惠券</div>
<div
id=
"coupon-list-not"
class=
"coupon-list"
></div>
</div>
<script
id=
"tmpl-coupon"
type=
"text/tmpl"
>
\
{
{#coupons
}
}
\
{
{^
notAvailable
}
}
<a
class=
"employ-main"
href=
"/shoppingCart/orderEnsure?coupon_id={{ coupon_id}}"
>
<span>\
{
{
money
}
}</span>
<p
class=
"coupon-name"
>\
{
{
coupon_name
}
}</p>
<p>有效期:\
{
{
couponValidity
}
}</p>
</a>
\
{
{/
notAvailable
}
}
\
{
{/coupons
}
}
</script>
<script
id=
"tmpl-coupon-not-avaliable"
type=
"text/tmpl"
>
\
{
{#
notAvailableCoupons
}
}
<div
class=
"employ-main not-avaliable"
>
<span>\
{
{
money
}
}</span>
<p
class=
"coupon-name"
>\
{
{
coupon_name
}
}</p>
<p>有效期:\
{
{
couponValidity
}
}</p>
</div>
\
{
{/
notAvailableCoupons
}
}
</script>
<script
id=
"tmpl-no-coupon"
type=
"text/tmpl"
>
<div
class=
"coupon-list"
>
<div
class=
"null"
>
<i></i>
<p>您还没有优惠券!</p>
</div>
</div>
</script>
{
{>
layout/footer
}
}
...
...
template/m.yohobuy.com/partials/layout/use.phtml
View file @
f8c98c9
...
...
@@ -218,6 +218,11 @@
seajs.use('js/shopping-cart/order-ensure');
</script>
{{/if}}
{{#if selectCouponPage}}
<script>
seajs.use('js/shopping-cart/select-coupon');
</script>
{{/if}}
{{!-- 个人中心 --}}
{{#if myIndexPage}}
<script>
...
...
yohobuy/m.yohobuy.com/application/controllers/ShoppingCart.php
View file @
f8c98c9
...
...
@@ -2,6 +2,7 @@
use
Action\AbstractAction
;
use
Index\CartModel
;
use
Index\UserModel
;
use
Plugin\Helpers
;
/**
...
...
@@ -216,7 +217,47 @@ class ShoppingCartController extends AbstractAction
$this
->
_view
->
display
(
'order-ensure'
,
$data
);
}
/**
* 下单流程 选择地址
*/
public
function
selectAddressAction
()
{
// 设置网站标题
$this
->
setTitle
(
'选择地址'
);
$this
->
setNavHeader
(
'选择地址'
,
Helpers
::
url
(
'/shoppingCart/orderEnsure'
));
$uid
=
$this
->
_uid
;
$address
=
UserModel
::
getAddressData
(
$uid
);
$this
->
_view
->
display
(
'select-address'
,
array
(
'selectAddressPage'
=>
true
,
'pageFooter'
=>
true
,
'address'
=>
$address
));
}
/**
* 下单流程 选择优惠券
*/
public
function
selectCouponAction
()
{
// 设置网站标题
$this
->
setTitle
(
'选择优惠券'
);
$this
->
setNavHeader
(
'选择优惠券'
,
Helpers
::
url
(
'/shoppingCart/orderEnsure'
));
$uid
=
$this
->
_uid
;
$address
=
UserModel
::
getAddressData
(
$uid
);
$this
->
_view
->
display
(
'select-coupon'
,
array
(
'selectCouponPage'
=>
true
,
'pageFooter'
=>
true
,
'address'
=>
$address
));
}
/**
* 读取chose-panel内容
*/
...
...
Please
register
or
login
to post a comment