Authored by htoooth

add fake data

@@ -20,7 +20,7 @@ const detailHelper = require('../models/detail-helper'); @@ -20,7 +20,7 @@ const detailHelper = require('../models/detail-helper');
20 module.exports.showMain = (req, res, next) => { 20 module.exports.showMain = (req, res, next) => {
21 // TODO: vipLevel = 0; // 用户等级 21 // TODO: vipLevel = 0; // 用户等级
22 22
23 - let pid = 217011; 23 + let pid = 204503;
24 24
25 let uid = req.user.uid || ''; 25 let uid = req.user.uid || '';
26 26
@@ -6,18 +6,24 @@ const sign = require(`${library}/sign`); @@ -6,18 +6,24 @@ const sign = require(`${library}/sign`);
6 6
7 const api = new API(); 7 const api = new API();
8 8
  9 +const fake = require('./fake');
  10 +
9 module.exports.getBannerInfoAsync = (bid) => { 11 module.exports.getBannerInfoAsync = (bid) => {
10 - return api.get('', sign.apiSign({  
11 - method: 'web.brand.banner',  
12 - brand_id: bid  
13 - })); 12 + //return api.get('', sign.apiSign({
  13 + // method: 'web.brand.banner',
  14 + // brand_id: bid
  15 + //}));
  16 +
  17 + return Promise.resolve(fake.fakeBrandBanner);
14 }; 18 };
15 19
16 module.exports.getBrandLogoByDomainAsync = (domain) => { 20 module.exports.getBrandLogoByDomainAsync = (domain) => {
17 - return api.get('', sign.apiSign({  
18 - domain: domain,  
19 - method: 'web.brand.byDomain'  
20 - })); 21 + //return api.get('', sign.apiSign({
  22 + // domain: domain,
  23 + // method: 'web.brand.byDomain'
  24 + //}));
  25 +
  26 + return Promise.resolve(fake.fakeBrandDomain);
21 }; 27 };
22 28
23 29
@@ -12,21 +12,23 @@ module.exports.getBrandByDomainAsync = (domain) => { @@ -12,21 +12,23 @@ module.exports.getBrandByDomainAsync = (domain) => {
12 return co(function*() { 12 return co(function*() {
13 let brandInfo = yield api.getBrandLogoByDomainAsync(domain); 13 let brandInfo = yield api.getBrandLogoByDomainAsync(domain);
14 14
  15 + if (!brandInfo.data || brandInfo.code !== 200) {
  16 + return {};
  17 + }
  18 +
15 let result = {}; 19 let result = {};
16 20
17 - if (brandInfo.data && brandInfo.code === 200) {  
18 - result.brandId = brandInfo.data.id || '';  
19 - result.node = brandInfo.data.static_content_code || false;  
20 - result.brandBanner = brandInfo.data.brand_banner || '';  
21 - result.brandNameEn = brandInfo.data.brand_name_en || '';  
22 - result.brandNameCn = brandInfo.data.brand_name_cn || '';  
23 - result.brandAbout = brandInfo.data.brand_intro || '';  
24 - result.shopTemplateType = brandInfo.data.shop_template_type ?  
25 - parseInt(brandInfo.data.shop_template_type) : '';  
26 - result.type = brandInfo.data.type ? +brandInfo.data.type : 0;  
27 - result.shopId = brandInfo.data.shop_id || ''; 21 + result.brandId = brandInfo.data.id || '';
  22 + result.node = brandInfo.data.static_content_code || false;
  23 + result.brandBanner = brandInfo.data.brand_banner || '';
  24 + result.brandNameEn = brandInfo.data.brand_name_en || '';
  25 + result.brandNameCn = brandInfo.data.brand_name_cn || '';
  26 + result.brandAbout = brandInfo.data.brand_intro || '';
  27 + result.shopTemplateType = brandInfo.data.shop_template_type ?
  28 + parseInt(brandInfo.data.shop_template_type) : '';
  29 + result.type = brandInfo.data.type ? +brandInfo.data.type : 0;
  30 + result.shopId = brandInfo.data.shop_id || '';
28 31
29 - }  
30 return result; 32 return result;
31 })(); 33 })();
32 }; 34 };
@@ -11,6 +11,7 @@ const log = require(`${library}/logger`); @@ -11,6 +11,7 @@ const log = require(`${library}/logger`);
11 11
12 const api = new API(); 12 const api = new API();
13 13
  14 +
14 /** 15 /**
15 * 获取评论 16 * 获取评论
16 */ 17 */
@@ -15,33 +15,38 @@ const api = require('./detail-comment-api'); @@ -15,33 +15,38 @@ const api = require('./detail-comment-api');
15 15
16 const detailHelper = require('./detail-helper'); 16 const detailHelper = require('./detail-helper');
17 17
  18 +const fake = require('./fake');
  19 +
18 module.exports.indexAsync = (pid, page, size) => { 20 module.exports.indexAsync = (pid, page, size) => {
19 return co(function *() { 21 return co(function *() {
20 - let commentList = yield api.indexAsync(pid, page, size);  
21 -  
22 - if (commentList.code && commentList.code === 200) {  
23 - return commentList.data.map(value => {  
24 - let item = {};  
25 -  
26 - let avatar = detailHelper.DEFAULT_AVATAR_ICO;  
27 -  
28 - if (value.head_ico) {  
29 - avatar = `${detailHelper.IMAGE_SERVICE_URL}${_.last(value.head_ico.split('headimg'))}`;  
30 - avatar = helpers.image(avatar, 30, 30);  
31 - }  
32 -  
33 - item.avatar = avatar;  
34 - item.userName = value.nickname;  
35 - item.color = value.color_name;  
36 - item.size = value.size_name;  
37 - item.comment = value.content || '';  
38 - item.date = value.create_time;  
39 - item.total = value.total;  
40 -  
41 - return item;  
42 - });  
43 - } 22 + return fake.fakeComments;
  23 + //let commentList = yield api.indexAsync(pid, page, size);
  24 + //
  25 + //if (!commentList.code || !commentList.code !== 200) {
  26 + // return [];
  27 + //}
  28 +
  29 +
  30 + //return commentList.data.map(value => {
  31 + // let item = {};
  32 + //
  33 + // let avatar = detailHelper.DEFAULT_AVATAR_ICO;
  34 + //
  35 + // if (value.head_ico) {
  36 + // avatar = `${detailHelper.IMAGE_SERVICE_URL}${_.last(value.head_ico.split('headimg'))}`;
  37 + // avatar = helpers.image(avatar, 30, 30);
  38 + // }
  39 + //
  40 + // item.avatar = avatar;
  41 + // item.userName = value.nickname;
  42 + // item.color = value.color_name;
  43 + // item.size = value.size_name;
  44 + // item.comment = value.content || '';
  45 + // item.date = value.create_time;
  46 + // item.total = value.total;
  47 + //
  48 + // return item;
  49 + //});
44 50
45 - return [];  
46 })(); 51 })();
47 }; 52 };
@@ -15,7 +15,7 @@ const api = new API(); @@ -15,7 +15,7 @@ const api = new API();
15 /** 15 /**
16 * 咨询内容列表 16 * 咨询内容列表
17 */ 17 */
18 -module.exports.indexAsync = function(uid, pid, page, size) { 18 +module.exports.indexAsync = function (uid, pid, page, size) {
19 let param = {}; 19 let param = {};
20 20
21 param.method = 'app.consult.li'; 21 param.method = 'app.consult.li';
@@ -34,7 +34,7 @@ module.exports.indexAsync = function(uid, pid, page, size) { @@ -34,7 +34,7 @@ module.exports.indexAsync = function(uid, pid, page, size) {
34 /** 34 /**
35 * 添加咨询操作 35 * 添加咨询操作
36 */ 36 */
37 -module.exports.createAsync = function(uid, pid, content) { 37 +module.exports.createAsync = function (uid, pid, content) {
38 return api.post('', sign.apiSign({ 38 return api.post('', sign.apiSign({
39 method: 'h5.consult.add', 39 method: 'h5.consult.add',
40 product_id: pid, 40 product_id: pid,
@@ -10,28 +10,34 @@ const co = Promise.coroutine; @@ -10,28 +10,34 @@ const co = Promise.coroutine;
10 const api = require('./detail-consult-api'); 10 const api = require('./detail-consult-api');
11 const detailHelper = require('./detail-helper'); 11 const detailHelper = require('./detail-helper');
12 12
  13 +const fake = require('./fake');
  14 +
13 module.exports.indexAsync = (uid, pid, page, size) => { 15 module.exports.indexAsync = (uid, pid, page, size) => {
14 return co(function *() { 16 return co(function *() {
15 - let consultList = yield api.indexAsync(uid, pid, page, size);  
16 -  
17 - if (consultList.code && consultList.code === 200) {  
18 - return consultList.data.list.map(value => {  
19 - return {  
20 - avatar: detailHelper.DEFAULT_AVATAR_ICO,  
21 - question: value.ask,  
22 - date: value.ask_time,  
23 - answer: value.answer,  
24 - id: value.id,  
25 - isLike: value.is_like === 'Y',  
26 - like: parseInt(value.like, 10),  
27 - isUseful: value.is_useful === 'Y',  
28 - useful: parseInt(value.useful, 10),  
29 - total: value.total  
30 - };  
31 - });  
32 - }  
33 -  
34 - return []; 17 + return fake.fakeConsule;
  18 +
  19 +
  20 + //let consultList = yield api.indexAsync(uid, pid, page, size);
  21 + //
  22 + //if (!consultList.code || consultList.code !== 200) {
  23 + // return [];
  24 + //}
  25 + //
  26 + //return consultList.data.list.map(value => {
  27 + // return {
  28 + // avatar: detailHelper.DEFAULT_AVATAR_ICO,
  29 + // question: value.ask,
  30 + // date: value.ask_time,
  31 + // answer: value.answer,
  32 + // id: value.id,
  33 + // isLike: value.is_like === 'Y',
  34 + // like: parseInt(value.like, 10),
  35 + // isUseful: value.is_useful === 'Y',
  36 + // useful: parseInt(value.useful, 10),
  37 + // total: value.total
  38 + // };
  39 + //});
  40 +
35 })(); 41 })();
36 }; 42 };
37 43
@@ -9,12 +9,15 @@ const log = require(`${library}/logger`); @@ -9,12 +9,15 @@ const log = require(`${library}/logger`);
9 9
10 const api = new API(); 10 const api = new API();
11 11
  12 +const fake = require('./fake');
12 /** 13 /**
13 * 获取商品的热区 14 * 获取商品的热区
14 */ 15 */
15 module.exports.indexAsync = (pid) => { 16 module.exports.indexAsync = (pid) => {
16 - return api.get('', sign.apiSign({  
17 - method: 'web.productCollocation.list',  
18 - product_id: pid  
19 - })).catch(log.error); 17 + //return api.get('', sign.apiSign({
  18 + // method: 'web.productCollocation.list',
  19 + // product_id: pid
  20 + //})).catch(log.error);
  21 +
  22 + return Promise.resolve(fake.fakeProductCollent);
20 }; 23 };
@@ -20,21 +20,21 @@ module.exports.indexAsync = (pid) => { @@ -20,21 +20,21 @@ module.exports.indexAsync = (pid) => {
20 return co(function *() { 20 return co(function *() {
21 let data = yield api.indexAsync(pid); 21 let data = yield api.indexAsync(pid);
22 22
23 - if (!data.code && !(data.code === 200) && !data.data) { 23 + if (!data.code || data.code !== 200) {
24 return []; 24 return [];
25 } 25 }
26 26
27 return data.data.reduce((result, area) => { 27 return data.data.reduce((result, area) => {
  28 + if (!area.infos) {
  29 + return result;
  30 + }
  31 +
28 let item = {}; 32 let item = {};
29 33
30 if (area.imageUrl) { 34 if (area.imageUrl) {
31 item.img = helpers.getForceSourceUrl(area.imageUrl); 35 item.img = helpers.getForceSourceUrl(area.imageUrl);
32 } 36 }
33 37
34 - if (!area.infos) {  
35 - return result;  
36 - }  
37 -  
38 item.list = area.infos.reduce((acc, cur, index) => { 38 item.list = area.infos.reduce((acc, cur, index) => {
39 if (!cur.product || !cur.product.goodsList) { 39 if (!cur.product || !cur.product.goodsList) {
40 return acc; 40 return acc;
@@ -8,41 +8,53 @@ const log = require(`${library}/logger`); @@ -8,41 +8,53 @@ const log = require(`${library}/logger`);
8 8
9 const api = new API(); 9 const api = new API();
10 10
  11 +const fake = require('./fake');
  12 +
11 module.exports.getProductBannerAsync = function(pid, clientType) { 13 module.exports.getProductBannerAsync = function(pid, clientType) {
12 - clientType = clientType || 'web';  
13 - return api.get('', sign.apiSign({  
14 - method: 'web.productBanner.data',  
15 - product_id: pid,  
16 - client_type: clientType  
17 - })).catch(log.error); 14 + //clientType = clientType || 'web';
  15 + //return api.get('', sign.apiSign({
  16 + // method: 'web.productBanner.data',
  17 + // product_id: pid,
  18 + // client_type: clientType
  19 + //})).catch(log.error);
  20 +
  21 + return Promise.resolve(fake.fakeProductBanner);
18 }; 22 };
19 23
20 module.exports.sizeInfoAsync = function(skn) { 24 module.exports.sizeInfoAsync = function(skn) {
21 - return api.get('', sign.apiSign({  
22 - method: 'h5.product.intro',  
23 - productskn: skn  
24 - })).catch(log.error); 25 + //return api.get('', sign.apiSign({
  26 + // method: 'h5.product.intro',
  27 + // productskn: skn
  28 + //})).catch(log.error);
  29 +
  30 + return Promise.resolve(fake.fakeProductIntro);
25 }; 31 };
26 32
27 module.exports.getProductComfortAsync = function(pid) { 33 module.exports.getProductComfortAsync = function(pid) {
28 - return api.get('', sign.apiSign({  
29 - method: 'web.productComfort.data',  
30 - product_id: pid  
31 - })).catch(log.error); 34 + //return api.get('', sign.apiSign({
  35 + // method: 'web.productComfort.data',
  36 + // product_id: pid
  37 + //})).catch(log.error);
  38 +
  39 + return Promise.resolve(fake.fakeComfort);
32 }; 40 };
33 41
34 module.exports.getProductModelCardAsync = function(pid) { 42 module.exports.getProductModelCardAsync = function(pid) {
35 - return api.get('', sign.apiSign({  
36 - method: 'web.productModelcard.list',  
37 - product_id: pid  
38 - })).catch(log.error); 43 + //return api.get('', sign.apiSign({
  44 + // method: 'web.productModelcard.list',
  45 + // product_id: pid
  46 + //})).catch(log.error);
  47 +
  48 + return Promise.resolve(fake.fakeModelCard);
39 }; 49 };
40 50
41 module.exports.getProductModelTryAsync = function(skn) { 51 module.exports.getProductModelTryAsync = function(skn) {
42 - return api.get('', sign.apiSign({  
43 - method: 'web.productModelTry.data',  
44 - product_skn: skn  
45 - })).catch(log.error); 52 + //return api.get('', sign.apiSign({
  53 + // method: 'web.productModelTry.data',
  54 + // product_skn: skn
  55 + //})).catch(log.error);
  56 +
  57 + return Promise.resolve(fake.fakeModelTry);
46 }; 58 };
47 59
48 /** 60 /**
@@ -51,10 +63,12 @@ module.exports.getProductModelTryAsync = function(skn) { @@ -51,10 +63,12 @@ module.exports.getProductModelTryAsync = function(skn) {
51 * @returns {Promise.<type>} 63 * @returns {Promise.<type>}
52 */ 64 */
53 module.exports.getProductInfo = function(pid) { 65 module.exports.getProductInfo = function(pid) {
54 - return api.get('', sign.apiSign({  
55 - method: 'h5.product.data',  
56 - productId: pid  
57 - })).catch(console.log); 66 + //return api.get('', sign.apiSign({
  67 + // method: 'h5.product.data',
  68 + // productId: pid
  69 + //})).catch(console.log);
  70 +
  71 + return Promise.resolve(fake.fakeProduct);
58 }; 72 };
59 73
60 74
@@ -27,6 +27,7 @@ const shopAPI = require('./shop-api'); @@ -27,6 +27,7 @@ const shopAPI = require('./shop-api');
27 const searchAPI = require('./search-api'); 27 const searchAPI = require('./search-api');
28 const homeService = require('./home-service'); 28 const homeService = require('./home-service');
29 const HeaderModel = require('../../../doraemon/models/header'); 29 const HeaderModel = require('../../../doraemon/models/header');
  30 +const fake = require('./fake');
30 31
31 const BLANK_STR = ' '; 32 const BLANK_STR = ' ';
32 33
@@ -857,7 +858,7 @@ function getDescriptionDataBySizeInfo(sizeInfo) { @@ -857,7 +858,7 @@ function getDescriptionDataBySizeInfo(sizeInfo) {
857 }); 858 });
858 } 859 }
859 860
860 - description.confort = getProductComfort(); 861 + description.comfort = getProductComfort();
861 } 862 }
862 863
863 return description; 864 return description;
@@ -1279,7 +1280,10 @@ const getSizeInfo = (productSkn, maxSortId)=> { @@ -1279,7 +1280,10 @@ const getSizeInfo = (productSkn, maxSortId)=> {
1279 result.size = getSizeData(sizeInfo); 1280 result.size = getSizeData(sizeInfo);
1280 1281
1281 // 模特数据 1282 // 模特数据
1282 - result.reference = getReferenceDataBySizeInfo(sizeInfo); 1283 + let reference = getReferenceDataBySizeInfo(sizeInfo);
  1284 + if(_.isEmpty(reference)){
  1285 + result.reference = reference;
  1286 + }
1283 1287
1284 // 洗涤材质 1288 // 洗涤材质
1285 result.material = getMaterialDataBySizeInfo(sizeInfo); 1289 result.material = getMaterialDataBySizeInfo(sizeInfo);
This diff could not be displayed because it is too large.
@@ -6,7 +6,11 @@ const log = require(`${library}/logger`); @@ -6,7 +6,11 @@ const log = require(`${library}/logger`);
6 6
7 const api = new API(); 7 const api = new API();
8 8
  9 +const fake = require('./fake');
  10 +
9 module.exports.getSortByConditionAsync = function(condition) { 11 module.exports.getSortByConditionAsync = function(condition) {
10 - return api.get('sortgroup.json', condition).catch(log.error); 12 + //return api.get('sortgroup.json', condition).catch(log.error);
  13 +
  14 + return Promise.resolve(fake.fakeNav);
11 }; 15 };
12 16
@@ -15,6 +15,9 @@ const serviceApi = new ServiceAPI(); @@ -15,6 +15,9 @@ const serviceApi = new ServiceAPI();
15 15
16 const log = require(`${global.library}/logger`); 16 const log = require(`${global.library}/logger`);
17 17
  18 +const Promise = require('bluebird');
  19 +const fake = require('../../apps/product/models/fake');
  20 +
18 /** 21 /**
19 * 获取菜单 22 * 获取菜单
20 * @param undefined 23 * @param undefined
@@ -131,7 +134,6 @@ const getThirdNav = (data) => { @@ -131,7 +134,6 @@ const getThirdNav = (data) => {
131 }); 134 });
132 135
133 136
134 -  
135 return thirdNav; 137 return thirdNav;
136 }; 138 };
137 139
@@ -168,8 +170,6 @@ const getSubNav = (data, type) => { @@ -168,8 +170,6 @@ const getSubNav = (data, type) => {
168 }; 170 };
169 171
170 172
171 -  
172 -  
173 /** 173 /**
174 * 处理接口返回的数据 174 * 处理接口返回的数据
175 * @param {object} 接口返回的对象 175 * @param {object} 接口返回的对象
@@ -191,7 +191,6 @@ const setHeaderData = (resData, type) => { @@ -191,7 +191,6 @@ const setHeaderData = (resData, type) => {
191 }; 191 };
192 192
193 193
194 -  
195 /** 194 /**
196 * 请求头部数据 195 * 请求头部数据
197 * @param {String} 频道类型 196 * @param {String} 频道类型
@@ -205,7 +204,17 @@ exports.requestHeaderData = (type, parentId) => { @@ -205,7 +204,17 @@ exports.requestHeaderData = (type, parentId) => {
205 204
206 type = type || 'boys'; 205 type = type || 'boys';
207 206
208 - return serviceApi.get('operations/api/v6/category/getCategory', data, true).then(res => { 207 + //return serviceApi.get('operations/api/v6/category/getCategory', data, true).then(res => {
  208 + // if (res && res.code === 200) {
  209 + // return setHeaderData(res.data, type);
  210 + // } else {
  211 + // log.error('获取头部信息的接口返回状态码 不是 200');
  212 + // return {};
  213 + // }
  214 + //});
  215 +
  216 + return Promise.resolve(fake.fakeHeader).then(res => {
  217 + console.log(res);
209 if (res && res.code === 200) { 218 if (res && res.code === 200) {
210 return setHeaderData(res.data, type); 219 return setHeaderData(res.data, type);
211 } else { 220 } else {
1 -{{# headerData}}  
2 - <div class="yoho-header {{headType}}">  
3 - <div class="tool-wrapper clearfix">  
4 - <div class="center-content">  
5 - <div class="yoho-group-map left">  
6 - <span class="icon-hamburger"></span>  
7 - <a href="http://www.yohobuy.com">YOHO!有货</a>  
8 - {{#if yohoGroup}}  
9 - <ul class="yoho-group-list">  
10 - {{# yohoGroup}}  
11 - <li>  
12 - <a href="{{link}}" class="yoho-group" data-en="{{en}}" data-cn="{{cn}}">{{en}}</a>  
13 - </li>  
14 - {{/ yohoGroup}}  
15 - </ul>  
16 - {{/if}}  
17 - </div>  
18 - <div class="yoho-buy-tools right">  
19 - <ul>  
20 - <li id="loginBox">  
21 - <span class="hi">Hi~</span>  
22 - [ <a href="http://www.yohobuy.com/signin.html" class="loginbar">请登录</a> ]  
23 - [ <a href="http://www.yohobuy.com/reg.html" class="registbar">免费注册</a> ]  
24 - </li>  
25 - <li class="myyoho" id="myYohoBox">  
26 - <span class="tag-seprate"></span>  
27 - <a href="http://www.yohobuy.com/home?t=1453340799.4986">MY有货</a>  
28 - <span class="icon-bottomarrow"></span>  
29 - <div class="simple-user-center"></div>  
30 - </li>  
31 - <li class="myorder">  
32 - <span class="tag-seprate"></span>  
33 - <span class="icon-papers"></span>  
34 - <a href="http://www.yohobuy.com/home/orders?t=1453168898.0176">我的订单</a>  
35 - </li>  
36 - <li class="mycollect">  
37 - <span class="tag-seprate"></span>  
38 - <span class="icon-heart"></span>  
39 - <a href="http://www.yohobuy.com/home/favorite?t=1453168898.0176">我的收藏</a>  
40 - </li>  
41 - <li class="message">  
42 - <span class="tag-seprate"></span>  
43 - <span class="icon-mail"></span>  
44 - <a href="http://www.yohobuy.com/home/message?t=1453168898.0176">消息</a>  
45 - </li>  
46 - <li class="phoneapp">  
47 - <span class="tag-seprate"></span>  
48 - <span class="icon-phone"></span>  
49 - <a href="http://www.yohobuy.com/download/app">手机版</a>  
50 - <div class="download-app-box">  
51 - <div class="qr-img"></div>  
52 - <h3 class="qr-words">扫描二维码</h3>  
53 - <h3 class="qr-words">下载有货手机客户端</h3>  
54 - <h3 class="qr-more">  
55 - <a href="http://www.yohobuy.com/download/app">更多客户端下载</a>  
56 - </h3>  
57 - </div>  
58 - </li>  
59 - </ul>  
60 - </div>  
61 - </div>  
62 - </div>  
63 - <div class="head-wrapper clearfix">  
64 - <div class="center-content">  
65 - <div class="outlets-logo"></div>  
66 - <div class="main-logo"><a href="http://www.yohobuy.com/" class="main-link"></a></div>  
67 - <ul class="main-nav-list">  
68 - {{# navbars}}  
69 - <li {{#if active}} class="cure"{{/if}}{{#if ico}} style="background: url({{image ico 54 32}}) no-repeat center center"{{/if}}>  
70 - {{#if ico}}  
71 - <a href="{{link}}" class="menu-ico"></a>  
72 - {{^}}  
73 - <h3 class="name-cn">  
74 - <a href="{{link}}">{{cn}}</a>  
75 - </h3>  
76 - <h3 class="name-en">  
77 - <a href="{{link}}">{{en}}</a>  
78 - </h3>  
79 - {{/if}}  
80 - </li>  
81 - {{/ navbars}}  
82 - </ul>  
83 - <div class="func-area">  
84 - <ul class="search-suggest"></ul>  
85 - <div class="search-2016">  
86 - <form action="http://search.yohobuy.com" method="get" id="search-form">  
87 - <input type="text" name="query" class="search-key" autocomplete="off">  
88 - <a class="search-btn"></a>  
89 - </form>  
90 - </div>  
91 - <div class="go-cart">  
92 - <a href="http://www.yohobuy.com/shopping/cart">  
93 - <span class="iconfont ">&#xe600;</span>  
94 - <span class="goods-num-tip">0</span>  
95 - </a>  
96 - <div class="mini-cart-wrapper">  
97 - <div class="loading-cart">  
98 - <h3>加载中,请稍后</h3>  
99 - </div>  
100 - <div class="empty-cart">  
101 - <h3>您的购物车暂无商品</h3>  
102 - </div>  
103 - </div>  
104 - </div>  
105 - </div>  
106 - </div>  
107 - </div>  
108 - <div class="nav-wrapper clearfix">  
109 - <div class="center-content">  
110 - <ul class="sub-nav-list">  
111 - {{# subNav}}  
112 - <li{{#if thirdNav}} class="contain-third"{{/if}}>  
113 - <a href="{{link}}">{{name}}  
114 - {{#if isNew}}  
115 - <span class="newlogo"></span>  
116 - {{/if}}  
117 - </a>  
118 - {{#if thirdNav}}  
119 - <div class="third-nav-wrapper">  
120 - <div class="center-content">  
121 - <dl class="hide-list hide">  
122 - {{# thirdNav}}  
123 - <dt>  
124 - <h1 class=""><a href="{{link}}">{{title}}</a> </h1>  
125 - </dt>  
126 - {{#brandItems}}  
127 - <dd>  
128 - <a href="{{link}}"{{#if hot}} class="hot"{{/if}}>{{brandName}}</a>  
129 - </dd>  
130 - {{/brandItems}}  
131 - {{/thirdNav}}  
132 - </dl>  
133 - <div class="show-detail" data-code="{{imgCode}}">  
134 - <a><img src="data:image/gif;base64,R0lGODlhAQABAJEAAAAAAP///93d3f///yH5BAEAAAMALAAAAAABAAEAAAICVAEAOw=="></a>  
135 - <a class="title">热门小物优选</a>  
136 - </div>  
137 - </div>  
138 - </div>  
139 - {{/if}}  
140 - </li>  
141 - {{/ subNav}}  
142 - </ul>  
143 - </div>  
144 - </div>  
145 - </div>  
146 - <div id="hide-template">  
147 - <script type="text/html" id="header-login-info-tpl">  
148 - <span>Hi~ <a href="\{{usercenter}}" class="nick-name">\{{nickname}}</a></span>  
149 - &nbsp;[ <a href="\{{signout}}">退出</a> ]  
150 - </script>  
151 - <script type="text/html" id="simple-account-info-tpl">  
152 - <div class="account-info-header">  
153 - <div class="user-img" >  
154 - <img src="\{{head_ico}}">  
155 - </div>  
156 - <div class="user-name">  
157 - <a href="http://www.yohobuy.com/home?t=\{{random}}">\{{profile_name}}</a>  
158 - </div>  
159 - <h3 class="user-level">  
160 - VIP: <span>\{{vip.curVipInfo.title}}</span>  
161 - </h3>  
162 - \{{#unless vip3}}  
163 - <div class="level-detail">  
164 - <div class="level-view-bar">  
165 - <div class="text-span">  
166 - \{{vip.curYearCost}}/\{{vip.nextVipInfo.needCost}}  
167 - </div>  
168 - <p class="\{{#if vip.curYearCostPer}}integrate\{{/if}}" style="width: \{{vip.curYearCostPer}}%;"></p>  
169 - </div>  
170 - <span>\{{vip.nextVipInfo.title}}</span>  
171 - </div>  
172 - \{{/unless}}  
173 - </div>  
174 - <ul class="account-info-content">  
175 - <li>  
176 - <a href="http://www.yohobuy.com/home/orders?t=\{{timestamp}}">待处理的订单</a>  
177 - <span class="right">\{{orderCount}}</span>  
178 - </li>  
179 - <li>  
180 - <a href="http://www.yohobuy.com/home/favorite?t=\{{timestamp}}">我的收藏</a>  
181 - <span class="right"></span>  
182 - </li>  
183 - <li>  
184 - <a href="http://www.yohobuy.com/home/coupons?t=\{{timestamp}}">我的优惠券</a>  
185 - <span class="right">\{{couponCount}}</span>  
186 - </li>  
187 - <li>  
188 - <a href="http://www.yohobuy.com/home/currency?t=\{{timestamp}}">我的YOHO币</a>  
189 - <span class="right">\{{YohocoinCount}}</span>  
190 - </li>  
191 - <li>  
192 - <a href="http://www.yohobuy.com/home/returns?t=\{{timestamp}}">我的退货换货</a>  
193 - <span class="right">\{{refundCount}}</span>  
194 - </li>  
195 - </ul>  
196 - <div class="account-info-footer">  
197 - <a href="http://www.yohobuy.com/home/user?t=\{{timestamp}}">完善资料</a>  
198 - </div>  
199 - </script>  
200 - <script type="text/html" id="mini-cart-tpl">  
201 - \{{#carData}}  
202 - <div class="rich-cart">  
203 - <div class="goods-list">  
204 - \{{# totalGoods}}  
205 - \{{#notzero buy_number}}  
206 - <div class="goods-item">  
207 - <div class="goods-img">  
208 - <a href="\{{product_url}}">  
209 - <img src="\{{default_img}}"/>  
210 - </a>  
211 - </div>  
212 - <div class="goods-info">  
213 - <p class="title">  
214 - <a href="\{{product_url}}">\{{product_name}}</a>  
215 - </p>  
216 - <p>  
217 - 颜色:\{{color_name}}  
218 - 尺码:\{{size_name}}  
219 - </p>  
220 - </div>  
221 - <div class="goods-price">  
222 - <p>\{{show_price}} x \{{buy_number}}</p>  
223 - <p>  
224 - <a href="javascript:void(0)" class="cart-goods-del" data-id=\{{goods_incart_id}} data-cheapest=\{{is_cheapest_free}}>删除</a>  
225 - </p>  
226 - </div>  
227 - </div>  
228 - \{{/notzero}}  
229 - \{{/ totalGoods}}  
230 - \{{#if has_promotion}}  
231 - <div class="activity-item">  
232 - <label class="activity-name">活动</label>  
233 - <h3 class="activity-content">  
234 - \{{#if fit_outlet_promotion }}  
235 - 购outlet商品,满¥1999再享9折  
236 - \{{/if}}  
237 - \{{#if has_other_promotion}}  
238 - <span class="mycart_i_down" title="更多" ></span>  
239 - \{{/if}}  
240 - \{{#if has_first_promotion}}  
241 - \{{first_promotions.promotion_title}}  
242 - \{{/if}}  
243 - </h3>  
244 - </div>  
245 - \{{/if}}  
246 - \{{#if fit_free_shipping }}  
247 - <div class="activity-item">  
248 - <label class="activity-name">免运费</label>  
249 - <h3 class="activity-content">全场满 ¥\{{fit_free_shipping}}免运费</h3>  
250 - </div>  
251 - \{{/if}}  
252 - </div>  
253 - <div class="go-full-cart">  
254 - <div>  
255 - <a href="/shopping/cart">去购物车结算</a>  
256 - </div>  
257 - </div>  
258 - </div>  
259 - \{{/carData}}  
260 - </script>  
261 - </div>  
262 -  
263 - <input id="api-domain" type="hidden" value="{{apiDomain}}">  
264 -{{/ headerData}} 1 +{{# headerData}}
  2 + {{log this}}
  3 + <div class="yoho-header {{headType}}">
  4 + <div class="tool-wrapper clearfix">
  5 + <div class="center-content">
  6 + <div class="yoho-group-map left">
  7 + <span class="icon-hamburger"></span>
  8 + <a href="http://www.yohobuy.com">YOHO!有货</a>
  9 + {{#if yohoGroup}}
  10 + <ul class="yoho-group-list">
  11 + {{# yohoGroup}}
  12 + <li>
  13 + <a href="{{link}}" class="yoho-group" data-en="{{en}}" data-cn="{{cn}}">{{en}}</a>
  14 + </li>
  15 + {{/ yohoGroup}}
  16 + </ul>
  17 + {{/if}}
  18 + </div>
  19 + <div class="yoho-buy-tools right">
  20 + <ul>
  21 + <li id="loginBox">
  22 + <span class="hi">Hi~</span>
  23 + [ <a href="http://www.yohobuy.com/signin.html" class="loginbar">请登录</a> ]
  24 + [ <a href="http://www.yohobuy.com/reg.html" class="registbar">免费注册</a> ]
  25 + </li>
  26 + <li class="myyoho" id="myYohoBox">
  27 + <span class="tag-seprate"></span>
  28 + <a href="http://www.yohobuy.com/home?t=1453340799.4986">MY有货</a>
  29 + <span class="icon-bottomarrow"></span>
  30 + <div class="simple-user-center"></div>
  31 + </li>
  32 + <li class="myorder">
  33 + <span class="tag-seprate"></span>
  34 + <span class="icon-papers"></span>
  35 + <a href="http://www.yohobuy.com/home/orders?t=1453168898.0176">我的订单</a>
  36 + </li>
  37 + <li class="mycollect">
  38 + <span class="tag-seprate"></span>
  39 + <span class="icon-heart"></span>
  40 + <a href="http://www.yohobuy.com/home/favorite?t=1453168898.0176">我的收藏</a>
  41 + </li>
  42 + <li class="message">
  43 + <span class="tag-seprate"></span>
  44 + <span class="icon-mail"></span>
  45 + <a href="http://www.yohobuy.com/home/message?t=1453168898.0176">消息</a>
  46 + </li>
  47 + <li class="phoneapp">
  48 + <span class="tag-seprate"></span>
  49 + <span class="icon-phone"></span>
  50 + <a href="http://www.yohobuy.com/download/app">手机版</a>
  51 + <div class="download-app-box">
  52 + <div class="qr-img"></div>
  53 + <h3 class="qr-words">扫描二维码</h3>
  54 + <h3 class="qr-words">下载有货手机客户端</h3>
  55 + <h3 class="qr-more">
  56 + <a href="http://www.yohobuy.com/download/app">更多客户端下载</a>
  57 + </h3>
  58 + </div>
  59 + </li>
  60 + </ul>
  61 + </div>
  62 + </div>
  63 + </div>
  64 + <div class="head-wrapper clearfix">
  65 + <div class="center-content">
  66 + <div class="outlets-logo"></div>
  67 + <div class="main-logo"><a href="http://www.yohobuy.com/" class="main-link"></a></div>
  68 + <ul class="main-nav-list">
  69 + {{# navbars}}
  70 + <li {{#if active}} class="cure"{{/if}}{{#if ico}} style="background: url({{image ico 54 32}}) no-repeat center center"{{/if}}>
  71 + {{#if ico}}
  72 + <a href="{{link}}" class="menu-ico"></a>
  73 + {{^}}
  74 + <h3 class="name-cn">
  75 + <a href="{{link}}">{{cn}}</a>
  76 + </h3>
  77 + <h3 class="name-en">
  78 + <a href="{{link}}">{{en}}</a>
  79 + </h3>
  80 + {{/if}}
  81 + </li>
  82 + {{/ navbars}}
  83 + </ul>
  84 + <div class="func-area">
  85 + <ul class="search-suggest"></ul>
  86 + <div class="search-2016">
  87 + <form action="http://search.yohobuy.com" method="get" id="search-form">
  88 + <input type="text" name="query" class="search-key" autocomplete="off">
  89 + <a class="search-btn"></a>
  90 + </form>
  91 + </div>
  92 + <div class="go-cart">
  93 + <a href="http://www.yohobuy.com/shopping/cart">
  94 + <span class="iconfont ">&#xe600;</span>
  95 + <span class="goods-num-tip">0</span>
  96 + </a>
  97 + <div class="mini-cart-wrapper">
  98 + <div class="loading-cart">
  99 + <h3>加载中,请稍后</h3>
  100 + </div>
  101 + <div class="empty-cart">
  102 + <h3>您的购物车暂无商品</h3>
  103 + </div>
  104 + </div>
  105 + </div>
  106 + </div>
  107 + </div>
  108 + </div>
  109 + <div class="nav-wrapper clearfix">
  110 + <div class="center-content">
  111 + <ul class="sub-nav-list">
  112 + {{# subNav}}
  113 + <li{{#if thirdNav}} class="contain-third"{{/if}}>
  114 + <a href="{{link}}">{{name}}
  115 + {{#if isNew}}
  116 + <span class="newlogo"></span>
  117 + {{/if}}
  118 + </a>
  119 + {{#if thirdNav}}
  120 + <div class="third-nav-wrapper">
  121 + <div class="center-content">
  122 + <dl class="hide-list hide">
  123 + {{# thirdNav}}
  124 + <dt>
  125 + <h1 class=""><a href="{{link}}">{{title}}</a> </h1>
  126 + </dt>
  127 + {{#brandItems}}
  128 + <dd>
  129 + <a href="{{link}}"{{#if hot}} class="hot"{{/if}}>{{brandName}}</a>
  130 + </dd>
  131 + {{/brandItems}}
  132 + {{/thirdNav}}
  133 + </dl>
  134 + <div class="show-detail" data-code="{{imgCode}}">
  135 + <a><img src="data:image/gif;base64,R0lGODlhAQABAJEAAAAAAP///93d3f///yH5BAEAAAMALAAAAAABAAEAAAICVAEAOw=="></a>
  136 + <a class="title">热门小物优选</a>
  137 + </div>
  138 + </div>
  139 + </div>
  140 + {{/if}}
  141 + </li>
  142 + {{/ subNav}}
  143 + </ul>
  144 + </div>
  145 + </div>
  146 + </div>
  147 + <div id="hide-template">
  148 + <script type="text/html" id="header-login-info-tpl">
  149 + <span>Hi~ <a href="\{{usercenter}}" class="nick-name">\{{nickname}}</a></span>
  150 + &nbsp;[ <a href="\{{signout}}">退出</a> ]
  151 + </script>
  152 + <script type="text/html" id="simple-account-info-tpl">
  153 + <div class="account-info-header">
  154 + <div class="user-img" >
  155 + <img src="\{{head_ico}}">
  156 + </div>
  157 + <div class="user-name">
  158 + <a href="http://www.yohobuy.com/home?t=\{{random}}">\{{profile_name}}</a>
  159 + </div>
  160 + <h3 class="user-level">
  161 + VIP: <span>\{{vip.curVipInfo.title}}</span>
  162 + </h3>
  163 + \{{#unless vip3}}
  164 + <div class="level-detail">
  165 + <div class="level-view-bar">
  166 + <div class="text-span">
  167 + \{{vip.curYearCost}}/\{{vip.nextVipInfo.needCost}}
  168 + </div>
  169 + <p class="\{{#if vip.curYearCostPer}}integrate\{{/if}}" style="width: \{{vip.curYearCostPer}}%;"></p>
  170 + </div>
  171 + <span>\{{vip.nextVipInfo.title}}</span>
  172 + </div>
  173 + \{{/unless}}
  174 + </div>
  175 + <ul class="account-info-content">
  176 + <li>
  177 + <a href="http://www.yohobuy.com/home/orders?t=\{{timestamp}}">待处理的订单</a>
  178 + <span class="right">\{{orderCount}}</span>
  179 + </li>
  180 + <li>
  181 + <a href="http://www.yohobuy.com/home/favorite?t=\{{timestamp}}">我的收藏</a>
  182 + <span class="right"></span>
  183 + </li>
  184 + <li>
  185 + <a href="http://www.yohobuy.com/home/coupons?t=\{{timestamp}}">我的优惠券</a>
  186 + <span class="right">\{{couponCount}}</span>
  187 + </li>
  188 + <li>
  189 + <a href="http://www.yohobuy.com/home/currency?t=\{{timestamp}}">我的YOHO币</a>
  190 + <span class="right">\{{YohocoinCount}}</span>
  191 + </li>
  192 + <li>
  193 + <a href="http://www.yohobuy.com/home/returns?t=\{{timestamp}}">我的退货换货</a>
  194 + <span class="right">\{{refundCount}}</span>
  195 + </li>
  196 + </ul>
  197 + <div class="account-info-footer">
  198 + <a href="http://www.yohobuy.com/home/user?t=\{{timestamp}}">完善资料</a>
  199 + </div>
  200 + </script>
  201 + <script type="text/html" id="mini-cart-tpl">
  202 + \{{#carData}}
  203 + <div class="rich-cart">
  204 + <div class="goods-list">
  205 + \{{# totalGoods}}
  206 + \{{#notzero buy_number}}
  207 + <div class="goods-item">
  208 + <div class="goods-img">
  209 + <a href="\{{product_url}}">
  210 + <img src="\{{default_img}}"/>
  211 + </a>
  212 + </div>
  213 + <div class="goods-info">
  214 + <p class="title">
  215 + <a href="\{{product_url}}">\{{product_name}}</a>
  216 + </p>
  217 + <p>
  218 + 颜色:\{{color_name}}
  219 + 尺码:\{{size_name}}
  220 + </p>
  221 + </div>
  222 + <div class="goods-price">
  223 + <p>\{{show_price}} x \{{buy_number}}</p>
  224 + <p>
  225 + <a href="javascript:void(0)" class="cart-goods-del" data-id=\{{goods_incart_id}} data-cheapest=\{{is_cheapest_free}}>删除</a>
  226 + </p>
  227 + </div>
  228 + </div>
  229 + \{{/notzero}}
  230 + \{{/ totalGoods}}
  231 + \{{#if has_promotion}}
  232 + <div class="activity-item">
  233 + <label class="activity-name">活动</label>
  234 + <h3 class="activity-content">
  235 + \{{#if fit_outlet_promotion }}
  236 + 购outlet商品,满¥1999再享9折
  237 + \{{/if}}
  238 + \{{#if has_other_promotion}}
  239 + <span class="mycart_i_down" title="更多" ></span>
  240 + \{{/if}}
  241 + \{{#if has_first_promotion}}
  242 + \{{first_promotions.promotion_title}}
  243 + \{{/if}}
  244 + </h3>
  245 + </div>
  246 + \{{/if}}
  247 + \{{#if fit_free_shipping }}
  248 + <div class="activity-item">
  249 + <label class="activity-name">免运费</label>
  250 + <h3 class="activity-content">全场满 ¥\{{fit_free_shipping}}免运费</h3>
  251 + </div>
  252 + \{{/if}}
  253 + </div>
  254 + <div class="go-full-cart">
  255 + <div>
  256 + <a href="/shopping/cart">去购物车结算</a>
  257 + </div>
  258 + </div>
  259 + </div>
  260 + \{{/carData}}
  261 + </script>
  262 + </div>
  263 +
  264 + <input id="api-domain" type="hidden" value="{{apiDomain}}">
  265 +{{/ headerData}}