Authored by 沈志敏

fix bug

1 <div class="feature-page yoho-page"> 1 <div class="feature-page yoho-page">
2 - {{#content.webShare}}  
3 - <input id="shareLink" type="hidden" value="{{url}}">  
4 - <input id="shareDesc" type="hidden" value="{{content}}">  
5 - <input id="shareImg" type="hidden" value="{{pic}}">  
6 - <input id="shareTitle" type="hidden" value="{{title}}">  
7 - {{/content.webShare}}  
8 - {{#content.floors}}  
9 - {{#isEqualOr type 'sidebar'}}  
10 - {{! 侧悬浮}}  
11 - <div id="sidebar" pageid="{{param.sidebarPageId}}"></div>  
12 - {{/isEqualOr}}  
13 - {{#isEqualOr type '' 'common_floor' 'fix'}}  
14 - {{! 普通楼层 顶悬浮}}  
15 - <div {{#if param.anchorname}}id="{{param.anchorname}}"{{/if}} {{#if param.tabname}}tabname="{{param.tabname}}"{{/if}} {{#if id}}data-id="{{id}}"{{/if}} class="floor {{type}}"  
16 - style="{{#if param.bgcolor}}background-color:{{param.bgcolor}}{{/if}}">  
17 - {{#if param.bgimg}}  
18 - {{#isLazyLoad type @index}}  
19 - <img class="lazy" data-original="{{image2 param.bgimg q=60}}">  
20 - {{else}}  
21 - <img src="{{image2 param.bgimg q=60}}">  
22 - {{/isLazyLoad}}  
23 - {{/if}}  
24 - {{#component}}  
25 - {{#isEqualOr type 'link'}}  
26 - {{! 普通组件}}  
27 - <a class="anchor {{#if modalImg}}modalimg{{/if}}" style="{{styleFormat this percent=1}}" href="{{#if url}}{{url}}{{else}}javascript:void(0);{{/if}}" fp="{{getAnalysis ../this @index}}"></a>  
28 - {{#if modalImg}}  
29 - <div class="modal">  
30 - <span class="modal-close"></span>  
31 - <img class="modal-img lazy" data-original="{{image2 modalImg q=60}}">  
32 - </div>  
33 - {{/if}}  
34 - {{/isEqualOr}} 2 + {{#unless content.visiable}}
  3 + <div class="over">
  4 + <p>此活动已结束</p>
  5 + <p>稍后自动跳转更多其他精彩活动...</p>
  6 + </div>
  7 + {{else}}
  8 + {{#content.webShare}}
  9 + <input id="shareLink" type="hidden" value="{{url}}">
  10 + <input id="shareDesc" type="hidden" value="{{content}}">
  11 + <input id="shareImg" type="hidden" value="{{pic}}">
  12 + <input id="shareTitle" type="hidden" value="{{title}}">
  13 + {{/content.webShare}}
  14 + {{#content.floors}}
  15 + {{#isEqualOr type 'sidebar'}}
  16 + {{! 侧悬浮}}
  17 + <div id="sidebar" pageid="{{param.sidebarPageId}}"></div>
  18 + {{/isEqualOr}}
  19 + {{#isEqualOr type '' 'common_floor' 'fix'}}
  20 + {{! 普通楼层 顶悬浮}}
  21 + <div {{#if param.anchorname}}id="{{param.anchorname}}"{{/if}} {{#if param.tabname}}tabname="{{param.tabname}}"{{/if}} {{#if id}}data-id="{{id}}"{{/if}} class="floor {{type}}"
  22 + style="{{#if param.bgcolor}}background-color:{{param.bgcolor}}{{/if}}">
  23 + {{#if param.bgimg}}
  24 + {{#isLazyLoad type @index}}
  25 + <img class="lazy" data-original="{{image2 param.bgimg q=60}}">
  26 + {{else}}
  27 + <img src="{{image2 param.bgimg q=60}}">
  28 + {{/isLazyLoad}}
  29 + {{/if}}
  30 + {{#component}}
  31 + {{#isEqualOr type 'link'}}
  32 + {{! 普通组件}}
  33 + <a class="anchor {{#if modalImg}}modalimg{{/if}}" style="{{styleFormat this percent=1}}" href="{{#if url}}{{url}}{{else}}javascript:void(0);{{/if}}" fp="{{getAnalysis ../this @index}}"></a>
  34 + {{#if modalImg}}
  35 + <div class="modal">
  36 + <span class="modal-close"></span>
  37 + <img class="modal-img lazy" data-original="{{image2 modalImg q=60}}">
  38 + </div>
  39 + {{/if}}
  40 + {{/isEqualOr}}
35 41
36 - {{#isEqualOr type 'coupon'}}  
37 - {{! 优惠券}}  
38 - <a class="anchor yoho-conpon" style="{{styleFormat this percent=1}}" data-token="{{token}}" href="{{#if url}}{{url}}{{else}}javascript:void(0);{{/if}}" fp="{{getAnalysis ../this @index}}"></a>  
39 - {{/isEqualOr}} 42 + {{#isEqualOr type 'coupon'}}
  43 + {{! 优惠券}}
  44 + <a class="anchor yoho-conpon" style="{{styleFormat this percent=1}}" data-token="{{token}}" href="{{#if url}}{{url}}{{else}}javascript:void(0);{{/if}}" fp="{{getAnalysis ../this @index}}"></a>
  45 + {{/isEqualOr}}
40 46
41 - {{#isEqualOr type 'yohoCoin'}}  
42 - {{! 有货币}}  
43 - <a class="anchor yoho-coin" style="{{styleFormat this percent=1}}" data-token="{{token}}" href="{{#if url}}{{url}}{{else}}javascript:void(0);{{/if}}" fp="{{getAnalysis ../this @index}}"></a>  
44 - {{/isEqualOr}} 47 + {{#isEqualOr type 'yohoCoin'}}
  48 + {{! 有货币}}
  49 + <a class="anchor yoho-coin" style="{{styleFormat this percent=1}}" data-token="{{token}}" href="{{#if url}}{{url}}{{else}}javascript:void(0);{{/if}}" fp="{{getAnalysis ../this @index}}"></a>
  50 + {{/isEqualOr}}
45 51
46 - {{#isEqualOr type 'video'}}  
47 - {{! 视频}}  
48 - <a class="anchor video-bg" style="{{styleFormat this percent=1}}" href="{{#if url}}{{url}}{{else}}javascript:void(0);{{/if}}" fp="{{getAnalysis ../this @index}}"></a>  
49 - <div class="video-android-close hide"></div>  
50 - <div class="video-android-bg hide"></div>  
51 - <video class="video" controls loop preload="meta" name="media">  
52 - <source src="{{videoSrc}}">  
53 - </video>  
54 - {{/isEqualOr}} 52 + {{#isEqualOr type 'video'}}
  53 + {{! 视频}}
  54 + <a class="anchor video-bg" style="{{styleFormat this percent=1}}" href="{{#if url}}{{url}}{{else}}javascript:void(0);{{/if}}" fp="{{getAnalysis ../this @index}}"></a>
  55 + <div class="video-android-close hide"></div>
  56 + <div class="video-android-bg hide"></div>
  57 + <video class="video" controls loop preload="meta" name="media">
  58 + <source src="{{videoSrc}}">
  59 + </video>
  60 + {{/isEqualOr}}
55 61
56 - {{#isEqualOr type 'marquee' 'swiper'}}  
57 - {{! 轮播/滑动}}  
58 - <div class="swiper-container {{type}}" data-loop="{{loop}}" {{#if spaceBetween}}data-spacebetween="{{spaceBetween}}"{{/if}} {{#if autoplay}}data-autoplay="{{autoplay}}"{{/if}}>  
59 - <div class="swiper-wrapper">  
60 - {{#list}}  
61 - <div class="swiper-slide" style="{{styleFormat this percent=1}}">  
62 - <img src="{{image2 src q=60}}">  
63 - <a class="anchor" href="{{#if link}}{{link}}{{else}}javascript:void(0);{{/if}}" fp="{{getAnalysis ../../this @index}}"></a>  
64 - </div>  
65 - {{/list}}  
66 - </div>  
67 - {{#isEqualOr type 'marquee'}}  
68 - <div class="swiper-pagination"></div>  
69 - {{/isEqualOr}}  
70 - </div>  
71 - {{/isEqualOr}} 62 + {{#isEqualOr type 'marquee' 'swiper'}}
  63 + {{! 轮播/滑动}}
  64 + <div class="swiper-container {{type}}" data-loop="{{loop}}" {{#if spaceBetween}}data-spacebetween="{{spaceBetween}}"{{/if}} {{#if autoplay}}data-autoplay="{{autoplay}}"{{/if}}>
  65 + <div class="swiper-wrapper">
  66 + {{#list}}
  67 + <div class="swiper-slide" style="{{styleFormat this percent=1}}">
  68 + <img src="{{image2 src q=60}}">
  69 + <a class="anchor" href="{{#if link}}{{link}}{{else}}javascript:void(0);{{/if}}" fp="{{getAnalysis ../../this @index}}"></a>
  70 + </div>
  71 + {{/list}}
  72 + </div>
  73 + {{#isEqualOr type 'marquee'}}
  74 + <div class="swiper-pagination"></div>
  75 + {{/isEqualOr}}
  76 + </div>
  77 + {{/isEqualOr}}
72 78
73 - {{#isEqualOr type 'tab'}}  
74 - {{! tab}}  
75 - <div class="tab-container">  
76 - {{#repeat count}}  
77 - <a class="anchor {{#if @first}}active{{/if}}" tab={{tabName @index ../tabnames}} style="{{tabStyle @index ../count}}"></a>  
78 - {{/repeat}}  
79 - </div>  
80 - {{/isEqualOr}}  
81 -  
82 - {{#isEqualOr type 'productGroup'}}  
83 - {{! 商品池}}  
84 - <div class="product-container item{{numOfOneRow}}" {{#if proBgImg}}style="background:url({{image2 proBgImg q=60}})repeat;"{{/if}}>  
85 - <div class="product-source" condition='{{stringify searchCondition}}' fp="{{getAnalysis ../this @index}}"  
86 - {{#unless defaultPros.length}}  
87 - {{#if searchCondition.item}}  
88 - cloneitem="{{searchCondition.item}}"  
89 - {{else}}  
90 - cloneitem="{{searchCondition.limit}}"  
91 - {{/if}}  
92 - {{/unless}}>  
93 - <input class="imgwh" type="hidden" value="193x257">  
94 - {{#if defaultPros.length}}  
95 - {{#defaultPros}}  
96 - <div class="feature-product-info {{#if ../searchCondition}}novisible{{/if}}">  
97 - <a class="first-part product-detail" href='{{producturl}}'>  
98 - <div class="product-detail-imgbox">  
99 - {{#if ../lefTopImg}}<img class="leftopimg lazy" data-original="{{image2 ../lefTopImg q=60}}">{{/if}}  
100 - {{#if ../rigTopImg}}<img class="rigtopimg lazy" data-original="{{image2 ../rigTopImg q=60}}">{{/if}}  
101 - <img class="product-detail-img lazy" data-original="{{image2 productimg q=60}}">  
102 - </div>  
103 - {{#isEqualOr ../showPrdName '1'}}<p class="product-name">{{productname}}</p>{{/isEqualOr}}  
104 - <div class="product-detail-text">  
105 - {{#isEqualOr ../showSalePrice '1'}}  
106 - <div class="price" style="{{#if ../salePriceBgColor}}background:{{../salePriceBgColor}};{{/if}}">  
107 - <span class="sale-price"{{#if ../fontColor}}style="color:{{../fontColor}};"{{/if}}>¥{{saleprice}}</span>  
108 - {{#if marketprice}}<span class="market-price">¥{{marketprice}}</span>{{/if}}  
109 - </div>  
110 - {{/isEqualOr}}  
111 - {{#isEqualOr ../showVipPrice '1'}}  
112 - <div class="vipprice"style="{{#if ../vipFontColor}}color:{{../vipFontColor}};{{/if}}{{#if ../vipBgColor}}background:{{../vipBgColor}};{{/if}}">  
113 - <span class="vip-price-text">VIP价</span>  
114 - <span class="vip-price-val">¥{{vipprice}}</span>  
115 - </div>  
116 - {{/isEqualOr}}  
117 - </div>  
118 - </a>  
119 - {{#if ../brandImg}}  
120 - <a class="second-part {{#isEqualOr ../showBrandUrl '1'}}product-brand{{else}}product-detail{{/isEqualOr}}" href='{{brandurl}}'>  
121 - <div class="brand-div">  
122 - <span class="brand-name"{{#if ../fontColor}}style="color:{{../fontColor}};"{{/if}}>{{brandname}}</span>  
123 - </div>  
124 - <img class="brand-img lazy" data-original="{{image2 ../brandImg q=60}}">  
125 - </a>  
126 - {{/if}}  
127 - </div>  
128 - {{/defaultPros}}  
129 - {{else}}  
130 - <div class="feature-product-info novisible">  
131 - <a class="first-part product-detail" href=''>  
132 - <div class="product-detail-imgbox">  
133 - {{#if lefTopImg}}<img class="leftopimg" src="{{image2 lefTopImg q=60}}">{{/if}}  
134 - {{#if rigTopImg}}<img class="rigtopimg" src="{{image2 rigTopImg q=60}}">{{/if}}  
135 - <img class="product-detail-img" src="">  
136 - </div>  
137 - {{#isEqualOr showPrdName '1'}}<p class="product-name"></p>{{/isEqualOr}}  
138 - <div class="product-detail-text">  
139 - {{#isEqualOr showSalePrice '1'}}  
140 - <div class="price" style="{{#if salePriceBgColor}}background:{{salePriceBgColor}};{{/if}}">  
141 - <span class="sale-price"{{#if fontColor}}style="color:{{fontColor}};"{{/if}}></span>  
142 - <span class="market-price"></span>  
143 - </div>  
144 - {{/isEqualOr}}  
145 - {{#isEqualOr showVipPrice '1'}}  
146 - <div class="vipprice" style="{{#if vipFontColor}}color:{{vipFontColor}};{{/if}}{{#if vipBgColor}}background:{{vipBgColor}};{{/if}}">  
147 - <span class="vip-price-text">VIP价</span><span class="vip-price-val"></span>  
148 - </div>  
149 - {{/isEqualOr}}  
150 - </div>  
151 - </a>  
152 - {{#if brandImg}}  
153 - <a class="second-part {{#isEqualOr showBrandUrl '1'}}product-brand{{else}}product-detail{{/isEqualOr}}" href=''>  
154 - <div class="brand-div">  
155 - <span class="brand-name" {{#if fontColor}}style="color:{{fontColor}};"{{/if}}></span>  
156 - </div>  
157 - <img class="brand-img" src="{{image2 brandImg q=60}}">  
158 - </a>  
159 - {{/if}}  
160 - </div>  
161 - {{/if}}  
162 - </div>  
163 - </div>  
164 - {{/isEqualOr}}  
165 - {{/component}}  
166 - </div>  
167 - {{/isEqualOr}}  
168 - {{/content.floors}} 79 + {{#isEqualOr type 'tab'}}
  80 + {{! tab}}
  81 + <div class="tab-container">
  82 + {{#repeat count}}
  83 + <a class="anchor {{#if @first}}active{{/if}}" tab={{tabName @index ../tabnames}} style="{{tabStyle @index ../count}}"></a>
  84 + {{/repeat}}
  85 + </div>
  86 + {{/isEqualOr}}
  87 +
  88 + {{#isEqualOr type 'productGroup'}}
  89 + {{! 商品池}}
  90 + <div class="product-container item{{numOfOneRow}}" {{#if proBgImg}}style="background:url({{image2 proBgImg q=60}})repeat;"{{/if}}>
  91 + <div class="product-source" condition='{{stringify searchCondition}}' fp="{{getAnalysis ../this @index}}"
  92 + {{#unless defaultPros.length}}
  93 + {{#if searchCondition.item}}
  94 + cloneitem="{{searchCondition.item}}"
  95 + {{else}}
  96 + cloneitem="{{searchCondition.limit}}"
  97 + {{/if}}
  98 + {{/unless}}>
  99 + <input class="imgwh" type="hidden" value="193x257">
  100 + {{#if defaultPros.length}}
  101 + {{#defaultPros}}
  102 + <div class="feature-product-info {{#if ../searchCondition}}novisible{{/if}}">
  103 + <a class="first-part product-detail" href='{{producturl}}'>
  104 + <div class="product-detail-imgbox">
  105 + {{#if ../lefTopImg}}<img class="leftopimg lazy" data-original="{{image2 ../lefTopImg q=60}}">{{/if}}
  106 + {{#if ../rigTopImg}}<img class="rigtopimg lazy" data-original="{{image2 ../rigTopImg q=60}}">{{/if}}
  107 + <img class="product-detail-img lazy" data-original="{{image2 productimg q=60}}">
  108 + </div>
  109 + {{#isEqualOr ../showPrdName '1'}}<p class="product-name">{{productname}}</p>{{/isEqualOr}}
  110 + <div class="product-detail-text">
  111 + {{#isEqualOr ../showSalePrice '1'}}
  112 + <div class="price" style="{{#if ../salePriceBgColor}}background:{{../salePriceBgColor}};{{/if}}">
  113 + <span class="sale-price"{{#if ../fontColor}}style="color:{{../fontColor}};"{{/if}}>¥{{saleprice}}</span>
  114 + {{#if marketprice}}<span class="market-price">¥{{marketprice}}</span>{{/if}}
  115 + </div>
  116 + {{/isEqualOr}}
  117 + {{#isEqualOr ../showVipPrice '1'}}
  118 + <div class="vipprice"style="{{#if ../vipFontColor}}color:{{../vipFontColor}};{{/if}}{{#if ../vipBgColor}}background:{{../vipBgColor}};{{/if}}">
  119 + <span class="vip-price-text">VIP价</span>
  120 + <span class="vip-price-val">¥{{vipprice}}</span>
  121 + </div>
  122 + {{/isEqualOr}}
  123 + </div>
  124 + </a>
  125 + {{#if ../brandImg}}
  126 + <a class="second-part {{#isEqualOr ../showBrandUrl '1'}}product-brand{{else}}product-detail{{/isEqualOr}}" href='{{brandurl}}'>
  127 + <div class="brand-div">
  128 + <span class="brand-name"{{#if ../fontColor}}style="color:{{../fontColor}};"{{/if}}>{{brandname}}</span>
  129 + </div>
  130 + <img class="brand-img lazy" data-original="{{image2 ../brandImg q=60}}">
  131 + </a>
  132 + {{/if}}
  133 + </div>
  134 + {{/defaultPros}}
  135 + {{else}}
  136 + <div class="feature-product-info novisible">
  137 + <a class="first-part product-detail" href=''>
  138 + <div class="product-detail-imgbox">
  139 + {{#if lefTopImg}}<img class="leftopimg" src="{{image2 lefTopImg q=60}}">{{/if}}
  140 + {{#if rigTopImg}}<img class="rigtopimg" src="{{image2 rigTopImg q=60}}">{{/if}}
  141 + <img class="product-detail-img" src="">
  142 + </div>
  143 + {{#isEqualOr showPrdName '1'}}<p class="product-name"></p>{{/isEqualOr}}
  144 + <div class="product-detail-text">
  145 + {{#isEqualOr showSalePrice '1'}}
  146 + <div class="price" style="{{#if salePriceBgColor}}background:{{salePriceBgColor}};{{/if}}">
  147 + <span class="sale-price"{{#if fontColor}}style="color:{{fontColor}};"{{/if}}></span>
  148 + <span class="market-price"></span>
  149 + </div>
  150 + {{/isEqualOr}}
  151 + {{#isEqualOr showVipPrice '1'}}
  152 + <div class="vipprice" style="{{#if vipFontColor}}color:{{vipFontColor}};{{/if}}{{#if vipBgColor}}background:{{vipBgColor}};{{/if}}">
  153 + <span class="vip-price-text">VIP价</span><span class="vip-price-val"></span>
  154 + </div>
  155 + {{/isEqualOr}}
  156 + </div>
  157 + </a>
  158 + {{#if brandImg}}
  159 + <a class="second-part {{#isEqualOr showBrandUrl '1'}}product-brand{{else}}product-detail{{/isEqualOr}}" href=''>
  160 + <div class="brand-div">
  161 + <span class="brand-name" {{#if fontColor}}style="color:{{fontColor}};"{{/if}}></span>
  162 + </div>
  163 + <img class="brand-img" src="{{image2 brandImg q=60}}">
  164 + </a>
  165 + {{/if}}
  166 + </div>
  167 + {{/if}}
  168 + </div>
  169 + </div>
  170 + {{/isEqualOr}}
  171 + {{/component}}
  172 + </div>
  173 + {{/isEqualOr}}
  174 + {{/content.floors}}
  175 + {{/unless}}
169 </div> 176 </div>
1 var $ = require('yoho-jquery'); 1 var $ = require('yoho-jquery');
2 var lazyLoad = require('yoho-jquery-lazyload'); 2 var lazyLoad = require('yoho-jquery-lazyload');
3 var Swiper = require('yoho-swiper'); 3 var Swiper = require('yoho-swiper');
  4 +var yoho = require('../yoho-app');
4 5
5 global.jQuery = $; 6 global.jQuery = $;
6 7
@@ -152,7 +153,17 @@ function modalInit() { @@ -152,7 +153,17 @@ function modalInit() {
152 }); 153 });
153 } 154 }
154 155
  156 +
  157 +
155 $(function() { 158 $(function() {
  159 + if ($('.over').length) {
  160 + // 过期/删除 状态的 活动
  161 + setTimeout(function(){
  162 + yoho.goHome('//m.yohobuy.com/');
  163 + }, 3000);
  164 + return false;
  165 + }
  166 +
156 // tab 167 // tab
157 tabInit(); 168 tabInit();
158 169
@@ -102,12 +102,11 @@ yoho = { @@ -102,12 +102,11 @@ yoho = {
102 i; 102 i;
103 103
104 url = (url || '').split('?'); 104 url = (url || '').split('?');
105 - hashs = url[1].split('&'); 105 + hashs = (url[1] || '').split('&');
106 106
107 if (hashs && hashs.length) { 107 if (hashs && hashs.length) {
108 for (i = 0; i < hashs.length; i++) { 108 for (i = 0; i < hashs.length; i++) {
109 hash = hashs[i].split('='); 109 hash = hashs[i].split('=');
110 - console.log(hashs[i]);  
111 query[hash[0]] = hash[1]; 110 query[hash[0]] = hash[1];
112 } 111 }
113 } 112 }
@@ -174,6 +173,24 @@ yoho = { @@ -174,6 +173,24 @@ yoho = {
174 $appLink.attr('href', url); 173 $appLink.attr('href', url);
175 $appLink[0].click(); 174 $appLink[0].click();
176 return false; 175 return false;
  176 + },
  177 +
  178 + goHome: function(link, data) {
  179 + var url = link;
  180 +
  181 + if (!link) {
  182 + return;
  183 + }
  184 + link = yoho.parseUrl(link || location.href);
  185 +
  186 + if (yoho.isApp) {
  187 + url = url + '?openby:yohobuy=' + (data || JSON.stringify({
  188 + action: 'go.home'
  189 + }));
  190 + }
  191 + $appLink.attr('href', url);
  192 + $appLink[0].click();
  193 + return false;
177 } 194 }
178 }; 195 };
179 196
@@ -289,4 +289,19 @@ body { @@ -289,4 +289,19 @@ body {
289 height: 150px; 289 height: 150px;
290 margin-top: -75px; 290 margin-top: -75px;
291 z-index: 999; 291 z-index: 999;
  292 +}
  293 +
  294 +.feature-page .over {
  295 + position: fixed;
  296 + top: 50%;
  297 + left: 50%;
  298 + width: 100%;
  299 + transform: translate(-50%, -50%);
  300 + text-align: center;
  301 + font-size: 28px;
  302 + color: #000;
  303 +
  304 + p {
  305 + margin-bottom: 20px;
  306 + }
292 } 307 }