Showing
27 changed files
with
297 additions
and
65 deletions
@@ -577,7 +577,6 @@ const getChangeGoodsList = (orderCode, uid) => { | @@ -577,7 +577,6 @@ const getChangeGoodsList = (orderCode, uid) => { | ||
577 | }; | 577 | }; |
578 | let data; | 578 | let data; |
579 | 579 | ||
580 | - | ||
581 | if (result && result.data) { | 580 | if (result && result.data) { |
582 | data = result.data;// camelCase(result.data); | 581 | data = result.data;// camelCase(result.data); |
583 | data.hidePrice = true; | 582 | data.hidePrice = true; |
@@ -592,6 +591,7 @@ const getChangeGoodsList = (orderCode, uid) => { | @@ -592,6 +591,7 @@ const getChangeGoodsList = (orderCode, uid) => { | ||
592 | data.goods_list.forEach(good => { | 591 | data.goods_list.forEach(good => { |
593 | let cnAlphabet = good.cn_alphabet ? good.cn_alphabet : ''; | 592 | let cnAlphabet = good.cn_alphabet ? good.cn_alphabet : ''; |
594 | 593 | ||
594 | + good.isLimitSkn = good.is_limit_skn === 'Y'; // is_limit_skn=Y 不支持7天无理由退换货 | ||
595 | good.showCheckbox = true; | 595 | good.showCheckbox = true; |
596 | good.hidePrice = true; | 596 | good.hidePrice = true; |
597 | good.buyNumber = 1; | 597 | good.buyNumber = 1; |
@@ -13,5 +13,14 @@ | @@ -13,5 +13,14 @@ | ||
13 | {{#if buy_number}} | 13 | {{#if buy_number}} |
14 | <p class="bold buy-number"><span class="iconfont"></span>{{buy_number}}</p> | 14 | <p class="bold buy-number"><span class="iconfont"></span>{{buy_number}}</p> |
15 | {{/if}} | 15 | {{/if}} |
16 | + {{#if isLimitSkn}} | ||
17 | + <div class="not-limit-txt"> | ||
18 | + 该商品不支持7天无理由退换 | ||
19 | + <i class="helper-icon iconfont"></i> | ||
20 | + <span class="helper-txt"> | ||
21 | + 该商品非质量问题不支持退换货,如有疑问,请联系客服。 | ||
22 | + </span> | ||
23 | + </div> | ||
24 | + {{/if}} | ||
16 | </div> | 25 | </div> |
17 | </div> | 26 | </div> |
@@ -9,13 +9,20 @@ | @@ -9,13 +9,20 @@ | ||
9 | <ul class="goods-header"> | 9 | <ul class="goods-header"> |
10 | <li class="info">商品信息</li> | 10 | <li class="info">商品信息</li> |
11 | <li class="reason">退货原因</li> | 11 | <li class="reason">退货原因</li> |
12 | - <li class="num">退货数量</li> | 12 | + <li class="num hide">退货数量</li> |
13 | <li class="price">单价</li> | 13 | <li class="price">单价</li> |
14 | </ul> | 14 | </ul> |
15 | 15 | ||
16 | {{# goods}} | 16 | {{# goods}} |
17 | <div class="goods-item clearfix"> | 17 | <div class="goods-item clearfix"> |
18 | - <div class="check" data-skn="{{skn}}" data-skc="{{skc}}" data-sku="{{sku}}" data-price="{{price}}" data-type="{{typeId}}">{{> icon/checkbox}}</div> | 18 | + <div class="check {{#if limitReturn}}disabled{{/if}}" |
19 | + data-skn="{{skn}}" | ||
20 | + data-skc="{{skc}}" | ||
21 | + data-sku="{{sku}}" | ||
22 | + data-price="{{price}}" | ||
23 | + data-type="{{typeId}}"> | ||
24 | + {{> icon/checkbox}} | ||
25 | + </div> | ||
19 | <div class="img"> | 26 | <div class="img"> |
20 | <a href="{{https href}}" title="{{name}}" target="_blank"> | 27 | <a href="{{https href}}" title="{{name}}" target="_blank"> |
21 | <img class="lazy" data-original="{{image img 70 90}}"> | 28 | <img class="lazy" data-original="{{image img 70 90}}"> |
@@ -27,17 +34,17 @@ | @@ -27,17 +34,17 @@ | ||
27 | <p>×{{num}}</p> | 34 | <p>×{{num}}</p> |
28 | </div> | 35 | </div> |
29 | <div class="reason"> | 36 | <div class="reason"> |
30 | - <select class="refund-reason"> | 37 | + <select class="refund-reason {{#if limitReturn}}disabled{{/if}}" {{#if limitReturn}}disabled{{/if}}> |
31 | <option>选择退款原因</option> | 38 | <option>选择退款原因</option> |
32 | {{# reasonList}} | 39 | {{# reasonList}} |
33 | <option value="{{id}}">{{name}}</option> | 40 | <option value="{{id}}">{{name}}</option> |
34 | {{/ reasonList}} | 41 | {{/ reasonList}} |
35 | </select> | 42 | </select> |
36 | </div> | 43 | </div> |
37 | - <div class="num"> | ||
38 | - <span class="iconfont"></span> | 44 | + <div class="num hide"> |
45 | + <span class="iconfont {{#if limitReturn}}disabled{{/if}}"></span> | ||
39 | <input type="text" value="{{num}}" readonly="readonly"> | 46 | <input type="text" value="{{num}}" readonly="readonly"> |
40 | - <span class="iconfont"></span> | 47 | + <span class="iconfont {{#if limitReturn}}disabled{{/if}}"></span> |
41 | </div> | 48 | </div> |
42 | <div class="price">¥{{round price 2}}</div> | 49 | <div class="price">¥{{round price 2}}</div> |
43 | {{#if limitReturn}} | 50 | {{#if limitReturn}} |
@@ -47,8 +54,7 @@ | @@ -47,8 +54,7 @@ | ||
47 | <i class="iconfont"></i> | 54 | <i class="iconfont"></i> |
48 | <div class="limit-return-wrap"> | 55 | <div class="limit-return-wrap"> |
49 | <div class="code-horn"></div> | 56 | <div class="code-horn"></div> |
50 | - <p>考虑到个人卫生,例如内衣、内裤、袜子等贴身塑身类商品,不支持无理由退换货</p> | ||
51 | - <p>香水、香薰、化妆品等特殊商品,无质量问题,不支持无理由退换货</p> | 57 | + <p>该商品非质量问题不支持退换货,如有疑问,请联系客服。</p> |
52 | </div> | 58 | </div> |
53 | </span> | 59 | </span> |
54 | </div> | 60 | </div> |
@@ -13,44 +13,41 @@ | @@ -13,44 +13,41 @@ | ||
13 | <li class="change-num hide">换货数量</li> | 13 | <li class="change-num hide">换货数量</li> |
14 | </ul> | 14 | </ul> |
15 | {{#goods_list}} | 15 | {{#goods_list}} |
16 | - <div class="change-info-box"> | ||
17 | - <div class="table-body"> | ||
18 | - <div class="goods-container no-price" data-goods-id="{{goods_id}}" data-sku="{{productSku}}" data-id="{{product_id}}" data-skn="{{productSkn}}" data-goods-type="{{goods_type_id}}" data-price="{{last_price}}" data-skc={{productSkc}}> | ||
19 | - {{# showCheckbox}} | ||
20 | - <span class="checkbox-box"> | ||
21 | - {{> icon/checkbox}} | ||
22 | - </span> | ||
23 | - {{/ showCheckbox}} | ||
24 | - {{> order/good-info}} | ||
25 | - <div class="sub-column"> | ||
26 | - {{# ../this}} | ||
27 | - {{> returns/change-reason}} | ||
28 | - {{/ ../this}} | 16 | + <div class="change-info-box"> |
17 | + <div class="table-body"> | ||
18 | + <div class="goods-container no-price" data-goods-id="{{goods_id}}" data-sku="{{productSku}}" data-id="{{product_id}}" data-skn="{{productSkn}}" data-goods-type="{{goods_type_id}}" data-price="{{last_price}}" data-skc={{productSkc}}> | ||
19 | + {{# showCheckbox}} | ||
20 | + <span class="checkbox-box {{#if isLimitSkn}}disabled{{/if}}"> | ||
21 | + {{> icon/checkbox}} | ||
22 | + </span> | ||
23 | + {{/ showCheckbox}} | ||
24 | + {{> order/good-info}} | ||
25 | + <div class="sub-column"> | ||
26 | + {{> returns/change-reason}} | ||
27 | + </div> | ||
28 | + <div class="sub-column number"> | ||
29 | + <span class="minus">-</span> | ||
30 | + <span class="value">{{changeNum}}</span> | ||
31 | + <span class="plus">+</span> | ||
32 | + </div> | ||
29 | </div> | 33 | </div> |
30 | - <div class="sub-column number"> | ||
31 | - <span class="minus">-</span> | ||
32 | - <span class="value">{{changeNum}}</span> | ||
33 | - <span class="plus">+</span> | ||
34 | - </div> | ||
35 | - </div> | ||
36 | - </div> | ||
37 | - <div class="form hide"> | ||
38 | - <div class="group color"> | ||
39 | - <span class="title"> | ||
40 | - <span class="asterisk">*</span> | ||
41 | - 换货Color: <span class="color-text" data-color={{color_name}}>{{color_name}}</span> | ||
42 | - </span> | ||
43 | </div> | 34 | </div> |
44 | - <div class="group size"> | ||
45 | - <span class="title"> | ||
46 | - <span class="asterisk">*</span> | ||
47 | - 换货Size: <span class="size-text" data-size="{{size_name}}">{{size_name}}</span> | ||
48 | - </span> | 35 | + <div class="form hide"> |
36 | + <div class="group color"> | ||
37 | + <span class="title"> | ||
38 | + <span class="asterisk">*</span> | ||
39 | + 换货Color: <span class="color-text" data-color={{color_name}}>{{color_name}}</span> | ||
40 | + </span> | ||
41 | + </div> | ||
42 | + <div class="group size"> | ||
43 | + <span class="title"> | ||
44 | + <span class="asterisk">*</span> | ||
45 | + 换货Size: <span class="size-text" data-size="{{size_name}}">{{size_name}}</span> | ||
46 | + </span> | ||
47 | + </div> | ||
49 | </div> | 48 | </div> |
49 | + {{> returns/special-reason}} | ||
50 | </div> | 50 | </div> |
51 | - {{> returns/special-reason}} | ||
52 | - </div> | ||
53 | - | ||
54 | {{/goods_list}} | 51 | {{/goods_list}} |
55 | </div> | 52 | </div> |
56 | </div> | 53 | </div> |
1 | -<select class="exchange-reasons" name="exchange-reasons"> | 1 | +<select class="exchange-reasons" name="exchange-reasons" {{#if isLimitSkn}}disabled{{/if}}> |
2 | <option value="0">请选择换货原因</option> | 2 | <option value="0">请选择换货原因</option> |
3 | - {{# exchange_reason}} | 3 | + {{# @root.content.returnsChange.exchange_reason}} |
4 | <option value="{{id}}" {{#if isSpecial}}class="is-special"{{/if}}>{{name}}</option> | 4 | <option value="{{id}}" {{#if isSpecial}}class="is-special"{{/if}}>{{name}}</option> |
5 | - {{/ exchange_reason}} | 5 | + {{/ @root.content.returnsChange.exchange_reason}} |
6 | </select> | 6 | </select> |
@@ -63,7 +63,31 @@ const getProductInfo = (req, res, next) => { | @@ -63,7 +63,31 @@ const getProductInfo = (req, res, next) => { | ||
63 | }).catch(next); | 63 | }).catch(next); |
64 | }; | 64 | }; |
65 | 65 | ||
66 | +/** | ||
67 | + * 特殊商品退换货 | ||
68 | + */ | ||
69 | +const fetchReturn = (req, res, next) => { | ||
70 | + let skn = req.query.skn || 0; | ||
71 | + | ||
72 | + if (!skn) { | ||
73 | + return { | ||
74 | + code: 400, | ||
75 | + message: '商品数据出错' | ||
76 | + }; | ||
77 | + } | ||
78 | + | ||
79 | + return item.fetchReturn(skn).then(result => { | ||
80 | + return res.json({ | ||
81 | + code: 200, | ||
82 | + data: { | ||
83 | + result: result | ||
84 | + } | ||
85 | + }); | ||
86 | + }).catch(next); | ||
87 | +}; | ||
88 | + | ||
66 | module.exports = { | 89 | module.exports = { |
67 | index, // 商品详情页 | 90 | index, // 商品详情页 |
68 | - getProductInfo // 获取商品信息接口 | 91 | + getProductInfo, // 获取商品信息接口 |
92 | + fetchReturn | ||
69 | }; | 93 | }; |
@@ -6,6 +6,7 @@ | @@ -6,6 +6,7 @@ | ||
6 | 'use strict'; | 6 | 'use strict'; |
7 | 7 | ||
8 | const api = global.yoho.API; | 8 | const api = global.yoho.API; |
9 | +const config = global.yoho.config; | ||
9 | const SingleAPI = global.yoho.SingleAPI; | 10 | const SingleAPI = global.yoho.SingleAPI; |
10 | 11 | ||
11 | /** | 12 | /** |
@@ -110,11 +111,20 @@ const getBrandBannerAsync = brandId => { | @@ -110,11 +111,20 @@ const getBrandBannerAsync = brandId => { | ||
110 | }); | 111 | }); |
111 | }; | 112 | }; |
112 | 113 | ||
114 | +// 退换支持 | ||
115 | +const isSupportReturnedSale = skn => { | ||
116 | + return api.get('', { | ||
117 | + method: 'app.product.refundExchange', | ||
118 | + product_skn: skn | ||
119 | + }, config.apiCache); | ||
120 | +}; | ||
121 | + | ||
113 | module.exports = { | 122 | module.exports = { |
114 | getProductBaseAsync, // 获取商品基本信息 | 123 | getProductBaseAsync, // 获取商品基本信息 |
115 | getUserIsFav, // 获取商品用户收藏信息 | 124 | getUserIsFav, // 获取商品用户收藏信息 |
116 | getsizeInfoAsync, // 获取商品尺码信息 | 125 | getsizeInfoAsync, // 获取商品尺码信息 |
117 | getComfortAsync, // 获取商品材质信息 | 126 | getComfortAsync, // 获取商品材质信息 |
118 | getModelTryAsync, // 获取商品模特试穿信息 | 127 | getModelTryAsync, // 获取商品模特试穿信息 |
119 | - getBrandBannerAsync // 获取品牌Banner信息 | 128 | + getBrandBannerAsync, // 获取品牌Banner信息 |
129 | + isSupportReturnedSale // 是否支持退换货 | ||
120 | }; | 130 | }; |
@@ -161,7 +161,15 @@ const getProductInfo = (productId, skn, uid) => { | @@ -161,7 +161,15 @@ const getProductInfo = (productId, skn, uid) => { | ||
161 | }); | 161 | }); |
162 | }; | 162 | }; |
163 | 163 | ||
164 | +/** | ||
165 | + * 是否支持退换货,true 支持,false 不支持 | ||
166 | + */ | ||
167 | +const fetchReturn = (skn) => { | ||
168 | + return itemApi.isSupportReturnedSale(skn).then(result => _.get(result, `data.${skn}`, 'N') === 'N' ? 'Y' : 'N'); | ||
169 | +}; | ||
170 | + | ||
164 | module.exports = { | 171 | module.exports = { |
165 | getProductItemData, | 172 | getProductItemData, |
166 | - getProductInfo | 173 | + getProductInfo, |
174 | + fetchReturn | ||
167 | }; | 175 | }; |
@@ -23,6 +23,7 @@ router.get('/list/new', list.newPage); // 新品列表页 | @@ -23,6 +23,7 @@ router.get('/list/new', list.newPage); // 新品列表页 | ||
23 | router.get(/\/pro_([\d]+)_([\d]+)\/(.*)/, item.index); // 商品详情routers | 23 | router.get(/\/pro_([\d]+)_([\d]+)\/(.*)/, item.index); // 商品详情routers |
24 | router.post('/item/togglecollect', auth, fav.product); // 商品详情页 | 24 | router.post('/item/togglecollect', auth, fav.product); // 商品详情页 |
25 | router.get('/item/getProductInfo', item.getProductInfo); // 商品详情信息 | 25 | router.get('/item/getProductInfo', item.getProductInfo); // 商品详情信息 |
26 | +router.get('/item/fetchReturn', item.fetchReturn); // 7天无理由退换货 | ||
26 | 27 | ||
27 | router.get('/shop/query/all', shop.indexQuery); | 28 | router.get('/shop/query/all', shop.indexQuery); |
28 | router.get('/shop/:domain/list', shop.list); | 29 | router.get('/shop/:domain/list', shop.list); |
@@ -36,4 +37,6 @@ router.get('/getRecommendProduct', recommend.getRecommendProduct); | @@ -36,4 +37,6 @@ router.get('/getRecommendProduct', recommend.getRecommendProduct); | ||
36 | router.get('/getRecommendShop', recommend.getRecommendShop); | 37 | router.get('/getRecommendShop', recommend.getRecommendShop); |
37 | router.get('/recentPreview', recommend.recentPreview); | 38 | router.get('/recentPreview', recommend.recentPreview); |
38 | 39 | ||
40 | + | ||
41 | + | ||
39 | module.exports = router; | 42 | module.exports = router; |
@@ -7,7 +7,7 @@ | @@ -7,7 +7,7 @@ | ||
7 | {{> path-nav}} | 7 | {{> path-nav}} |
8 | 8 | ||
9 | {{# goodInfo}} | 9 | {{# goodInfo}} |
10 | - <div class="product-main clearfix" data-id="{{id}}"> | 10 | + <div class="product-main clearfix" data-id="{{id}}" data-skn="{{productSkn}}"> |
11 | <div class="thumbs left clearfix"> | 11 | <div class="thumbs left clearfix"> |
12 | <div class="thumb-show right"> | 12 | <div class="thumb-show right"> |
13 | <img id="main-thumb" src="{{image img 482 643}}" style="display: block;"> | 13 | <img id="main-thumb" src="{{image img 482 643}}" style="display: block;"> |
@@ -300,6 +300,16 @@ | @@ -300,6 +300,16 @@ | ||
300 | <div class="detail-content">{{{content}}}</div> | 300 | <div class="detail-content">{{{content}}}</div> |
301 | </div> | 301 | </div> |
302 | {{/ details}} | 302 | {{/ details}} |
303 | + | ||
304 | + <div class="info-block"> | ||
305 | + <div class="block-title"> | ||
306 | + <label class="title-wrapper"> | ||
307 | + <div class="en">GUARANTEE</div> | ||
308 | + <div class="cn">售后保障</div> | ||
309 | + </label> | ||
310 | + </div> | ||
311 | + <div id="saleReturn" class="support-returned-service"></div> | ||
312 | + </div> | ||
303 | </div> | 313 | </div> |
304 | <div class="recommend-product"></div> | 314 | <div class="recommend-product"></div> |
305 | </div> | 315 | </div> |
@@ -22,6 +22,7 @@ const index = (req, res, next) => { | @@ -22,6 +22,7 @@ const index = (req, res, next) => { | ||
22 | let data = result.data; | 22 | let data = result.data; |
23 | 23 | ||
24 | if (data.goods_list && data.goods_list.length > 0) { | 24 | if (data.goods_list && data.goods_list.length > 0) { |
25 | + | ||
25 | // 设置头部路径索引focus | 26 | // 设置头部路径索引focus |
26 | data.bcNavFocus = 2; | 27 | data.bcNavFocus = 2; |
27 | 28 | ||
@@ -63,6 +64,11 @@ const index = (req, res, next) => { | @@ -63,6 +64,11 @@ const index = (req, res, next) => { | ||
63 | data.delivery_address.address = cleanHtml.htmlDecode(data.delivery_address.address); | 64 | data.delivery_address.address = cleanHtml.htmlDecode(data.delivery_address.address); |
64 | } | 65 | } |
65 | 66 | ||
67 | + // is_limit_skn=Y 不支持7天无理由退换货 | ||
68 | + _.forEach(data.goods_list, item => { | ||
69 | + item.isLimitSkn = item.is_limit_skn === 'Y'; | ||
70 | + }); | ||
71 | + | ||
66 | res.header('Cache-Control', 'no-store'); | 72 | res.header('Cache-Control', 'no-store'); |
67 | res.display('order', { | 73 | res.display('order', { |
68 | content: data, | 74 | content: data, |
@@ -98,6 +98,9 @@ | @@ -98,6 +98,9 @@ | ||
98 | <p class="brand-and-name inline-block"> | 98 | <p class="brand-and-name inline-block"> |
99 | <a class="brand-name" href="{{https brandUrl}}" target="_blank">{{brand_name}}</a> | 99 | <a class="brand-name" href="{{https brandUrl}}" target="_blank">{{brand_name}}</a> |
100 | <a class="name" href="{{https link}}" target="_blank">{{product_name}}</a> | 100 | <a class="name" href="{{https link}}" target="_blank">{{product_name}}</a> |
101 | + {{#isLimitSkn}} | ||
102 | + <span class="not-support-return"><i class="not-return-icon"></i>不支持7天无理由退换</span> | ||
103 | + {{/isLimitSkn}} | ||
101 | </p> | 104 | </p> |
102 | <p class="color-size"> | 105 | <p class="color-size"> |
103 | <span class="color">颜色:{{color_name}}</span> | 106 | <span class="color">颜色:{{color_name}}</span> |
@@ -22,15 +22,15 @@ module.exports = { | @@ -22,15 +22,15 @@ module.exports = { | ||
22 | }, | 22 | }, |
23 | cookieDomain: 'yohoblk.com', | 23 | cookieDomain: 'yohoblk.com', |
24 | domains: { | 24 | domains: { |
25 | - //singleApi: 'http://single.yoho.cn/', | ||
26 | - //api: 'http://api.yoho.yohoops.org/', | ||
27 | - //service: 'http://service.yoho.yohoops.org/', | ||
28 | - //search: 'http://search.yohoops.org/yohosearch/' | 25 | + // singleApi: 'http://single.yoho.cn/', |
26 | + // api: 'http://api.yoho.yohoops.org/', | ||
27 | + // service: 'http://service.yoho.yohoops.org/', | ||
28 | + // search: 'http://search.yohoops.org/yohosearch/' | ||
29 | 29 | ||
30 | - api: 'http://api-test3.yohops.com:9999/', | ||
31 | - service: 'http://service-test3.yohops.com:9999/', | ||
32 | - liveApi: 'http://testapi.live.yohops.com:9999/', | ||
33 | - singleApi: 'http://api-test3.yohops.com:9999/' | 30 | + api: 'http://api-test3.yohops.com:9999/', |
31 | + service: 'http://service-test3.yohops.com:9999/', | ||
32 | + liveApi: 'http://testapi.live.yohops.com:9999/', | ||
33 | + singleApi: 'http://api-test3.yohops.com:9999/' | ||
34 | }, | 34 | }, |
35 | useOneapm: false, | 35 | useOneapm: false, |
36 | useCache: false, | 36 | useCache: false, |
public/img/product/limit.jpg
0 → 100644
10.4 KB
public/img/product/service.jpg
0 → 100644
8.72 KB
public/img/shopping/not-limit.jpg
0 → 100644
1.35 KB
public/img/sprite.me.png
0 → 100644
240 Bytes
@@ -26,6 +26,10 @@ var jQuery = require('yoho-jquery'); | @@ -26,6 +26,10 @@ var jQuery = require('yoho-jquery'); | ||
26 | var ele = this; | 26 | var ele = this; |
27 | var _checked; | 27 | var _checked; |
28 | 28 | ||
29 | + if ($(ele).hasClass('disabled')) { | ||
30 | + return; | ||
31 | + } | ||
32 | + | ||
29 | options = $.extend({}, defaults, $(this).data('options'), defaultsHtml[type], options); | 33 | options = $.extend({}, defaults, $(this).data('options'), defaultsHtml[type], options); |
30 | 34 | ||
31 | _checked = options.checked || $('.iconfont', this).hasClass('checked'); | 35 | _checked = options.checked || $('.iconfont', this).hasClass('checked'); |
@@ -28,6 +28,7 @@ var $addToBag = $('#add-to-bag'), | @@ -28,6 +28,7 @@ var $addToBag = $('#add-to-bag'), | ||
28 | $soldOut = $('#sold-out'); | 28 | $soldOut = $('#sold-out'); |
29 | 29 | ||
30 | var $sizeInfo = $('.size-info'); | 30 | var $sizeInfo = $('.size-info'); |
31 | +var $saleReturn = $('#saleReturn'); | ||
31 | 32 | ||
32 | var $thumbCur = $('.thumb-wrap .cur'); // 当前选中展示图片 | 33 | var $thumbCur = $('.thumb-wrap .cur'); // 当前选中展示图片 |
33 | 34 | ||
@@ -38,6 +39,7 @@ var noticeFn = handlebars.compile($('#arrival-notice-tpl').html() || ''), | @@ -38,6 +39,7 @@ var noticeFn = handlebars.compile($('#arrival-notice-tpl').html() || ''), | ||
38 | 39 | ||
39 | var thumbsLoaded = [], | 40 | var thumbsLoaded = [], |
40 | id = $main.data('id'), | 41 | id = $main.data('id'), |
42 | + skn = $main.data('skn'), | ||
41 | introHtml; | 43 | introHtml; |
42 | 44 | ||
43 | require('yoho-jquery-nanoscroller'); | 45 | require('yoho-jquery-nanoscroller'); |
@@ -362,3 +364,23 @@ if ($(window).height() < 800) { | @@ -362,3 +364,23 @@ if ($(window).height() < 800) { | ||
362 | introHtml = $('#intro-full-hide').html(); | 364 | introHtml = $('#intro-full-hide').html(); |
363 | 365 | ||
364 | chooseDefaultSize(); // 如果size只有一个则默认选中 | 366 | chooseDefaultSize(); // 如果size只有一个则默认选中 |
367 | + | ||
368 | + | ||
369 | +// 特殊商品退换货 | ||
370 | +function fetchReturn() { | ||
371 | + return $.ajax({ | ||
372 | + type: 'GET', | ||
373 | + url: '/product/item/fetchReturn', | ||
374 | + data: { | ||
375 | + skn: skn | ||
376 | + } | ||
377 | + }).then(function(result) { | ||
378 | + if (result.code === 200) { | ||
379 | + if (result.data.result === 'N') { | ||
380 | + $saleReturn.removeClass().addClass('not-support-returned-service'); | ||
381 | + } | ||
382 | + } | ||
383 | + }); | ||
384 | +} | ||
385 | + | ||
386 | +fetchReturn(); |
@@ -165,6 +165,48 @@ | @@ -165,6 +165,48 @@ | ||
165 | margin-bottom: $smallSpace; | 165 | margin-bottom: $smallSpace; |
166 | } | 166 | } |
167 | } | 167 | } |
168 | + | ||
169 | + .not-limit-txt { | ||
170 | + color: #379ed6; | ||
171 | + font-size: 12px; | ||
172 | + clear: both; | ||
173 | + cursor: pointer; | ||
174 | + position: relative; | ||
175 | + } | ||
176 | + | ||
177 | + .not-limit-txt:hover { | ||
178 | + .helper-txt { | ||
179 | + display: block; | ||
180 | + } | ||
181 | + } | ||
182 | + | ||
183 | + .helper-icon { | ||
184 | + font-size: 14px; | ||
185 | + color: #379ed6; | ||
186 | + } | ||
187 | + | ||
188 | + .helper-txt { | ||
189 | + width: 166px; | ||
190 | + height: 68px; | ||
191 | + border: 2px solid #bbb; | ||
192 | + padding: 10px 15px; | ||
193 | + box-sizing: border-box; | ||
194 | + position: absolute; | ||
195 | + top: -2px; | ||
196 | + left: 180px; | ||
197 | + background: #fff; | ||
198 | + display: none; | ||
199 | + } | ||
200 | + | ||
201 | + .helper-txt:before { | ||
202 | + content: ""; | ||
203 | + background: url("/me/code-horn.png") no-repeat; | ||
204 | + width: 7px; | ||
205 | + height: 12px; | ||
206 | + position: absolute; | ||
207 | + left: -7px; | ||
208 | + top: 6px; | ||
209 | + } | ||
168 | } | 210 | } |
169 | 211 | ||
170 | .sub-column { | 212 | .sub-column { |
@@ -80,12 +80,33 @@ | @@ -80,12 +80,33 @@ | ||
80 | } | 80 | } |
81 | } | 81 | } |
82 | 82 | ||
83 | + .checkbox-box { | ||
84 | + &.disabled { | ||
85 | + .checkbox { | ||
86 | + color: #eee; | ||
87 | + } | ||
88 | + } | ||
89 | + } | ||
90 | + | ||
91 | + .exchange-reasons { | ||
92 | + width: 130px; | ||
93 | + height: 28px; | ||
94 | + padding: 0 5px; | ||
95 | + border: 1px solid #1b1b1b; | ||
96 | + margin-top: 35px; | ||
97 | + | ||
98 | + &:disabled { | ||
99 | + border-color: #eee; | ||
100 | + color: #a2a2a2; | ||
101 | + } | ||
102 | + } | ||
103 | + | ||
83 | .iconfont { | 104 | .iconfont { |
84 | &.checkbox { | 105 | &.checkbox { |
85 | position: relative; | 106 | position: relative; |
86 | - top: -70px; | 107 | + top: -38px; |
87 | margin-right: 10px; | 108 | margin-right: 10px; |
88 | - font-size: 14px; | 109 | + font-size: 18px; |
89 | cursor: pointer; | 110 | cursor: pointer; |
90 | } | 111 | } |
91 | } | 112 | } |
@@ -154,6 +175,7 @@ | @@ -154,6 +175,7 @@ | ||
154 | .input-group { | 175 | .input-group { |
155 | margin-bottom: 10px; | 176 | margin-bottom: 10px; |
156 | } | 177 | } |
178 | + | ||
157 | label { | 179 | label { |
158 | width: 75px; | 180 | width: 75px; |
159 | display: inline-block; | 181 | display: inline-block; |
@@ -32,6 +32,14 @@ | @@ -32,6 +32,14 @@ | ||
32 | float: left; | 32 | float: left; |
33 | width: 172px; | 33 | width: 172px; |
34 | text-align: center; | 34 | text-align: center; |
35 | + | ||
36 | + &:last-child { | ||
37 | + float: right; | ||
38 | + } | ||
39 | + } | ||
40 | + | ||
41 | + .reason { | ||
42 | + width: 330px; | ||
35 | } | 43 | } |
36 | 44 | ||
37 | .info { | 45 | .info { |
@@ -54,10 +62,24 @@ | @@ -54,10 +62,24 @@ | ||
54 | text-align: center; | 62 | text-align: center; |
55 | } | 63 | } |
56 | 64 | ||
65 | + .price { | ||
66 | + float: right; | ||
67 | + } | ||
68 | + | ||
69 | + .reason { | ||
70 | + width: 330px; | ||
71 | + } | ||
72 | + | ||
57 | .check { | 73 | .check { |
58 | width: 56px; | 74 | width: 56px; |
59 | } | 75 | } |
60 | 76 | ||
77 | + .disabled { | ||
78 | + .checkbox { | ||
79 | + color: #eee; | ||
80 | + } | ||
81 | + } | ||
82 | + | ||
61 | .checkbox { | 83 | .checkbox { |
62 | font-size: 18px; | 84 | font-size: 18px; |
63 | cursor: pointer; | 85 | cursor: pointer; |
@@ -90,6 +112,11 @@ | @@ -90,6 +112,11 @@ | ||
90 | text-align: center; | 112 | text-align: center; |
91 | } | 113 | } |
92 | 114 | ||
115 | + .num > .disabled { | ||
116 | + background: #eee; | ||
117 | + color: #fff; | ||
118 | + } | ||
119 | + | ||
93 | .num > .iconfont { | 120 | .num > .iconfont { |
94 | width: 20px; | 121 | width: 20px; |
95 | font-size: 12px; | 122 | font-size: 12px; |
@@ -142,16 +169,22 @@ | @@ -142,16 +169,22 @@ | ||
142 | height: 28px; | 169 | height: 28px; |
143 | padding: 0 5px; | 170 | padding: 0 5px; |
144 | border: 1px solid #eee; | 171 | border: 1px solid #eee; |
172 | + | ||
173 | + &.disabled { | ||
174 | + border-color: #eee; | ||
175 | + color: #a2a2a2; | ||
176 | + } | ||
145 | } | 177 | } |
146 | } | 178 | } |
147 | 179 | ||
148 | .limit-return-wrap { | 180 | .limit-return-wrap { |
149 | - width: 280px; | ||
150 | - line-height: 1.5; | 181 | + width: 166px; |
182 | + height: 68px; | ||
183 | + line-height: 16px; | ||
184 | + border: 2px solid #bbb; | ||
185 | + padding: 10px 15px; | ||
151 | background: #fff; | 186 | background: #fff; |
152 | - padding: 10px; | ||
153 | color: #1d1d1d; | 187 | color: #1d1d1d; |
154 | - border: 2px solid #bcbcbc; | ||
155 | position: absolute; | 188 | position: absolute; |
156 | left: 100%; | 189 | left: 100%; |
157 | top: -8px; | 190 | top: -8px; |
@@ -509,6 +509,20 @@ | @@ -509,6 +509,20 @@ | ||
509 | line-height: 18px; | 509 | line-height: 18px; |
510 | } | 510 | } |
511 | } | 511 | } |
512 | + | ||
513 | + .support-returned-service { | ||
514 | + width: 544px; | ||
515 | + height: 23px; | ||
516 | + margin: 35px auto; | ||
517 | + background: url("/product/service.jpg") no-repeat; | ||
518 | + } | ||
519 | + | ||
520 | + .not-support-returned-service { | ||
521 | + width: 544px; | ||
522 | + height: 23px; | ||
523 | + margin: 35px auto; | ||
524 | + background: url("/product/limit.jpg") no-repeat; | ||
525 | + } | ||
512 | } | 526 | } |
513 | } | 527 | } |
514 | 528 |
@@ -459,6 +459,25 @@ | @@ -459,6 +459,25 @@ | ||
459 | font-size: 14px; | 459 | font-size: 14px; |
460 | } | 460 | } |
461 | 461 | ||
462 | + .not-support-return { | ||
463 | + font-size: 12px; | ||
464 | + color: #797979; | ||
465 | + clear: both; | ||
466 | + display: block; | ||
467 | + padding: 20px 0; | ||
468 | + | ||
469 | + .not-return-icon { | ||
470 | + float: left; | ||
471 | + display: block; | ||
472 | + width: 16px; | ||
473 | + height: 14px; | ||
474 | + margin-right: 5px; | ||
475 | + background: url("/shopping/not-limit.jpg") no-repeat; | ||
476 | + position: relative; | ||
477 | + top: -3px; | ||
478 | + } | ||
479 | + } | ||
480 | + | ||
462 | .name { | 481 | .name { |
463 | display: inline-block; | 482 | display: inline-block; |
464 | font-size: 12px; | 483 | font-size: 12px; |
-
Please register or login to post a comment