Authored by jinhu.tung

cart layout

Showing 63 changed files with 2286 additions and 311 deletions
const model = require('../models');
exports.index = (req, res) => {
res.render('index', Object.assign({
module: 'channel',
page: 'home'
}, model.getContent()));
};
... ...
/**
* sub app channel
* @author: 赵彪<bill.zhao@yoho.cn>
* @date: 2016/06/09
*/
'use strict';
var express = require('express'),
path = require('path'),
hbs = require('express-handlebars');
var app = express();
// set view engin
var doraemon = path.join(__dirname, '../../doraemon/views'); // parent view root
app.on('mount', function(parent) {
delete parent.locals.settings; // 不继承父 App 的设置
Object.assign(app.locals, parent.locals);
});
app.set('views', path.join(__dirname, 'views/action'));
app.engine('.hbs', hbs({
extname: '.hbs',
defaultLayout: 'layout',
layoutsDir: doraemon,
partialsDir: [path.join(__dirname, 'views/partial'), `${doraemon}/partial`],
helpers: global.yoho.helpers
}));
// router
app.use(require('./router'));
module.exports = app;
... ...
const getContent = () => {
const content = {
/* eslint-disable */
content: [
{
slider: [
{
img: '//img10.static.yhbimg.com/yhb-img01/2016/06/28/11/015a86ade17dc6213bab85b2162adebcd6.jpg?imageView2/2/w/1150/h/450',
link: '/'
},
{
img: '//img10.static.yhbimg.com/yhb-img01/2016/06/28/11/015a86ade17dc6213bab85b2162adebcd6.jpg?imageView2/2/w/1150/h/450',
link: '/'
},
{
img: '//img10.static.yhbimg.com/yhb-img01/2016/06/23/13/01ebff30179db84975c42a4f3c8b1f4d44.jpg?imageView2/1/w/1150/h/450',
link: '/'
},
{
img: '//img10.static.yhbimg.com/yhb-img01/2016/06/28/11/015a86ade17dc6213bab85b2162adebcd6.jpg?imageView2/2/w/1150/h/450',
link: '/'
},
{
img: '//img10.static.yhbimg.com/yhb-img01/2016/06/28/11/015a86ade17dc6213bab85b2162adebcd6.jpg?imageView2/2/w/1150/h/450',
link: '/'
},
{
img: '//img10.static.yhbimg.com/yhb-img01/2016/06/28/11/015a86ade17dc6213bab85b2162adebcd6.jpg?imageView2/2/w/1150/h/450',
link: '/'
}
]
},
{
brandsAd: [
{
img: '//img10.static.yhbimg.com/yhb-img01/2016/06/23/13/01ebff30179db84975c42a4f3c8b1f4d44.jpg?imageView2/1/w/1150/h/450',
name: 'GINZA',
des: '藤原浩于银座停车场藤原浩于银座停车场藤原浩于银座停车场藤原浩于银座停车场藤原浩于银座停车场藤原浩于银座停车场藤原浩于银座停车场',
btnText: 'shop now'
},
{
{
slider: [
{
img: '//img10.static.yhbimg.com/yhb-img01/2016/06/28/11/015a86ade17dc6213bab85b2162adebcd6.jpg?imageView2/2/w/1150/h/450',
link: '/'
},
{
img: '//img10.static.yhbimg.com/yhb-img01/2016/06/28/11/015a86ade17dc6213bab85b2162adebcd6.jpg?imageView2/2/w/1150/h/450',
link: '/'
},
{
img: '//img10.static.yhbimg.com/yhb-img01/2016/06/23/13/01ebff30179db84975c42a4f3c8b1f4d44.jpg?imageView2/1/w/1150/h/450',
link: '/'
},
{
img: '//img10.static.yhbimg.com/yhb-img01/2016/06/28/11/015a86ade17dc6213bab85b2162adebcd6.jpg?imageView2/2/w/1150/h/450',
link: '/'
},
{
img: '//img10.static.yhbimg.com/yhb-img01/2016/06/28/11/015a86ade17dc6213bab85b2162adebcd6.jpg?imageView2/2/w/1150/h/450',
link: '/'
},
{
img: '//img10.static.yhbimg.com/yhb-img01/2016/06/28/11/015a86ade17dc6213bab85b2162adebcd6.jpg?imageView2/2/w/1150/h/450',
link: '/'
}
]
},
{
brandsAd: [
{
img: '//img10.static.yhbimg.com/yhb-img01/2016/06/23/13/01ebff30179db84975c42a4f3c8b1f4d44.jpg?imageView2/1/w/1150/h/450',
name: 'GINZA',
des: '藤原浩于银座停车场藤原浩于银座停车场藤原浩于银座停车场藤原浩于银座停车场藤原浩于银座停车场藤原浩于银座停车场藤原浩于银座停车场',
btnText: 'shop now'
},
{
img: '//img10.static.yhbimg.com/yhb-img01/2016/06/23/13/01ebff30179db84975c42a4f3c8b1f4d44.jpg?imageView2/1/w/1150/h/450',
name: 'STUSSY',
des: '藤原浩于银座停车场藤原浩于银座停车场藤原浩于银座停车场藤原浩于银座停车场藤原浩于银座停车场藤原浩于银座停车场藤原浩于银座停车场',
btnText: 'shop now'
}
]
},
{
floorZh: '新品抢鲜看',
floorEn: 'NEW ARRIVALS',
newArrivals: [
{
img: '//img10.static.yhbimg.com/yhb-img01/2016/06/23/13/01ebff30179db84975c42a4f3c8b1f4d44.jpg?imageView2/1/w/1150/h/450',
name: 'STUSSY',
link: '/',
smallImg: true
},
{
img: '//img10.static.yhbimg.com/yhb-img01/2016/06/23/13/01ebff30179db84975c42a4f3c8b1f4d44.jpg?imageView2/1/w/1150/h/450',
name: 'DAILY PAPER',
link: '/',
even: true
},
{
img: '//img10.static.yhbimg.com/yhb-img01/2016/06/23/13/01ebff30179db84975c42a4f3c8b1f4d44.jpg?imageView2/1/w/1150/h/450',
name: 'BAPE',
link: '/'
},
{
img: '//img10.static.yhbimg.com/yhb-img01/2016/06/23/13/01ebff30179db84975c42a4f3c8b1f4d44.jpg?imageView2/1/w/1150/h/450',
name: 'SUPREME',
link: '/',
even: true,
smallImg: true
}
]
},
{
floorZh: '经典品牌',
floorEn: 'CLASSIC BRANDS',
classicBrands: [
{
big: [
{
img: '//img10.static.yhbimg.com/yhb-img01/2016/06/23/13/01ebff30179db84975c42a4f3c8b1f4d44.jpg?imageView2/1/w/1150/h/450',
link: ''
}
],
small: [
{
img: '//img10.static.yhbimg.com/yhb-img01/2016/06/30/10/01714bacda5e9fa323a1dc5f720a7f7140.jpg?imageView2/1/w/185/h/248',
link: ''
},
{
img: '//img10.static.yhbimg.com/yhb-img01/2016/06/30/10/01714bacda5e9fa323a1dc5f720a7f7140.jpg?imageView2/1/w/185/h/248',
link: ''
}
],
bottomSpace: true
},
{
big: [
{
img: '//img10.static.yhbimg.com/yhb-img01/2016/06/23/13/01ebff30179db84975c42a4f3c8b1f4d44.jpg?imageView2/1/w/1150/h/450',
link: ''
}
],
small: [
{
img: '//img10.static.yhbimg.com/yhb-img01/2016/06/23/13/01ebff30179db84975c42a4f3c8b1f4d44.jpg?imageView2/1/w/1150/h/450',
link: ''
},
{
img: '//img10.static.yhbimg.com/yhb-img01/2016/06/23/13/01ebff30179db84975c42a4f3c8b1f4d44.jpg?imageView2/1/w/1150/h/450',
link: ''
}
],
right: true,
bottomSpace: true
},
{
big: [
{
img: '//img10.static.yhbimg.com/yhb-img01/2016/06/23/13/01ebff30179db84975c42a4f3c8b1f4d44.jpg?imageView2/1/w/1150/h/450',
link: ''
}
],
small: [
{
img: '//img10.static.yhbimg.com/yhb-img01/2016/06/23/13/01ebff30179db84975c42a4f3c8b1f4d44.jpg?imageView2/1/w/1150/h/450',
link: ''
},
{
img: '//img10.static.yhbimg.com/yhb-img01/2016/06/23/13/01ebff30179db84975c42a4f3c8b1f4d44.jpg?imageView2/1/w/1150/h/450',
link: ''
}
]
},
{
big: [
{
img: '//img10.static.yhbimg.com/yhb-img01/2016/06/23/13/01ebff30179db84975c42a4f3c8b1f4d44.jpg?imageView2/1/w/1150/h/450',
link: ''
}
],
small: [
{
img: '//img10.static.yhbimg.com/yhb-img01/2016/06/23/13/01ebff30179db84975c42a4f3c8b1f4d44.jpg?imageView2/1/w/1150/h/450',
link: ''
},
{
img: '//img10.static.yhbimg.com/yhb-img01/2016/06/23/13/01ebff30179db84975c42a4f3c8b1f4d44.jpg?imageView2/1/w/1150/h/450',
link: ''
}
],
right: true
}
]
},
{
floorZh: '潮流标志',
floorEn: 'STYLE ICON',
styleIcon: [
{
img: '//img10.static.yhbimg.com/yhb-img01/2016/06/23/13/01ebff30179db84975c42a4f3c8b1f4d44.jpg?imageView2/1/w/1150/h/450',
name: 'COTE&CIEL',
des: '这都什么时代了?短发女生这都什么时代了?短发女生这都什么时代了?短发女生这都什么时代了?短发女生',
link: '/ ',
btnText: '去看看'
},
{
img: '//img10.static.yhbimg.com/yhb-img01/2016/06/23/13/01ebff30179db84975c42a4f3c8b1f4d44.jpg?imageView2/1/w/1150/h/450',
name: 'COTE&CIEL',
des: '这都什么时代了?短发女生这都什么时代了?短发女生这都什么时代了?短发女生这都什么时代了?短发女生',
link: '/ ',
btnText: '去看看'
},
{
img: '//img10.static.yhbimg.com/yhb-img01/2016/06/23/13/01ebff30179db84975c42a4f3c8b1f4d44.jpg?imageView2/1/w/1150/h/450',
name: 'COTE&CIEL',
des: '这都什么时代了?短发女生这都什么时代了?短发女生这都什么时代了?短发女生这都什么时代了?短发女生',
link: '/ ',
btnText: '去看看'
},
{
img: '//img10.static.yhbimg.com/yhb-img01/2016/06/23/13/01ebff30179db84975c42a4f3c8b1f4d44.jpg?imageView2/1/w/1150/h/450',
name: 'COTE&CIEL',
des: '这都什么时代了?短发女生这都什么时代了?短发女生这都什么时代了?短发女生这都什么时代了?短发女生',
link: '/ ',
btnText: '去看看'
}
]
},
{
adBanner: {
img: '//img10.static.yhbimg.com/yhb-img01/2016/06/23/13/01ebff30179db84975c42a4f3c8b1f4d44.jpg?imageView2/1/w/1150/h/450',
name: 'STUSSY',
des: '藤原浩于银座停车场藤原浩于银座停车场藤原浩于银座停车场藤原浩于银座停车场藤原浩于银座停车场藤原浩于银座停车场藤原浩于银座停车场',
btnText: 'shop now'
link: ''
}
]
},
{
floorZh: '新品抢鲜看',
floorEn: 'NEW ARRIVALS',
newArrivals: [
{
img: '//img10.static.yhbimg.com/yhb-img01/2016/06/23/13/01ebff30179db84975c42a4f3c8b1f4d44.jpg?imageView2/1/w/1150/h/450',
name: 'STUSSY',
link: '/',
smallImg: true
},
{
img: '//img10.static.yhbimg.com/yhb-img01/2016/06/23/13/01ebff30179db84975c42a4f3c8b1f4d44.jpg?imageView2/1/w/1150/h/450',
name: 'DAILY PAPER',
link: '/',
even: true
},
{
img: '//img10.static.yhbimg.com/yhb-img01/2016/06/23/13/01ebff30179db84975c42a4f3c8b1f4d44.jpg?imageView2/1/w/1150/h/450',
name: 'BAPE',
link: '/'
},
{
img: '//img10.static.yhbimg.com/yhb-img01/2016/06/23/13/01ebff30179db84975c42a4f3c8b1f4d44.jpg?imageView2/1/w/1150/h/450',
name: 'SUPREME',
link: '/',
even: true,
smallImg: true
},
]
},
{
floorZh: '经典品牌',
floorEn: 'CLASSIC BRANDS',
classicBrands: [
{
big: [
{
img: '//img10.static.yhbimg.com/yhb-img01/2016/06/23/13/01ebff30179db84975c42a4f3c8b1f4d44.jpg?imageView2/1/w/1150/h/450',
link: ''
}
],
small: [
{
img: '//img10.static.yhbimg.com/yhb-img01/2016/06/30/10/01714bacda5e9fa323a1dc5f720a7f7140.jpg?imageView2/1/w/185/h/248',
link: ''
},
{
img: '//img10.static.yhbimg.com/yhb-img01/2016/06/30/10/01714bacda5e9fa323a1dc5f720a7f7140.jpg?imageView2/1/w/185/h/248',
link: ''
}
],
bottomSpace: true
},
{
big: [
{
img: '//img10.static.yhbimg.com/yhb-img01/2016/06/23/13/01ebff30179db84975c42a4f3c8b1f4d44.jpg?imageView2/1/w/1150/h/450',
link: ''
}
],
},
{
floorZh: '资讯',
floorEn: 'EDITORIAL',
editorial: {
big: {
img: '//img10.static.yhbimg.com/yhb-img01/2016/06/23/13/01ebff30179db84975c42a4f3c8b1f4d44.jpg?imageView2/1/w/1150/h/450',
link: ''
},
small: [
{
img: '//img10.static.yhbimg.com/yhb-img01/2016/06/23/13/01ebff30179db84975c42a4f3c8b1f4d44.jpg?imageView2/1/w/1150/h/450',
link: ''
link: '/',
bottomSpace: true,
rightSpace: true
},
{
img: '//img10.static.yhbimg.com/yhb-img01/2016/06/23/13/01ebff30179db84975c42a4f3c8b1f4d44.jpg?imageView2/1/w/1150/h/450',
link: ''
}
],
right: true,
bottomSpace: true
},
{
big: [
{
img: '//img10.static.yhbimg.com/yhb-img01/2016/06/23/13/01ebff30179db84975c42a4f3c8b1f4d44.jpg?imageView2/1/w/1150/h/450',
link: ''
}
],
small: [
{
img: '//img10.static.yhbimg.com/yhb-img01/2016/06/23/13/01ebff30179db84975c42a4f3c8b1f4d44.jpg?imageView2/1/w/1150/h/450',
link: ''
link: '/',
bottomSpace: true
},
{
img: '//img10.static.yhbimg.com/yhb-img01/2016/06/23/13/01ebff30179db84975c42a4f3c8b1f4d44.jpg?imageView2/1/w/1150/h/450',
link: ''
}
]
},
{
big: [
{
img: '//img10.static.yhbimg.com/yhb-img01/2016/06/23/13/01ebff30179db84975c42a4f3c8b1f4d44.jpg?imageView2/1/w/1150/h/450',
link: ''
}
],
small: [
{
img: '//img10.static.yhbimg.com/yhb-img01/2016/06/23/13/01ebff30179db84975c42a4f3c8b1f4d44.jpg?imageView2/1/w/1150/h/450',
link: ''
link: '/',
rightSpace: true
},
{
img: '//img10.static.yhbimg.com/yhb-img01/2016/06/23/13/01ebff30179db84975c42a4f3c8b1f4d44.jpg?imageView2/1/w/1150/h/450',
link: ''
}
],
right: true
}
]
},
{
floorZh: '潮流标志',
floorEn: 'STYLE ICON',
styleIcon: [
{
img: '//img10.static.yhbimg.com/yhb-img01/2016/06/23/13/01ebff30179db84975c42a4f3c8b1f4d44.jpg?imageView2/1/w/1150/h/450',
name: 'COTE&CIEL',
des: '这都什么时代了?短发女生这都什么时代了?短发女生这都什么时代了?短发女生这都什么时代了?短发女生',
link: '/ ',
btnText: '去看看'
},
{
img: '//img10.static.yhbimg.com/yhb-img01/2016/06/23/13/01ebff30179db84975c42a4f3c8b1f4d44.jpg?imageView2/1/w/1150/h/450',
name: 'COTE&CIEL',
des: '这都什么时代了?短发女生这都什么时代了?短发女生这都什么时代了?短发女生这都什么时代了?短发女生',
link: '/ ',
btnText: '去看看'
},
{
img: '//img10.static.yhbimg.com/yhb-img01/2016/06/23/13/01ebff30179db84975c42a4f3c8b1f4d44.jpg?imageView2/1/w/1150/h/450',
name: 'COTE&CIEL',
des: '这都什么时代了?短发女生这都什么时代了?短发女生这都什么时代了?短发女生这都什么时代了?短发女生',
link: '/ ',
btnText: '去看看'
},
{
img: '//img10.static.yhbimg.com/yhb-img01/2016/06/23/13/01ebff30179db84975c42a4f3c8b1f4d44.jpg?imageView2/1/w/1150/h/450',
name: 'COTE&CIEL',
des: '这都什么时代了?短发女生这都什么时代了?短发女生这都什么时代了?短发女生这都什么时代了?短发女生',
link: '/ ',
btnText: '去看看'
]
}
]
},
{
adBanner: {
img: '//img10.static.yhbimg.com/yhb-img01/2016/06/23/13/01ebff30179db84975c42a4f3c8b1f4d44.jpg?imageView2/1/w/1150/h/450',
link: ''
}
},
{
floorZh: '资讯',
floorEn: 'EDITORIAL',
editorial: {
big: {
img: '//img10.static.yhbimg.com/yhb-img01/2016/06/23/13/01ebff30179db84975c42a4f3c8b1f4d44.jpg?imageView2/1/w/1150/h/450',
link: ''
},
small: [
{
img: '//img10.static.yhbimg.com/yhb-img01/2016/06/23/13/01ebff30179db84975c42a4f3c8b1f4d44.jpg?imageView2/1/w/1150/h/450',
link: '/',
bottomSpace: true,
rightSpace: true
},
{
img: '//img10.static.yhbimg.com/yhb-img01/2016/06/23/13/01ebff30179db84975c42a4f3c8b1f4d44.jpg?imageView2/1/w/1150/h/450',
link: '/',
bottomSpace: true
},
{
img: '//img10.static.yhbimg.com/yhb-img01/2016/06/23/13/01ebff30179db84975c42a4f3c8b1f4d44.jpg?imageView2/1/w/1150/h/450',
link: '/',
rightSpace: true
},
{
img: '//img10.static.yhbimg.com/yhb-img01/2016/06/23/13/01ebff30179db84975c42a4f3c8b1f4d44.jpg?imageView2/1/w/1150/h/450',
link: ''
}
]
}
}
]
};
/* eslint-enable */
return content;
}
};
module.exports = {
getContent: getContent
... ...
/**
* router of sub app channel
* @author: biao<bill.zhao@yoho.cn>
* @date: 2016/06/29
*/
'use strict';
const router = require('express').Router(); // eslint-disable-line
const cRoot = './controllers';
// Your controller here
const index = require(`${cRoot}`).index;
router.get('/', index);
module.exports = router;
... ...
<div class="editorial-container">
{{> floor-header}}
<div class="news-container">
{{# editorial}}
<div class="news left">
{{# big}}
... ... @@ -8,8 +9,9 @@
</div>
<div class="news right">
{{# small}}
<img class="{{#if bottomSpace}}bottomSpace{{/if}} {{#if rightSpace}}rightSpace{{/if}}" src="{{image img 260 176}}" alt="">
<img class="{{#if bottomSpace}}bottom-space{{/if}} {{#if rightSpace}}right-space{{/if}}" src="{{image img 260 176}}" alt="">
{{/ small}}
</div>
{{/ editorial}}
</div>
</div>
... ...
<div class="slide-container {{#if pagination}}slide-thumb-container{{/if}}">
<div class="slide-wrapper">
<ul>
{{# slider}}
<li style="{{#if bgColor}}background:{{bgColor}}{{/if}}">
<a href="{{url}}" target= "_blank">
{{#if @first}}
<img src="{{image img 1150 450}}">
{{^}}
<img class="lazy" data-original="{{image img 1150 450}}" alt="">
{{/if}}
</a>
{{# tips}}
<div class="slide-tips">
<div class="g-mark"></div>
<p>{{.}}</p>
</div>
{{/ tips}}
</li>
{{/ slider}}
</ul>
</div>
{{#if pagination}}
<div class="thumb-pagination">
<ul class="clearfix">
{{# pagination}}
<li>
<a href="{{url}}" target="_blank"></a>
<img src="{{image img 138 54}}" alt="">
</li>
{{/ pagination}}
</ul>
</div>
{{/if}}
</div>
... ...
/**
* 资讯
* @author: zxr<xiaoru.zhang@yoho.cn>
* @date: 2016/7/4
*/
'use strict';
const index = (req, res) => {
var pageNum = req.query.page || 1;
res.display('index', {
module: 'editorial',
page: 'index',
title: '资讯',
editorial: {
nav: [
{
link: '//guang.yohobuy.com/index/index?type=0',
pathTitle: '首页',
name: 'MEN首页'
},
{
link: '/',
pathTitle: '资讯',
name: '咨询'
},
{
link: '/',
pathTitle: '资讯',
name: '咨询'
}
],
msgTypes: [
{
typeId: '0',
isActive: true,
type: '最新'
},
{
typeId: '1',
isActive: false,
type: '话题'
},
{
typeId: '2',
isActive: false,
type: '搭配'
},
{
typeId: '3',
isActive: false,
type: '潮人'
},
{
typeId: '4',
isActive: false,
type: '潮品'
}
],
msg: [
{
msgLeft: '潮品',
msgTitle: '很到位和范围的恢复文件和的减肥了晚餐费',
img: '',
msgContent: '鞋款定价回复即可老地方了服务',
time: '2016/05/25 19:36',
liked: true,
like: '8'
},
{
msgLeft: '潮品',
msgTitle: '很到位和范围的恢复文件和的减肥了晚餐费',
img: '',
msgContent: '鞋款定价回复即可老地方了服务',
time: '2016/05/25 19:36',
liked: true,
like: '8'
}
],
paginationOpts: {
page: pageNum, // current page: http://host/?page=2
limit: 10, // per_page records' number
totalRows: 100 // total page number
}
},
helpers: {
// import component, path depends on your project
pagination: require('../../../doraemon/components/pagination/pagination').createPagination
}
});
};
module.exports = {
index // 组件demo页
};
... ...
/**
* sub app partial
* @author: zhangxiaoru<xiaoru.zhang@yoho.cn>
* @date: 2016/07/4
*/
var express = require('express'),
path = require('path'),
hbs = require('express-handlebars');
var app = express();
// set view engin
var doraemon = path.join(__dirname, '../../doraemon/views'); // parent view root
// var partials = path.join(__dirname, './views'); // parent view root
app.on('mount', function(parent) {
delete parent.locals.settings; // 不继承父 App 的设置
Object.assign(app.locals, parent.locals);
});
app.set('views', path.join(__dirname, 'views/action'));
app.engine('.hbs', hbs({
extname: '.hbs',
defaultLayout: 'layout',
layoutsDir: doraemon,
partialsDir: [path.join(__dirname, 'views/partial'), `${doraemon}/partial`],
helpers: 'helpers'
}));
// router
app.use(require('./router'));
module.exports = app;
... ...
/**
* router of sub app channel
* @author: zhangxiaoru<xiaoru.zhang@yoho.cn>
* @date: 2016/07/04
*/
'use strict';
const router = require('express').Router(); // eslint-disable-line
const cRoot = './controllers';
const editorial = require(cRoot + '/editorial');
router.get('/', editorial.index); // 咨询首页
// router.get('/list', editorial.list); // 咨询列表页
module.exports = router;
... ...
<div class="editorial-index-page">
{{# editorial}}
{{> path-nav}}
<div class="index-content">
<ul class="msg-nav">
{{# msgTypes}}
<li data-type="{{typeId}}" {{#if isActive}}class="active"{{/if}}>
<a class="pjax-link" href="{{navUrl}}">{{type}}</a>
</li>
{{/ msgTypes}}
</ul>
<div id="msg-list" class="msg-list">
{{# msg}}
{{> msg}}
{{/ msg}}
</div>
<div class="paging">
{{{ pagination paginationOpts }}}
</div>
</div>
{{/ editorial}}
</div>
\ No newline at end of file
... ...
<div class="content-msg clearfix" data-id="{{id}}">
<div class="msg-left">{{msgLeft}}</div>
<div class="msg-right">
<a class="msg-title">{{msgTitle}}</a>
<img class="lazy" data-original="{{img}}">
<div class="content">{{msgContent}}</div>
<div class="msg-app">
<span class="time">
<i class="iconfont">&#xe61b;</i>
<b class="time-word">{{time}}</b>
</span>
<span class="like-comment">
<i class="iconfont like-icon{{#if liked}} liked{{/if}}">&#xe60e;</i>
<b class="like-num">{{like}}</b>
</span>
</div>
</div>
</div>
\ No newline at end of file
... ...
/**
* [个人中心]首页/我的订单
* @author: xuqi<qi.xu@yoho.cn>
* @date: 2016/07/04
*/
'use strict';
const mcHandler = require('../models/menu-crumb-handler');
/**
* 订单
*/
const index = (req, res) => {
res.render('index', {
module: 'me',
page: 'order',
isMe: true,
content: {
nav: mcHandler.getMeCrumb(),
navigation: mcHandler.getSideMenu('我的订单'),
banner: 'http://placehold.it/150x120'
}
});
};
module.exports = {
index
};
... ...
/**
* sub app me
* @author: xuqi<qi.xu@yoho.cn>
* @date: 2016/07/04
*/
var express = require('express'),
path = require('path'),
hbs = require('express-handlebars');
var app = express();
// set view engin
var doraemon = path.join(__dirname, '../../doraemon/views'); // parent view root
app.on('mount', function(parent) {
delete parent.locals.settings; // 不继承父 App 的设置
Object.assign(app.locals, parent.locals);
});
app.set('views', path.join(__dirname, 'views/action'));
app.engine('.hbs', hbs({
extname: '.hbs',
defaultLayout: 'layout',
layoutsDir: doraemon,
partialsDir: [path.join(__dirname, 'views/partial'), `${doraemon}/partial`],
helpers: 'helpers'
}));
// router
app.use(require('./router'));
module.exports = app;
... ...
/**
* 个人中心布局(顶部面包屑和左侧导航)
* @author: xuqi<qi.xu@yoho.cn>
* @date: 2016/7/5
*/
'use strict';
const _ = require('lodash');
const blk = global.yoho;
const url = blk.helpers.urlFormat;
// 左侧菜单
const navigation = [
{
link: url('/me/order'),
name: '我的订单'
},
{
link: url('/me/return'),
name: '我的退/换货'
},
{
link: url('/me/collection'),
name: '我的收藏'
},
{
link: url('/me/message'),
name: '我的消息'
},
{
link: url('/me/currency'),
name: '我的YOHO币'
},
{
link: url('/me/setting'),
name: '个人设置'
},
{
link: url('/me/address'),
name: '收货地址'
}
];
// 头部导航面包屑
const getMeCrumb = name => {
return [
{
link: blk.config.sitUrl,
name: 'YOHO!BLK首页'
},
{
link: url('/me'),
name: '个人中心'
},
{
name: name ? name : '我的订单'
}
];
};
// 侧栏菜单
const getSideMenu = focus => {
let copiedNav = _.cloneDeep(navigation);
if (focus && _.some(copiedNav, {name: focus})) {
Object.assign(_.find(copiedNav, {name: focus}), {
focus: true
});
} else {
// 若没有传focus || focus不在navigation中,则默认focus第1个菜单
copiedNav[0].focus = true;
}
return copiedNav;
};
module.exports = {
getMeCrumb,
getSideMenu
};
... ...
/**
* router of sub app me
* @author: xuqi<qi.xu@yoho.cn>
* @date: 2016/07/04
*/
'use strict';
const router = require('express').Router(); // eslint-disable-line
const cRoot = './controllers';
// 订单
const order = require(`${cRoot}/order`);
// 个人中心首页/订单
router.get('/', order.index);
module.exports = router;
... ...
<div class="me-page blk-page">
<div class="center-content clearfix">
{{# content}}
{{!-- 头部面包屑 --}}
{{> path-nav}}
{{!-- 左侧菜单导航 --}}
<div class="me-navigation left">
<p class="title bold">MY YOHO!BLK</p>
<ul class="nav">
{{#each navigation}}
<li class="nav-row{{#if focus}} focus{{/if}}">
<a href="{{link}}">{{name}}</a>
</li>
{{/each}}
</ul>
{{#if banner}}
<img class="banner-img" data-original="{{banner}}">
{{/if}}
</div>
{{!-- 右侧页面内容 --}}
<div class="me-main left">
{{!-- 我的订单 --}}
{{#if order}}
{{> order}}
{{/if}}
{{!-- 我的退换货 --}}
{{#if return}}
{{> return}}
{{/if}}
{{!-- 我的收藏 --}}
{{#if collection}}
{{> collection}}
{{/if}}
{{!-- 我的消息 --}}
{{#if message}}
{{> message}}
{{/if}}
{{!-- 我的YOHO币 --}}
{{#if currency}}
{{> curency}}
{{/if}}
{{!-- 个人设置 --}}
{{#if setting}}
{{> setting}}
{{/if}}
{{!-- 收货地址 --}}
{{#if address}}
{{> address}}
{{/if}}
</div>
{{/ content}}
</div>
{{!-- 在线客服和返回顶部 --}}
<div class="service-top">
<a class="service" href="" target="_blank">
<span class="iconfont">&#xe61c;</span>
<span class="hover-text hide">在线<br>客服</span>
</a>
<div class="return-top hide">
<span class="iconfont bold">&#xe617;</span>
<span class="hover-text hide">返回<br>顶部</span>
</div>
</div>
</div>
\ No newline at end of file
... ...
I am order
\ No newline at end of file
... ...
... ... @@ -44,20 +44,19 @@ const index = (req, res) => {
price: '1015.00'
},
navPath: {
nav: true,
pathNav: [
nav: [
{
href: '',
link: '',
pathTitle: '',
name: 'MEN首页'
},
{
href: '',
link: '',
pathTitle: '',
name: '咨询'
},
{
href: '',
link: '',
pathTitle: '',
name: '咨询'
}
... ...
... ... @@ -11,12 +11,18 @@ const _ = require('lodash');
exports.index = (req, res) => {
cartModel.getCartInfo().then((result) => {
console.log('proLength:', result[0].length && result[1].length && result[2].length);
const mock = {
loggedIn: true,
selectedGoods: result[0]
prosNum: result[0].length && result[1].length && result[2].length,
selectedGoods: {
prePros: result[0],
normalPros: result[1],
noMorePros: result[2]
}
};
res.render('cart', _.merge({
res.display('cart', _.merge({
module: 'shopping',
page: 'cart'
}, result[0], result[1], result[2],
... ...
... ... @@ -3,8 +3,8 @@
{{> common/bc-nav}}
{{> common/info}}
{{ selectedGoods.length }}
{{#if selectedGoods}}
{{> common/statement}}
{{#if prosNum}}
{{> cart-list}}
{{^}}
{{> common/empty-cart}}
{{/if}}
... ...
{{> common/cart-list-header}}
{{> common/statement}}
\ No newline at end of file
... ...
{{#prePros}}
预售商品
{{/prePros}}
{{#normalPros }}
普通商品
{{/normalPros}}
{{#noMorePros}}
库存不足
{{/noMorePros}}
... ...
<div class="cart-header">
<div class="titles">
<div class="item">
<label id="toggle_check" class="toggle-chk">
<span class="iconfont checkbox not-checked">&#xe601;</span>
<span class="iconfont checkbox checked">&#xe602;</span>
全选
</label>
</div>
<div class="item product">货品</div>
<div class="item price">价格</div>
<div class="item num">数量</div>
<div class="item pro-total-price">总价</div>
<div class="item actions">操作</div>
</div>
</div>
\ No newline at end of file
... ...
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>A Gentle Introduction</title>
<script
src="https://rawgit.com/flatiron/director/master/build/director.min.js">
</script>
<script>
var author = function () { console.log("author"); };
var books = function () { console.log("books"); };
var viewBook = function (bookId) {
console.log("viewBook: bookId is populated: " + bookId);
};
var routes = {
'/author': author,
'/books': [books, function() {
console.log("An inline route handler.");
}],
'/books/view/:bookId': viewBook
};
var router = Router(routes);
router.init();
</script>
</head>
<body>
<ul>
<li><a href="#/author">#/author</a></li>
<li><a href="#/books">#/books</a></li>
<li><a href="#/books/view/1">#/books/view/1</a></li>
</ul>
</body>
</html>
\ No newline at end of file
... ...
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>A Gentle Introduction 2</title>
<script
src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.1/jquery.min.js">
</script>
<script
src="https://rawgit.com/flatiron/director/master/build/director.min.js">
</script>
<script>
$('document').ready(function() {
//
// create some functions to be executed when
// the correct route is issued by the user.
//
var showAuthorInfo = function () { console.log("showAuthorInfo"); };
var listBooks = function () { console.log("listBooks"); };
var allroutes = function() {
var route = window.location.hash.slice(2);
var sections = $('section');
var section;
section = sections.filter('[data-route=' + route + ']');
if (section.length) {
sections.hide(250);
section.show(250);
}
};
//
// define the routing table.
//
var routes = {
'/author': showAuthorInfo,
'/books': listBooks
};
//
// instantiate the router.
//
var router = Router(routes);
//
// a global configuration setting.
//
router.configure({
on: allroutes
});
router.init();
});
</script>
</head>
<body>
<section data-route="author">Author Name</section>
<section data-route="books">Book1, Book2, Book3</section>
<ul>
<li><a href="#/author">#/author</a></li>
<li><a href="#/books">#/books</a></li>
</ul>
</body>
</html>
\ No newline at end of file
... ...
<div class="cart-statement">
<div class="actions">
<div class="action">
<label id="toggle_check">
<label id="toggle_check" class="toggle-chk">
<span class="iconfont checkbox not-checked">&#xe601;</span>
<span class="iconfont checkbox checked">&#xe602;</span>
全选
<span>全选</span>
</label>
</div>
<div id="remove_selected" class="action">删除选中的商品</div>
... ...
... ... @@ -13,4 +13,9 @@ module.exports = app => {
// app.use('/passport', require('./apps/passport'));
app.use('/shopping', require('./apps/shopping')); // 购物车
app.use('/', require('./apps/channel')); // 频道页
app.use('/me', require('./apps/me')); // 个人中心
// 资讯
app.use('/editorial', require('./apps/editorial'));
};
... ...
<div class="yoho-footer">
<div class="blk-footer">
<div class="center-content">
<ul class="about-us clearfix">
<li><a href="#">BLK首页</a></li>
... ...
{{#if nav}}
<p class="path-nav">
{{#each pathNav}}
{{#if href}}
<a {{#if @last}}class="last"{{/if}} href="{{href}}" title="{{pathTitle}}">{{{name}}}</a>
{{#each nav}}
{{#if link}}
<a {{#if @last}}class="last"{{/if}} href="{{link}}" title="{{pathTitle}}">{{{name}}}</a>
{{^}}
<span {{#if @last}}class="last"{{/if}} title="{{pathTitle}}">{{{name}}}</span>
{{/if}}
... ...
[{ gender: '1',
tags: [Object],
status: 1,
smallSortId: 115,
vip1Price: 379.04999999999995,
isGlobal: 'N',
vip3Price: 351.12,
isOutlets: 2,
isDiscount: 'Y',
brandDomain: 'allenove',
isSpecial: 'N',
goodsList: [Object],
isAdvance: 'N',
productId: 286135,
vipDiscountType: 1,
salesNum: 0,
cnAlphabet: 'ALLENOVE95S11GeBenHaGen',
productSkn: 51160998,
shelveTime: 1455616165,
vip2Price: 359.1,
editTime: 1455616165,
isNew: 'N',
isLimited: 'N',
brandName: 'Alle nove',
maxSortId: 1,
productName: 'Alle nove 小方领长袖衬衫【哥本哈根】',
brandId: 1007,
defaultImages: 'http://img13.static.yhbimg.com/goodsimg/2015/10/21/05/0279bf8ab67a6c962b08e37b3a13ce3401.jpg?imageMogr2/thumbnail/{width}x{height}/extent/{width}x{height}/background/d2hpdGU=/position/center/quality/80',
stockNumber: 29,
storageNum: 29,
isSoonSoldOut: false,
middleSortId: 12,
salesPrice: 399,
isPromotion: 101,
marketPrice: 1299,
vipPrice: 0,
id: 51160998,
thumb: 'http://img13.static.yhbimg.com/goodsimg/2015/10/21/05/0279bf8ab67a6c962b08e37b3a13ce3401.jpg?imageMogr2/thumbnail/{width}x{height}/extent/{width}x{height}/background/d2hpdGU=/position/center/quality/80',
url: 'http://www.yohobuy.com/product/pro_286135_367985/ALLENOVE95S11GeBenHaGen.html',
brandUrl: '//allenove.yohobuy.com' },
{ gender: '1',
tags: [Object],
status: 1,
smallSortId: 115,
vip1Price: 379.04999999999995,
isGlobal: 'N',
vip3Price: 351.12,
isOutlets: 2,
isDiscount: 'Y',
brandDomain: 'allenove',
isSpecial: 'N',
goodsList: [Object],
isAdvance: 'N',
productId: 286137,
vipDiscountType: 1,
salesNum: 0,
cnAlphabet: 'ALLENOVE95S12SaiWeiLiYa',
productSkn: 51160999,
shelveTime: 1455616165,
vip2Price: 359.1,
editTime: 1455616165,
isNew: 'N',
isLimited: 'N',
brandName: 'Alle nove',
maxSortId: 1,
productName: 'Alle nove 暗扣领长袖衬衫【塞维利亚】',
brandId: 1007,
defaultImages: 'http://img10.static.yhbimg.com/goodsimg/2015/10/21/03/01d7c265b0fa3fe1a582a73ad9175eab69.jpg?imageMogr2/thumbnail/{width}x{height}/extent/{width}x{height}/background/d2hpdGU=/position/center/quality/80',
stockNumber: 23,
storageNum: 23,
isSoonSoldOut: false,
middleSortId: 12,
salesPrice: 399,
isPromotion: 101,
marketPrice: 1299,
vipPrice: 0,
id: 51160999,
thumb: 'http://img10.static.yhbimg.com/goodsimg/2015/10/21/03/01d7c265b0fa3fe1a582a73ad9175eab69.jpg?imageMogr2/thumbnail/{width}x{height}/extent/{width}x{height}/background/d2hpdGU=/position/center/quality/80',
url: 'http://www.yohobuy.com/product/pro_286137_367987/ALLENOVE95S12SaiWeiLiYa.html',
brandUrl: '//allenove.yohobuy.com' },
{ gender: '1',
tags: [Object],
status: 1,
smallSortId: 115,
vip1Price: 379.04999999999995,
isGlobal: 'N',
vip3Price: 351.12,
isOutlets: 2,
isDiscount: 'Y',
brandDomain: 'allenove',
isSpecial: 'N',
goodsList: [Object],
isAdvance: 'N',
productId: 286139,
vipDiscountType: 1,
salesNum: 0,
cnAlphabet: 'ALLENOVE95S13PuLuoWangSi',
productSkn: 51161000,
shelveTime: 1455616165,
vip2Price: 359.1,
editTime: 1455616165,
isNew: 'N',
isLimited: 'N',
brandName: 'Alle nove',
maxSortId: 1,
productName: 'Alle nove 复古圆领长袖衬衫【普罗旺斯】',
brandId: 1007,
defaultImages: 'http://img12.static.yhbimg.com/goodsimg/2015/10/21/03/02705334cacca0a06edec049918290f7b3.jpg?imageMogr2/thumbnail/{width}x{height}/extent/{width}x{height}/background/d2hpdGU=/position/center/quality/80',
stockNumber: 12,
storageNum: 12,
isSoonSoldOut: false,
middleSortId: 12,
salesPrice: 399,
isPromotion: 101,
marketPrice: 1299,
vipPrice: 0,
id: 51161000,
thumb: 'http://img12.static.yhbimg.com/goodsimg/2015/10/21/03/02705334cacca0a06edec049918290f7b3.jpg?imageMogr2/thumbnail/{width}x{height}/extent/{width}x{height}/background/d2hpdGU=/position/center/quality/80',
url: 'http://www.yohobuy.com/product/pro_286139_367989/ALLENOVE95S13PuLuoWangSi.html',
brandUrl: '//allenove.yohobuy.com' },
{ gender: '1',
tags: [Object],
status: 1,
smallSortId: 115,
vip1Price: 284.05,
isGlobal: 'N',
vip3Price: 263.12,
isOutlets: 2,
isDiscount: 'Y',
brandDomain: 'allenove',
isSpecial: 'N',
goodsList: [Object],
isAdvance: 'N',
productId: 286141,
vipDiscountType: 1,
salesNum: 0,
cnAlphabet: 'ALLENOVE95S14WeiYeNa',
productSkn: 51161001,
shelveTime: 1455616165,
vip2Price: 269.1,
editTime: 1455616165,
isNew: 'N',
isLimited: 'N',
brandName: 'Alle nove',
maxSortId: 1,
productName: 'Alle nove 翼型领长袖衬衫【维也纳】',
brandId: 1007,
defaultImages: 'http://img10.static.yhbimg.com/goodsimg/2015/10/21/02/0128dc014524ccf208b4f6f7760c9b9cf2.jpg?imageMogr2/thumbnail/{width}x{height}/extent/{width}x{height}/background/d2hpdGU=/position/center/quality/80',
stockNumber: 21,
storageNum: 21,
isSoonSoldOut: false,
middleSortId: 12,
salesPrice: 299,
isPromotion: 101,
marketPrice: 1299,
vipPrice: 0,
id: 51161001,
thumb: 'http://img10.static.yhbimg.com/goodsimg/2015/10/21/02/0128dc014524ccf208b4f6f7760c9b9cf2.jpg?imageMogr2/thumbnail/{width}x{height}/extent/{width}x{height}/background/d2hpdGU=/position/center/quality/80',
url: 'http://www.yohobuy.com/product/pro_286141_367991/ALLENOVE95S14WeiYeNa.html',
brandUrl: '//allenove.yohobuy.com' },
{ gender: '1',
tags: [Object],
status: 1,
smallSortId: 115,
vip1Price: 379.04999999999995,
isGlobal: 'N',
vip3Price: 351.12,
isOutlets: 2,
isDiscount: 'Y',
brandDomain: 'allenove',
isSpecial: 'N',
goodsList: [Object],
isAdvance: 'N',
productId: 286143,
vipDiscountType: 1,
salesNum: 0,
cnAlphabet: 'ALLENOVE95S20BaSaiLuoNa',
productSkn: 51161002,
shelveTime: 1455616165,
vip2Price: 359.1,
editTime: 1455616165,
isNew: 'N',
isLimited: 'N',
brandName: 'Alle nove',
maxSortId: 1,
productName: 'Alle nove 纽扣领绅士长袖衬衫【巴塞罗那】',
brandId: 1007,
defaultImages: 'http://img12.static.yhbimg.com/goodsimg/2015/10/21/05/024f60a070ab61981c139684f147d41f17.jpg?imageMogr2/thumbnail/{width}x{height}/extent/{width}x{height}/background/d2hpdGU=/position/center/quality/80',
stockNumber: 25,
storageNum: 25,
isSoonSoldOut: false,
middleSortId: 12,
salesPrice: 399,
isPromotion: 101,
marketPrice: 1299,
vipPrice: 0,
id: 51161002,
thumb: 'http://img12.static.yhbimg.com/goodsimg/2015/10/21/05/024f60a070ab61981c139684f147d41f17.jpg?imageMogr2/thumbnail/{width}x{height}/extent/{width}x{height}/background/d2hpdGU=/position/center/quality/80',
url: 'http://www.yohobuy.com/product/pro_286143_367993/ALLENOVE95S20BaSaiLuoNa.html',
brandUrl: '//allenove.yohobuy.com' },
{ gender: '1',
tags: [Object],
status: 1,
smallSortId: 115,
vip1Price: 379.04999999999995,
isGlobal: 'N',
vip3Price: 351.12,
isOutlets: 2,
isDiscount: 'Y',
brandDomain: 'allenove',
isSpecial: 'N',
goodsList: [Object],
isAdvance: 'N',
productId: 286145,
vipDiscountType: 1,
salesNum: 0,
cnAlphabet: 'ALLENOVE95S16MoNaGe',
productSkn: 51161003,
shelveTime: 1455616145,
vip2Price: 359.1,
editTime: 1455616145,
isNew: 'N',
isLimited: 'N',
brandName: 'Alle nove',
maxSortId: 1,
productName: 'Alle nove 八角领暗扣长袖衬衫【摩纳哥】',
brandId: 1007,
defaultImages: 'http://img13.static.yhbimg.com/goodsimg/2015/10/21/03/0201c195bd3208c2b9440ff79c8ca4b0d0.jpg?imageMogr2/thumbnail/{width}x{height}/extent/{width}x{height}/background/d2hpdGU=/position/center/quality/80',
stockNumber: 11,
storageNum: 11,
isSoonSoldOut: false,
middleSortId: 12,
salesPrice: 399,
isPromotion: 101,
marketPrice: 1299,
vipPrice: 0,
id: 51161003,
thumb: 'http://img13.static.yhbimg.com/goodsimg/2015/10/21/03/0201c195bd3208c2b9440ff79c8ca4b0d0.jpg?imageMogr2/thumbnail/{width}x{height}/extent/{width}x{height}/background/d2hpdGU=/position/center/quality/80',
url: 'http://www.yohobuy.com/product/pro_286145_367995/ALLENOVE95S16MoNaGe.html',
brandUrl: '//allenove.yohobuy.com' },
{ gender: '1',
tags: [Object],
status: 1,
smallSortId: 115,
vip1Price: 379.04999999999995,
isGlobal: 'N',
vip3Price: 351.12,
isOutlets: 2,
isDiscount: 'Y',
brandDomain: 'allenove',
isSpecial: 'N',
goodsList: [Object],
isAdvance: 'N',
productId: 286147,
vipDiscountType: 1,
salesNum: 0,
cnAlphabet: 'ALLENOVE95S17JiaNa',
productSkn: 51161004,
shelveTime: 1455616145,
vip2Price: 359.1,
editTime: 1455616145,
isNew: 'N',
isLimited: 'N',
brandName: 'Alle nove',
maxSortId: 1,
productName: 'Alle nove 小尖领休闲长袖衬衫【戛纳】',
brandId: 1007,
defaultImages: 'http://img10.static.yhbimg.com/goodsimg/2015/10/21/05/012c30a214b950997ba7bcaacc6f54e260.jpg?imageMogr2/thumbnail/{width}x{height}/extent/{width}x{height}/background/d2hpdGU=/position/center/quality/80',
stockNumber: 27,
storageNum: 27,
isSoonSoldOut: false,
middleSortId: 12,
salesPrice: 399,
isPromotion: 101,
marketPrice: 1299,
vipPrice: 0,
id: 51161004,
thumb: 'http://img10.static.yhbimg.com/goodsimg/2015/10/21/05/012c30a214b950997ba7bcaacc6f54e260.jpg?imageMogr2/thumbnail/{width}x{height}/extent/{width}x{height}/background/d2hpdGU=/position/center/quality/80',
url: 'http://www.yohobuy.com/product/pro_286147_367997/ALLENOVE95S17JiaNa.html',
brandUrl: '//allenove.yohobuy.com' },
{ gender: '1',
tags: [Object],
status: 1,
smallSortId: 115,
vip1Price: 569.05,
isGlobal: 'N',
vip3Price: 527.12,
isOutlets: 2,
isDiscount: 'Y',
brandDomain: 'allenove',
isSpecial: 'N',
goodsList: [Object],
isAdvance: 'N',
productId: 286149,
vipDiscountType: 1,
salesNum: 0,
cnAlphabet: 'ALLENOVE95S18DiBai',
productSkn: 51161005,
shelveTime: 1455616145,
vip2Price: 539.1,
editTime: 1455616145,
isNew: 'N',
isLimited: 'N',
brandName: 'Alle nove',
maxSortId: 1,
productName: 'Alle nove 针扣领修身长袖衬衫【迪拜】',
brandId: 1007,
defaultImages: 'http://img13.static.yhbimg.com/goodsimg/2015/10/21/03/02bd6880c2f08b184c40456ea4e39c5677.jpg?imageMogr2/thumbnail/{width}x{height}/extent/{width}x{height}/background/d2hpdGU=/position/center/quality/80',
stockNumber: 19,
storageNum: 19,
isSoonSoldOut: false,
middleSortId: 12,
salesPrice: 599,
isPromotion: 101,
marketPrice: 1299,
vipPrice: 0,
id: 51161005,
thumb: 'http://img13.static.yhbimg.com/goodsimg/2015/10/21/03/02bd6880c2f08b184c40456ea4e39c5677.jpg?imageMogr2/thumbnail/{width}x{height}/extent/{width}x{height}/background/d2hpdGU=/position/center/quality/80',
url: 'http://www.yohobuy.com/product/pro_286149_367999/ALLENOVE95S18DiBai.html',
brandUrl: '//allenove.yohobuy.com' },
{ gender: '1',
tags: [Object],
status: 1,
smallSortId: 115,
vip1Price: 379.04999999999995,
isGlobal: 'N',
vip3Price: 351.12,
isOutlets: 2,
isDiscount: 'Y',
brandDomain: 'allenove',
isSpecial: 'N',
goodsList: [Object],
isAdvance: 'N',
productId: 286151,
vipDiscountType: 1,
salesNum: 0,
cnAlphabet: 'ALLENOVE95S19LunDun',
productSkn: 51161006,
shelveTime: 1455616145,
vip2Price: 359.1,
editTime: 1455616145,
isNew: 'N',
isLimited: 'N',
brandName: 'Alle nove',
maxSortId: 1,
productName: 'Alle nove 温莎领修身长袖衬衫【伦敦】',
brandId: 1007,
defaultImages: 'http://img13.static.yhbimg.com/goodsimg/2015/10/21/05/0223b2f91fb9e11cb7abced7a8a5219363.jpg?imageMogr2/thumbnail/{width}x{height}/extent/{width}x{height}/background/d2hpdGU=/position/center/quality/80',
stockNumber: 24,
storageNum: 24,
isSoonSoldOut: false,
middleSortId: 12,
salesPrice: 399,
isPromotion: 101,
marketPrice: 1299,
vipPrice: 0,
id: 51161006,
thumb: 'http://img13.static.yhbimg.com/goodsimg/2015/10/21/05/0223b2f91fb9e11cb7abced7a8a5219363.jpg?imageMogr2/thumbnail/{width}x{height}/extent/{width}x{height}/background/d2hpdGU=/position/center/quality/80',
url: 'http://www.yohobuy.com/product/pro_286151_368001/ALLENOVE95S19LunDun.html',
brandUrl: '//allenove.yohobuy.com' },
{ gender: '1',
tags: [Object],
status: 1,
smallSortId: 115,
vip1Price: 379.04999999999995,
isGlobal: 'N',
vip3Price: 351.12,
isOutlets: 2,
isDiscount: 'Y',
brandDomain: 'allenove',
isSpecial: 'N',
goodsList: [Object],
isAdvance: 'N',
productId: 286153,
vipDiscountType: 1,
salesNum: 0,
cnAlphabet: 'ALLENOVE95S21BaiLin',
productSkn: 51161007,
shelveTime: 1455616145,
vip2Price: 359.1,
editTime: 1455616145,
isNew: 'N',
isLimited: 'N',
brandName: 'Alle nove',
maxSortId: 1,
productName: 'Alle nove 纯棉经典领长袖衬衫【柏林】',
brandId: 1007,
defaultImages: 'http://img11.static.yhbimg.com/goodsimg/2015/10/21/03/01cba4e729c4db95583c6262bf3c486f33.jpg?imageMogr2/thumbnail/{width}x{height}/extent/{width}x{height}/background/d2hpdGU=/position/center/quality/80',
stockNumber: 22,
storageNum: 22,
isSoonSoldOut: false,
middleSortId: 12,
salesPrice: 399,
isPromotion: 101,
marketPrice: 1299,
vipPrice: 0,
id: 51161007,
thumb: 'http://img11.static.yhbimg.com/goodsimg/2015/10/21/03/01cba4e729c4db95583c6262bf3c486f33.jpg?imageMogr2/thumbnail/{width}x{height}/extent/{width}x{height}/background/d2hpdGU=/position/center/quality/80',
url: 'http://www.yohobuy.com/product/pro_286153_368003/ALLENOVE95S21BaiLin.html',
brandUrl: '//allenove.yohobuy.com' },
{ gender: '1',
tags: [Object],
status: 1,
smallSortId: 115,
vip1Price: 284.05,
isGlobal: 'N',
vip3Price: 263.12,
isOutlets: 2,
isDiscount: 'Y',
brandDomain: 'allenove',
isSpecial: 'N',
goodsList: [Object],
isAdvance: 'N',
productId: 286155,
vipDiscountType: 1,
salesNum: 0,
cnAlphabet: 'ALLENOVE95S22SuLiShi',
productSkn: 51161008,
shelveTime: 1455616145,
vip2Price: 269.1,
editTime: 1455616145,
isNew: 'N',
isLimited: 'N',
brandName: 'Alle nove',
maxSortId: 1,
productName: 'Alle nove 全棉小立领长袖衬衫【苏黎世】',
brandId: 1007,
defaultImages: 'http://img10.static.yhbimg.com/goodsimg/2015/10/21/03/01eef29de93d174236c644a7fdb4b22896.jpg?imageMogr2/thumbnail/{width}x{height}/extent/{width}x{height}/background/d2hpdGU=/position/center/quality/80',
stockNumber: 6,
storageNum: 6,
isSoonSoldOut: false,
middleSortId: 12,
salesPrice: 299,
isPromotion: 107,
marketPrice: 1299,
vipPrice: 0,
id: 51161008,
thumb: 'http://img10.static.yhbimg.com/goodsimg/2015/10/21/03/01eef29de93d174236c644a7fdb4b22896.jpg?imageMogr2/thumbnail/{width}x{height}/extent/{width}x{height}/background/d2hpdGU=/position/center/quality/80',
url: 'http://www.yohobuy.com/product/pro_286155_368005/ALLENOVE95S22SuLiShi.html',
brandUrl: '//allenove.yohobuy.com' },
{ gender: '1',
tags: [Object],
status: 1,
smallSortId: 115,
vip1Price: 379.04999999999995,
isGlobal: 'N',
vip3Price: 351.12,
isOutlets: 2,
isDiscount: 'Y',
brandDomain: 'allenove',
isSpecial: 'N',
goodsList: [Object],
isAdvance: 'N',
productId: 286157,
vipDiscountType: 1,
salesNum: 0,
cnAlphabet: 'ALLENOVE94W03WeiNiSi',
productSkn: 51161009,
shelveTime: 1455616145,
vip2Price: 359.1,
editTime: 1455616145,
isNew: 'N',
isLimited: 'N',
brandName: 'Alle nove',
maxSortId: 1,
productName: 'Alle nove 高支全棉纽扣领长袖白衬衫【威尼斯】',
brandId: 1007,
defaultImages: 'http://img11.static.yhbimg.com/goodsimg/2015/10/21/05/01c9d17fcf823abbf27307ae8979254ad5.jpg?imageMogr2/thumbnail/{width}x{height}/extent/{width}x{height}/background/d2hpdGU=/position/center/quality/80',
stockNumber: 6,
storageNum: 6,
isSoonSoldOut: false,
middleSortId: 12,
salesPrice: 399,
isPromotion: 107,
marketPrice: 1299,
vipPrice: 0,
id: 51161009,
thumb: 'http://img11.static.yhbimg.com/goodsimg/2015/10/21/05/01c9d17fcf823abbf27307ae8979254ad5.jpg?imageMogr2/thumbnail/{width}x{height}/extent/{width}x{height}/background/d2hpdGU=/position/center/quality/80',
url: 'http://www.yohobuy.com/product/pro_286157_368007/ALLENOVE94W03WeiNiSi.html',
brandUrl: '//allenove.yohobuy.com' },
{ gender: '1',
tags: [Object],
status: 1,
smallSortId: 115,
vip1Price: 379.04999999999995,
isGlobal: 'N',
vip3Price: 351.12,
isOutlets: 2,
isDiscount: 'Y',
brandDomain: 'allenove',
isSpecial: 'N',
goodsList: [Object],
isAdvance: 'N',
productId: 286159,
vipDiscountType: 1,
salesNum: 0,
cnAlphabet: 'ALLENOVE94W04MiLan',
productSkn: 51161010,
shelveTime: 1455616145,
vip2Price: 359.1,
editTime: 1455616145,
isNew: 'N',
isLimited: 'N',
brandName: 'Alle nove',
maxSortId: 1,
productName: 'Alle nove 牛津纺纽扣领长袖衬衫【米兰】',
brandId: 1007,
defaultImages: 'http://img11.static.yhbimg.com/goodsimg/2015/10/21/03/0195cc3c08f174f94895dc6459546adb88.jpg?imageMogr2/thumbnail/{width}x{height}/extent/{width}x{height}/background/d2hpdGU=/position/center/quality/80',
stockNumber: 20,
storageNum: 20,
isSoonSoldOut: false,
middleSortId: 12,
salesPrice: 399,
isPromotion: 101,
marketPrice: 1299,
vipPrice: 0,
id: 51161010,
thumb: 'http://img11.static.yhbimg.com/goodsimg/2015/10/21/03/0195cc3c08f174f94895dc6459546adb88.jpg?imageMogr2/thumbnail/{width}x{height}/extent/{width}x{height}/background/d2hpdGU=/position/center/quality/80',
url: 'http://www.yohobuy.com/product/pro_286159_368009/ALLENOVE94W04MiLan.html',
brandUrl: '//allenove.yohobuy.com' },
{ gender: '1',
tags: [Object],
status: 1,
smallSortId: 115,
vip1Price: 379.04999999999995,
isGlobal: 'N',
vip3Price: 351.12,
isOutlets: 2,
isDiscount: 'Y',
brandDomain: 'allenove',
isSpecial: 'N',
goodsList: [Object],
isAdvance: 'N',
productId: 286161,
vipDiscountType: 1,
salesNum: 0,
cnAlphabet: 'ALLENOVE94W01LuoMa',
productSkn: 51161011,
shelveTime: 1455616145,
vip2Price: 359.1,
editTime: 1455616145,
isNew: 'N',
isLimited: 'N',
brandName: 'Alle nove',
maxSortId: 1,
productName: 'Alle nove 高支贡缎小立领长袖衬衫【罗马】',
brandId: 1007,
defaultImages: 'http://img12.static.yhbimg.com/goodsimg/2015/10/21/04/028414be94fa849fc41e1101611c613409.jpg?imageMogr2/thumbnail/{width}x{height}/extent/{width}x{height}/background/d2hpdGU=/position/center/quality/80',
stockNumber: 27,
storageNum: 27,
isSoonSoldOut: false,
middleSortId: 12,
salesPrice: 399,
isPromotion: 101,
marketPrice: 1299,
vipPrice: 0,
id: 51161011,
thumb: 'http://img12.static.yhbimg.com/goodsimg/2015/10/21/04/028414be94fa849fc41e1101611c613409.jpg?imageMogr2/thumbnail/{width}x{height}/extent/{width}x{height}/background/d2hpdGU=/position/center/quality/80',
url: 'http://www.yohobuy.com/product/pro_286161_368011/ALLENOVE94W01LuoMa.html',
brandUrl: '//allenove.yohobuy.com' },
{ gender: '1',
tags: [Object],
status: 1,
smallSortId: 115,
vip1Price: 379.04999999999995,
isGlobal: 'N',
vip3Price: 351.12,
isOutlets: 2,
isDiscount: 'Y',
brandDomain: 'allenove',
isSpecial: 'N',
goodsList: [Object],
isAdvance: 'N',
productId: 286163,
vipDiscountType: 1,
salesNum: 0,
cnAlphabet: 'ALLENOVE94W02FoLuoLunSa',
productSkn: 51161012,
shelveTime: 1455616145,
vip2Price: 359.1,
editTime: 1455616145,
isNew: 'N',
isLimited: 'N',
brandName: 'Alle nove',
maxSortId: 1,
productName: 'Alle nove 高支暗扣领长袖衬衫【佛罗伦萨】',
brandId: 1007,
defaultImages: 'http://img13.static.yhbimg.com/goodsimg/2015/10/21/05/02746e770faba438814eadaa0802a5fea4.jpg?imageMogr2/thumbnail/{width}x{height}/extent/{width}x{height}/background/d2hpdGU=/position/center/quality/80',
stockNumber: 42,
storageNum: 42,
isSoonSoldOut: false,
middleSortId: 12,
salesPrice: 399,
isPromotion: 101,
marketPrice: 1299,
vipPrice: 0,
id: 51161012,
thumb: 'http://img13.static.yhbimg.com/goodsimg/2015/10/21/05/02746e770faba438814eadaa0802a5fea4.jpg?imageMogr2/thumbnail/{width}x{height}/extent/{width}x{height}/background/d2hpdGU=/position/center/quality/80',
url: 'http://www.yohobuy.com/product/pro_286163_368013/ALLENOVE94W02FoLuoLunSa.html',
brandUrl: '//allenove.yohobuy.com' },
{ gender: '1',
tags: [Object],
status: 1,
smallSortId: 115,
vip1Price: 379.04999999999995,
isGlobal: 'N',
vip3Price: 351.12,
isOutlets: 2,
isDiscount: 'Y',
brandDomain: 'allenove',
isSpecial: 'N',
goodsList: [Object],
isAdvance: 'N',
productId: 286165,
vipDiscountType: 1,
salesNum: 0,
cnAlphabet: 'ALLENOVE94W06XiXiLi',
productSkn: 51161013,
shelveTime: 1455616145,
vip2Price: 359.1,
editTime: 1455616145,
isNew: 'N',
isLimited: 'N',
brandName: 'Alle nove',
maxSortId: 1,
productName: 'Alle nove 纯棉方领长袖衬衫【西西里】',
brandId: 1007,
defaultImages: 'http://img12.static.yhbimg.com/goodsimg/2015/10/21/03/02737e160d707dbfc5b6ce83b8f6b2affc.jpg?imageMogr2/thumbnail/{width}x{height}/extent/{width}x{height}/background/d2hpdGU=/position/center/quality/80',
stockNumber: 16,
storageNum: 16,
isSoonSoldOut: false,
middleSortId: 12,
salesPrice: 399,
isPromotion: 101,
marketPrice: 1299,
vipPrice: 0,
id: 51161013,
thumb: 'http://img12.static.yhbimg.com/goodsimg/2015/10/21/03/02737e160d707dbfc5b6ce83b8f6b2affc.jpg?imageMogr2/thumbnail/{width}x{height}/extent/{width}x{height}/background/d2hpdGU=/position/center/quality/80',
url: 'http://www.yohobuy.com/product/pro_286165_368015/ALLENOVE94W06XiXiLi.html',
brandUrl: '//allenove.yohobuy.com' },
{ gender: '1',
tags: [Object],
status: 1,
smallSortId: 115,
vip1Price: 379.04999999999995,
isGlobal: 'N',
vip3Price: 351.12,
isOutlets: 2,
isDiscount: 'Y',
brandDomain: 'allenove',
isSpecial: 'N',
goodsList: [Object],
isAdvance: 'N',
productId: 286167,
vipDiscountType: 1,
salesNum: 0,
cnAlphabet: 'ALLENOVE94W08WuDaKe',
productSkn: 51161014,
shelveTime: 1455616145,
vip2Price: 359.1,
editTime: 1455616145,
isNew: 'N',
isLimited: 'N',
brandName: 'Alle nove',
maxSortId: 1,
productName: 'Alle nove 牛津纺小尖领长袖衬衫【邬达克】',
brandId: 1007,
defaultImages: 'http://img11.static.yhbimg.com/goodsimg/2015/10/21/04/01215c4e0d8860a0e0f2056ba7a8d5cbd7.jpg?imageMogr2/thumbnail/{width}x{height}/extent/{width}x{height}/background/d2hpdGU=/position/center/quality/80',
stockNumber: 21,
storageNum: 21,
isSoonSoldOut: false,
middleSortId: 12,
salesPrice: 399,
isPromotion: 101,
marketPrice: 1299,
vipPrice: 0,
id: 51161014,
thumb: 'http://img11.static.yhbimg.com/goodsimg/2015/10/21/04/01215c4e0d8860a0e0f2056ba7a8d5cbd7.jpg?imageMogr2/thumbnail/{width}x{height}/extent/{width}x{height}/background/d2hpdGU=/position/center/quality/80',
url: 'http://www.yohobuy.com/product/pro_286167_368017/ALLENOVE94W08WuDaKe.html',
brandUrl: '//allenove.yohobuy.com' },
{ gender: '1',
tags: [Object],
status: 1,
smallSortId: 115,
vip1Price: 379.04999999999995,
isGlobal: 'N',
vip3Price: 351.12,
isOutlets: 2,
isDiscount: 'Y',
brandDomain: 'allenove',
isSpecial: 'N',
goodsList: [Object],
isAdvance: 'N',
productId: 286169,
vipDiscountType: 1,
salesNum: 0,
cnAlphabet: 'ALLENOVE95S09BiSa',
productSkn: 51161015,
shelveTime: 1455616145,
vip2Price: 359.1,
editTime: 1455616145,
isNew: 'N',
isLimited: 'N',
brandName: 'Alle nove',
maxSortId: 1,
productName: 'Alle nove 高支牛津休闲长袖衬衫【比萨】',
brandId: 1007,
defaultImages: 'http://img13.static.yhbimg.com/goodsimg/2015/10/21/05/027f47db67ca5cdb9fa996c8300947b975.jpg?imageMogr2/thumbnail/{width}x{height}/extent/{width}x{height}/background/d2hpdGU=/position/center/quality/80',
stockNumber: 27,
storageNum: 27,
isSoonSoldOut: false,
middleSortId: 12,
salesPrice: 399,
isPromotion: 101,
marketPrice: 1299,
vipPrice: 0,
id: 51161015,
thumb: 'http://img13.static.yhbimg.com/goodsimg/2015/10/21/05/027f47db67ca5cdb9fa996c8300947b975.jpg?imageMogr2/thumbnail/{width}x{height}/extent/{width}x{height}/background/d2hpdGU=/position/center/quality/80',
url: 'http://www.yohobuy.com/product/pro_286169_368019/ALLENOVE95S09BiSa.html',
brandUrl: '//allenove.yohobuy.com' },
{ gender: '1',
tags: [Object],
status: 1,
smallSortId: 258,
vip1Price: 379.04999999999995,
isGlobal: 'N',
vip3Price: 351.12,
isOutlets: 2,
isDiscount: 'Y',
brandDomain: 'allenove',
isSpecial: 'N',
goodsList: [Object],
isAdvance: 'N',
productId: 286171,
vipDiscountType: 1,
salesNum: 0,
cnAlphabet: 'ALLENOVE94W07WeiLanHaiAn',
productSkn: 51161016,
shelveTime: 1455616145,
vip2Price: 359.1,
editTime: 1455616145,
isNew: 'N',
isLimited: 'N',
brandName: 'Alle nove',
maxSortId: 1,
productName: 'Alle nove 休闲羊毛拼色套头针织衫【蔚蓝海岸】',
brandId: 1007,
defaultImages: 'http://img11.static.yhbimg.com/goodsimg/2015/10/21/06/01f0b2b712c99cb6b318f69d1ba6631475.jpg?imageMogr2/thumbnail/{width}x{height}/extent/{width}x{height}/background/d2hpdGU=/position/center/quality/80',
stockNumber: 26,
storageNum: 26,
isSoonSoldOut: false,
middleSortId: 257,
salesPrice: 399,
isPromotion: 101,
marketPrice: 1299,
vipPrice: 0,
id: 51161016,
thumb: 'http://img11.static.yhbimg.com/goodsimg/2015/10/21/06/01f0b2b712c99cb6b318f69d1ba6631475.jpg?imageMogr2/thumbnail/{width}x{height}/extent/{width}x{height}/background/d2hpdGU=/position/center/quality/80',
url: 'http://www.yohobuy.com/product/pro_286171_368021/ALLENOVE94W07WeiLanHaiAn.html',
brandUrl: '//allenove.yohobuy.com' },
{ gender: '1',
tags: [Object],
status: 1,
smallSortId: 348,
vip1Price: 379.04999999999995,
isGlobal: 'N',
vip3Price: 351.12,
isOutlets: 2,
isDiscount: 'Y',
brandDomain: 'allenove',
isSpecial: 'N',
goodsList: [Object],
isAdvance: 'N',
productId: 286173,
vipDiscountType: 1,
salesNum: 0,
cnAlphabet: 'ALLENOVE94W05PangBei',
productSkn: 51161017,
shelveTime: 1455616145,
vip2Price: 359.1,
editTime: 1455616145,
isNew: 'N',
isLimited: 'N',
brandName: 'Alle nove',
maxSortId: 3,
productName: 'Alle nove 休闲直筒小脚西裤 【庞贝】',
brandId: 1007,
defaultImages: 'http://img12.static.yhbimg.com/goodsimg/2015/10/23/03/025f4428b07529c7bf64fc5e1fd20a4779.jpg?imageMogr2/thumbnail/{width}x{height}/extent/{width}x{height}/background/d2hpdGU=/position/center/quality/80',
stockNumber: 5,
storageNum: 5,
isSoonSoldOut: false,
middleSortId: 347,
salesPrice: 399,
isPromotion: 0,
marketPrice: 1299,
vipPrice: 0,
id: 51161017,
thumb: 'http://img12.static.yhbimg.com/goodsimg/2015/10/23/03/025f4428b07529c7bf64fc5e1fd20a4779.jpg?imageMogr2/thumbnail/{width}x{height}/extent/{width}x{height}/background/d2hpdGU=/position/center/quality/80',
url: 'http://www.yohobuy.com/product/pro_286173_368023/ALLENOVE94W05PangBei.html',
brandUrl: '//allenove.yohobuy.com' },
{ gender: '1',
tags: [Object],
status: 1,
smallSortId: 348,
vip1Price: 379.04999999999995,
isGlobal: 'N',
vip3Price: 351.12,
isOutlets: 2,
isDiscount: 'Y',
brandDomain: 'allenove',
isSpecial: 'N',
goodsList: [Object],
isAdvance: 'N',
productId: 305623,
vipDiscountType: 1,
salesNum: 0,
salesPhrase: '',
cnAlphabet: 'ALLENOVEXiNiXiuXianXiKu95S24',
productSkn: 51170202,
shelveTime: 1455616145,
vip2Price: 359.1,
editTime: 1455616145,
isNew: 'N',
isLimited: 'N',
brandName: 'Alle nove',
maxSortId: 3,
productName: 'Alle nove 直筒休闲西裤【悉尼】',
brandId: 1007,
defaultImages: 'http://img13.static.yhbimg.com/goodsimg/2015/12/21/05/0202c165b52fe5324af8c5063fafafd70c.jpg?imageMogr2/thumbnail/{width}x{height}/extent/{width}x{height}/background/d2hpdGU=/position/center/quality/80',
stockNumber: 41,
storageNum: 41,
isSoonSoldOut: false,
middleSortId: 347,
salesPrice: 399,
isPromotion: 0,
marketPrice: 1299,
vipPrice: 0,
id: 51170202,
thumb: 'http://img13.static.yhbimg.com/goodsimg/2015/12/21/05/0202c165b52fe5324af8c5063fafafd70c.jpg?imageMogr2/thumbnail/{width}x{height}/extent/{width}x{height}/background/d2hpdGU=/position/center/quality/80',
url: 'http://www.yohobuy.com/product/pro_305623_391759/ALLENOVEXiNiXiuXianXiKu95S24.html',
brandUrl: '//allenove.yohobuy.com' },
{ gender: '1',
tags: [Object],
status: 1,
smallSortId: 115,
vip1Price: 379.04999999999995,
isGlobal: 'N',
vip3Price: 351.12,
isOutlets: 2,
isDiscount: 'Y',
brandDomain: 'allenove',
isSpecial: 'N',
goodsList: [Object],
isAdvance: 'N',
productId: 316057,
vipDiscountType: 1,
salesNum: 0,
salesPhrase: '',
cnAlphabet: 'ALLENOVE95S15BuDaPeiSi',
productSkn: 51175665,
shelveTime: 1455616145,
vip2Price: 359.1,
editTime: 1455616145,
isNew: 'N',
isLimited: 'N',
brandName: 'Alle nove',
maxSortId: 1,
productName: 'Alle nove 纯色经典长袖衬衫【布达佩斯】',
brandId: 1007,
defaultImages: 'http://img12.static.yhbimg.com/goodsimg/2015/11/25/05/02f989f2df7802105c8edad538c0800a46.jpg?imageMogr2/thumbnail/{width}x{height}/extent/{width}x{height}/background/d2hpdGU=/position/center/quality/80',
stockNumber: 7,
storageNum: 7,
isSoonSoldOut: false,
middleSortId: 12,
salesPrice: 399,
isPromotion: 101,
marketPrice: 1299,
vipPrice: 0,
id: 51175665,
thumb: 'http://img12.static.yhbimg.com/goodsimg/2015/11/25/05/02f989f2df7802105c8edad538c0800a46.jpg?imageMogr2/thumbnail/{width}x{height}/extent/{width}x{height}/background/d2hpdGU=/position/center/quality/80',
url: 'http://www.yohobuy.com/product/pro_316057_406639/ALLENOVE95S15BuDaPeiSi.html',
brandUrl: '//allenove.yohobuy.com' },
{ gender: '1',
tags: [Object],
status: 1,
smallSortId: 125,
vip1Price: 1424.05,
isGlobal: 'N',
vip3Price: 1319.1200000000001,
isOutlets: 2,
isDiscount: 'Y',
brandDomain: 'allenove',
isSpecial: 'N',
goodsList: [Object],
isAdvance: 'N',
productId: 330637,
vipDiscountType: 1,
salesNum: 0,
salesPhrase: '',
cnAlphabet: 'ALLENOVE95W25XiaLuoKeAZhenZhiYangMao',
productSkn: 51185013,
shelveTime: 1455616145,
vip2Price: 1349.1000000000001,
editTime: 1455616145,
isNew: 'N',
isLimited: 'N',
brandName: 'Alle nove',
maxSortId: 1,
productName: 'Alle nove 斜纹羊毛长款大衣【夏洛克】',
brandId: 1007,
defaultImages: 'http://img13.static.yhbimg.com/goodsimg/2015/12/30/02/02518673b0b7d3fcae96261f6065e71bf0.jpg?imageMogr2/thumbnail/{width}x{height}/extent/{width}x{height}/background/d2hpdGU=/position/center/quality/80',
stockNumber: 11,
storageNum: 11,
isSoonSoldOut: false,
middleSortId: 22,
salesPrice: 1499,
isPromotion: 101,
marketPrice: 3289,
vipPrice: 0,
id: 51185013,
thumb: 'http://img13.static.yhbimg.com/goodsimg/2015/12/30/02/02518673b0b7d3fcae96261f6065e71bf0.jpg?imageMogr2/thumbnail/{width}x{height}/extent/{width}x{height}/background/d2hpdGU=/position/center/quality/80',
url: 'http://www.yohobuy.com/product/pro_330637_425203/ALLENOVE95W25XiaLuoKeAZhenZhiYangMao.html',
brandUrl: '//allenove.yohobuy.com'
}]
\ No newline at end of file
... ...
No preview for this file type
... ... @@ -2,7 +2,7 @@
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
<svg xmlns="http://www.w3.org/2000/svg">
<metadata>
Created by FontForge 20120731 at Mon Jul 4 16:04:45 2016
Created by FontForge 20120731 at Mon Jul 4 15:42:03 2016
By admin
</metadata>
<defs>
... ...
No preview for this file type
No preview for this file type
... ... @@ -2,9 +2,9 @@ require('../plugins/slider');
$('.slide-container').slider();
$('.card').mouseenter(function() {
var $this = $(this);
var $this = $(this); // eslint-disable-line
if($this.hasClass('active')) {
if ($this.hasClass('active')) {
return false;
}
... ...
# common使用规范
## 页面公共使用的前端资源
### header为页面通用头部
### return-top为返回页面顶部(通用,除个人中心页面)
* returnTopShowOrNot 是否显示返回顶部的按钮
### index暴露一些通用api,通过require('path/to/common')引用即可
* cookie 获取cookie
* setCookie 设置cookie
* queryString 解析url query
**请按需require**。此处与之前的项目不一样,接口将不直接暴露到window,需通过require去获取暴露的方法。
\ No newline at end of file
... ...
/**
* 页面公共逻辑和接口
* @author: xuqi<qi.xu@yoho.cn>
* @date: 2015/11/23
* @date: 2017/7/5
*/
function cookie(name) {
... ... @@ -56,8 +56,8 @@ function queryString() {
return vars;
}
window.cookie = cookie;
window.setCookie = setCookie;
window.queryString = queryString;
module.exports = {
cookie: cookie, // 获取cookie
setCookie: setCookie, // 设置cookie
queryString: queryString // query参数解析
};
... ...
/**
* 公共底部
* @author: yyq<yanqing.yang@yoho.cn>
* @date: 2016/7/4
* [公共底部]返回页面顶部
* @author: xuqi<qi.xu@yoho.cn>
* @date: 2016/07/05
*/
var $ = require('yoho-jquery');
var $returnTop = $('.return-top');
function rePosReturn() {
if ($(window).height() > $(document).height()) {
function showOrNot() {
if ($(window).height() >= $(document).height()) {
$returnTop.addClass('hide');
}
// 只在窗口高度大于文档高度的时候,隐藏返回顶部
// else {
// $returnTop.removeClass('hide');
// }
}
// 返回顶部
$returnTop.click(function() {
$('html,body').animate({
scrollTop: 0
... ... @@ -31,10 +28,9 @@ $(window).scroll(function() {
}
});
// 如果初始是隐藏的,监听图片加载,重新确定return-top的高度
// 页面图片加载完成后根据页面高度决定是否显示
if ($returnTop.hasClass('hide')) {
$('img').load(rePosReturn);
$('img').load(showOrNot);
}
// 暴露给有可能通AJAX改变内容的页面去用
window.rePosReturnTop = rePosReturn;
exports.returnTopShowOrNot = showOrNot;
... ...
/**
* 资讯首页
* @author: zxr<xiaoru.zhang@yoho.cn>
* @date: 2016/07/05
*/
// var $ = require('yoho-jquery'),
// lazyLoad = require('yoho-jquery-lazyload');
// lazyLoad($('#msg-list img.lazy'));
... ...
/**
* 个人中心布局
* @author: xuqi<qi.xu@yoho.cn>
* @date: 2016/07/04
*/
var $ = require('yoho-jquery'),
lazyLoad = require('yoho-jquery-lazyload');
var $st = $('.service-top');
function reposServiceTop() {
if ($(window).width() < 1380) {
$st.addClass('for-min');
} else {
$st.removeClass('for-min');
}
}
$('.blk-footer .return-top').remove(); // 移除通用的返回顶部组件
require('../common/return-top'); // return-top
// 左侧banner图片lazyload
lazyLoad($('.banner-img'));
// 浮动在线客服和返回顶部的鼠标移入移出切换效果
$('.service, .return-top').hover(function() {
$(this).find('.iconfont').addClass('hide').end().find('.hover-text').removeClass('hide');
}, function() {
$(this).find('.iconfont').removeClass('hide').end().find('.hover-text').addClass('hide');
});
// repos service-return when window resize
$(window).resize(reposServiceTop);
reposServiceTop();
... ...
/**
* [个人中心]首页/我的订单
* @author: xuqi<qi.xu@yoho.cn>
* @date: 2016/07/04
*/
require('./me');
... ...
... ... @@ -6,7 +6,7 @@ $(function() {
$('.info-bar').hide();
});
$('#toggle_check').on('click', function() {
$('.toggle-chk').on('click', function() {
var $this = $(this),
$checkoutBtn = $('#checkout_btn');
... ...
... ... @@ -196,6 +196,11 @@ a {
-moz-osx-font-smoothing: grayscale;
}
/* 单一布局 */
.blk-page {
min-width: 1150px;
}
.body-mask {
position: absolute;
z-index: 100;
... ... @@ -219,7 +224,7 @@ a {
}
.hide {
display: none;
display: none !important;
}
.vhide {
... ...
... ... @@ -3,6 +3,8 @@
margin-top: 15px;
img {
@extend .cursor-pointer;
width: 100%;
height: 100%;
border: none;
... ...
... ... @@ -6,7 +6,6 @@
background-color: #fff;
.ad {
display: inline-block;
float: left;
width: 50%;
height: 100%;
... ... @@ -18,7 +17,6 @@
}
img {
display: inline-block;
float: left;
width: 50%;
height: 100%;
... ...
... ... @@ -11,7 +11,6 @@
float: right;
}
img {
float: left;
}
... ...
... ... @@ -3,7 +3,6 @@
$line-height: 1.8;
$lines-to-show: 3;
display: inline-block;
float: left;
height: 100%;
width: 50%;
... ...
... ... @@ -6,18 +6,27 @@
@extend .resource-container;
.news-container {
height: calc($smallImgHeight*2+$space+2px);
}
.news {
display: inline-block;
box-sizing: border-box;
.bottomSpace {
.bottom-space {
margin-bottom: $space;
}
.rightSpace {
.right-space {
margin-right: $space;
}
img {
@extend .cursor-pointer;
display: inline-block;
}
&.left {
width: $bigImgWidth;
float: left;
... ...
... ... @@ -146,7 +146,6 @@
right: 0;
top: 0;
bottom: 0;
/*background: #000;*/
}
span {
... ... @@ -443,7 +442,6 @@
}
}
.categorys-list {
ul {
width: 1158px;
... ...
... ... @@ -5,57 +5,55 @@
@extend .resource-container;
height: calc($textHeight+$imgHeight+60px);/* 60px is the height of the floor header*/
height: calc($textHeight+$imgHeight+60px);/* 60px is the height of the floor header */
.arrival-item-box {
box-sizing: border-box;
}
.arrival-item {
width: 245px;
display: inline-block;
.arrival-item {
width: 245px;
display: inline-block;
.brand-name {
height: $textHeight;
text-align: center;
font-size: 12px;
.brand-name {
height: $textHeight;
text-align: center;
font-size: 12px;
span {
@extend .cursor-pointer;
span {
@extend .cursor-pointer;
padding-bottom: 3px;
border-bottom: 1px solid #000;
padding-bottom: 3px;
border-bottom: 1px solid #000;
&.top {
line-height: 20px;
}
&.top {
line-height: 20px;
}
&.bottom {
line-height: 40px;
}
&.bottom {
line-height: 40px;
}
}
}
img {
@extend .cursor-pointer;
img {
@extend .cursor-pointer;
width: 100%;
height: $imgHeight;
}
&.normal {
float: left;
margin-right: 18px;
}
width: 100%;
height: $imgHeight;
}
&.last {
float: right;
}
&.normal {
float: left;
margin-right: 18px;
}
&.small-img {
width: 160px;
}
&.last {
float: right;
}
&.small-img {
width: 160px;
}
}
}
... ...
... ... @@ -2,6 +2,7 @@
$width: 164px;
$height: 240px;
$space: 15px;
$buttonWidth: 105px;
@extend .resource-container;
... ... @@ -14,16 +15,13 @@
.card {
height: $height;
display: inline-block;
float: left;
position: relative;
box-sizing: border-box;
.img {
width: $width;
height: 100%;
display: inline-block;
float: left;
margin-right: $space;
background-size: 100% 100%;
... ... @@ -44,7 +42,6 @@
width: 0;
border: none;
p {
height: calc($size*$line-height*$lines-to-show);
width: calc($width-2*$space);
... ... @@ -58,7 +55,7 @@
}
button {
left: calc($width/2-105px/2);
left: calc($width/2-$buttonWidth/2); /* stylelint-disable-line */
}
* {
... ... @@ -77,7 +74,6 @@
.brand-text-box {
width: $width;
height: 100%;
display: inline-block;
float: left;
padding: 25px 0 25px $space;
border: 1px solid #404040;
... ... @@ -92,6 +88,5 @@
}
}
}
}
... ...
.floor-header {
margin: 50px 0 30px;
}
.floor-title {
margin: 0 auto;
line-height: 27px;
... ...
.yoho-footer {
.blk-footer {
background: #fff;
.center-content {
... ...
.path-nav {
font-size: 14px;
height: 48px;
line-height: 48px;
height: 50px;
line-height: 50px;
a {
color: #666;
... ...
.editorial-index-page {
width: 1150px;
margin: 0 auto;
.index-content {
width: 1150px;
margin: 0 auto;
}
.msg-nav {
height: 35px;
border-bottom: 1px solid #eee;
padding-left: 300px;
padding-bottom: 5px;
li {
float: left;
height: 30px;
width: 120px;
line-height: 35px;
text-align: center;
font-size: 14px;
display: list-item;
list-style-type: none;
color: #999;
a {
display: block;
height: 100%;
width: 100%;
text-decoration: none;
color: #999;
}
&.active {
a {
color: #000;
}
}
}
}
.paging {
margin: 20px auto;
width: 300px;
height: 40px;
}
}
@import "msg";
... ...
.content-msg {
margin-top: 40px;
margin-left: 110px;
}
.msg-left {
position: relative;
float: left;
width: 200px;
height: 30px;
margin-right: 80px;
line-height: 30px;
text-align: center;
border-bottom: 1px solid #bbb;
}
.msg-right {
float: left;
width: 643px;
border-bottom: 1px solid #eee;
margin-top: 2px;
padding-bottom: 5px;
}
.msg-title {
font-size: 20px;
color: #333;
line-height: 30px;
max-height: 64px;
word-wrap: break-word;
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
}
.lazy {
width: 640px;
height: 430px;
margin-top: 15px;
}
.content {
display: block;
font-size: 14px;
line-height: 24px;
word-wrap: break-word;
margin-top: 10px;
overflow: hidden;
word-wrap: break-word;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
}
.msg-app {
height: 45px;
line-height: 45px;
font-size: 14px;
}
.time {
color: #a6a6a6;
margin-left: 3px;
}
.iconfont {
font-size: 14px;
margin-top: 0;
}
.time-word {
font-weight: normal;
}
.like-comment {
margin-left: 40px;
color: #a6a6a6;
cursor: pointer;
font-size: 14px;
.like-icon {
cursor: pointer;
&.liked {
color: #000;
}
}
}
.like-num {
font-weight: normal;
}
... ...
@charset "utf-8";
/* 公共 */
@import "base";
@import "components/index";
@import "plugin/index";
/* 模块 */
@import "me/index";
@import "channel/index";
@import "base";
@import "components/index";
@import "channel/index";
... ... @@ -11,3 +15,6 @@
/* 购物车 */
@import "shopping/index";
/* 资讯 */
@import "editorial/index";
... ...
.me-page {
padding-bottom: 30px;
background: #f5f5f5;
/* 个人中心布局下重置默认的底部样式 */
+ .blk-footer .center-content {
border-top: none;
}
/* 左侧导航 */
.me-navigation {
width: 150px;
margin-right: 10px;
.title {
height: 60px;
line-height: 60px;
text-align: center;
background: #fff;
}
.nav-row {
height: 40px;
line-height: 40px;
color: #cecece;
background: #fff;
a {
display: block;
height: 100%;
width: 100%;
padding-left: 20px;
border-left: 2px solid #fff;
}
&.focus {
background: #eee;
color: #000;
a {
border-color: #000;
}
}
}
.banner-img {
width: 150px;
height: 120px;
margin-top: 10px;
}
}
.me-main {
width: 990px;
}
.service-top {
position: fixed;
left: 50%;
bottom: 20px;
border: 1px solid #eee;
background: #fff;
cursor: pointer;
z-index: 2;
margin-left: 625px;
&.for-min {
right: 20px;
left: initial;
margin-left: auto;
}
.service,
.return-top {
display: block;
width: 50px;
height: 50px;
padding-top: 13px;
text-align: center;
&:hover {
padding-top: 8px;
}
}
.return-top {
border-top: 1px solid #eee;
}
.hover-text {
font-size: 12px;
}
}
}
... ...
.cart-header {
margin: 50px auto;
width: 100%;
padding: 30px;
border-bottom: 1px solid #eee;
.toggle-chk {
span {
font-weight: bold;
}
.not-checked {
color: #999;
}
}
.checked {
display: none;
}
.chk-all {
.checked {
display: inline-block;
}
.not-checked {
display: none;
}
}
.iconfont {
font-size: 16px;
line-height: 16px;
}
.item {
display: inline-block;
text-align: center;
font-size: 14px;
font-weight: bold;
}
.product {
width: 380px;
}
.price {
width: 260px;
}
.num {
width: 90px;
}
.pro-total-price {
width: 180px;
}
}
... ...
@import "breadcrumb"; /* 导航 */
@import "info_bar"; /* 信息提示 */
@import "empty_cart"; /* 空购物车 */
@import "cart_header"; /* 购物车标题头部 */
@import "statement"; /* 结算模块 */
... ...
... ... @@ -4,6 +4,14 @@
height: 194px;
padding: 30px;
border: 1px solid #eee;
.toggle-chk {
span {
font-weight: bold;
}
.not-checked {
color: #999;
}
}
.checked {
display: none;
... ... @@ -29,7 +37,7 @@
font-size: 14px;
line-height: 16px;
padding: 1px 0;
color: #000;
color: #1b1b1b;
&:hover {
cursor: pointer;
... ...