Authored by 陈峰

Merge branch 'feature/cart' into 'release/5.4.1'

Feature/cart



See merge request !235
... ... @@ -358,3 +358,39 @@ exports.invoiceInfo = (req, res) => {
}));
})();
};
/**
* JIT 拆单配送信息页面
*/
exports.jitDetail = (req, res, next) => {
let cartType = req.query.cartType;
let headerData = headerModel.setNav({
navTitle: '配送信息',
navBtn: false
});
cartModel.jitDetailData(
req.user.uid,
cartType,
req.query.skuList,
req.query.orderCode,
req.session.TOKEN,
req.query.deliveryId,
req.query.paymentType,
req.query.couponCode,
req.query.yohoCoin
).then(result => {
if (cartType) {
_.assign(headerData, {
backUrl: result.returnUrl
});
}
res.render('jit-detail', _.assign(result, {
pageHeader: headerData,
jitDetailPage: true,
module: 'cart',
page: 'jit-detail',
}));
}).catch(next);
};
... ...
... ... @@ -304,3 +304,44 @@ exports.searchCoupon = (uid, couponCode) => {
return shoppingAPI.useCoupon(uid, couponCode)
.catch(() => result);
};
/**
* jit拆单数据(结算页和订单详情页)
* @param type $uid 用户uid
* @param type $cartType 购物车类型
* @param type $skuList cookie中记录的一些订单有关数据
* @param type $orderCode 订单号
* @param type $sessionKey 用户会话
* @param type $deliveryId 配送方式,1表示普通快递,2表示顺丰速运
* @param type $paymentType 支付方式,1表示在线支付,2表示货到付款
* @param type $couponCode 优惠券码
* @param type $yohoCoin 使用的有货币数量
* @return type
*/
exports.jitDetailData = (uid, cartType, skuList, orderCode, sessionKey,
deliveryId, paymentType, couponCode, yohoCoin) => {
if (deliveryId) {
// 购物车选择改变字段,重新运算订单数据
return shoppingAPI.orderComputeAPI(
uid,
cartType,
deliveryId,
paymentType,
couponCode,
yohoCoin,
skuList
).then(result => {
return paymentProcess.transformJit(_.get(result, 'data.package_list', []));
});
} else {
return shoppingAPI.cartPayAPI(
uid,
cartType,
0,
skuList
).then(result => {
return paymentProcess.transformJit(_.get(result, 'data.shopping_cart_data.package_list', []));
});
}
};
... ...
... ... @@ -39,6 +39,7 @@ router.get('/index/new/couponList', order.couponList); // [ajax]获å–优惠券å
router.post('/index/new/couponSearch', order.couponSearch); // [ajax]购物车输入优惠券码使用优惠券
router.get('/index/new/selectAddress', authMW, order.selectAddress); // 选择地址
router.get('/index/new/invoiceInfo', authMW, order.invoiceInfo); // 发票信息
router.get('/index/new/jitDetail', authMW, order.jitDetail); // JIT 拆单配送信息
router.get('/index/index', indexController.index); // 购物车
router.post('/index/add', indexController.add); // 加入购物车
... ...
<div class="jit-detail-page yoho-page">
{{#each packages}}
<div class="top">
{{packageType}}
<!-- <span class="package-type">包裹{{packageType}}:</span>-->
<!-- <span class="package-title">{{dispatchType}}</span>-->
</div>
<div class="middle">
<div class="swiper-container">
<div class="swiper-wrapper swiper-wrapper-jit">
{{#each goods}}
<a class="swiper-slide" href="javascript:void(0);">
<img class="swiper-lazy img-box" data-src="{{image thumb 235 314}}">
<div class="swiper-lazy-preloader"></div>
{{#if isGift}}
<span class="tag gift">赠品</span>
{{/if}}
{{#if isAdd}}
<span class="tag add">加价购</span>
{{/if}}
</a>
{{/each}}
</div>
</div>
</div>
<div class="bottom">
{{#if expressCost}}
<span>运费:¥{{expressCost}} </span>
{{/if}}
{{#if discount}}
<span>(已优惠¥{{discount}})</span>
{{/if}}
</div>
{{/each}}
</div>
... ...
<section class="block more-jit">
<a href="{{jitDetailUrl}}">
<div class="more-jit">
<span>商品需要分仓调拨</span>
<span>{{packageTitle}}</span>
<span class="iconfont icon-right-arrow">&#xe614;</span>
</div>
</a>
... ...
<section class="block more-jit">
<a href="{{jitDetailUrl}}">
<div class="more-jit">
<span>商品需要分仓调拨</span>
<span>{{packageTitle}}</span>
<span class="iconfont icon-right-arrow">&#xe614;</span>
</div>
</a>
... ...
/**
* jit拆单配送信息页面
* @author: zhaobiao<bill.zhao@yoho.cn>
* @date: 2016/04/26
*/
var Swiper = require('yoho-swiper'),
$ = require('yoho-jquery');
var height = $(window).height() - $('#yoho-header').height();
// 为了展示页面背景色,需要把页面根据窗口大小撑开
$('.jit-detail-page').css('height', height);
$('.jit-detail-page>div').show();
// 内容展示之后,再根据document高度,调整一次容器高度
height = $(document).height() - $('#yoho-header').height();
$('.jit-detail-page').css('height', height);
(function() {
return new Swiper('.swiper-container', {
slidesPerView: 'auto',
grabCursor: true,
slideElement: 'a',
lazyLoading: true,
watchSlidesVisibility: true
});
})();
... ...
... ... @@ -343,7 +343,7 @@
background-color: #fff;
border: none;
line-height: 74px;
height: 100%;
height: 74px;
&:disabled {
color: initial;
... ...
... ... @@ -167,6 +167,7 @@
&.down {
height: auto;
min-height: 108px;
.promo-item {
display: flex;
... ...
... ... @@ -15,6 +15,9 @@
.top {
margin-bottom: 1PX;
font-size: 34px;
overflow: hidden;
text-overflow:ellipsis;
white-space: nowrap;
}
.bottom {
... ...
.good-list-page {
.intro-text {
width: 100%;
line-height: 24px;
line-height: 28px;
padding: 22px 24px;
font-size: 24px;
background: #f8f8f8;
... ...
... ... @@ -63,7 +63,7 @@ const formatAdvanceGoods = (advanceGood, isGift) => {
promotionId: advanceGood.promotion_id,
promotionTitle: advanceGood.promotion_title,
status: advanceGood.status,
goods: _.get(advanceGood, 'gift_goods_List', []).map(good => {
goods: (_.get(advanceGood, 'gift_goods_List') || _.get(advanceGood, 'goods_list') || []).map(good => {
return {
id: good.product_skn,
name: good.product_name,
... ...
... ... @@ -264,7 +264,8 @@ function tranformPayment(data, orderInfo, cartType, skuList, orderComputeData) {
skuList: skuList
}, jitInfo);
result.jitDetailUrl = helpers.urlFormat('/cart/index/jitDetail', param);
result.jitDetailUrl = helpers.urlFormat('/cart/index/new/jitDetail', param);
result.packageTitle = cartData.package_title;
}
result.cartPayData = cartData.promotion_formula_list;
... ... @@ -316,8 +317,53 @@ function coupon(count, orderInfo, orderComputeData) {
return coupons;
}
/**
* JIT 拆单数据处理
*/
function transformJit(packageList) {
let result = {
packages: []
};
_.forEach(packageList, (pValue, pKey) => {
result.packages[pKey] = {
packageType: '包裹' + (pKey + 1) + ':' + pValue.title
};
_.forEach(pValue.goods_list, (gValue, gKey) => {
result.packages[pKey].goods = [];
result.packages[pKey].goods[gKey] = {
thumb: gValue.goods_images
};
switch (gValue.goods_type) {
case 'price_gift' :
// 加价购
result.packages[pKey].goods[gKey].isAdd = true;
break;
case 'gift' :
// 赠品
result.packages[pKey].goods[gKey].isGift = true;
break;
default:
break;
}
});
if (pValue.shopping_cost !== '0.00') {
result.packages[pKey].expressCost = pValue.shopping_cost;
}
if (pValue.shopping_cut_cost !== '0.00') {
result.packages[pKey].discount = pValue.shopping_cut_cost;
}
});
return result;
}
module.exports = {
tranformPayment,
yohoCoinCompute,
coupon
coupon,
transformJit
};
... ...