Authored by wangqing

Merge branch 'develop' of http://git.dev.yoho.cn/web/yohobuy into develop

@@ -459,20 +459,7 @@ var brandsData, @@ -459,20 +459,7 @@ var brandsData,
459 459
460 loading.showLoadingMask(); 460 loading.showLoadingMask();
461 461
462 -//热门品牌滑动  
463 -hotBrandsSwiper = new Swiper('.brands-swiper', {  
464 - grabCursor: true,  
465 - slidesPerView: 'auto',  
466 - wrapperClass: 'brands-list',  
467 - slideElement: 'li'  
468 -});  
469 462
470 -swiper = new Swiper('.swiper-container', {  
471 - lazyLoading: true,  
472 - loop: true,  
473 - autoplay: 3000,  
474 - pagination: '.swiper-pagination .pagination-inner'  
475 -});  
476 463
477 lazyLoad($('img.lazy')); 464 lazyLoad($('img.lazy'));
478 $('.yoho-header').css({ 465 $('.yoho-header').css({
@@ -488,6 +475,22 @@ $('.yoho-header').css({ @@ -488,6 +475,22 @@ $('.yoho-header').css({
488 475
489 $('.hide-when-loading').show(); 476 $('.hide-when-loading').show();
490 loading.hideLoadingMask(); 477 loading.hideLoadingMask();
  478 +
  479 + //banner滑动
  480 + swiper = new Swiper('.swiper-container', {
  481 + lazyLoading: true,
  482 + loop: true,
  483 + autoplay: 3000,
  484 + pagination: '.swiper-pagination .pagination-inner'
  485 + });
  486 +
  487 + //热门品牌滑动
  488 + hotBrandsSwiper = new Swiper('.brands-swiper', {
  489 + grabCursor: true,
  490 + slidesPerView: 'auto',
  491 + wrapperClass: 'brands-list',
  492 + slideElement: 'li'
  493 +});
491 })(); 494 })();
492 495
493 $fixTitleBar = $('<div class="title-bar fixed-title-bar"><h2></h2></div>'); 496 $fixTitleBar = $('<div class="title-bar fixed-title-bar"><h2></h2></div>');
@@ -1889,41 +1892,50 @@ module.exports = function(specificGender) { @@ -1889,41 +1892,50 @@ module.exports = function(specificGender) {
1889 if (kidsType) { 1892 if (kidsType) {
1890 url = '/product/recom/maylikekids'; 1893 url = '/product/recom/maylikekids';
1891 } else if (lifestyleType) { 1894 } else if (lifestyleType) {
1892 - url = '/product/recom/maylikelife'; 1895 +
  1896 + //有货币页面加载男生首页的数据
  1897 + url = specificGender === 'lifestyle' ? '/product/recom/maylike?gender=1,3' : '/product/recom/maylikelife';
1893 } else { 1898 } else {
1894 gender = (specificGender === 'boys' || $('.mobile-wrap').hasClass('boys-wrap')) ? 1899 gender = (specificGender === 'boys' || $('.mobile-wrap').hasClass('boys-wrap')) ?
1895 '1,3' : '2,3', 1900 '1,3' : '2,3',
1896 url = '/product/recom/maylike?gender=' + gender; 1901 url = '/product/recom/maylike?gender=' + gender;
1897 } 1902 }
1898 1903
  1904 + //以防cookie异常,强制加载男首
  1905 + if (specificGender === 'boys') {
  1906 + url = '/product/recom/maylike?gender=1,3';
  1907 + }
  1908 +
1899 $curNav = $navList.children('.focus'); 1909 $curNav = $navList.children('.focus');
1900 1910
1901 if (lifestyleType) { 1911 if (lifestyleType) {
1902 - navHammer = new Hammer($navList[0]);  
1903 - navHammer.on('tap', function(e) {  
1904 - var $this = $(e.target).closest('li'),  
1905 - $goods = $('.goods-list'),  
1906 - $content;  
1907 -  
1908 - e.preventDefault();  
1909 - if ($this.hasClass('focus')) {  
1910 - return;  
1911 - } 1912 + navHammer = $navList[0] ? new Hammer($navList[0]) : undefined;
  1913 + if (navHammer) {
  1914 + navHammer.on('tap', function(e) {
  1915 + var $this = $(e.target).closest('li'),
  1916 + $goods = $('.goods-list'),
  1917 + $content;
  1918 +
  1919 + e.preventDefault();
  1920 + if ($this.hasClass('focus')) {
  1921 + return;
  1922 + }
1912 1923
1913 - index = $this.index(); 1924 + index = $this.index();
1914 1925
1915 - $this.addClass('focus');  
1916 - $curNav.removeClass('focus'); 1926 + $this.addClass('focus');
  1927 + $curNav.removeClass('focus');
1917 1928
1918 - $goods.not('.hide').addClass('hide');  
1919 - $content = $goods.eq(index);  
1920 - $content.removeClass('hide'); 1929 + $goods.not('.hide').addClass('hide');
  1930 + $content = $goods.eq(index);
  1931 + $content.removeClass('hide');
1921 1932
1922 - $curNav = $this; 1933 + $curNav = $this;
1923 1934
1924 - $(document).trigger('scroll'); //Trigger lazyLoad  
1925 - e.srcEvent.stopPropagation();  
1926 - }); 1935 + $(document).trigger('scroll'); //Trigger lazyLoad
  1936 + e.srcEvent.stopPropagation();
  1937 + });
  1938 + }
1927 } 1939 }
1928 1940
1929 loading.init($('.maybe-like')); 1941 loading.init($('.maybe-like'));
@@ -5526,15 +5538,28 @@ function changeSizeChosed(newSizeIndex) { @@ -5526,15 +5538,28 @@ function changeSizeChosed(newSizeIndex) {
5526 $curSizeBlock.removeClass('chosed'); 5538 $curSizeBlock.removeClass('chosed');
5527 sizes = $sizeRowList.eq(newSizeIndex).children(); 5539 sizes = $sizeRowList.eq(newSizeIndex).children();
5528 for (i = 0; i < sizes.length; i++) { 5540 for (i = 0; i < sizes.length; i++) {
5529 - if ($(sizes[i]).data('name') === $curSizeBlock.data('name')) { 5541 + if ($(sizes[i]).data('id') === $curSizeBlock.data('id')) {
5530 $curSizeBlock = $(sizes[i]); 5542 $curSizeBlock = $(sizes[i]);
5531 - queryString = '#' + $curSizeBlock.data('name'); 5543 + queryString = '#' + $curSizeBlock.data('id');
5532 curColorIndex = $(queryString).data('index'); 5544 curColorIndex = $(queryString).data('index');
  5545 + $curSizeBlock.addClass('chosed');
  5546 + return $curSizeBlock.data('num');
5533 } 5547 }
5534 } 5548 }
5535 5549
5536 - $curSizeBlock.addClass('chosed');  
5537 - return $curSizeBlock.data('num'); 5550 + //特殊处理: 老的选中尺码在新选中的颜色对应尺码中不存在,需要下述1,2,3
  5551 + // 1.重置尺码选择的标志变量.
  5552 + $curSizeBlock = null;
  5553 + hasChooseSize = false;
  5554 +
  5555 + // 2.当前颜色行隐藏
  5556 + $colorRowList.eq(curColorIndex).addClass('hide');
  5557 +
  5558 + // 3.目标颜色行第一行显示
  5559 + $colorRowList.eq(0).removeClass('hide');
  5560 + curColorIndex = 0;
  5561 +
  5562 + return -1;
5538 } 5563 }
5539 return 0; 5564 return 0;
5540 } 5565 }
@@ -5612,7 +5637,15 @@ $yohoPage.on('touchstart', '.color-list .block', function() { @@ -5612,7 +5637,15 @@ $yohoPage.on('touchstart', '.color-list .block', function() {
5612 5637
5613 // 颜色块切换勾选样式 5638 // 颜色块切换勾选样式
5614 $this.siblings('.chosed').removeClass('chosed'); 5639 $this.siblings('.chosed').removeClass('chosed');
5615 - $this.toggleClass('chosed'); 5640 +
  5641 + // 特殊处理
  5642 + if (-1 === curGoodNum) {
  5643 + $curColorBlock = $($colorRowList.eq(0).children().get(index));
  5644 + $curColorBlock.addClass('chosed');
  5645 + } else {
  5646 + $this.toggleClass('chosed');
  5647 + }
  5648 +
5616 $('#good-num').val(1); 5649 $('#good-num').val(1);
5617 5650
5618 // 设置按钮的样式和文字 5651 // 设置按钮的样式和文字
@@ -5645,7 +5678,7 @@ $yohoPage.on('touchstart', '.color-list .block', function() { @@ -5645,7 +5678,7 @@ $yohoPage.on('touchstart', '.color-list .block', function() {
5645 } else { 5678 } else {
5646 hasChooseSize = true; 5679 hasChooseSize = true;
5647 5680
5648 - index = $('#' + $this.data('name')).data('index') - 1; 5681 + index = $('#' + $this.data('id')).data('index') - 1;
5649 5682
5650 // 颜色当前行隐藏 5683 // 颜色当前行隐藏
5651 $colorRowList.eq(curColorIndex).addClass('hide'); 5684 $colorRowList.eq(curColorIndex).addClass('hide');
@@ -8815,7 +8848,7 @@ define("js/me/currency-new", ["jquery","hammer","lazyload"], function(require, e @@ -8815,7 +8848,7 @@ define("js/me/currency-new", ["jquery","hammer","lazyload"], function(require, e
8815 */ 8848 */
8816 8849
8817 function getGender() { 8850 function getGender() {
8818 - return window.cookie('_Channel'); 8851 + return window.cookie('_Channel') || 'boys';
8819 } 8852 }
8820 8853
8821 require("js/home/maybe-like")(getGender()); 8854 require("js/home/maybe-like")(getGender());
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
@@ -647,47 +647,58 @@ class CartModel @@ -647,47 +647,58 @@ class CartModel
647 if (isset($productData['goods_list'])) { 647 if (isset($productData['goods_list'])) {
648 $goodsList = $productData['goods_list']; 648 $goodsList = $productData['goods_list'];
649 649
  650 + $sizeName = '';
650 $colors = array(); 651 $colors = array();
  652 + $colorList = array();
651 $oneColor = array(); 653 $oneColor = array();
652 $sizes = array(); 654 $sizes = array();
653 $oneSize = array(); 655 $oneSize = array();
654 $sizeList = array(); 656 $sizeList = array();
  657 + $allSizeList = array(); // 所有尺码列表
655 $thumbImageList = array(); 658 $thumbImageList = array();
656 $colorNum = 0; 659 $colorNum = 0;
657 $totalStorageNum = 0; // 总库存数 660 $totalStorageNum = 0; // 总库存数
658 $colorStorageGroup = array(); // 颜色分组的库存总数集合, 多个之间用/分隔 661 $colorStorageGroup = array(); // 颜色分组的库存总数集合, 多个之间用/分隔
659 foreach ($goodsList as $val) { 662 foreach ($goodsList as $val) {
660 $colorNum = 0; 663 $colorNum = 0;
661 - $sizeStorageStr = '';  
662 -  
663 - // 尺码  
664 - foreach ($val['size_list'] as $one) {  
665 - $oneSize = array();  
666 - $oneSize['id'] = $one['size_id'];  
667 - $oneSize['skuId'] = $one['product_sku'];  
668 - $oneSize['goodsId'] = $val['goods_id'];  
669 - $oneSize['colorId'] = $val['color_id'];  
670 - $oneSize['name'] = $one['size_name'];  
671 - $oneSize['sizeNum'] = $one['storage_number'];  
672 -  
673 - $colorNum += $one['storage_number'];  
674 - $sizeStorageStr .= $one['storage_number'] . '/';  
675 -  
676 - $sizeList[$val['product_skc']][] = $oneSize; 664 + $sizeName = '';
  665 +
  666 + // 商品的尺码列表
  667 + $colorStorageGroup[ $val['product_skc'] ] = array();
  668 + if (isset($val['size_list'])) {
  669 + // 尺码
  670 + foreach ($val['size_list'] as $one) {
  671 + $sizeName = $one['size_name'];
  672 + $oneSize = array();
  673 +
  674 + $oneSize['id'] = $one['size_id'];
  675 + $oneSize['skuId'] = $one['product_sku'];
  676 + $oneSize['goodsId'] = $val['goods_id'];
  677 + $oneSize['colorId'] = $val['color_id'];
  678 + $oneSize['name'] = $sizeName;
  679 + $oneSize['sizeNum'] = $one['storage_number'];
  680 + $sizeList[$val['product_skc']][] = $oneSize;
  681 +
  682 + // 所有尺码列表,赋值用于前端展示默认尺码的时候 判断出没有库存则显示灰色
  683 + $allSizeList[$sizeName] = empty($allSizeList[$sizeName]['storage_number'])
  684 + ? array('storage' => $one['storage_number'], 'id' => $one['size_id'])
  685 + : $allSizeList[$sizeName];
  686 +
  687 + $colorNum += intval($one['storage_number']);
  688 +
  689 + $colorStorageGroup[$val['product_skc']][$one['size_name']] = $one['storage_number'];
  690 + }
677 691
678 - $colorStorageGroup[$val['product_skc']][$one['size_name']] = $one['storage_number']; 692 + // 颜色分组
  693 + $oneColor = array();
  694 + $oneColor['id'] = $val['color_id'];
  695 + $oneColor['skcId'] = $val['product_skc'];
  696 + $oneColor['name'] = $val['color_name'];
  697 + $oneColor['goodsName'] = $productData['product_name'];
  698 + $oneColor['colorNum'] = $colorNum;
  699 + $colorList[] = $oneColor;
679 } 700 }
680 701
681 - // 颜色  
682 - $oneColor = array();  
683 - $oneColor['id'] = $val['color_id'];  
684 - $oneColor['skcId'] = $val['product_skc'];  
685 - $oneColor['name'] = $val['color_name'];  
686 - $oneColor['goodsName'] = $productData['product_name'];  
687 - $oneColor['colorNum'] = $colorNum;  
688 - $oneColor['sizeNumStr'] = rtrim($sizeStorageStr, '/');  
689 - $colors[] = $oneColor;  
690 -  
691 // 缩略图 702 // 缩略图
692 foreach ($val['images_list'] as $image) { 703 foreach ($val['images_list'] as $image) {
693 $thumbImageList[] = array( 704 $thumbImageList[] = array(
@@ -699,25 +710,38 @@ class CartModel @@ -699,25 +710,38 @@ class CartModel
699 $totalStorageNum += $colorNum; 710 $totalStorageNum += $colorNum;
700 } 711 }
701 712
702 - // 遍历所有尺码,统计出该尺码的每个颜色的库存量,没有时添0,不能空着,因为JS中需要判断  
703 - foreach ($sizeList as $skc => $sizeArr) {  
704 - foreach ($sizeArr as $key => $value) {  
705 - $sizeStorageStr = '';  
706 - foreach ($colorStorageGroup as $colorArr) {  
707 - if (isset($colorArr[$value['name']])) {  
708 - $sizeStorageStr .= $colorArr[$value['name']] . '/';  
709 - } else {  
710 - $sizeStorageStr .= '0/';  
711 - }  
712 - }  
713 - $sizeList[$skc][$key]['colorNumStr'] = rtrim($sizeStorageStr, '/'); 713 + // 遍历所有尺码,构建颜色显示数据
  714 + $i = 1;
  715 + foreach ($allSizeList as $sizeName => $value) {
  716 + // 默认尺码
  717 + $sizes[0]['size'][] = array(
  718 + 'name' => $sizeName, // 尺码名称
  719 + 'sizeNum' => empty($value['storage']) ? false : true, // 是否有库存 (false:表示没有库存,true:表示有库存)
  720 + 'id' => $value['id'],
  721 + );
  722 +
  723 + // 各个颜色的尺码, 每行显示一个尺码对应的颜色
  724 + foreach ($colorList as $colorArr) {
  725 + $colorArr['colorNum'] = isset($colorStorageGroup[ $colorArr['skcId'] ][$sizeName]) ? $colorStorageGroup[ $colorArr['skcId'] ][$sizeName] : 0;
  726 + $colors[$i]['color'][] = $colorArr;
714 } 727 }
  728 + $colors[$i]['id'] = $value['id'];
  729 +
  730 + ++ $i;
715 } 731 }
716 732
717 - // 格式化尺码对应的各个颜色分组  
718 - foreach ($colors as $color) {  
719 - $sizes[]['size'] = $sizeList[$color['skcId']]; 733 + // 遍历所有颜色, 构建尺码显示数据
  734 + $i = 1;
  735 + foreach ($colorList as $value) {
  736 + // 各个尺码的颜色,每行显示一个颜色的对应尺码
  737 + $sizes[$i]['size'] = $sizeList[ $value['skcId'] ];
  738 + $sizes[$i]['colorId'] = $value['skcId'];
  739 + // 默认颜色
  740 + $colors[0]['color'][] = $value;
  741 +
  742 + ++ $i;
720 } 743 }
  744 + ksort($colors, SORT_NUMERIC);
721 745
722 $data['thumbs'] = $thumbImageList; 746 $data['thumbs'] = $thumbImageList;
723 $data['colors'] = $colors; 747 $data['colors'] = $colors;