Authored by OF1706

Merge branch 'feature/shoppingCart' of http://git.yoho.cn/fe/yohobuy-node into feature/shoppingCart

@@ -337,6 +337,31 @@ const modifyProduct = (req, res, next) => { @@ -337,6 +337,31 @@ const modifyProduct = (req, res, next) => {
337 }).catch(next); 337 }).catch(next);
338 }; 338 };
339 339
  340 +const swapGift = (req, res, next) => {
  341 +
  342 + let uid = req.user && req.user.uid;
  343 + let shoppingKey = helper.getShoppingKeyByCookie(req);
  344 +
  345 + let promotionId = req.body.promotionId;
  346 + let newSkn = req.body.new_skn;
  347 + let newSku = req.body.new_sku;
  348 +
  349 + service.swapGift(uid, shoppingKey, promotionId, newSkn, newSku)
  350 + .then(ret => {
  351 + res.send(ret);
  352 + }).catch(next);
  353 +};
  354 +
  355 +const queryPromotionGift = (req, res, next) => {
  356 +
  357 + let promotionId = req.query.promotionId;
  358 +
  359 + service.queryPromotionGift(promotionId)
  360 + .then(ret => {
  361 + res.send(ret);
  362 + }).catch(next);
  363 +};
  364 +
340 module.exports = { 365 module.exports = {
341 getProductInfo, 366 getProductInfo,
342 getProductData, 367 getProductData,
@@ -352,5 +377,7 @@ module.exports = { @@ -352,5 +377,7 @@ module.exports = {
352 getTogetherProduct, 377 getTogetherProduct,
353 getRecommendProductAction, 378 getRecommendProductAction,
354 getIncreasePurchase, 379 getIncreasePurchase,
355 - modifyProduct 380 + modifyProduct,
  381 + swapGift,
  382 + queryPromotionGift
356 }; 383 };
@@ -16,7 +16,7 @@ const stepper = [ @@ -16,7 +16,7 @@ const stepper = [
16 ]; 16 ];
17 17
18 const index = (req, res, next) => { 18 const index = (req, res, next) => {
19 - let cartType = req.query.cartType === '2' ? 'advance' : 'ordinary'; 19 + let cartType = req.query.type === '2' ? 'advance' : 'ordinary';
20 20
21 oeModel.index(req.user.uid, cartType).then(result => { 21 oeModel.index(req.user.uid, cartType).then(result => {
22 let header = headerModel.setSimpleHeaderData() || {}; 22 let header = headerModel.setSimpleHeaderData() || {};
@@ -596,6 +596,50 @@ const modifyProduct = (options) => { @@ -596,6 +596,50 @@ const modifyProduct = (options) => {
596 return api.get('', params); 596 return api.get('', params);
597 }; 597 };
598 598
  599 +/**
  600 + * 更换加价购,赠品商品
  601 + * @function modifyProduct
  602 + * @param { Number } uid 用户ID
  603 + * @param { String } swapData 商品修改信息
  604 + * @param { String } shoppingKey 未登录用户唯一识别码
  605 + * @return { Object } 接口返回单个商品修改结果
  606 + */
  607 +const swapGift = (uid, shoppingKey, promotionId, newSkn, newSku) => {
  608 +
  609 +
  610 + let param = {
  611 + method: 'app.Shopping.swapGift',
  612 + promotion_id: promotionId,
  613 + new_product_skn: newSkn,
  614 + new_product_sku: newSku
  615 + };
  616 +
  617 + if (uid) {
  618 + param.uid = uid;
  619 + }
  620 +
  621 + if (shoppingKey) {
  622 + param.shopping_key = shoppingKey;
  623 + }
  624 +
  625 +
  626 + return api.get('', param);
  627 +};
  628 +
  629 +/**
  630 + * 查询所有可选的赠品或者加价购的商品
  631 + * @param promotionId
  632 + * @returns {*}
  633 + */
  634 +const queryPromotionGift = (promotionId) => {
  635 + let param = {
  636 + method: 'app.Shopping.queryPromotionGift',
  637 + promotion_id: promotionId
  638 + };
  639 +
  640 + return api.get('', param);
  641 +};
  642 +
599 module.exports = { 643 module.exports = {
600 cartData, 644 cartData,
601 addToCart, 645 addToCart,
@@ -619,5 +663,7 @@ module.exports = { @@ -619,5 +663,7 @@ module.exports = {
619 addTicket, 663 addTicket,
620 checkUserIsFavProductList, 664 checkUserIsFavProductList,
621 newPreference, 665 newPreference,
622 - modifyProduct 666 + modifyProduct,
  667 + swapGift,
  668 + queryPromotionGift
623 }; 669 };
@@ -825,6 +825,14 @@ const modifyProduct = (param) => { @@ -825,6 +825,14 @@ const modifyProduct = (param) => {
825 return cartApi.modifyProduct(param); 825 return cartApi.modifyProduct(param);
826 }; 826 };
827 827
  828 +const swapGift = (uid, shoppingKey, promotionId, newSkn, newSku) => {
  829 + return cartApi.swapGift(uid, shoppingKey, promotionId, newSkn, newSku);
  830 +};
  831 +
  832 +const queryPromotionGift = (promotionId) => {
  833 + return cartApi.queryPromotionGift(promotionId);
  834 +};
  835 +
828 module.exports = { 836 module.exports = {
829 getProductInfoAsync, // 获取某一个商品详情主页面 837 getProductInfoAsync, // 获取某一个商品详情主页面
830 getCartData, 838 getCartData,
@@ -836,5 +844,7 @@ module.exports = { @@ -836,5 +844,7 @@ module.exports = {
836 addToFav, 844 addToFav,
837 checkUserIsFav, 845 checkUserIsFav,
838 getRecommendProduct, 846 getRecommendProduct,
839 - modifyProduct 847 + modifyProduct,
  848 + swapGift,
  849 + queryPromotionGift
840 }; 850 };
@@ -57,11 +57,6 @@ const handleUseYohoCoin = (info) => { @@ -57,11 +57,6 @@ const handleUseYohoCoin = (info) => {
57 const handlePaymentInfo = (d, address) => { 57 const handlePaymentInfo = (d, address) => {
58 let resData = {}; 58 let resData = {};
59 59
60 - // 地址信息加密  
61 - // d.delivery_address.id = crypto.encryption('', `${d.delivery_address.address_id}`);  
62 - // delete d.delivery_address.address_id;  
63 - // resData.deliveryAddress = d.delivery_address;  
64 -  
65 _.forEach(address, dd => { 60 _.forEach(address, dd => {
66 if (dd.is_default === 'Y') { 61 if (dd.is_default === 'Y') {
67 dd.default = true; 62 dd.default = true;
@@ -81,26 +76,6 @@ const handlePaymentInfo = (d, address) => { @@ -81,26 +76,6 @@ const handlePaymentInfo = (d, address) => {
81 76
82 d.shopping_cart_data.hasCoin = _.round(d.yoho_coin * 100); // 有货币稀释 77 d.shopping_cart_data.hasCoin = _.round(d.yoho_coin * 100); // 有货币稀释
83 78
84 - // let supportLine = [];  
85 -  
86 - // _.forEach(['zhifubao', 'zaixianzhifu', 'weixinzhifu', 'wangyinzaixian',  
87 - // 'caifutong', 'shengfutong', 'tonglianzhifu'], sl => {  
88 - // supportLine.push(`//static.yohobuy.com/images/pay/icon/${sl}.png`);  
89 - // }  
90 - // );  
91 - // resData.supportLine = supportLine;  
92 -  
93 - // let supportBank = [];  
94 -  
95 - // _.forEach(  
96 - // ['BOC', 'ICBC', 'CMB', 'CCB', 'ABC', 'SPDB', 'CIB', 'GDB', 'SDB', 'CMBC',  
97 - // 'COMM', 'CITIC', 'HZCBB2C', 'CEB', 'SHBANK', 'NBBANK', 'SZPAB', 'BJRCB', 'FDB', 'PSBC'],  
98 - // sb => {  
99 - // supportBank.push(`//static.yohobuy.com/images/bankico/${sb}.gif`);  
100 - // }  
101 - // );  
102 - // resData.supportBank = supportBank;  
103 -  
104 _.forEach(d.goods_list, g => { 79 _.forEach(d.goods_list, g => {
105 // link to goods 80 // link to goods
106 g.linkToGoods = helper.urlFormat(`/product/pro_${g.product_id}_${g.goods_id}/${g.cn_alphabet}.html`, 81 g.linkToGoods = helper.urlFormat(`/product/pro_${g.product_id}_${g.goods_id}/${g.cn_alphabet}.html`,
@@ -108,22 +83,6 @@ const handlePaymentInfo = (d, address) => { @@ -108,22 +83,6 @@ const handlePaymentInfo = (d, address) => {
108 }); 83 });
109 resData.goodsList = d.goods_list; 84 resData.goodsList = d.goods_list;
110 85
111 - _.remove(d.payment_way, function(n) {  
112 - return n.is_support === 'N';  
113 - });  
114 -  
115 - // let dPw = _.find(d.payment_way, {default: 'Y'});  
116 - // let dDt = _.find(d.delivery_time, {default: 'Y'});  
117 -  
118 - // resData.defaultPayDelivery = {  
119 - // paymentTypeName: dPw ? dPw.payment_type_name : '在线支付(推荐)',  
120 - // paymentType: dPw ? dPw.payment_type : 1,  
121 - // paymentTypeId: dPw ? dPw.payment_id : 15,  
122 - // deliveryTimeStr: dDt ? dDt.delivery_time_string : '送货时间不限',  
123 - // deliveryTimeId: dDt ? dDt.delivery_time_id : 2,  
124 - // contractMe: false  
125 - // };  
126 -  
127 if (d.shopping_cart_data && d.shopping_cart_data.promotion_formula_list) { 86 if (d.shopping_cart_data && d.shopping_cart_data.promotion_formula_list) {
128 handleViewPrice(d.shopping_cart_data.promotion_formula_list); 87 handleViewPrice(d.shopping_cart_data.promotion_formula_list);
129 } 88 }
@@ -25,6 +25,7 @@ router.post('/address/setdefault', address.setDefault); // 设置默认地址 @@ -25,6 +25,7 @@ router.post('/address/setdefault', address.setDefault); // 设置默认地址
25 router.get('/ensure', ensure.index); // 限购商品快捷结算页 25 router.get('/ensure', ensure.index); // 限购商品快捷结算页
26 router.get('/ensure/coupons', ensure.getCoupons); // 限购商品快捷结算页 26 router.get('/ensure/coupons', ensure.getCoupons); // 限购商品快捷结算页
27 router.post('/ensure/compute', ensure.compute); // 价格重新计算 27 router.post('/ensure/compute', ensure.compute); // 价格重新计算
  28 +router.post('/ensure/submit', ensure.submit); // 价格重新计算
28 29
29 router.get('/easypay', easypay.index); // 限购商品快捷结算页 30 router.get('/easypay', easypay.index); // 限购商品快捷结算页
30 router.post('/easypay/compute', easypay.compute); // 价格重新计算 31 router.post('/easypay/compute', easypay.compute); // 价格重新计算
@@ -39,5 +40,7 @@ router.post('/index/remove', cart.removeProduct); @@ -39,5 +40,7 @@ router.post('/index/remove', cart.removeProduct);
39 router.post('/index/fav', cart.moveToFav); 40 router.post('/index/fav', cart.moveToFav);
40 router.post('/index/checkFav', cart.checkFav); 41 router.post('/index/checkFav', cart.checkFav);
41 router.get('/index/getProductData', cart.getProductData); 42 router.get('/index/getProductData', cart.getProductData);
  43 +router.post('/index/swapGift', cart.swapGift);
  44 +router.get('/index/queryPromotionGift', cart.queryPromotionGift);
42 45
43 module.exports = router; 46 module.exports = router;
@@ -108,7 +108,9 @@ @@ -108,7 +108,9 @@
108 <div class="gift-sell mt40"> 108 <div class="gift-sell mt40">
109 {{#promotionInfos}} 109 {{#promotionInfos}}
110 110
111 - <div class="gift-sell-info" data-role="promotion-wrap"> 111 + <div class="gift-sell-info"
  112 + data-role="promotion-wrap"
  113 + data-promotionid="{{promotionId}}">
112 <code class="order-pay-mark 114 <code class="order-pay-mark
113 {{#unless isReach}}order-pay-mark-white{{/unless}}"> 115 {{#unless isReach}}order-pay-mark-white{{/unless}}">
114 {{tag}} 116 {{tag}}
@@ -147,7 +149,7 @@ @@ -147,7 +149,7 @@
147 {{/if}} 149 {{/if}}
148 {{/if}} 150 {{/if}}
149 151
150 - {{> cart-sel-gift-tpl }} 152 + {{!--{{> cart-sel-gift-tpl }}--}}
151 {{!--<textarea data-role="gifts-cansel" class="hide" data-promotionid="{{promotionId}}">{{{giftGoodsListStr}}}</textarea>--}} 153 {{!--<textarea data-role="gifts-cansel" class="hide" data-promotionid="{{promotionId}}">{{{giftGoodsListStr}}}</textarea>--}}
152 </div> 154 </div>
153 {{/promotionInfos}} 155 {{/promotionInfos}}
@@ -35,7 +35,7 @@ @@ -35,7 +35,7 @@
35 <div class="pay-wrap"> 35 <div class="pay-wrap">
36 <div class="block-title">支付方式</div> 36 <div class="block-title">支付方式</div>
37 {{#each paymentWay}} 37 {{#each paymentWay}}
38 - <p> 38 + <p{{#isEqual is_support 'N'}} class="unsp-pay"{{/isEqual}}>
39 <label class="check-btn{{#isY default}} checked{{/isY}}" data-id="{{payment_id}}" data-type="{{payment_type}}" data-name="{{payment_type_name}}">{{payment_type_name}}</label> 39 <label class="check-btn{{#isY default}} checked{{/isY}}" data-id="{{payment_id}}" data-type="{{payment_type}}" data-name="{{payment_type_name}}">{{payment_type_name}}</label>
40 {{#isEqual payment_type 1}} 40 {{#isEqual payment_type 1}}
41 <span>支持主流银行卡、微信、支付宝、银联等平台付款,方便快捷</span> 41 <span>支持主流银行卡、微信、支付宝、银联等平台付款,方便快捷</span>
@@ -48,12 +48,13 @@ @@ -48,12 +48,13 @@
48 </div> 48 </div>
49 <div class="delivery-way-wrap"> 49 <div class="delivery-way-wrap">
50 <div class="block-title">配送方式</div> 50 <div class="block-title">配送方式</div>
  51 + <input type="hidden" id="support-way2">
51 {{# deliveryWay}} 52 {{# deliveryWay}}
52 - <p> 53 + <p{{#isEqual is_support 'N'}} class="unsp-way"{{/isEqual}}>
53 <label class="check-btn{{#isY default}} checked{{/isY}}" data-id="{{delivery_way_id}}" 54 <label class="check-btn{{#isY default}} checked{{/isY}}" data-id="{{delivery_way_id}}"
54 title="{{delivery_way_name}}:运费 ¥ {{delivery_way_cost}}">{{delivery_way_name}}:运费 ¥ {{delivery_way_cost}}</label> 55 title="{{delivery_way_name}}:运费 ¥ {{delivery_way_cost}}">{{delivery_way_name}}:运费 ¥ {{delivery_way_cost}}</label>
55 {{#isEqual delivery_way_id 2}} 56 {{#isEqual delivery_way_id 2}}
56 - <span>您所选择的区域暂不在支持顺丰派送范围内,点击<a href="#">查看详情></a> </span> 57 + <span>您所选择的区域暂不在支持顺丰派送范围内,点击<a href="#" class="more-info">查看详情></a> </span>
57 {{/isEqual}} 58 {{/isEqual}}
58 </p> 59 </p>
59 {{/ deliveryWay}} 60 {{/ deliveryWay}}
@@ -104,7 +105,7 @@ @@ -104,7 +105,7 @@
104 颜色:<span class="color">{{color_name}}</span> 105 颜色:<span class="color">{{color_name}}</span>
105 尺码:<span class="size">{{size_name}}</span> 106 尺码:<span class="size">{{size_name}}</span>
106 </td> 107 </td>
107 - <td class="border-top price">¥ {{round last_vip_price 2}}</td> 108 + <td class="border-top price">¥ {{round last_price 2}}</td>
108 <td class="border-top">× {{buy_number}}</td> 109 <td class="border-top">× {{buy_number}}</td>
109 <td{{#if @first}} class="border-top"{{/if}}></td> 110 <td{{#if @first}} class="border-top"{{/if}}></td>
110 </tr> 111 </tr>
  1 +<div class="detail-body">
  2 + <div class="slide-img">
  3 + <p class="sell-class-title">选赠品:
  4 + <em class="slide-img-title"><span
  5 + class="active">1元加价购</span>
  6 + <code class="spacing">|</code>
  7 + <span>59元加价购</span>
  8 + <code class="spacing">|</code>
  9 + <span>99元加价购</span>
  10 + </em>
  11 + </p>
  12 + <div class="side-img-dd">
  13 + <ul class="img-list">
  14 + {{#each giftGoodsList}}
  15 + <li class="img-item">
  16 + <span class="hide goods-id">{{goods_id}}</span>
  17 + <div class="good">
  18 + <a href="javascript:void(0)" target="_blank"> {{!--{{link}}--}}
  19 + <img class="lazy" src="{{imgCover}}"/>
  20 + </a>
  21 + </div>
  22 + </li>
  23 + {{/each}}
  24 + </ul>
  25 + <div class="img-brand-switch">
  26 + <a class="prev iconfont" href="javascript:;">&#xe609;</a>
  27 + <a class="next iconfont" href="javascript:;">&#xe608;</a>
  28 + </div>
  29 + </div>
  30 + </div>
  31 + <div class="detail-goods">
  32 + <div class="detail-bigpic">
  33 + <div class="bigpic">
  34 + <img src="">
  35 + </div>
  36 + <div class="bigpic none">
  37 + <img src="">
  38 + </div>
  39 + <div class="bigpic none">
  40 + <img src="">
  41 + </div>
  42 + <div class="bigpic none">
  43 + <img src="">
  44 + </div>
  45 + <div class="bigpic none">
  46 + <img src="">
  47 + </div>
  48 + <div class="bigpic none">
  49 + <img src="">
  50 + </div>
  51 + <div class="piclist">
  52 + <span class="pre"></span>
  53 + <div class="con">
  54 + <ul>
  55 + <li class="active"><img src=""></li>
  56 + <li><img src=""></li>
  57 + <li><img src=""></li>
  58 + <li><img src=""></li>
  59 + <li><img src=""></li>
  60 + </ul>
  61 + </div>
  62 + <span class="next"></span>
  63 + </div>
  64 + </div>
  65 + <div class="detail-bigpic none">
  66 + <div class="bigpic">
  67 + <img src="">
  68 + </div>
  69 + <div class="bigpic none">
  70 + <img src="">
  71 + </div>
  72 + <div class="bigpic none">
  73 + <img src="">
  74 + </div>
  75 + <div class="bigpic none">
  76 + <img src="">
  77 + </div>
  78 + <div class="bigpic none">
  79 + <img src="">
  80 + </div>
  81 + <div class="bigpic none">
  82 + <img src="">
  83 + </div>
  84 + <div class="piclist">
  85 + <span class="pre"></span>
  86 + <div class="con">
  87 + <ul>
  88 + <li class="active"><img src=""></li>
  89 + <li><img src=""></li>
  90 + <li><img src=""></li>
  91 + <li><img src=""></li>
  92 + <li><img src=""></li>
  93 + </ul>
  94 + </div>
  95 + <span class="next"></span>
  96 + </div>
  97 + </div>
  98 + <div class="detail-info">
  99 + <div class="title">
  100 + <h2>哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈{{name}}</h2>
  101 + </div>
  102 + <div class="price">
  103 +
  104 + <span class="newprice">现价:<b class="promotion-price">¥7777{{salePrice}}</b></span>
  105 + <span class="activityprice">活动价:<b class="promotion-price">¥5555{{marketPrice}}</b></span>
  106 +
  107 + </div>
  108 + <div class="order">
  109 + <dl>
  110 + <dd class="colorBox">选颜色:</dd>
  111 + <dt>
  112 + <div class="colorBox">
  113 + <ul>
  114 + <li class="color active">
  115 + <p class="{{#if focus}}atcive{{/if}}"><span></span><img src=""></p>
  116 + <span>{{name}}</span>
  117 + </li>
  118 + <li class="color">
  119 + <p class="{{#if focus}}atcive{{/if}}"><span></span><img src=""></p>
  120 + <span>{{name}}</span>
  121 + </li>
  122 + </ul>
  123 + </div>
  124 + </dt>
  125 + </dl>
  126 + <dl>
  127 + <dd class="showSizeBox">选尺码:</dd>
  128 + <dt>
  129 + <div class="showSizeBox">
  130 + <span data-sku="{{sku}}" data-num="{{num}}" class="disabled">40码{{name}}</span>
  131 + <span data-sku="{{sku}}" data-num="{{num}}">40码{{name}}</span>
  132 + <span data-sku="{{sku}}" data-num="{{num}}">40码{{name}}</span>
  133 + <span data-sku="{{sku}}" data-num="{{num}}">40码{{name}}</span>
  134 + </div>
  135 + <p class="size-p">内长&nbsp;25.5com</p>
  136 + </dt>
  137 + </dl>
  138 + <dl>
  139 + <dd>选件数:</dd>
  140 + <dt>
  141 + <div class="amount_wrapper">
  142 + <input type="text" id="num" class="num" value="1" readonly="readonly">
  143 + <a class="amount cut"><i class="iconfont">&#xe6c0;</i></a>
  144 + <a class="amount add"><i class="iconfont">&#xe6c1;</i></a>
  145 + </div>
  146 + </dt>
  147 + </dl>
  148 + </div>
  149 + <div class="submit">
  150 + <button class="btn-red"><i class="addCart iconfont">&#xe600;</i>添加到购物车</button>
  151 + <button class="btn-favCount"><i class="favCount iconfont">&#xe68f;</i>收藏商品</button>
  152 + </div>
  153 + </div>
  154 + <div class="detail-size">
  155 + <h3>尺码信息(单位:厘米)</h3>
  156 + <table>
  157 + <thead>
  158 + <tr>
  159 + <th width="{{width}}">吊牌吃吗</th>
  160 + <th width="{{width}}">吊牌吃吗
  161 + </td>
  162 + <th width="{{width}}">吊牌吃吗
  163 + </td>
  164 + <th width="{{width}}">吊牌吃吗
  165 + </td>
  166 + <th width="{{width}}">吊牌吃吗
  167 + </td>
  168 + <th width="{{width}}">吊牌吃吗
  169 + </td>
  170 + </tr>
  171 + </thead>
  172 + <tbody>
  173 + <tr>
  174 + <td>6666{{.}}</td>
  175 + </tr>
  176 + <tr>
  177 + <td>4444{{.}}</td>
  178 + </tr>
  179 + </tbody>
  180 + </table>
  181 + <div class="size-info">
  182 + ※ 以上尺寸为实物实际测量,因测量方式不同会有略微误差,相关数据仅作参考,以收到实物为准。
  183 + </div>
  184 + </div>
  185 + </div>
  186 +</div>
@@ -3,7 +3,7 @@ @@ -3,7 +3,7 @@
3 <div class="dl choose-color"> 3 <div class="dl choose-color">
4 <div class="dd">颜色:</div> 4 <div class="dd">颜色:</div>
5 {{#each colors}} 5 {{#each colors}}
6 - <div class="dt {{#if focus}} active current-color{{/if}} {{#if disable}} disabled{{/if}}" 6 + <div class="dt {{#if active}} active current-color{{/if}} {{#if disable}} disabled{{/if}}"
7 data-pic="{{image pic 100 134}}" 7 data-pic="{{image pic 100 134}}"
8 data-pid="{{pid}}" 8 data-pid="{{pid}}"
9 {{!--data-target="{{proId}}-color-{{@index}}" 9 {{!--data-target="{{proId}}-color-{{@index}}"
@@ -17,10 +17,10 @@ @@ -17,10 +17,10 @@
17 <div class="dl choose-size"> 17 <div class="dl choose-size">
18 <div class="dd">尺码:</div> 18 <div class="dd">尺码:</div>
19 {{#each colors}} 19 {{#each colors}}
20 - <div class="size-row {{#unless focus}} hide{{/unless}}"> 20 + <div class="size-row {{#unless active}} hide{{/unless}}">
21 <div class="choose-size-detail"> 21 <div class="choose-size-detail">
22 {{#each sizes}} 22 {{#each sizes}}
23 - <div class="dt {{#if sizeFocus}}active{{/if}}" 23 + <div class="dt {{#if sizeActive}}active{{/if}}"
24 {{#unless num}}class="disable"{{/unless}} 24 {{#unless num}}class="disable"{{/unless}}
25 data-sku="{{sku}}" 25 data-sku="{{sku}}"
26 data-num="{{num}}" 26 data-num="{{num}}"
@@ -52,7 +52,7 @@ @@ -52,7 +52,7 @@
52 </div> 52 </div>
53 <div class="goods-info-bigImg"> 53 <div class="goods-info-bigImg">
54 {{# colors}} 54 {{# colors}}
55 - <div class="bigImg {{#unless focus}} hide{{/unless}}"> 55 + <div class="bigImg {{#unless active}} hide{{/unless}}">
56 {{#if pic}} 56 {{#if pic}}
57 <img src="{{image pic 100 134}}" /> 57 <img src="{{image pic 100 134}}" />
58 {{else}} 58 {{else}}
@@ -3,17 +3,18 @@ @@ -3,17 +3,18 @@
3 */ 3 */
4 4
5 var $ = require('yoho-jquery'); 5 var $ = require('yoho-jquery');
6 -  
7 -// var Dialog = require('../common/dialog').Dialog;  
8 -var Alert = require('../common/dialog').Alert;  
9 -var Confirm = require('../common/dialog').Confirm; 6 +var dialog = require('../common/dialog');
  7 +var Dialog = dialog.Dialog;
  8 +var Alert = dialog.Alert;
  9 +var Confirm = dialog.Confirm;
10 10
11 var $cartnewTips = $('.cartnew-tips'), 11 var $cartnewTips = $('.cartnew-tips'),
12 $payWapper = $('.pay-wapper'), 12 $payWapper = $('.pay-wapper'),
13 $cartnewSum = $('.cartnew-sum'), 13 $cartnewSum = $('.cartnew-sum'),
14 CART_ITEM_DEL_URL = '/cart/index/remove', 14 CART_ITEM_DEL_URL = '/cart/index/remove',
15 CART_ITEM_FAV_URL = '/cart/index/fav', 15 CART_ITEM_FAV_URL = '/cart/index/fav',
16 - selColorWinTpl = require('hbs/cart/select-color-panel.hbs'); 16 + selColorWinTpl = require('hbs/cart/select-color-panel.hbs'),
  17 + giftsWinTpl = require('hbs/cart/cart-gifts-win-tpl.hbs');
17 18
18 // 关闭温馨提示 19 // 关闭温馨提示
19 $cartnewTips.find('.btn_close').click(function() { 20 $cartnewTips.find('.btn_close').click(function() {
@@ -188,6 +189,7 @@ function addcart(data, cookieList) { @@ -188,6 +189,7 @@ function addcart(data, cookieList) {
188 } 189 }
189 190
190 function parseProductInfo(productInfo, defaultInfo) { 191 function parseProductInfo(productInfo, defaultInfo) {
  192 +
191 var index = 0; 193 var index = 0;
192 var colors; 194 var colors;
193 var colorsLen; 195 var colorsLen;
@@ -230,7 +232,6 @@ function parseProductInfo(productInfo, defaultInfo) { @@ -230,7 +232,6 @@ function parseProductInfo(productInfo, defaultInfo) {
230 // 默认选中用户选择的sku,若已售罄或下架,则选中列表中第一个非售罄的sku 232 // 默认选中用户选择的sku,若已售罄或下架,则选中列表中第一个非售罄的sku
231 for (index = 0; index < filterSet.length; index++) { 233 for (index = 0; index < filterSet.length; index++) {
232 curColor = filterSet[index]; 234 curColor = filterSet[index];
233 -  
234 if (!hasActiveColor && String(curColor.name) === String(defaultInfo.color)) { 235 if (!hasActiveColor && String(curColor.name) === String(defaultInfo.color)) {
235 curColor.active = true; 236 curColor.active = true;
236 curColor.hasActiveColor = hasActiveColor = true; 237 curColor.hasActiveColor = hasActiveColor = true;
@@ -241,9 +242,10 @@ function parseProductInfo(productInfo, defaultInfo) { @@ -241,9 +242,10 @@ function parseProductInfo(productInfo, defaultInfo) {
241 curSize = curColor.sizes; 242 curSize = curColor.sizes;
242 243
243 for (sizeIdx = 0; sizeIdx < curSize.length; sizeIdx++) { 244 for (sizeIdx = 0; sizeIdx < curSize.length; sizeIdx++) {
  245 +
244 if (curColor.hasActiveColor && curSize[sizeIdx].sku === defaultInfo.sku) { 246 if (curColor.hasActiveColor && curSize[sizeIdx].sku === defaultInfo.sku) {
245 // console.log(curSize[sizeIdx]); 247 // console.log(curSize[sizeIdx]);
246 - curSize[sizeIdx].sizeFocus = true; 248 + curSize[sizeIdx].sizeActive = true;
247 break; 249 break;
248 } 250 }
249 } 251 }
@@ -294,6 +296,28 @@ function renderAndShowSelWin($item, pinfo) { @@ -294,6 +296,28 @@ function renderAndShowSelWin($item, pinfo) {
294 $selWin.show(); 296 $selWin.show();
295 } 297 }
296 298
  299 +function getProductByPromotionId(promotionId) {
  300 + return $.ajax({
  301 + type: 'GET',
  302 + url: '/cart/index/queryPromotionGift',
  303 + data: {
  304 + promotionId: promotionId
  305 + }
  306 + }).done(function(res) {
  307 + return res;
  308 + });
  309 +}
  310 +
  311 +function renderAndShowGiftWin(plist) {
  312 +
  313 + var d = new Dialog({
  314 + content: giftsWinTpl(plist),
  315 + className: 'cart-togetherGoods'
  316 + });
  317 +
  318 + d.show();
  319 +}
  320 +
297 var Cart = { 321 var Cart = {
298 addToCart: function(params) { 322 addToCart: function(params) {
299 323
@@ -580,7 +604,7 @@ var Cart = { @@ -580,7 +604,7 @@ var Cart = {
580 }, 604 },
581 selectColor: function() { 605 selectColor: function() {
582 var $this = $(this); 606 var $this = $(this);
583 - var index = $this.index('.dt'); 607 + var index = $this.index($this.parent().find('.dt'));
584 var $srows = $this.closest('.goods-info').find('.choose-size .size-row'); 608 var $srows = $this.closest('.goods-info').find('.choose-size .size-row');
585 var $bigImgs = $this.closest('.goods-choose-box').find('.goods-info-bigImg .bigImg'); 609 var $bigImgs = $this.closest('.goods-choose-box').find('.goods-info-bigImg .bigImg');
586 610
@@ -603,6 +627,31 @@ var Cart = { @@ -603,6 +627,31 @@ var Cart = {
603 $this.siblings('.dt').removeClass('active'); 627 $this.siblings('.dt').removeClass('active');
604 $this.addClass('active'); 628 $this.addClass('active');
605 }, 629 },
  630 + showGiftWin: function () {
  631 +
  632 + var $this = $(this);
  633 + var $wrap = $this.closest('[data-role="promotion-wrap"]');
  634 + var promotionid = $wrap.data('promotionid');
  635 + var productList = $wrap.data('_giftList');
  636 +
  637 + console.log($this);
  638 + console.log($wrap);
  639 + console.log(promotionid);
  640 + if(!productList) {
  641 + getProductByPromotionId(promotionid).done(function(plist) {
  642 +
  643 + productList = plist;
  644 +
  645 + $wrap.data('_giftList', productList);
  646 + renderAndShowGiftWin(productList);
  647 + }).fail(function() {
  648 + new Alert('获取商品失败,请稍后再试!').show();
  649 + });
  650 + return;
  651 + }
  652 +
  653 + renderAndShowGiftWin(productList);
  654 + },
606 submit: function() { 655 submit: function() {
607 /* understock = ''; 656 /* understock = '';
608 if ($('.pay-wapper input:checked').parents('tr').find('.tipNoStore').length > 0) { 657 if ($('.pay-wapper input:checked').parents('tr').find('.tipNoStore').length > 0) {
@@ -659,8 +708,9 @@ $('.btn_account').on('click', Cart.submit); // 结算 @@ -659,8 +708,9 @@ $('.btn_account').on('click', Cart.submit); // 结算
659 $payWapper.on('click', 'li[data-role="pitem"] .pay-pro-detail', Cart.showColorSizePanel); 708 $payWapper.on('click', 'li[data-role="pitem"] .pay-pro-detail', Cart.showColorSizePanel);
660 $payWapper.on('click', 'li[data-role="pitem"] .button-cancel', Cart.hideColorSizePanel); 709 $payWapper.on('click', 'li[data-role="pitem"] .button-cancel', Cart.hideColorSizePanel);
661 $payWapper.on('click', 'li[data-role="pitem"] .button-sure', Cart.editColorOrSize); 710 $payWapper.on('click', 'li[data-role="pitem"] .button-sure', Cart.editColorOrSize);
662 -$payWapper.on('click', 'li[data-role="pitem"] .goods-choose-box .choose-color .dt', Cart.selectColor);  
663 -$payWapper.on('click', 'li[data-role="pitem"] .goods-choose-box .choose-size .dt', Cart.selectSize); 711 +$payWapper.find('li[data-role="pitem"]').on('click', '.goods-choose-box .choose-color .dt', Cart.selectColor);
  712 +$payWapper.find('li[data-role="pitem"]').on('click', '.goods-choose-box .choose-size .dt', Cart.selectSize);
  713 +
664 714
665 /** 赠品加价购弹窗 **/ 715 /** 赠品加价购弹窗 **/
666 // 显示赠品 716 // 显示赠品
@@ -670,6 +720,8 @@ var giftBtn = ['[data-role=gift-view-btn]', @@ -670,6 +720,8 @@ var giftBtn = ['[data-role=gift-view-btn]',
670 '[data-role=pg-sel-btn]', 720 '[data-role=pg-sel-btn]',
671 '[data-role=pg-resel-btn]']; 721 '[data-role=pg-resel-btn]'];
672 722
  723 +$payWapper.on('click', giftBtn.join(','), Cart.showGiftWin);
  724 +/*
673 $('.shop-cart').on('click', giftBtn.join(','), function() { 725 $('.shop-cart').on('click', giftBtn.join(','), function() {
674 726
675 var $this = $(this); 727 var $this = $(this);
@@ -681,4 +733,4 @@ $('.shop-cart').on('click', giftBtn.join(','), function() { @@ -681,4 +733,4 @@ $('.shop-cart').on('click', giftBtn.join(','), function() {
681 733
682 $('.shop-cart').on('click', '[data-role="cart-gift-win"] .close', function() { 734 $('.shop-cart').on('click', '[data-role="cart-gift-win"] .close', function() {
683 $(this).closest('[data-role="cart-gift-win"]').hide(); 735 $(this).closest('[data-role="cart-gift-win"]').hide();
684 -}); 736 +});*/
@@ -107,11 +107,12 @@ function compute(coin) { @@ -107,11 +107,12 @@ function compute(coin) {
107 107
108 // 支付方式 108 // 支付方式
109 payWay = { 109 payWay = {
110 - $payType: $('.pay-wrap .check-btn'), 110 + $allType: $('.pay-wrap > p'),
111 init: function() { 111 init: function() {
112 var that = this; 112 var that = this;
113 113
114 this.payType = {}; 114 this.payType = {};
  115 + this.$payType = this.$allType.not('.unsp-pay').find('.check-btn');
115 this.$payType.each(function() { 116 this.$payType.each(function() {
116 var $this = $(this), 117 var $this = $(this),
117 data = $this.data(); 118 data = $this.data();
@@ -177,7 +178,8 @@ deliveryWay = { @@ -177,7 +178,8 @@ deliveryWay = {
177 178
178 that.deliveryType[data.id] = { 179 that.deliveryType[data.id] = {
179 dom: $this, 180 dom: $this,
180 - id: data.id 181 + id: data.id,
  182 + unsupport: $this.parent().hasClass('unsp-way')
181 }; 183 };
182 184
183 // 更新订单配送方式数据 185 // 更新订单配送方式数据
@@ -200,16 +202,18 @@ deliveryWay = { @@ -200,16 +202,18 @@ deliveryWay = {
200 var that = this; 202 var that = this;
201 203
202 this.$deliveryType.click(function() { 204 this.$deliveryType.click(function() {
203 - var $this = $(this); 205 + var $this = $(this),
  206 + id = $this.data('id');
  207 + var dt = that.deliveryType[id];
204 208
205 - if ($this.hasClass('checked')) { 209 + if ($this.hasClass('checked') || (dt && dt.unsupport)) {
206 return; 210 return;
207 } 211 }
208 that.$deliveryType.removeClass('checked'); 212 that.$deliveryType.removeClass('checked');
209 $this.addClass('checked'); 213 $this.addClass('checked');
210 214
211 // 更新订单配送方式数据 215 // 更新订单配送方式数据
212 - that.updateOrder({way: $this.data('id')}); 216 + that.updateOrder({way: id});
213 217
214 // 重新计算订单价格 218 // 重新计算订单价格
215 compute(); 219 compute();
@@ -227,6 +231,31 @@ deliveryWay = { @@ -227,6 +231,31 @@ deliveryWay = {
227 // 更新订单送货时间数据 231 // 更新订单送货时间数据
228 that.updateOrder({time: $this.data('id')}); 232 that.updateOrder({time: $this.data('id')});
229 }); 233 });
  234 +
  235 + $('#support-way2').change(function() {
  236 + that.setSupportStatus(2, $(this).val() * 1);
  237 + });
  238 + },
  239 + setSupportStatus: function(id, support) {
  240 + var dt;
  241 +
  242 + if (!id || !this.deliveryType[id]) {
  243 + return;
  244 + }
  245 +
  246 + dt = this.deliveryType[id];
  247 +
  248 + if (support) {
  249 + dt.dom.parent().removeClass('unsp-way');
  250 + dt.unsupport = false;
  251 + } else {
  252 + dt.dom.parent().addClass('unsp-way');
  253 + dt.unsupport = true;
  254 + }
  255 +
  256 + if (dt.dom.hasClass('checked')) {
  257 + this.$deliveryType.eq(0).trigger('click');
  258 + }
230 }, 259 },
231 updateOrder: function(info) { 260 updateOrder: function(info) {
232 if (!info) { 261 if (!info) {
@@ -14,7 +14,8 @@ var Dialog = dialog.Dialog, @@ -14,7 +14,8 @@ var Dialog = dialog.Dialog,
14 Alert = dialog.Alert; 14 Alert = dialog.Alert;
15 15
16 var $addrWrap = $('#addr-list'), 16 var $addrWrap = $('#addr-list'),
17 - $deliveryAddr = $('#delivery-detail'); 17 + $deliveryAddr = $('#delivery-detail'),
  18 + $supportWay2 = $('#support-way2');
18 19
19 var addressTpl = hbs.compile($('#address-tpl').html()), 20 var addressTpl = hbs.compile($('#address-tpl').html()),
20 addressItemTpl = hbs.compile($('#address-item-tpl').html()); 21 addressItemTpl = hbs.compile($('#address-item-tpl').html());
@@ -170,7 +171,12 @@ function setShowDeliveryAddr(data) { @@ -170,7 +171,12 @@ function setShowDeliveryAddr(data) {
170 } 171 }
171 172
172 if (data) { 173 if (data) {
  174 + // 修改地址选中状态
173 addrSelect = data.id; 175 addrSelect = data.id;
  176 +
  177 + // 触发配送方式2是否支持状态改变
  178 + $supportWay2.val(data.delivery ? 1 : 0).change();
  179 +
174 _h = '寄送至:' + data.area + '&nbsp;&nbsp;&nbsp;&nbsp;' + data.address + 180 _h = '寄送至:' + data.area + '&nbsp;&nbsp;&nbsp;&nbsp;' + data.address +
175 '<br>收货人:' + data.consignee + '&nbsp;&nbsp;&nbsp;&nbsp;' + data.mobile; 181 '<br>收货人:' + data.consignee + '&nbsp;&nbsp;&nbsp;&nbsp;' + data.mobile;
176 } 182 }
@@ -190,7 +196,7 @@ function handelAddrInfo(data, reqData, $el) { @@ -190,7 +196,7 @@ function handelAddrInfo(data, reqData, $el) {
190 mobile: reqData.mobile, 196 mobile: reqData.mobile,
191 code: reqData.areaCode, 197 code: reqData.areaCode,
192 phone: reqData.phone, 198 phone: reqData.phone,
193 - delivery: data.delivery === 'Y' 199 + delivery: data.is_delivery === 'Y'
194 }); 200 });
195 201
196 $dom = $(addressItemTpl(addrList[reqData.id])); 202 $dom = $(addressItemTpl(addrList[reqData.id]));
@@ -213,7 +219,7 @@ function handelAddrInfo(data, reqData, $el) { @@ -213,7 +219,7 @@ function handelAddrInfo(data, reqData, $el) {
213 mobile: data.mobile, 219 mobile: data.mobile,
214 code: data.area_code, 220 code: data.area_code,
215 phone: data.phone, 221 phone: data.phone,
216 - delivery: data.delivery === 'Y' 222 + delivery: data.is_delivery === 'Y'
217 }; 223 };
218 224
219 $dom = $(addressItemTpl(addrList[data.id])); 225 $dom = $(addressItemTpl(addrList[data.id]));
@@ -356,6 +356,40 @@ @@ -356,6 +356,40 @@
356 min-width: 100px; 356 min-width: 100px;
357 text-align: center; 357 text-align: center;
358 } 358 }
  359 +
  360 + .unsp-pay {
  361 + color: #999;
  362 +
  363 + .check-btn {
  364 + color: #999;
  365 + border-color: #999;
  366 + }
  367 + }
  368 + }
  369 +
  370 + .delivery-way-wrap {
  371 + .more-info {
  372 + color: $red;
  373 + margin-left: 10px;
  374 + }
  375 +
  376 + p > span {
  377 + display: none;
  378 + }
  379 +
  380 + .unsp-way {
  381 + color: #999;
  382 +
  383 + .check-btn {
  384 + color: #999;
  385 + border-color: #999;
  386 + cursor: not-allowed;
  387 + }
  388 +
  389 + > span {
  390 + display: inline-block;
  391 + }
  392 + }
359 } 393 }
360 394
361 .delivery-time-wrap { 395 .delivery-time-wrap {
@@ -366,6 +400,16 @@ @@ -366,6 +400,16 @@
366 min-width: 138px; 400 min-width: 138px;
367 text-align: center; 401 text-align: center;
368 } 402 }
  403 +
  404 + .unsp-way {
  405 + color: #999;
  406 +
  407 + .check-btn {
  408 + color: #999;
  409 + border-color: #999;
  410 + cursor: not-allowed;
  411 + }
  412 + }
369 } 413 }
370 414
371 .goods-wrap { 415 .goods-wrap {