Authored by 李靖

渲染数据

'use strict';
const mRoot = '../models';
const headerModel = require('../../../doraemon/models/header'); // 头部model
const newHomeModel = require(`${mRoot}/new-home`);
exports.index = (req, res) => {
exports.index = (req, res, next) => {
let responseData = {
module: 'home',
page: 'new-home',
... ... @@ -15,5 +17,12 @@ exports.index = (req, res) => {
pageFooter: true
};
res.render('new-home', Object.assign(responseData, ''));
let params = {
uid: req.user.uid,
udid: require('yoho-md5')(req.ip),
};
req.ctx(newHomeModel).index(params).then(result => {
res.render('new-home', Object.assign(responseData, result));
}).catch(next);
};
... ...
'use strict';
const _ = require('lodash');
const camelCase = global.yoho.camelCase;
module.exports = class extends global.yoho.BaseModel {
constructor(ctx) {
super(ctx);
}
// 基本信息
_userData(params) {
let options = {
data: {
method: 'app.passport.profile',
uid: params.uid
},
param: {
code: 200
}
};
return this.get(options).then(result => {
return result;
});
}
// 潮流口令
_getCode(params) {
if (params.uid) {
let options = {
data: {
method: 'app.invitecode.my',
uid: params.uid
},
param: {
code: 200
}
};
return this.get(options);
} else {
return Promise.resolve({});
}
}
// 待付款,待发货,待收货,浏览记录,收藏商品,收藏店铺
_infoNum(params) {
let options = {
data: {
method: 'app.home.getInfoNum',
uid: params.uid,
udid: params.udid
},
param: {
code: 200
}
};
return this.get(options);
}
index(params) {
return Promise.all([
this._userData(params),
this._getCode(params),
this._infoNum(params)
]).then((result) => {
let resu = {
baseInfo: {},
infoNum: {}
};
if (_.get(result, '[0].data')) {
resu.baseInfo = result[0].data;
}
if (_.get(result, '[1].data.trendWord')) {
resu.baseInfo.trendCode = result[1].data.trendWord;
}
if (_.get(result, '[2].data')) {
resu.infoNum = result[2].data;
}
resu = camelCase(resu);
return resu;
});
}
};
... ...
<div class="new-home-c yoho-page">
<div class="header">
{{# baseInfo}}
<div class="left">
<div class="user-avator" style="background-image:url(https://ss1.bdstatic.com/70cFuXSh_Q1YnxGkpoWK1HF6hhy/it/u=3917326278,3402237627&fm=27&gp=0.jpg)"></div>
<div class="level level-1"></div>
<div class="user-avatar" data-avatar="{{image2 headIco mode=2 w=100 h=100 q=90}}"></div>
<div class="level level-{{vipInfo/curLevel}}"></div>
</div>
<div class="right">
<div class="name eps">李靖李靖李靖李靖李靖李靖李靖李靖李靖李靖李靖李靖</div>
<div class="name eps">{{nickname}}</div>
<div class="trend-code">
<div class="dot">#&nbsp;</div>
<div class="scroll-c go-scroll">
<div class="scroll-words">酷酷酷</div>
<div class="scroll-words">{{trendCode}}</div>
</div>
<div class="dot">&nbsp;#</div>
<div class="iconfont edit">&#xe61e;</div>
</div>
</div>
<a class="iconfont qrcode">&#xe64d;</a>
<div class="gif-part"></div>
<div class="gif-part hide"></div>
{{/ baseInfo}}
</div>
<div class="list s-list">
<div class="list-item">
<div class="body">
<div class="main eps">默认购物频道</div>
<div class="value">男士MEN</div>
<a href="//m.yohobuy.com/">
<div class="value">男士MEN</div>
</a>
<div class="arr iconfont">&#xe604;</div>
</div>
</div>
... ... @@ -31,36 +35,51 @@
<div class="list-item">
<div class="body">
<div class="main eps">我的订单</div>
<div class="value">全部订单</div>
<a href="/home/orders">
<div class="value">全部订单</div>
</a>
<div class="arr iconfont">&#xe604;</div>
</div>
</div>
</div>
<div class="service">
{{# infoNum}}
<div class="service-item">
<div class="iconfont pic">&#xe634;</div>
<p class="name">商品收藏</p>
<p class="name">待付款</p>
{{#if waitPayNum}}
<div class="val">{{waitPayNum}}</div>
{{/if}}
</div>
<div class="service-item">
<div class="iconfont pic">&#xe61b;</div>
<p class="name">商品收藏</p>
<p class="name">待发货</p>
{{#if waitCargoNum}}
<div class="val">{{waitCargoNum}}</div>
{{/if}}
</div>
<div class="service-item">
<div class="iconfont pic">&#xe61b;</div>
<p class="name">商品收藏</p>
<p class="name">待收货</p>
{{#if sendCargoNum}}
<div class="val">{{sendCargoNum}}</div>
{{/if}}
</div>
<div class="service-item">
<p class="num">265</p>
<p class="name">商品收藏</p>
<a href="/home/favorite">
<p class="num">{{productFavoriteTotal}}</p>
<p class="name">商品收藏</p>
</a>
</div>
<div class="service-item">
<p class="num">265</p>
<p class="name">商品收藏</p>
<p class="num">{{brandFavoriteTotal}}</p>
<p class="name">品牌收藏</p>
</div>
<div class="service-item">
<p class="num">265</p>
<p class="name">商品收藏</p>
<p class="num">{{productBrowse}}</p>
<p class="name">浏览记录</p>
</div>
{{/ infoNum}}
</div>
<div class="list">
<div class="list-item">
... ...
... ... @@ -6,14 +6,13 @@ exports.getRecommend = (req, res, next) => {
let params = {
yh_channel: req.query.yh_channel || '1',
udid: req.sessionID,
limit: 10,
limit: 30,
rec_pos: '100004',
uid: req.user.uid || 0,
client_id: req.cookies._yasvd || '',
page: req.query.page || 1
client_id: req.cookies._yasvd || ''
};
req.ctx(newRecommendModel).getRecommend(params).then(result => {
res.json(result);
}).catch(next);
};
\ No newline at end of file
};
... ...
... ... @@ -72,8 +72,7 @@ class storeHome extends global.yoho.BaseModel {
limit: params.limit,
rec_pos: params.rec_pos,
uid: params.uid,
client_id: params.client_id,
page: params.page
client_id: params.client_id
}
};
... ...
... ... @@ -9,7 +9,8 @@ class NewHome extends Page {
this.selector = {
$scrollC: $('.scroll-c'),
$scrollWords: $('.scroll-words')
$scrollWords: $('.scroll-words'),
$userAvatar: $('.user-avatar'),
};
this.init();
... ... @@ -17,6 +18,18 @@ class NewHome extends Page {
init() {
this.autoScroll();
this.defaultPic();
}
defaultPic() {
let myImage = new Image(),
avatar;
avatar = this.selector.$userAvatar.data('avatar');
myImage.src = avatar;
myImage.onload = () => {
this.selector.$userAvatar.css('background-image', 'url(' + avatar + ')');
};
}
autoScroll() {
... ...
... ... @@ -2,7 +2,6 @@ import 'product/new-recommend/new-recommend.css';
import $ from 'yoho-jquery';
import Page from 'yoho-page';
import goodsRender from 'product/new-recommend/goods.hbs';
import tip from 'plugin/tip';
import lazyLoad from 'yoho-jquery-lazyload';
class NewRecommend extends Page {
... ... @@ -18,7 +17,6 @@ class NewRecommend extends Page {
};
this.init();
this.page = 1;
}
init() {
... ... @@ -26,16 +24,12 @@ class NewRecommend extends Page {
}
moreGoods() {
this.page++;
this.getRecommend();
}
getRecommend() {
this.ajax({
url: '/product/new-recommend/getRecommend',
data: {
page: this.page
}
}).then((result) => {
if (result) {
if (result.goods.length > 0) {
... ... @@ -46,8 +40,6 @@ class NewRecommend extends Page {
this.selector.$goodsContainer.append($goodsData);
lazyLoad($goodsData.find('img.lazy'));
} else {
tip.show('没有更多了~~');
}
}
}).catch(error => {
... ...
... ... @@ -21,7 +21,7 @@
float: left;
position: relative;
.user-avator {
.user-avatar {
width: 100%;
height: 100%;
background-size: cover;
... ... @@ -29,6 +29,7 @@
border-radius: 50%;
overflow: hidden;
border: solid 3px #fff;
background-image: resolve("home/index/user-avatar.png");
}
.level {
... ... @@ -225,6 +226,7 @@
color: #444;
height: 145px;
border-top: solid 1px #e0e0e0;
position: relative;
.name {
font-size: 24px;
... ... @@ -244,6 +246,20 @@
height: 55px;
padding-top: 10px;
}
.val {
width: 40px;
height: 40px;
border-radius: 50%;
color: #fff;
background: #f03d35;
line-height: 40px;
text-align: center;
position: absolute;
top: 10px;
right: 70px;
font-size: 25px;
}
}
}
... ...