Showing
16 changed files
with
251 additions
and
148 deletions
@@ -13,14 +13,14 @@ const headerModel = require('../../../doraemon/models/header'); | @@ -13,14 +13,14 @@ const headerModel = require('../../../doraemon/models/header'); | ||
13 | const log = require(`${library}/logger`); | 13 | const log = require(`${library}/logger`); |
14 | const saleModel = require(`${mRoot}/sale`); | 14 | const saleModel = require(`${mRoot}/sale`); |
15 | 15 | ||
16 | -const queryParam = { | ||
17 | - brand: '0', | ||
18 | - gender: '1,2,3', | ||
19 | - sort: '0', | ||
20 | - size: '0', | ||
21 | - price: '0', | ||
22 | - discount: '0.1,0.9' | ||
23 | -}; | 16 | +// const queryParam = { |
17 | +// brand: '0', | ||
18 | +// gender: '1,2,3', | ||
19 | +// sort: '0', | ||
20 | +// size: '0', | ||
21 | +// price: '0', | ||
22 | +// discount: '0.1,0.9' | ||
23 | +// }; | ||
24 | 24 | ||
25 | const saleLogger = (err, res) => { | 25 | const saleLogger = (err, res) => { |
26 | log.error('sale页面渲染错误:' + JSON.stringify(err)); | 26 | log.error('sale页面渲染错误:' + JSON.stringify(err)); |
@@ -41,7 +41,7 @@ exports.index = (req, res) => { | @@ -41,7 +41,7 @@ exports.index = (req, res) => { | ||
41 | }; | 41 | }; |
42 | 42 | ||
43 | saleModel.getSaleData().then((result) => { | 43 | saleModel.getSaleData().then((result) => { |
44 | - res.render('sale', Object.assign(renderData, queryParam, { | 44 | + res.render('sale', Object.assign(renderData, { |
45 | content: result, | 45 | content: result, |
46 | floorHeader: { | 46 | floorHeader: { |
47 | title: { | 47 | title: { |
@@ -67,7 +67,7 @@ exports.breakCode = (req, res) => { | @@ -67,7 +67,7 @@ exports.breakCode = (req, res) => { | ||
67 | }; | 67 | }; |
68 | 68 | ||
69 | saleModel.getBreakCodeData().then((result) => { | 69 | saleModel.getBreakCodeData().then((result) => { |
70 | - res.render('break-code', Object.assign(renderData, queryParam, result)); | 70 | + res.render('break-code', Object.assign(renderData, result)); |
71 | }).catch((err) => { | 71 | }).catch((err) => { |
72 | saleLogger(err, res); | 72 | saleLogger(err, res); |
73 | }); | 73 | }); |
@@ -108,7 +108,7 @@ exports.specialDetail = (req, res) => { | @@ -108,7 +108,7 @@ exports.specialDetail = (req, res) => { | ||
108 | saleModel.getSpecialDetailData(id).then((result) => { | 108 | saleModel.getSpecialDetailData(id).then((result) => { |
109 | headerData.navTitle = result.title; | 109 | headerData.navTitle = result.title; |
110 | renderData.pageHeader = headerData; | 110 | renderData.pageHeader = headerData; |
111 | - res.render('special-detail', Object.assign(renderData, queryParam, result)); | 111 | + res.render('special-detail', Object.assign(renderData, result)); |
112 | }).catch((err) => { | 112 | }).catch((err) => { |
113 | saleLogger(err, res); | 113 | saleLogger(err, res); |
114 | }); | 114 | }); |
@@ -127,7 +127,7 @@ exports.vip = (req, res) => { | @@ -127,7 +127,7 @@ exports.vip = (req, res) => { | ||
127 | }; | 127 | }; |
128 | 128 | ||
129 | saleModel.getVipData().then((result) => { | 129 | saleModel.getVipData().then((result) => { |
130 | - res.render('vip', Object.assign(renderData, queryParam, { | 130 | + res.render('vip', Object.assign(renderData, { |
131 | content: result | 131 | content: result |
132 | })); | 132 | })); |
133 | }).catch((err) => { | 133 | }).catch((err) => { |
@@ -154,7 +154,8 @@ exports.search = (req, res) => { | @@ -154,7 +154,8 @@ exports.search = (req, res) => { | ||
154 | res.render('product', { | 154 | res.render('product', { |
155 | layout: false, | 155 | layout: false, |
156 | params: params, | 156 | params: params, |
157 | - goods: result | 157 | + goods: result, |
158 | + saleVip: req.query.saleType === '2' && !req.user.uid | ||
158 | }); | 159 | }); |
159 | }); | 160 | }); |
160 | }; | 161 | }; |
@@ -34,7 +34,7 @@ const timeFormat = { | @@ -34,7 +34,7 @@ const timeFormat = { | ||
34 | const typeCont = { | 34 | const typeCont = { |
35 | price: ['s_p_desc', 's_p_asc'], | 35 | price: ['s_p_desc', 's_p_asc'], |
36 | discount: ['p_d_desc', 'p_d_asc'], | 36 | discount: ['p_d_desc', 'p_d_asc'], |
37 | - sales: ['s_n_desc', 's_n_asc'], | 37 | + sale: ['s_n_desc', 's_n_asc'], |
38 | newest: ['s_t_desc', 's_t_asc'], | 38 | newest: ['s_t_desc', 's_t_asc'], |
39 | stock: ['s_s_desc', 's_s_asc'] | 39 | stock: ['s_s_desc', 's_s_asc'] |
40 | }; | 40 | }; |
@@ -326,6 +326,12 @@ const processFilter = (list, options) => { | @@ -326,6 +326,12 @@ const processFilter = (list, options) => { | ||
326 | return; | 326 | return; |
327 | } | 327 | } |
328 | 328 | ||
329 | + console.log(options, key); | ||
330 | + | ||
331 | + if ((options.hideSize && key === 'size') || (options.hideSort && key === 'groupSort')) { | ||
332 | + return; | ||
333 | + } | ||
334 | + | ||
329 | classify.dataType = filtersType[key].dataType; | 335 | classify.dataType = filtersType[key].dataType; |
330 | classify.name = filtersType[key].name; | 336 | classify.name = filtersType[key].name; |
331 | classify.title = filtersType[key].title; | 337 | classify.title = filtersType[key].title; |
@@ -395,12 +401,13 @@ const processBreakingSort = (list) => { | @@ -395,12 +401,13 @@ const processBreakingSort = (list) => { | ||
395 | */ | 401 | */ |
396 | const searchSales = (params) => { | 402 | const searchSales = (params) => { |
397 | params = Object.assign({ | 403 | params = Object.assign({ |
398 | - limit: '20' | 404 | + limit: '50' |
399 | }, params); | 405 | }, params); |
400 | 406 | ||
401 | if (typeCont[params.type]) { | 407 | if (typeCont[params.type]) { |
402 | params.order = typeCont[params.type][params.order]; | 408 | params.order = typeCont[params.type][params.order]; |
403 | } | 409 | } |
410 | + | ||
404 | return api.get('', sign.apiSign(Object.assign({ | 411 | return api.get('', sign.apiSign(Object.assign({ |
405 | method: 'app.search.sales' | 412 | method: 'app.search.sales' |
406 | }, params)), true); | 413 | }, params)), true); |
@@ -412,7 +419,11 @@ const searchSales = (params) => { | @@ -412,7 +419,11 @@ const searchSales = (params) => { | ||
412 | exports.getFilterData = (params) => { | 419 | exports.getFilterData = (params) => { |
413 | return searchSales(params).then((result) => { | 420 | return searchSales(params).then((result) => { |
414 | if (result && result.code === 200) { | 421 | if (result && result.code === 200) { |
415 | - return processFilter(result.data.filter || []); | 422 | + console.log(params); |
423 | + return processFilter(result.data.filter || [], { | ||
424 | + hideSize: params.saleType === '1', | ||
425 | + hideSort: params.saleType === '1' | ||
426 | + }); | ||
416 | } else { | 427 | } else { |
417 | logger.error('SALE 商品搜索返回 code 不是 200'); | 428 | logger.error('SALE 商品搜索返回 code 不是 200'); |
418 | return []; | 429 | return []; |
@@ -16,7 +16,6 @@ | @@ -16,7 +16,6 @@ | ||
16 | <li class="new active"> | 16 | <li class="new active"> |
17 | <a href="javascript:void(0);"> | 17 | <a href="javascript:void(0);"> |
18 | <span class="span-test">最新</span> | 18 | <span class="span-test">最新</span> |
19 | - <span class="iconfont cur"></span> | ||
20 | </a> | 19 | </a> |
21 | </li> | 20 | </li> |
22 | <li class="price"> | 21 | <li class="price"> |
@@ -45,19 +44,5 @@ | @@ -45,19 +44,5 @@ | ||
45 | </li> | 44 | </li> |
46 | </ul> | 45 | </ul> |
47 | 46 | ||
48 | - <div id="goods-container" class="goods-container"> | ||
49 | - <div class="new-goods container clearfix"> | ||
50 | - {{# goods}} | ||
51 | - {{> common/goods}} | ||
52 | - {{/ goods}} | ||
53 | - </div> | ||
54 | - <div class="price-goods container hide clearfix"></div> | ||
55 | - <div class="discount-goods container hide clearfix"></div> | ||
56 | - | ||
57 | - {{> common/filter}} | ||
58 | - </div> | ||
59 | - | ||
60 | - {{> common/query-param}} | ||
61 | - | ||
62 | - {{> common/suspend-cart}} | 47 | + {{> product/sale-common}} |
63 | </div> | 48 | </div> |
1 | <div class="sale-channel-page discount-page yoho-page"> | 1 | <div class="sale-channel-page discount-page yoho-page"> |
2 | + {{> product/sale-banner}} | ||
3 | + <ul id="list-nav" class="list-nav clearfix"> | ||
4 | + <li class="all active"> | ||
5 | + <a href="javascript:void(0);"> | ||
6 | + <span class="span-test">全部</span> | ||
7 | + </a> | ||
8 | + </li> | ||
9 | + <li class="price"> | ||
10 | + <a href="javascript:void(0);"> | ||
11 | + <span class="span-test">价格</span> | ||
12 | + <span class="icon"> | ||
13 | + <i class="iconfont up cur"></i> | ||
14 | + <i class="iconfont down"></i> | ||
15 | + </span> | ||
16 | + </a> | ||
17 | + </li> | ||
18 | + <li class="discount"> | ||
19 | + <a href="javascript:void(0);"> | ||
20 | + <span class="span-test">折扣</span> | ||
21 | + <span class="icon"> | ||
22 | + <i class="iconfont up cur"></i> | ||
23 | + <i class="iconfont down"></i> | ||
24 | + </span> | ||
25 | + </a> | ||
26 | + </li> | ||
27 | + <li class="filter"> | ||
28 | + <a href="javascript:void(0);"> | ||
29 | + <span class="span-test">筛选</span> | ||
30 | + <span class="iconfont cur"></span> | ||
31 | + </a> | ||
32 | + </li> | ||
33 | + </ul> | ||
2 | {{> product/sale-common}} | 34 | {{> product/sale-common}} |
3 | </div> | 35 | </div> |
1 | <div class="sale-vip-page discount-page yoho-page"> | 1 | <div class="sale-vip-page discount-page yoho-page"> |
2 | + | ||
3 | + {{> product/sale-banner}} | ||
4 | + <ul id="list-nav" class="list-nav clearfix"> | ||
5 | + <li class="new active"> | ||
6 | + <a href="javascript:void(0);"> | ||
7 | + <span class="span-test">最新</span> | ||
8 | + </a> | ||
9 | + </li> | ||
10 | + <li class="price"> | ||
11 | + <a href="javascript:void(0);"> | ||
12 | + <span class="span-test">价格</span> | ||
13 | + <span class="icon"> | ||
14 | + <i class="iconfont up cur"></i> | ||
15 | + <i class="iconfont down"></i> | ||
16 | + </span> | ||
17 | + </a> | ||
18 | + </li> | ||
19 | + <li class="sale"> | ||
20 | + <a href="javascript:void(0);"> | ||
21 | + <span class="span-test">销量</span> | ||
22 | + </a> | ||
23 | + </li> | ||
24 | + <li class="filter"> | ||
25 | + <a href="javascript:void(0);"> | ||
26 | + <span class="span-test">筛选</span> | ||
27 | + <span class="iconfont cur"></span> | ||
28 | + </a> | ||
29 | + </li> | ||
30 | + </ul> | ||
2 | {{> product/sale-common}} | 31 | {{> product/sale-common}} |
3 | </div> | 32 | </div> |
1 | +<div class="banner"> | ||
2 | + {{#content}} | ||
3 | + {{! 头部banner}} | ||
4 | + {{#if focus}} | ||
5 | + {{> resources/banner-top}} | ||
6 | + {{/if}} | ||
7 | + {{/content}} | ||
8 | + {{# activity}} | ||
9 | + <img src="{{image coverUrl 640 250}}"/> | ||
10 | + <p class="activity-time" data-time-ms="{{leftTime}}"><i class="iconfont time-ico"></i><span>{{time}}</span></p> | ||
11 | + {{/ activity}} | ||
12 | +</div> |
1 | -<div class="banner"> | ||
2 | - {{#content}} | ||
3 | - {{! 头部banner}} | ||
4 | - {{#if focus}} | ||
5 | - {{> resources/banner-top}} | ||
6 | - {{/if}} | ||
7 | - {{/content}} | ||
8 | - {{# activity}} | ||
9 | - <img src="{{image coverUrl 640 250}}"/> | ||
10 | - <p class="activity-time" data-time-ms="{{leftTime}}"><i class="iconfont time-ico"></i><span>{{time}}</span></p> | ||
11 | - {{/ activity}} | ||
12 | -</div> | ||
13 | -<ul id="list-nav" class="list-nav clearfix"> | ||
14 | - <li class="new active"> | ||
15 | - <a href="javascript:void(0);"> | ||
16 | - <span class="span-test">最新</span> | ||
17 | - <span class="iconfont cur"></span> | ||
18 | - </a> | ||
19 | - </li> | ||
20 | - <li class="price"> | ||
21 | - <a href="javascript:void(0);"> | ||
22 | - <span class="span-test">价格</span> | ||
23 | - <span class="icon"> | ||
24 | - <i class="iconfont up cur"></i> | ||
25 | - <i class="iconfont down"></i> | ||
26 | - </span> | ||
27 | - </a> | ||
28 | - </li> | ||
29 | - <li class="discount"> | ||
30 | - <a href="javascript:void(0);"> | ||
31 | - <span class="span-test">折扣</span> | ||
32 | - <span class="icon"> | ||
33 | - <i class="iconfont up cur"></i> | ||
34 | - <i class="iconfont down"></i> | ||
35 | - </span> | ||
36 | - </a> | ||
37 | - </li> | ||
38 | - <li class="filter"> | ||
39 | - <a href="javascript:void(0);"> | ||
40 | - <span class="span-test">筛选</span> | ||
41 | - <span class="iconfont cur"></span> | ||
42 | - </a> | ||
43 | - </li> | ||
44 | -</ul> | ||
45 | - | ||
46 | <div id="goods-container" class="goods-container"> | 1 | <div id="goods-container" class="goods-container"> |
47 | <div class="new-goods container clearfix"> | 2 | <div class="new-goods container clearfix"> |
48 | {{# goods}} | 3 | {{# goods}} |
@@ -51,6 +6,8 @@ | @@ -51,6 +6,8 @@ | ||
51 | </div> | 6 | </div> |
52 | <div class="price-goods container hide clearfix"></div> | 7 | <div class="price-goods container hide clearfix"></div> |
53 | <div class="discount-goods container hide clearfix"></div> | 8 | <div class="discount-goods container hide clearfix"></div> |
9 | + <div class="all-goods container hide clearfix"></div> | ||
10 | + <div class="sale-goods container hide clearfix"></div> | ||
54 | 11 | ||
55 | {{> common/filter}} | 12 | {{> common/filter}} |
56 | </div> | 13 | </div> |
@@ -13,7 +13,7 @@ module.exports = { | @@ -13,7 +13,7 @@ module.exports = { | ||
13 | port: 6001, | 13 | port: 6001, |
14 | siteUrl: 'http://m.yohobuy.com', | 14 | siteUrl: 'http://m.yohobuy.com', |
15 | domains: { | 15 | domains: { |
16 | - api: 'http://testapi.yoho.cn:28078/', | 16 | + api: 'http://api.open.yohobuy.com/', // http://192.168.102.205:8080/gateway http://testapi.yoho.cn:28078/ |
17 | service: 'http://testservice.yoho.cn:28077/' | 17 | service: 'http://testservice.yoho.cn:28077/' |
18 | }, | 18 | }, |
19 | useOneapm: false, | 19 | useOneapm: false, |
@@ -20,7 +20,7 @@ | @@ -20,7 +20,7 @@ | ||
20 | {{/ tags}} | 20 | {{/ tags}} |
21 | </div> | 21 | </div> |
22 | <div class="good-detail-img"> | 22 | <div class="good-detail-img"> |
23 | - <a class="good-thumb" href="{{url}}" data-img={{defaultImages}}> | 23 | + <a class="good-thumb" href="{{url}}"> |
24 | <img class="lazy" data-original="{{image defaultImages 235 314}}"> | 24 | <img class="lazy" data-original="{{image defaultImages 235 314}}"> |
25 | </a> | 25 | </a> |
26 | {{# isSoonSoldOut}} | 26 | {{# isSoonSoldOut}} |
@@ -40,7 +40,7 @@ | @@ -40,7 +40,7 @@ | ||
40 | <span class="market-price">¥{{.}}</span> | 40 | <span class="market-price">¥{{.}}</span> |
41 | {{/marketPrice}} | 41 | {{/marketPrice}} |
42 | </div> | 42 | </div> |
43 | - {{#if saleVip}} | 43 | + {{#if @root.saleVip}} |
44 | <div class="vip-info"> | 44 | <div class="vip-info"> |
45 | <i class="vip-icon"></i>更优惠 | 45 | <i class="vip-icon"></i>更优惠 |
46 | </div> | 46 | </div> |
@@ -25,6 +25,8 @@ var winH = $(window).height(), | @@ -25,6 +25,8 @@ var winH = $(window).height(), | ||
25 | // 默认筛选条件 | 25 | // 默认筛选条件 |
26 | var defaultOpt = require('./query-param'); | 26 | var defaultOpt = require('./query-param'); |
27 | 27 | ||
28 | +var storeOpt = $.extend({}, defaultOpt); | ||
29 | + | ||
28 | var $listNav = $('#list-nav'), | 30 | var $listNav = $('#list-nav'), |
29 | $swiperSize = $('.swiper-size'), | 31 | $swiperSize = $('.swiper-size'), |
30 | 32 | ||
@@ -68,6 +70,18 @@ ellipsis.init(); | @@ -68,6 +70,18 @@ ellipsis.init(); | ||
68 | 70 | ||
69 | lazyLoad($('img.lazy')); | 71 | lazyLoad($('img.lazy')); |
70 | 72 | ||
73 | +if ($('.banner-swiper .swiper-slide').length > 1) { | ||
74 | + new Swiper('.swiper-container', { | ||
75 | + lazyLoading: true, | ||
76 | + lazyLoadingInPrevNext: true, | ||
77 | + loop: true, | ||
78 | + autoplay: 3000, | ||
79 | + autoplayDisableOnInteraction: true, | ||
80 | + paginationClickable: true, | ||
81 | + pagination: '.banner-top .pagination-inner' | ||
82 | + }); | ||
83 | +} | ||
84 | + | ||
71 | $.each($swiperSize, function(key) { | 85 | $.each($swiperSize, function(key) { |
72 | swipers[key] = new Swiper('#size-swiper-' + key, { | 86 | swipers[key] = new Swiper('#size-swiper-' + key, { |
73 | slidesPerView: 'auto' | 87 | slidesPerView: 'auto' |
@@ -78,6 +92,23 @@ $.each($listNav.find('li'), function(key, item) { | @@ -78,6 +92,23 @@ $.each($listNav.find('li'), function(key, item) { | ||
78 | $(item).addClass(goodsType[key]); | 92 | $(item).addClass(goodsType[key]); |
79 | }); | 93 | }); |
80 | 94 | ||
95 | +// 判断导航类型 | ||
96 | +function judgeType(dom) { | ||
97 | + var navType; | ||
98 | + | ||
99 | + if (dom.hasClass('coat')) { | ||
100 | + navType = 'coat'; | ||
101 | + } else if (dom.hasClass('trouser')) { | ||
102 | + navType = 'trouser'; | ||
103 | + } else if (dom.hasClass('shoes')) { | ||
104 | + navType = 'shoes'; | ||
105 | + } else { | ||
106 | + navType = 'other'; | ||
107 | + } | ||
108 | + | ||
109 | + return navType; | ||
110 | +} | ||
111 | + | ||
81 | /** | 112 | /** |
82 | * 筛选注册的回调,筛选子项点击后逻辑 | 113 | * 筛选注册的回调,筛选子项点击后逻辑 |
83 | * 需要执行search的场景:1.点选筛选项;2.relaod为true时切换导航;3.下拉加载 | 114 | * 需要执行search的场景:1.点选筛选项;2.relaod为true时切换导航;3.下拉加载 |
@@ -97,6 +128,10 @@ function search(opt) { | @@ -97,6 +128,10 @@ function search(opt) { | ||
97 | return; | 128 | return; |
98 | } | 129 | } |
99 | 130 | ||
131 | + if ($.type(opt) === 'object') { | ||
132 | + opt = [opt]; | ||
133 | + } | ||
134 | + | ||
100 | if (opt) { | 135 | if (opt) { |
101 | 136 | ||
102 | // 筛选项变更则重置reload为true | 137 | // 筛选项变更则重置reload为true |
@@ -150,17 +185,8 @@ function search(opt) { | @@ -150,17 +185,8 @@ function search(opt) { | ||
150 | $.extend(defaultOpt, ext); // 扩展筛选项 | 185 | $.extend(defaultOpt, ext); // 扩展筛选项 |
151 | } | 186 | } |
152 | 187 | ||
153 | - | ||
154 | // 导航类别 | 188 | // 导航类别 |
155 | - if ($pre.hasClass('coat')) { | ||
156 | - navType = 'coat'; | ||
157 | - } else if ($pre.hasClass('trouser')) { | ||
158 | - navType = 'trouser'; | ||
159 | - } else if ($pre.hasClass('shoes')) { | ||
160 | - navType = 'shoes'; | ||
161 | - } else { | ||
162 | - navType = 'other'; | ||
163 | - } | 189 | + navType = judgeType($pre); |
164 | 190 | ||
165 | nav = navInfo[navType]; | 191 | nav = navInfo[navType]; |
166 | page = nav.page + 1; | 192 | page = nav.page + 1; |
@@ -204,7 +230,12 @@ function search(opt) { | @@ -204,7 +230,12 @@ function search(opt) { | ||
204 | break; | 230 | break; |
205 | } | 231 | } |
206 | 232 | ||
207 | - if (data === ' ') { | 233 | + if ($container.hasClass('hide')) { |
234 | + $container.siblings().addClass('hide'); | ||
235 | + $container.removeClass('hide'); | ||
236 | + } | ||
237 | + | ||
238 | + if (data === '') { | ||
208 | nav.end = true; | 239 | nav.end = true; |
209 | 240 | ||
210 | if (nav.reload) { | 241 | if (nav.reload) { |
@@ -250,7 +281,9 @@ function search(opt) { | @@ -250,7 +281,9 @@ function search(opt) { | ||
250 | $.ajax({ | 281 | $.ajax({ |
251 | type: 'GET', | 282 | type: 'GET', |
252 | url: '/product/sale/filter', | 283 | url: '/product/sale/filter', |
253 | - data: defaultOpt, | 284 | + data: $.extend(defaultOpt, { |
285 | + saleType: '1' | ||
286 | + }), | ||
254 | success: function(data) { | 287 | success: function(data) { |
255 | $goodsContainer.append(data); | 288 | $goodsContainer.append(data); |
256 | 289 | ||
@@ -262,6 +295,8 @@ $.ajax({ | @@ -262,6 +295,8 @@ $.ajax({ | ||
262 | // 切换active状态到$pre上 | 295 | // 切换active状态到$pre上 |
263 | $pre.addClass('active'); | 296 | $pre.addClass('active'); |
264 | $pre.siblings('.filter').removeClass('active'); | 297 | $pre.siblings('.filter').removeClass('active'); |
298 | + | ||
299 | + $('#size-swiper-' + $pre.index()).show(); | ||
265 | }, | 300 | }, |
266 | missStatus: true | 301 | missStatus: true |
267 | }); | 302 | }); |
@@ -278,11 +313,6 @@ $listNav.on('touchend touchcancel', function(e) { | @@ -278,11 +313,6 @@ $listNav.on('touchend touchcancel', function(e) { | ||
278 | nav, sortId, navType, $active; | 313 | nav, sortId, navType, $active; |
279 | 314 | ||
280 | e.preventDefault(); | 315 | e.preventDefault(); |
281 | - | ||
282 | - if (typeof $this === 'undefined' || $this.length === 0) { | ||
283 | - return; | ||
284 | - } | ||
285 | - | ||
286 | if ($this.hasClass('filter')) { | 316 | if ($this.hasClass('filter')) { |
287 | 317 | ||
288 | // 筛选面板切换状态 | 318 | // 筛选面板切换状态 |
@@ -294,29 +324,20 @@ $listNav.on('touchend touchcancel', function(e) { | @@ -294,29 +324,20 @@ $listNav.on('touchend touchcancel', function(e) { | ||
294 | $this.removeClass('active'); | 324 | $this.removeClass('active'); |
295 | } else { | 325 | } else { |
296 | $pre = $this.siblings('.active'); | 326 | $pre = $this.siblings('.active'); |
297 | - | 327 | + $swiperSize.hide(); |
298 | $pre.removeClass('active'); | 328 | $pre.removeClass('active'); |
299 | $this.addClass('active'); | 329 | $this.addClass('active'); |
300 | - $swiperSize.hide(); | ||
301 | - | ||
302 | filter.showFilter(); | 330 | filter.showFilter(); |
303 | } | 331 | } |
304 | } else { | 332 | } else { |
305 | - if ($this.hasClass('coat')) { | ||
306 | - navType = 'coat'; | ||
307 | - } else if ($this.hasClass('trouser')) { | ||
308 | - navType = 'trouser'; | ||
309 | - } else if ($this.hasClass('shoes')) { | ||
310 | - navType = 'shoes'; | ||
311 | - } else { | ||
312 | - navType = 'other'; | ||
313 | - } | 333 | + |
334 | + // 导航类别 | ||
335 | + navType = judgeType($this); | ||
314 | 336 | ||
315 | nav = navInfo[navType]; | 337 | nav = navInfo[navType]; |
316 | 338 | ||
317 | - if ($this.hasClass('active')) { | ||
318 | - return; | ||
319 | - } else { | 339 | + if (!($this.hasClass('active'))) { |
340 | + | ||
320 | $active = $this.siblings('.active'); | 341 | $active = $this.siblings('.active'); |
321 | 342 | ||
322 | $pre = $this; // $pre为除筛选导航的其他导航项,若当前active的为筛选,则把$pre置为当前点击项 | 343 | $pre = $this; // $pre为除筛选导航的其他导航项,若当前active的为筛选,则把$pre置为当前点击项 |
@@ -342,10 +363,16 @@ $listNav.on('touchend touchcancel', function(e) { | @@ -342,10 +363,16 @@ $listNav.on('touchend touchcancel', function(e) { | ||
342 | case 'shoes': | 363 | case 'shoes': |
343 | $shoesgc.removeClass('hide'); | 364 | $shoesgc.removeClass('hide'); |
344 | break; | 365 | break; |
345 | - default: | 366 | + case 'other': |
346 | $othergc.removeClass('hide'); | 367 | $othergc.removeClass('hide'); |
347 | break; | 368 | break; |
369 | + default: | ||
370 | + break; | ||
348 | } | 371 | } |
372 | + | ||
373 | + // 重置筛选项 | ||
374 | + filter.resetFilter(); | ||
375 | + defaultOpt = $.extend({}, storeOpt); | ||
349 | } | 376 | } |
350 | 377 | ||
351 | $active.removeClass('active'); | 378 | $active.removeClass('active'); |
@@ -378,15 +405,8 @@ $swiperSize.on('touchend touchcancel', function(e) { | @@ -378,15 +405,8 @@ $swiperSize.on('touchend touchcancel', function(e) { | ||
378 | return; | 405 | return; |
379 | } | 406 | } |
380 | 407 | ||
381 | - if ($parentType.hasClass('coat')) { | ||
382 | - navType = 'coat'; | ||
383 | - } else if ($parentType.hasClass('trouser')) { | ||
384 | - navType = 'trouser'; | ||
385 | - } else if ($parentType.hasClass('shoes')) { | ||
386 | - navType = 'shoes'; | ||
387 | - } else { | ||
388 | - navType = 'other'; | ||
389 | - } | 408 | + // 导航类别 |
409 | + navType = judgeType($parentType); | ||
390 | 410 | ||
391 | nav = navInfo[navType]; | 411 | nav = navInfo[navType]; |
392 | 412 | ||
@@ -396,7 +416,6 @@ $swiperSize.on('touchend touchcancel', function(e) { | @@ -396,7 +416,6 @@ $swiperSize.on('touchend touchcancel', function(e) { | ||
396 | nav.reload = true; | 416 | nav.reload = true; |
397 | $active = $this.siblings('.active'); | 417 | $active = $this.siblings('.active'); |
398 | $pre = $parentType; // $pre为除筛选导航的其他导航项,若当前active的为筛选,则把$pre置为当前点击项 | 418 | $pre = $parentType; // $pre为除筛选导航的其他导航项,若当前active的为筛选,则把$pre置为当前点击项 |
399 | - | ||
400 | $active.removeClass('active'); | 419 | $active.removeClass('active'); |
401 | $this.addClass('active'); | 420 | $this.addClass('active'); |
402 | sortId = $parentType.data('id'); | 421 | sortId = $parentType.data('id'); |
@@ -11,10 +11,11 @@ var $ = require('yoho-jquery'), | @@ -11,10 +11,11 @@ var $ = require('yoho-jquery'), | ||
11 | loading = require('../plugin/loading'); | 11 | loading = require('../plugin/loading'); |
12 | 12 | ||
13 | var $goodsContainer = $('#goods-container'), | 13 | var $goodsContainer = $('#goods-container'), |
14 | - $goodsChildren = $goodsContainer.children(), | ||
15 | - $ngc = $($goodsChildren.get(0)), | ||
16 | - $pgc = $($goodsChildren.get(1)), | ||
17 | - $dgc = $($goodsChildren.get(2)); | 14 | + $ngc = $($goodsContainer.find('.new-goods')), |
15 | + $dgc = $($goodsContainer.find('.discount-goods')), | ||
16 | + $pgc = $($goodsContainer.find('.price-goods')), | ||
17 | + $agc = $($goodsContainer.find('.all-goods')), | ||
18 | + $sgc = $($goodsContainer.find('.sale-goods')); | ||
18 | 19 | ||
19 | var winH = $(window).height(), | 20 | var winH = $(window).height(), |
20 | noResult = '<p class="no-result">未找到相关搜索结果</p>'; | 21 | noResult = '<p class="no-result">未找到相关搜索结果</p>'; |
@@ -26,6 +27,12 @@ var $listNav = $('#list-nav'), | @@ -26,6 +27,12 @@ var $listNav = $('#list-nav'), | ||
26 | 27 | ||
27 | // 导航数据信息 | 28 | // 导航数据信息 |
28 | navInfo = { | 29 | navInfo = { |
30 | + all: { | ||
31 | + order: 1, | ||
32 | + reload: true, | ||
33 | + page: 0, | ||
34 | + end: false | ||
35 | + }, | ||
29 | newest: { | 36 | newest: { |
30 | order: 1, | 37 | order: 1, |
31 | reload: true, | 38 | reload: true, |
@@ -39,7 +46,13 @@ var $listNav = $('#list-nav'), | @@ -39,7 +46,13 @@ var $listNav = $('#list-nav'), | ||
39 | end: false | 46 | end: false |
40 | }, | 47 | }, |
41 | discount: { | 48 | discount: { |
42 | - order: 1, | 49 | + order: 0, |
50 | + reload: true, | ||
51 | + page: 0, | ||
52 | + end: false | ||
53 | + }, | ||
54 | + sale: { | ||
55 | + order: 0, | ||
43 | reload: true, | 56 | reload: true, |
44 | page: 0, | 57 | page: 0, |
45 | end: false | 58 | end: false |
@@ -55,6 +68,26 @@ ellipsis.init(); | @@ -55,6 +68,26 @@ ellipsis.init(); | ||
55 | 68 | ||
56 | lazyLoad($('img.lazy')); | 69 | lazyLoad($('img.lazy')); |
57 | 70 | ||
71 | + | ||
72 | +// 判断导航类型 | ||
73 | +function judgeType(dom) { | ||
74 | + var navType; | ||
75 | + | ||
76 | + if (dom.hasClass('new')) { | ||
77 | + navType = 'newest'; | ||
78 | + } else if (dom.hasClass('price')) { | ||
79 | + navType = 'price'; | ||
80 | + } else if (dom.hasClass('discount')) { | ||
81 | + navType = 'discount'; | ||
82 | + } else if (dom.hasClass('sale')) { | ||
83 | + navType = 'sale'; | ||
84 | + } else if (dom.hasClass('all')) { | ||
85 | + navType = 'all'; | ||
86 | + } | ||
87 | + | ||
88 | + return navType; | ||
89 | +} | ||
90 | + | ||
58 | /** | 91 | /** |
59 | * 筛选注册的回调,筛选子项点击后逻辑 | 92 | * 筛选注册的回调,筛选子项点击后逻辑 |
60 | * 需要执行search的场景:1.点选筛选项;2.relaod为true时切换导航;3.下拉加载 | 93 | * 需要执行search的场景:1.点选筛选项;2.relaod为true时切换导航;3.下拉加载 |
@@ -127,15 +160,8 @@ function search(opt) { | @@ -127,15 +160,8 @@ function search(opt) { | ||
127 | $.extend(defaultOpt, ext); // 扩展筛选项 | 160 | $.extend(defaultOpt, ext); // 扩展筛选项 |
128 | } | 161 | } |
129 | 162 | ||
130 | - | ||
131 | // 导航类别 | 163 | // 导航类别 |
132 | - if ($pre.hasClass('new')) { | ||
133 | - navType = 'newest'; | ||
134 | - } else if ($pre.hasClass('price')) { | ||
135 | - navType = 'price'; | ||
136 | - } else if ($pre.hasClass('discount')) { | ||
137 | - navType = 'discount'; | ||
138 | - } | 164 | + navType = judgeType($pre); |
139 | 165 | ||
140 | nav = navInfo[navType]; | 166 | nav = navInfo[navType]; |
141 | page = nav.page + 1; | 167 | page = nav.page + 1; |
@@ -180,11 +206,22 @@ function search(opt) { | @@ -180,11 +206,22 @@ function search(opt) { | ||
180 | case 'discount': | 206 | case 'discount': |
181 | $container = $dgc; | 207 | $container = $dgc; |
182 | break; | 208 | break; |
209 | + case 'sale': | ||
210 | + $container = $sgc; | ||
211 | + break; | ||
212 | + case 'all': | ||
213 | + $container = $agc; | ||
214 | + break; | ||
183 | default: | 215 | default: |
184 | break; | 216 | break; |
185 | } | 217 | } |
186 | 218 | ||
187 | - if (data === ' ') { | 219 | + if ($container.hasClass('hide')) { |
220 | + $container.siblings().addClass('hide'); | ||
221 | + $container.removeClass('hide'); | ||
222 | + } | ||
223 | + | ||
224 | + if (data === '') { | ||
188 | nav.end = true; | 225 | nav.end = true; |
189 | 226 | ||
190 | if (nav.reload) { | 227 | if (nav.reload) { |
@@ -290,20 +327,15 @@ $listNav.on('touchend touchcancel', function(e) { | @@ -290,20 +327,15 @@ $listNav.on('touchend touchcancel', function(e) { | ||
290 | } | 327 | } |
291 | } else { | 328 | } else { |
292 | 329 | ||
293 | - if ($this.hasClass('new')) { | ||
294 | - navType = 'newest'; | ||
295 | - } else if ($this.hasClass('price')) { | ||
296 | - navType = 'price'; | ||
297 | - } else if ($this.hasClass('discount')) { | ||
298 | - navType = 'discount'; | ||
299 | - } | 330 | + // 导航类别 |
331 | + navType = judgeType($this); | ||
300 | 332 | ||
301 | nav = navInfo[navType]; | 333 | nav = navInfo[navType]; |
302 | 334 | ||
303 | if ($this.hasClass('active')) { | 335 | if ($this.hasClass('active')) { |
304 | 336 | ||
305 | // 最新无排序切换 | 337 | // 最新无排序切换 |
306 | - if ($this.hasClass('new')) { | 338 | + if ($this.hasClass('new') || $this.hasClass('sale') || $this.hasClass('all')) { |
307 | return; | 339 | return; |
308 | } | 340 | } |
309 | 341 | ||
@@ -341,6 +373,14 @@ $listNav.on('touchend touchcancel', function(e) { | @@ -341,6 +373,14 @@ $listNav.on('touchend touchcancel', function(e) { | ||
341 | case 'discount': | 373 | case 'discount': |
342 | $dgc.removeClass('hide'); | 374 | $dgc.removeClass('hide'); |
343 | break; | 375 | break; |
376 | + | ||
377 | + case 'sale': | ||
378 | + $sgc.removeClass('hide'); | ||
379 | + break; | ||
380 | + | ||
381 | + case 'all': | ||
382 | + $agc.removeClass('hide'); | ||
383 | + break; | ||
344 | default: | 384 | default: |
345 | break; | 385 | break; |
346 | } | 386 | } |
@@ -32,7 +32,6 @@ function getRTime() { | @@ -32,7 +32,6 @@ function getRTime() { | ||
32 | h = Math.floor(endTime / anHour % 24); | 32 | h = Math.floor(endTime / anHour % 24); |
33 | m = Math.floor(endTime / aMinute % 60); | 33 | m = Math.floor(endTime / aMinute % 60); |
34 | s = Math.floor(endTime / aSecond % 60); | 34 | s = Math.floor(endTime / aSecond % 60); |
35 | - } | ||
36 | 35 | ||
37 | showTime += d > 0 ? d + '天' : ''; | 36 | showTime += d > 0 ? d + '天' : ''; |
38 | showTime += h > 0 ? h + '小时' : ''; | 37 | showTime += h > 0 ? h + '小时' : ''; |
@@ -46,6 +45,9 @@ function getRTime() { | @@ -46,6 +45,9 @@ function getRTime() { | ||
46 | $activityTime.find('span').html(showTime); | 45 | $activityTime.find('span').html(showTime); |
47 | 46 | ||
48 | $activityTime.attr('data-time-ms', endTime); | 47 | $activityTime.attr('data-time-ms', endTime); |
48 | + } else { | ||
49 | + $activityTime.hide(); | ||
50 | + } | ||
49 | } | 51 | } |
50 | 52 | ||
51 | setInterval(getRTime, 1000); | 53 | setInterval(getRTime, 1000); |
@@ -3,13 +3,17 @@ | @@ -3,13 +3,17 @@ | ||
3 | 3 | ||
4 | .swiper-container { | 4 | .swiper-container { |
5 | width: 100%; | 5 | width: 100%; |
6 | - height: 310px; | 6 | + height: 240px; |
7 | 7 | ||
8 | img { | 8 | img { |
9 | height: 100%; | 9 | height: 100%; |
10 | width: 100%; | 10 | width: 100%; |
11 | } | 11 | } |
12 | 12 | ||
13 | + ul { | ||
14 | + height: 240px; | ||
15 | + } | ||
16 | + | ||
13 | .swiper-pagination { | 17 | .swiper-pagination { |
14 | bottom: 0; | 18 | bottom: 0; |
15 | left: 0; | 19 | left: 0; |
-
Please register or login to post a comment