Toggle navigation
Toggle navigation
This project
Loading...
Sign in
fe
/
yoho-blk
·
Commits
Go to a project
GitLab
Go to group
Project
Activity
Files
Commits
Pipelines
0
Builds
0
Graphs
Milestones
Issues
0
Merge Requests
1
Members
Labels
Wiki
Forks
Network
Create a new issue
Download as
Email Patches
Plain Diff
Browse Files
Authored by
jinhu.tung
9 years ago
Commit
15b315f315f6c9a3a6924a82ca0f690fe9acb5a8
1 parent
49816dd1
control storage of good
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
131 additions
and
31 deletions
apps/shopping/controllers/cart.js
apps/shopping/helpers/index.js
apps/shopping/models/cart.js
apps/shopping/views/partial/cart-list.hbs
apps/shopping/views/partial/cart/stepper.hbs
public/js/shopping/cart/stepper.js
public/js/shopping/cart/util.js
public/scss/shopping/_stepper.css
apps/shopping/controllers/cart.js
View file @
15b315f
...
...
@@ -64,11 +64,6 @@ exports.changeProductNum = (req, res) => {
}
});
// res.json({
// code: '1000',
// num: parseInt(changeTo, 10) - 1,
// changed: false
// });
}
else
if
(
changeType
===
'DECREASE'
)
{
cartModel
.
modifyProductNum
({
decreaseNum
:
1
,
// 默认是1
...
...
apps/shopping/helpers/index.js
View file @
15b315f
...
...
@@ -10,7 +10,6 @@
* 乘法
* @param {[Number]} num1
* @param {[Number]} num2
* @param {[object]} options 上下文环境,一般不手动传
* @return {[boolen]}
*/
exports
.
multiple
=
(
num1
,
num2
)
=>
{
...
...
@@ -23,3 +22,20 @@ exports.multiple = (num1, num2) => {
console
.
error
(
'multiplication needs two number parameters'
);
}
};
/**
* 小于等于
* @param {[Number]} num1
* @param {[Number]} num2
* @param {[object]} options 上下文环境,一般不手动传
* @return {[boolen]}
*/
exports
.
lte
=
(
num1
,
num2
,
options
)
=>
{
num1
=
typeof
num1
===
'number'
?
num1
:
parseFloat
(
num1
,
10
);
num2
=
typeof
num2
===
'number'
?
num2
:
parseFloat
(
num2
,
10
);
if
(
num1
<=
num2
)
{
return
options
.
fn
(
this
);
}
return
options
.
inverse
(
this
);
};
...
...
apps/shopping/models/cart.js
View file @
15b315f
...
...
@@ -218,6 +218,9 @@ const filterCartData = (result, uid) => {
_
.
forEach
(
advancedGoods
,
function
(
good
)
{
buyNumber
=
parseInt
(
good
.
buy_number
,
10
);
totalNum
+=
buyNumber
;
_
.
merge
(
good
,
{
left_number
:
parseInt
(
good
.
storage_number
,
10
)
-
buyNumber
});
if
(
good
.
selected
===
'Y'
)
{
selectedAdvanceNum
+=
buyNumber
;
}
...
...
@@ -236,13 +239,16 @@ const filterCartData = (result, uid) => {
_
.
forEach
(
ordinaryGoods
,
function
(
good
)
{
buyNumber
=
parseInt
(
good
.
buy_number
,
10
);
totalNum
+=
buyNumber
;
_
.
merge
(
good
,
{
left_number
:
parseInt
(
good
.
storage_number
,
10
)
-
buyNumber
});
if
(
good
.
selected
===
'Y'
)
{
selectedOrdinaryNum
+=
buyNumber
;
}
});
}
//
console.log('ordinaryGoods:', ordinaryGoods);
console
.
log
(
'ordinaryGoods:'
,
ordinaryGoods
);
return
_
.
merge
(
resData
,
{
...
...
@@ -273,7 +279,10 @@ const modifyProductNum = (options) => {
const
uid
=
options
.
uid
;
const
shoppingKey
=
options
.
shoppingKey
;
const
sku
=
options
.
sku
;
const
goodType
=
options
.
goodType
;
const
goodType
=
options
.
goodTpye
;
let
buyNumber
,
storageNumber
;
let
params
=
{
product_sku
:
options
.
sku
...
...
@@ -309,14 +318,48 @@ const modifyProductNum = (options) => {
product_sku
:
sku
});
console
.
log
(
'goodType-----:'
,
goodType
);
return
getCartData
(
shoppingKey
,
uid
).
then
(
function
(
result
)
{
console
.
log
(
'getCartData--pre-callback-result:'
,
result
);
console
.
log
(
'getCartData--pre-callback-result:'
,
JSON
.
stringify
(
result
,
''
,
4
)
);
console
.
log
(
'modifyProductNum---params:'
,
params
);
if
(
goodType
===
'advance'
)
{
// 检查库存量
}
else
if
(
goodType
===
'ordinary'
)
{
// 检查库存量
_
.
find
(
result
.
data
.
ordinary_cart_data
.
goods_list
,
(
goodItem
)
=>
{
if
(
goodItem
.
product_sku
===
sku
)
{
buyNumber
=
parseInt
(
goodItem
.
buy_number
,
10
);
storageNumber
=
parseInt
(
goodItem
.
storage_number
,
10
);
// 计算剩余多少
_
.
merge
(
goodItem
,
{
left_number
:
storageNumber
-
buyNumber
});
}
});
// 增加
if
(
increaseNum
&&
(
buyNumber
+
increaseNum
)
>
storageNumber
)
{
return
{
code
:
'1000'
,
message
:
'商品库存不足'
};
}
// else if(increaseNum && (buyNumber + 4) >= storageNumber) {
// leftNumber = storageNumber - buyNumber - 1;
// }
}
// 显示仅剩3, 2, 1件
// if(leftNumber) {
// return api.get('', params).then(changeResult => {
// return _.merge(changeResult, {leftNumber})
// });
// }
return
api
.
get
(
''
,
params
);
});
...
...
apps/shopping/views/partial/cart-list.hbs
View file @
15b315f
...
...
@@ -58,16 +58,25 @@
</li>
<li class="price-num">
<span class="price sale-price">¥\{{sales_price}}</span>
<div class="stepper" data-productId=\{{productId}}>
<div class="minus action">
<div class="stepper" data-productType=\{{goods_type}}>
<div class="minus action \{{#isEqual buy_number 1}}disable\{{/isEqual}}">
<span class="iconfont"></span>
</div>
<div class="num">
<input type="text" class="input" value=\{{buy_number}} />
</div>
<div class="plus action">
<div class="plus action
\{{#isEqual left_number 0}}disable\{{/isEqual}}
">
<span class="iconfont"></span>
</div>
<div class="warning">
\{{#lte left_number 3}}
\{{#if left_number}}
仅剩\{{left_number}}件
\{{^}}
仅剩0件
\{{/if}}
\{{/lte}}
</div>
</div>
</li>
<li class="total-price-action">
...
...
@@ -122,16 +131,25 @@
</li>
<li class="price-num">
<span class="price sale-price">¥\{{sales_price}}</span>
<div class="stepper" data-productId=\{{productId}}>
<div class="minus action">
<div class="stepper" data-productType=\{{goods_type}}>
<div class="minus action \{{#isEqual buy_number 1}}disable\{{/isEqual}}">
<span class="iconfont"></span>
</div>
<div class="num">
<input type="text" class="input" value=\{{buy_number}} />
</div>
<div class="plus action">
<div class="plus action
\{{#isEqual left_number 0}}disable\{{/isEqual}}
">
<span class="iconfont"></span>
</div>
<div class="warning">
\{{#lte left_number 3}}
\{{#if left_number}}
仅剩\{{left_number}}件
\{{^}}
仅剩0件
\{{/if}}
\{{/lte}}
</div>
</div>
</li>
<li class="total-price-action">
...
...
@@ -175,16 +193,25 @@
</li>
<li class="price-num">
<span class="price sale-price">¥\{{salesPrice}}</span>
<div class="stepper" data-productId=\{{productId}}>
<div class="minus action">
<div class="stepper" data-productType=\{{goods_type}}>
<div class="minus action \{{#isEqual buy_number 1}}disable\{{/isEqual}}">
<span class="iconfont"></span>
</div>
<div class="num">
<input type="text" class="input" value=\{{buy_number}} />
</div>
<div class="plus action">
<div class="plus action
\{{#isEqual left_number 0}}disable\{{/isEqual}}
">
<span class="iconfont"></span>
</div>
<div class="warning">
\{{#lte left_number 3}}
\{{#if left_number}}
仅剩\{{left_number}}件
\{{^}}
仅剩0件
\{{/if}}
\{{/lte}}
</div>
</div>
</li>
<li class="total-price-action">
...
...
@@ -211,7 +238,7 @@
</div>
<div id="remove_selected" class="action hoverable">删除选中的商品</div>
<div id="send_favorite" class="action hoverable">移入收藏夹</div>
<div id="
clear
_invalid" class="action hoverable">清除实效商品</div>
<div id="
warning
_invalid" class="action hoverable">清除实效商品</div>
<div class="selected-num">已选<span>\{{selectedNum}}</span>件</div>
<div class="checkout-total">
<div class="total-title">商品金额:</div>
...
...
apps/shopping/views/partial/cart/stepper.hbs
View file @
15b315f
<div
class=
"stepper"
data-productType=
{{
goods_type
}}
>
<div
class=
"minus action"
>
<div
class=
"minus action
{{#
isEqual
buy_number
1
}}
disable
{{/
isEqual
}}
"
>
<span
class=
"iconfont"
>

</span>
</div>
<div
class=
"num"
>
<input
type=
"text"
class=
"input"
value=
{{
buy_number
}}
/
>
</div>
<div
class=
"plus action"
>
<div
class=
"plus action
{{#
isEqual
left_number
0
}}
disable
{{/
isEqual
}}
"
>
<span
class=
"iconfont"
>

</span>
</div>
<div
class=
"warning"
>
{{#
lte
left_number
3
}}
{{#if
left_number
}}
仅剩
{{
left_number
}}
件
{{^}}
仅剩0件
{{/if}}
{{/
lte
}}
</div>
</div>
\ No newline at end of file
...
...
public/js/shopping/cart/stepper.js
View file @
15b315f
...
...
@@ -21,8 +21,6 @@ var Stepper = {
changeType
:
'DECREASE'
,
sku
:
sku
,
goodType
:
goodType
// changeTo: parseInt(currNum, 10) - 1
},
success
:
function
(
res
)
{
Util
.
refreshCart
(
res
,
function
()
{
...
...
@@ -43,15 +41,8 @@ var Stepper = {
changeType
:
'INCREASE'
,
sku
:
sku
,
goodType
:
goodType
// changeTo: parseInt(currNum, 10) + 1
},
success
:
function
(
res
)
{
// if (res.code === '0') {
// return callback(res.num, res.changed);
// } else {
// return callback(res.num, res.changed, res.code === '1000');
// }
Util
.
refreshCart
(
res
,
function
()
{
Stepper
.
init
();
});
...
...
@@ -101,7 +92,6 @@ var Stepper = {
if
(
changed
&&
plus
.
hasClass
(
'disable'
))
{
plus
.
removeClass
(
'disable'
);
}
});
}
});
...
...
public/js/shopping/cart/util.js
View file @
15b315f
...
...
@@ -55,6 +55,16 @@ var Util = {
return
options
.
inverse
(
this
);
});
hbs
.
registerHelper
(
'lte'
,
function
(
num1
,
num2
,
options
)
{
num1
=
typeof
num1
===
'number'
?
num1
:
parseFloat
(
num1
,
10
);
num2
=
typeof
num2
===
'number'
?
num2
:
parseFloat
(
num2
,
10
);
if
(
num1
<=
num2
)
{
return
options
.
fn
(
this
);
}
return
options
.
inverse
(
this
);
});
hbs
.
registerHelper
(
'image'
,
function
(
url
,
width
,
height
,
mode
)
{
mode
=
parseInt
(
mode
,
10
)
?
mode
:
2
;
url
=
url
||
''
;
...
...
public/scss/shopping/_stepper.css
View file @
15b315f
...
...
@@ -39,4 +39,14 @@
height
:
28px
;
text-align
:
center
;
}
.warning
{
clear
:
both
;
text-align
:
center
;
width
:
100%
;
margin-top
:
5px
;
color
:
#e8044f
;
font-size
:
13px
;
font-weight
:
bold
;
}
}
...
...
Please
register
or
login
to post a comment