Authored by 王水玲

sale

@@ -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">&#xe616;</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">&#xe615;</i>
  14 + <i class="iconfont down">&#xe616;</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">&#xe615;</i>
  23 + <i class="iconfont down">&#xe616;</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">&#xe613;</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">&#xe615;</i>
  15 + <i class="iconfont down">&#xe616;</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">&#xe613;</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">&#xe603;</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">&#xe603;</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">&#xe616;</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">&#xe615;</i>  
25 - <i class="iconfont down">&#xe616;</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">&#xe615;</i>  
34 - <i class="iconfont down">&#xe616;</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">&#xe613;</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>
@@ -107,6 +107,10 @@ function subClassifyTapEvt($this) { @@ -107,6 +107,10 @@ function subClassifyTapEvt($this) {
107 }); 107 });
108 } 108 }
109 109
  110 + if (hCbFn) {
  111 + hCbFn();
  112 + }
  113 +
110 hideFilter(); 114 hideFilter();
111 } 115 }
112 116
@@ -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,20 +32,22 @@ function getRTime() { @@ -32,20 +32,22 @@ 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 + '天' : '';  
38 - showTime += h > 0 ? h + '小时' : '';  
39 - showTime += m > 0 ? m + '分钟' : '';  
40 - showTime += s > 0 ? s + '秒' : ''; 36 + showTime += d > 0 ? d + '天' : '';
  37 + showTime += h > 0 ? h + '小时' : '';
  38 + showTime += m > 0 ? m + '分钟' : '';
  39 + showTime += s > 0 ? s + '秒' : '';
41 40
42 - if (showTime.length !== '') {  
43 - showTime = '剩' + showTime;  
44 - } 41 + if (showTime.length !== '') {
  42 + showTime = '剩' + showTime;
  43 + }
45 44
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);
@@ -48,9 +48,10 @@ @@ -48,9 +48,10 @@
48 width: 20%; 48 width: 20%;
49 font-size: 28px; 49 font-size: 28px;
50 50
51 - &.active a {  
52 - border-bottom: 4px solid #000;  
53 - } 51 + /* &.active a {
  52 + border-bottom: 4px solid #000;
  53 + }
  54 + */
54 55
55 a { 56 a {
56 width: 106px; 57 width: 106px;
@@ -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;
@@ -31,3 +31,9 @@ @@ -31,3 +31,9 @@
31 } 31 }
32 } 32 }
33 } 33 }
  34 +
  35 +.sale-vip-page {
  36 + .good-info {
  37 + height: 570px;
  38 + }
  39 +}