Authored by 石坚

merge camel

Showing 43 changed files with 599 additions and 601 deletions
... ... @@ -7,7 +7,6 @@
'use strict';
const api = global.yoho.API;
const camelCase = global.yoho.camelCase;
const _ = require('lodash');
const logger = global.yoho.logger;
const serviceAPI = global.yoho.ServiceAPI;
... ... @@ -22,39 +21,43 @@ const _processListData = (list) => {
let listData = [];
list = list || [];
list = camelCase(list);
// list = camelCase(list);
let listKey = [];
// console.log(list)
if (list.data) {
_.forEach(list.data.all_list, function(value, index) {
_.forEach(list.data.allList, function(value, index) {
_.forEach(value, function(data) {
data.brand_domain = `${config.siteUrl}/product/shop/${data.brand_domain}`;
});
_.forEach(value, function(data) {
data.brandDomain = `${config.siteUrl}/product/shop/${data.brandDomain}`;
if (index !== '0~9') {
listKey.push(index);
}
});
if (index !== '0~9') {
listKey.push(index);
}
});
listKey.sort();
listKey.push('0-9');
listKey.sort();
_.forEach(listKey, function(key) {
let keyName = key;
listKey.push('0-9');
if (key === '0-9') {
key = '0~9';
}
_.forEach(listKey, function(key) {
let keyName = key;
listData.push({
key: keyName,
brands: list.data.allList[key]
if (key === '0-9') {
key = '0~9';
}
listData.push({
key: keyName,
brands: list.data.all_list[key]
});
});
});
}
return listData;
};
... ... @@ -67,7 +70,8 @@ const _processTabData = (list) => {
let tabData = [];
list = list || [];
list = camelCase(list);
// list = camelCase(list);
_.forEach(list, function(value) {
... ...
... ... @@ -5,9 +5,9 @@
<ul class="clearfix">
{{#each brands}}
<li>
<a data-key="{{key}}" href="{{brandDomain}}?gender={{@root.brand.gender}}" target="_blank">
<img class="lazy" data-original="{{image brandIco 270 190}}">
<span>{{#if brandName}}{{brandName}}{{else}}{{brandNameEn}}{{/if}}</span>
<a data-key="{{key}}" href="{{brand_domain}}?gender={{@root.brand.gender}}" target="_blank">
<img class="lazy" data-original="{{image brand_ico 270 190}}">
<span>{{#if brand_name}}{{brand_name}}{{else}}{{brand_name_en}}{{/if}}</span>
</a>
</li>
{{/each}}
... ...
... ... @@ -7,7 +7,6 @@
const channelApi = require('./channel-api');
const floorDataHandler = require('./floor-data-handler');
const camelCase = global.yoho.camelCase;
const _ = require('lodash');
... ... @@ -106,8 +105,8 @@ const _processFloorData = d => {
return false;
}
if (templateMap[data.templateName]) {
floorData = templateMap[data.templateName](data.data);
if (templateMap[data.template_name]) {
floorData = templateMap[data.template_name](data.data);
}
floorList.push(floorData);
... ... @@ -124,7 +123,7 @@ const _processFloorData = d => {
const getContent = type => {
return channelApi.getChannelDataAsync(type).then(result => {
if (result.data && result.data.list) {
const l = camelCase(result.data.list);
const l = result.data.list;// camelCase(result.data.list);
const floor = {
content: _processFloorData(l)
};
... ...
... ... @@ -184,42 +184,45 @@ const detail = (req, res, next) => {
}
editorialModel.getDetailData(id, appType, gender, tag, uid, udid).then((result) => {
let editorialDetail = {
nav: [
{
link: link,
pathTitle: '首页',
name: name
},
{
link: '//www.yohoblk.com/editorial',
pathTitle: '资讯',
name: 'Editorial资讯'
},
{
pathTitle: '资讯',
name: result.head.title
}
],
id: id,
header: result.head,
content: result.content.contents,
tags: result.tags,
userInfo: result.head,
comment: result.comment,
brands: result.brands,
nextArticle: result.nextArticle,
perArticle: result.perArticle,
share: {
shareImg: result.content.shareImg,
shareDesc: result.head.title,
weixinUrl: result.head.weixinUrl
}
};
res.display('detail', {
module: 'editorial',
page: 'detail',
title: result.head.title,
editorialDetail: {
nav: [
{
link: link,
pathTitle: '首页',
name: name
},
{
link: '//www.yohoblk.com/editorial',
pathTitle: '资讯',
name: 'Editorial资讯'
},
{
pathTitle: '资讯',
name: result.head.title
}
],
id: id,
header: result.head,
content: result.content.contents,
tags: result.tags,
userInfo: result.head,
comment: result.comment,
brands: result.brands,
nextArticle: result.nextArticle,
perArticle: result.perArticle,
share: {
shareImg: result.content.shareImg,
shareDesc: result.head.title,
weixinUrl: result.head.weixinUrl
}
},
editorialDetail: editorialDetail,
helpers: {
// import component, path depends on your project
pagination: require('../../../doraemon/components/pagination/pagination').createPagination
... ...
... ... @@ -6,7 +6,6 @@
'use strict';
const serviceAPI = global.yoho.ServiceAPI;
const api = global.yoho.API;
const camelCase = global.yoho.camelCase;
const _ = require('lodash');
const Promise = require('bluebird');
const co = Promise.coroutine;
... ... @@ -25,7 +24,8 @@ const logger = global.yoho.logger;
const _processListData = (list) => {
list = list || [];
list = camelCase(list);
// list = camelCase(list);
let listData = {
tabs: []
... ... @@ -43,8 +43,8 @@ const _processListData = (list) => {
});
}
data.publishTime = data.publishTime.replace(/年|月/g, '/');
data.publishTime = data.publishTime.replace(/日/g, '');
data.publish_time = data.publish_time.replace(/年|月/g, '/');
data.publish_time = data.publish_time.replace(/日/g, '');
data.isPraise = data.isPraise === 'Y';
});
... ... @@ -140,7 +140,8 @@ const _processHeadData = (list) => {
return co(function*() {
list = list || [];
list = camelCase(list);
// list = camelCase(list);
let newData = {
headData: {},
... ... @@ -155,11 +156,11 @@ const _processHeadData = (list) => {
newData.headData = {
title: data.title,
click: data.viewNum,
time: data.publishTime,
click: data.view_num,
time: data.publish_time,
isLike: data.isPraise,
isCollected: data.isFavor,
likeNum: data.praiseNum,
likeNum: data.praise_num,
weixinUrl: `http://m.yohoblk.com/${data.id}.html`
};
... ... @@ -167,8 +168,8 @@ const _processHeadData = (list) => {
if (index === 1) {
newData.headData = _.assign(newData.headData, {
authorId: data.authorId,
authorUrl: `/editorial/list/?authorId=${data.authorId}`
authorId: data.author_id,
authorUrl: `/editorial/list/?authorId=${data.author_id}`
});
_.forEach(data.tags, function(value) {
... ... @@ -249,7 +250,8 @@ const _getRelatedData = (idList) => {
*/
const _processContentData = (list) => {
list = list || [];
list = camelCase(list);
// list = camelCase(list);
// console.log(list)
... ... @@ -466,7 +468,7 @@ const _getCommentsData = (id, appType) => {
data.create_time = data.create_time.replace(/月/g, '/');
data.create_time = data.create_time.replace(/日/g, '');
});
return camelCase(result.data);
return result.data;// camelCase(result.data);
} else {
logger.error('Review data return code is not 200');
return {};
... ... @@ -492,7 +494,7 @@ const _getRelateBrand = (id, appType) => {
domain = domain.substring(domain.indexOf('/') + 2, domain.indexOf('.'));
data.url = `${config.siteUrl}/product/shop/${domain}`;
});
return camelCase(result.data);
return result.data;// camelCase(result.data);
} else {
logger.error('Related brand return code is not 200');
return {};
... ... @@ -667,7 +669,7 @@ const addComment = (id, uid, comment) => {
const shareData = () => {
return serviceAPI.get('guang/api/*/share/guang', {}).then((result) => {
if (result && result.code === 200) {
return camelCase(result.data);
return result.data;// camelCase(result.data);
} else {
logger.error('Related brand return code is not 200');
return {};
... ...
<div class="content-msg clearfix" data-id="{{id}}">
<div class="msg-left"><i class="iconfont">&#xe606;</i> <span class="time-word font brown-light">{{publishTime}}</span></div>
<div class="msg-left"><i class="iconfont">&#xe606;</i> <span class="time-word font brown-light">{{publish_time}}</span></div>
<div class="msg-right">
<a class="msg-title" href="/editorial/{{id}}.html" target="_blank">{{title}}</a>
<a href="/editorial/{{id}}.html" target="_blank">
... ... @@ -9,8 +9,8 @@
<div class="msg-app">
<span class="like-comment">
<i class="iconfont like-icon {{#if isPraise}}liked{{/if}}">&#xe60e;</i>
<b class="like-num brown-light font">{{praiseNum}}</b>
<b class="like-num brown-light font">{{praise_num}}</b>
</span>
</div>
</div>
</div>
\ No newline at end of file
</div>
... ...
... ... @@ -61,7 +61,6 @@ const index = (req, res, next) => {
beginTime: beginTime
};
}
res.display('index', {
module: 'me',
page: 'currency',
... ...
... ... @@ -7,7 +7,6 @@
'use strict';
const _ = require('lodash');
const camelCase = global.yoho.camelCase;
const config = global.yoho.config;
const mcHandler = require('../models/menu-crumb-handler');
const FavoriteData = require('../models/favorite');
... ... @@ -44,7 +43,7 @@ const favorite = {
let thumb = result[1];
if (result[0] && result[0].code === 200 && result[0].data) {
let data = camelCase(result[0].data);
let data = result[0].data;// camelCase(result[0].data);
let retData = {
siteUrl: config.siteUrl
};
... ... @@ -58,7 +57,7 @@ const favorite = {
queryParams: q
};
retData.categoryList = data.categoryList;
retData.categoryList = data.category_list;
retData.categoryList.unshift({
categoryId: '',
... ... @@ -67,11 +66,13 @@ const favorite = {
});
retData.categoryList.forEach(c => {
c.categoryId = 'categoryId' in c ? c.categoryId : c.category_id;
c.checked = c.categoryId === sort;
c.categoryName = 'categoryName' in c ? c.categoryName : c.category_name;
});
retData.products = data.productList.filter(p => {
return !sort || sort === p.categoryId;
retData.products = data.product_list.filter(p => {
return !sort || sort === p.category_id;
}).slice((page - 1) * 16, page * 16);
retData.products.forEach(p => {
... ... @@ -125,7 +126,7 @@ const favorite = {
let thumb = result[1];
if (result[0] && result[0].code === 200 && result[0].data) {
let data = camelCase(result[0].data);
let data = result[0].data;// camelCase(result[0].data);
let retData = {
siteUrl: config.siteUrl
};
... ... @@ -135,22 +136,22 @@ const favorite = {
page: page,
limit: limit,
total: data.total,
pageTotal: data.pageTotal,
pageTotal: data.page_total,
queryParams: q
};
retData.brandList = data.brandList;
retData.brandList = data.brand_list;
if (retData.brandList) {
_.each(retData.brandList, b => {
if (b.newProduct && b.newProduct.length > 0) {
b.newProduct.forEach(p => {
if (b.new_product && b.new_product.length > 0) {
b.new_product.forEach(p => {
p.url = `${config.siteUrl}/product/pro_${p.productId}_${p.goods[0].id}/${p.cnAlphabet}.html`; // eslint-disable-line
});
b.newProduct.push({
b.new_product.push({
more: true
});
b.newProduct = _.chunk(b.newProduct, 4);
b.new_product = _.chunk(b.new_product, 4);
} else {
b.noNewProduct = true;
}
... ... @@ -195,15 +196,15 @@ const favorite = {
let thumb = result[1];
if (result[0] && result[0].code === 200 && result[0].data) {
let data = camelCase(result[0].data);
let data = result[0].data;// camelCase(result[0].data);
let retData = {
siteUrl: config.siteUrl,
editorialList: data.data
};
_.forEach(retData.editorialList, function(val) {
val.publishTime = val.publishTime.replace(/年|月/g, '/');
val.publishTime = val.publishTime.replace(/日/g, '');
val.publish_time = val.publish_time.replace(/年|月/g, '/');
val.publish_time = val.publish_time.replace(/日/g, '');
});
... ...
... ... @@ -7,7 +7,6 @@
'use strict';
const api = global.yoho.API;
const camelCase = global.yoho.camelCase;
/**
* 有货币列表数据
... ... @@ -33,7 +32,7 @@ const yohoCoinList = (uid, page, queryType, beginTime) => {
let curPage = 1;
if (result && result.data) {
coinList = camelCase(result.data.coinlist);
coinList = result.data.coinlist;// camelCase(result.data.coinlist);
total = result.data.total;
curPage = result.data.page;
}
... ...
... ... @@ -7,7 +7,6 @@
'use strict';
const api = global.yoho.API;
const camelCase = global.yoho.camelCase;
const moment = require('moment');
const helpers = global.yoho.helpers;
... ... @@ -152,7 +151,7 @@ const _convertAddress = (addressList, createTime) => {
};
address.time = addr.acceptTime;
addr = addr.acceptAddress.split(' ');
addr = addr.accept_address.split(' ');
if (addr.length > 1 && /市/.test(addr[0])) {
address.city = addr[0].replace('市', '');
... ... @@ -240,31 +239,31 @@ const _getUserOrder = (uid, type, page) => {
if (result && result.data) {
orderList = camelCase(result.data.order_list);
orderList = result.data.order_list;// camelCase(result.data.order_list);
total = result.data.total;
curPage = result.data.page;
}
orderList.forEach(item => {
const ot = parseInt(item.orderType, 10);
const ot = parseInt(item.order_type, 10);
const st = parseInt(item.status, 10);
let hasRefund = false;
let canRefund = false;
item.orderGoods.forEach(good => {
let cnAlphabet = good.cnAlphabet ? good.cnAlphabet : '';
item.order_goods.forEach(good => {
let cnAlphabet = good.cn_alphabet ? good.cn_alphabet : '';
good.goodUrl = helpers.urlFormat(`/product/pro_${good.productId}_${good.goodsId}/${cnAlphabet}.html`);
good.goodUrl = helpers.urlFormat(`/product/pro_${good.product_id}_${good.goods_id}/${cnAlphabet}.html`);
// 判断该订单是否有换货商品
if (good.refundNum) {
if (good.refund_num) {
hasRefund = true;
good.changed = true;
good.returnUrl = helpers.urlFormat('/me/return');
}
// 判断该订单是否可以退换货
if (parseInt(good.buyNumber, 10) !== parseInt(good.refundNum, 10)) {
if (parseInt(good.buy_number, 10) !== parseInt(good.refund_num, 10)) {
canRefund = true;
}
});
... ... @@ -274,10 +273,10 @@ const _getUserOrder = (uid, type, page) => {
item.hideChange = !canRefund;
// 转换订单创建时间
item.createTime = _convertUnixTime(item.createTime);
item.create_time = _convertUnixTime(item.create_time);
// 没有取消订单并且状态为0的时候显示付款按钮
if (item.isCancel === 'N' &&
if (item.is_cancel === 'N' &&
st === 0) {
item.showPayButton = true;
}
... ... @@ -293,15 +292,15 @@ const _getUserOrder = (uid, type, page) => {
item.showGetBtn = statusMap[st].showGetBtn;
// 在线支付和货到付款有按钮的差异
item.isOnlinePaid = parseInt(item.paymentType, 10) === 1;
item.isOnlinePaid = parseInt(item.payment_type, 10) === 1;
item.isRefundOrder = ot === 7;
if (parseInt(item.payLefttime, 10) !== 0) {
if (parseInt(item.pay_lefttime, 10) !== 0) {
item.showLeftTime = true;
}
if (item.isCancel === 'Y') {
if (item.is_cancel === 'Y') {
item.showBuyBtn = true;
item.statusStr = '已取消';
} else if (item.isOnlinePaid) {
... ... @@ -309,17 +308,17 @@ const _getUserOrder = (uid, type, page) => {
}
item.payUrl = helpers.urlFormat('/shopping/pay/online', {
code: item.orderCode
code: item.order_code
});
item.refundUrl = helpers.urlFormat('/me/return/refund/', {
orderCode: item.orderCode
orderCode: item.order_code
});
item.exchangeUrl = helpers.urlFormat('/me/return/exchange/', {
orderCode: item.orderCode
orderCode: item.order_code
});
item.detailUrl = helpers.urlFormat('/me/order/detail/', {
orderCode: item.orderCode
orderCode: item.order_code
});
});
... ... @@ -485,8 +484,8 @@ const getOrderData = (uid, type, page) => {
*/
const getOrderDetail = (uid, code) => {
return api.all([_getDetail(uid, code), getExpressInfo(uid, code)]).then(result => {
const detail = result[0] && camelCase(result[0].data);
const express = result[1] && camelCase(result[1].data);
const detail = result[0] && result[0].data;// camelCase(result[0].data);
const express = result[1] && result[1].data;// camelCase(result[1].data);
const st = parseInt(detail.status, 10);
... ... @@ -496,25 +495,25 @@ const getOrderDetail = (uid, code) => {
let btns = [];
detail.orderGoods.forEach(good => {
let cnAlphabet = good.cnAlphabet ? good.cnAlphabet : '';
detail.order_goods.forEach(good => {
let cnAlphabet = good.cn_alphabet ? good.cn_alphabet : '';
good.goodUrl = helpers.urlFormat(`/product/pro_${good.productId}_${good.goodsId}/${cnAlphabet}.html`);
good.goodUrl = helpers.urlFormat(`/product/pro_${good.product_id}_${good.goods_id}/${cnAlphabet}.html`);
});
detail.createTime = _convertUnixTime(detail.createTime);
detail.create_time = _convertUnixTime(detail.create_time);
if (detail.isCancel === 'N' &&
if (detail.is_cancel === 'N' &&
st === 0 &&
parseInt(detail.payLefttime, 10) !== 0) {
parseInt(detail.pay_lefttime, 10) !== 0) {
detail.showLeftTime = true;
}
if (st !== 0 && detail.isCancel !== 'Y') {
if (st !== 0 && detail.is_cancel !== 'Y') {
detail.showPaid = true;
}
if (detail.isCancel !== 'Y') {
if (detail.is_cancel !== 'Y') {
detail.steps = _getStepByOrderStatus(st);
statusMap[st].btns.forEach(function(btn) {
... ... @@ -531,15 +530,15 @@ const getOrderDetail = (uid, code) => {
}
});
if (detail.canUpdateDeliveryAddress === 'N') {
if (detail.can_update_delivery_address === 'N') {
_.remove(detail.btns, btn => {
return btn.isEditBtn;
});
}
if (parseInt(detail.paymentType, 10) === 2 &&
if (parseInt(detail.payment_type, 10) === 2 &&
(statusMap[st].valueStr === '备货中' ||
detail.statusStr === '备货中')) {
detail.status_str === '备货中')) {
detail.btns = btnMap.special;
} else {
detail.statusStr = statusMap[st].valueStr;
... ... @@ -553,12 +552,12 @@ const getOrderDetail = (uid, code) => {
detail.invoice = false;
}
detail.paymentTypeStr = paymentTypeStr[detail.paymentType];
detail.paymentTypeStr = paymentTypeStr[detail.payment_type];
detail.allAddress = detail.area + detail.address;
detail.expressInfo = express;
detail.expressInfo.addressList = _convertAddress(express.expressDetail, detail.createTime);
detail.expressInfo.addressList = _convertAddress(express.express_detail, detail.create_time);
return {
orderDetail: Object.assign(basicData, detail)
... ...
... ... @@ -6,7 +6,6 @@
'use strict';
const api = global.yoho.API;
const camelCase = global.yoho.camelCase;
const _ = require('lodash');
const mcHandler = require('./menu-crumb-handler');
... ... @@ -81,7 +80,7 @@ const getUserReturn = (uid, page) => {
let paginationOpts = false;
if (result && result.data) {
data = camelCase(result.data);
data = result.data;// camelCase(result.data);
paginationOpts = data.total > pageSize ? {
paginationOpts: {
... ... @@ -92,21 +91,21 @@ const getUserReturn = (uid, page) => {
} : false;
data.list.forEach(item => {
item.orderGoods = item.goods;
item.createTime = item.orderCreateTime;
item.order_goods = item.goods;
item.createTime = item.order_create_time;
item.hidePrice = true;
item.showStatus = true;
item.refundStr = refundStr[item.refundType];
item.detailUrl = helpers.urlFormat(urlIndex[item.refundType], {
item.refundStr = refundStr[item.refund_type];
item.detailUrl = helpers.urlFormat(urlIndex[item.refund_type], {
orderCode: item.id
});
item.type = typeIndex[item.refundType];
item.type = typeIndex[item.refund_type];
item.orderGoods.forEach(good => {
let cnAlphabet = good.cnAlphabet ? good.cnAlphabet : '';
item.order_goods.forEach(good => {
let cnAlphabet = good.cn_alphabet ? good.cn_alphabet : '';
good.hidePrice = true;
good.goodUrl = helpers.urlFormat(`/product/pro_${good.productId}_${good.goodsId}/${cnAlphabet}.html`); // eslint-disable-line
good.goodUrl = helpers.urlFormat(`/product/pro_${good.product_id}_${good.goods_id}/${cnAlphabet}.html`); // eslint-disable-line
});
});
}
... ... @@ -534,9 +533,9 @@ const saveRefund = (orderCode, uid, goods, payment) => {
const getProductInfo = (productId, productSkn) => {
return returnsAPI.getProductInfoAsync(productId, productSkn).then(result => {
if (result.code === 200) {
camelCase(result);
result.data.goodsList.forEach(good => {
good.colorImage = helpers.image(good.colorImage, 20, 20);
// camelCase(result);
result.data.goods_list.forEach(good => {
good.color_image = helpers.image(good.color_image, 20, 20);
});
}
return result;
... ... @@ -552,11 +551,11 @@ const getProductInfo = (productId, productSkn) => {
*/
const getChangeType = (uid, areaCode) => {
return returnsAPI.getChangeTypeAsync(uid, areaCode).then(result => {
camelCase(result);
// camelCase(result);
if (result.data) {
result.data.forEach(data => {
data.isDefault = data.isDefault === 'Y';
data.is_default = data.is_default === 'Y';
});
}
... ... @@ -580,23 +579,23 @@ const getChangeGoodsList = (orderCode, uid) => {
if (result && result.data) {
data = camelCase(result.data);
data = result.data;// camelCase(result.data);
data.hidePrice = true;
data.orderCode = orderCode;
// 设置特殊原因
_.forEach(data.specialExchangeReason, r => {
_.find(data.exchangeReason, {id: r.id}).isSpecial = true;
_.forEach(data.special_exchange_reason, r => {
_.find(data.exchange_reason, {id: r.id}).isSpecial = true;
});
if (data.goodsList) {
data.goodsList.forEach(good => {
let cnAlphabet = good.cnAlphabet ? good.cnAlphabet : '';
if (data.goods_list) {
data.goods_list.forEach(good => {
let cnAlphabet = good.cn_alphabet ? good.cn_alphabet : '';
good.showCheckbox = true;
good.hidePrice = true;
good.buyNumber = 1;
good.goodUrl = helpers.urlFormat(`/product/pro_${good.productId}_${good.goodsId}/${cnAlphabet}.html`); //eslint-disable-line
good.goodUrl = helpers.urlFormat(`/product/pro_${good.product_id}_${good.goods_id}/${cnAlphabet}.html`); //eslint-disable-line
});
}
}
... ... @@ -615,12 +614,12 @@ const getChangeGoodsList = (orderCode, uid) => {
* @return { Object } 模板渲染换货数据
*/
const _setExchangeDetailData = (data) => {
data = camelCase(data);
// data = camelCase(data);
let list = {};
switch (data.status) {
case 0:
if (data.deliveryTpyeName === '寄回换货') {
if (data.delivery_tpye_name === '寄回换货') {
Object.assign(list, {
audit: true,
reminder: true,
... ... @@ -646,7 +645,7 @@ const _setExchangeDetailData = (data) => {
location: true
});
if (data.deliveryTpyeName === '寄回换货') {
if (data.delivery_tpye_name === '寄回换货') {
Object.assign(list, {
logistics: true,
sendBack: true,
... ... @@ -660,7 +659,7 @@ const _setExchangeDetailData = (data) => {
break;
case 20:
if (data.deliveryTpyeName === '寄回换货') {
if (data.delivery_tpye_name === '寄回换货') {
Object.assign(list, {
logistics: true
});
... ... @@ -669,15 +668,15 @@ const _setExchangeDetailData = (data) => {
list.reminder = true;
list.inDoor = true;
list.auditSuccess = true;
list.view = `/me/order/detail/?orderCode=${data.orderCode}`;
list.view = `/me/order/detail/?orderCode=${data.order_code}`;
}
break;
case 30:
if (data.deliveryTpyeName === '寄回换货') {
if (data.delivery_tpye_name === '寄回换货') {
list.takeGoods = true;
list.auditSuccess = true;
list.view = `/me/order/detail/?orderCode=${data.orderCode}`;
list.view = `/me/order/detail/?orderCode=${data.order_code}`;
} else {
list.takeGoods = true;
}
... ... @@ -687,14 +686,14 @@ const _setExchangeDetailData = (data) => {
send: true,
doubt: true,
auditSuccess: true,
view: `/me/order/detail/?orderCode=${data.orderCode}`
view: `/me/order/detail/?orderCode=${data.order_code}`
});
break;
case 40:
Object.assign(list, {
finish: true,
auditSuccess: true,
view: `/me/order/detail/?orderCode=${data.orderCode}`
view: `/me/order/detail/?orderCode=${data.order_code}`
});
break;
case 91:
... ... @@ -746,7 +745,7 @@ const getExchangeDetailData = (id, uid) => {
exchangeData.exchangeDetail,
_setReturnStatus(data.statusList),
_setExchangeDetailData(data),
camelCase(data)
data// camelCase(data)
);
}
... ...
... ... @@ -10,16 +10,16 @@
<div class="check">
{{> icon/checkbox}}
</div>
<div class="brand-info" data-id="{{brandId}}" data-type="{{brandOrShopType}}">
<div class="brand-info" data-id="{{brand_id}}" data-type="{{brandOrShopType}}">
<div class="brand-icon">
<img src="{{image brandIco 145 126}}" alt="" width="145" height="126">
<img src="{{image brand_ico 145 126}}" alt="" width="145" height="126">
</div>
<div class="brand-name">
{{brandName}}
{{brand_name}}
</div>
<div class="tool-area clearfix">
<a class="btn white"
href="/product/shop/{{brandDomain}}{{#if shopId}}?shopId={{shopId}}{{/if}}"
href="/product/shop/{{brand_domain}}{{#if shopId}}?shopId={{shopId}}{{/if}}"
target="_blank">去店铺页</a>
<span class="btn white cancel">取消收藏</span>
</div>
... ... @@ -27,7 +27,7 @@
<div class="brand-products slide-container">
{{#if noNewProduct}}
<p class="no-product-info">
暂无新品, 去<a href="/product/shop/{{brandDomain}}{{#if shopId}}?shopId={{shopId}}{{/if}}" target="_blank">名牌频道</a>看看吧
暂无新品, 去<a href="/product/shop/{{brand_domain}}{{#if shopId}}?shopId={{shopId}}{{/if}}" target="_blank">名牌频道</a>看看吧
</p>
{{^}}
<div class="slide-switch">
... ... @@ -40,12 +40,12 @@
</div>
<div class="slide-wrap">
<ul>
{{#each newProduct}}
{{#each new_product}}
<li class="clearfix">
{{#each this}}
{{#if more}}
<div class="goods-more">
<a href="/product/shop/{{../../brandDomain}}{{#if ../../shopId}}?shopId={{../../shopId}}{{/if}}"
<a href="/product/shop/{{../../brand_domain}}{{#if ../../shopId}}?shopId={{../../shopId}}{{/if}}"
target="_blank">
<div class="more-text">MORE</div>
<p>查看更多</p>
... ... @@ -55,11 +55,11 @@
<div class="goods-info">
<a href="{{url}}" target="_blank">
<img class="lazy thumb"
src="{{image defaultImages 148 196}}"
src="{{image default_images 148 196}}"
style="display: block;">
<div class="desc">
<span class="name">{{productName}}</span>
<p class="price">¥{{round salesPrice 2}}</p>
<span class="name">{{product_name}}</span>
<p class="price">¥{{round sales_price 2}}</p>
</div>
</a>
</div>
... ...
... ... @@ -23,9 +23,9 @@
</div>
<div class="editorial-some">
<span class="author">{{author.name}}</span>
<span class="time brown-light">{{publishTime}}</span>
<span>浏览: <b class="brown-light">{{viewsNum}}</b></span>
<span>评论: <b class="brown-light">{{praiseNum}}</b></span>
<span class="time brown-light">{{publish_time}}</span>
<span>浏览: <b class="brown-light">{{views_num}}</b></span>
<span>评论: <b class="brown-light">{{praise_num}}</b></span>
</div>
<p class="summer">
{{intro}}
... ...
... ... @@ -11,7 +11,7 @@
<div class="clearfix product-list">
{{#each products}}
<div class="goods-info" data-id="{{productId}}">
<div class="goods-info" data-id="{{product_id}}">
<div class="choose-icon">
<span class="iconfont">&#xe646;</span>
</div>
... ... @@ -26,9 +26,9 @@
{{/stateText}}
</div>
<div class="desc">
<div class="brand-name"><a href="{{https url}}" target="_blank">{{brandName}}</a></div>
<div class="product-name"><a href="{{https url}}" target="_blank">{{productName}}</a></div>
<p class="price">¥{{round salesPrice 2}}</p>
<div class="brand-name"><a href="{{https url}}" target="_blank">{{brand_name}}</a></div>
<div class="product-name"><a href="{{https url}}" target="_blank">{{product_name}}</a></div>
<p class="price">¥{{round sales_price 2}}</p>
</div>
<div class="tool-area clearfix">
... ...
... ... @@ -135,21 +135,21 @@
</div>
<div class="table">
{{# goodsList}}
{{# goods_list}}
<div class="table-body">
<div class="goods-info">
<img src="{{image goodsImage 70 90}}">
<img src="{{image goods_image 70 90}}">
<div class="info">
<p class="good-name">{{productName}}</p>
<p>颜色:{{colorName}}&nbsp;尺码:{{sizeName}}</p>
<p class="good-name">{{product_name}}</p>
<p>颜色:{{color_name}}&nbsp;尺码:{{size_name}}</p>
<p>{{num}}</p>
</div>
</div>
<div class="common special-border">
<p class="reason">{{reasonName}}</p>
<p class="reason">{{reason_name}}</p>
</div>
<div class="common special-border operation">
<p class="subtext">color: {{newColorName}}<br>size: {{newSizeName}}</p>
<p class="subtext">color: {{new_color_name}}<br>size: {{new_size_name}}</p>
</div>
</div>
{{#if evidenceImages}}
... ... @@ -166,7 +166,7 @@
</div>
</div>
{{/if}}
{{/ goodsList}}
{{/ goods_list}}
</div>
</div>
</div>
... ...
<div class="goods-list info-box">
<h4 class="status-title">商品清单</h4>
{{#isY isMultiPackage}}
{{#isY is_multi_package}}
<div class="multi-package-row">
温馨提示:您购买的商品<em class="blue">分属不同仓库</em>,需要调拨,将被拆分成多个包裹送达
<span class="iconfont show-package">&#xe643;</span>
... ... @@ -36,15 +36,15 @@
</div>
<div class="payment-info info-box">
{{# promotionFormulas }}
{{# promotion_formulas }}
<p>
<span class="tip">{{promotion}}</span>
<span class="amount">{{promotionAmount}}</span>
<span class="amount">{{promotion_amount}}</span>
</p>
{{/ promotionFormulas }}
{{/ promotion_formulas }}
<p class="payment-amount">
<span class="tip">实付金额:</span>
<span class="amount">¥{{paymentAmount}}</span>
<span class="amount">¥{{payment_amount}}</span>
</p>
{{#if showPaid}}
<p class="paid">
... ...
<div class="user-info info-box" data-area="{{areaCode}}">
<div class="user-info info-box" data-area="{{area_code}}">
<h4 class="status-title">收货人信息</h4>
<p class="text user-name-sel" data-name="{{userName}}">收货人:{{userName}}</p>
<p class="text user-name-sel" data-name="{{user_name}}">收货人:{{user_name}}</p>
<p class="text user-addr-sel" data-address="{{address}}">收货地址:{{allAddress}}</p>
<p class="text user-mo-sel" data-mobile="{{mobile}}">联系电话:{{mobile}}</p>
<p class="text user-ph-sel hide" data-phone="{{phone}}">联系电话:{{phone}}</p>
... ... @@ -9,10 +9,10 @@
<div class="info-box">
<h4 class="status-title">支付及配送方式</h4>
<p class="text">支付类型:{{paymentTypeStr}}</p>
{{#if paymentName}}
<p class="text">支付方式:{{paymentName}}</p>
{{#if payment_name}}
<p class="text">支付方式:{{payment_name}}</p>
{{/if}}
<p class="text">送货时间:{{deliveryTime}}</p>
<p class="text">送货时间:{{delivery_time}}</p>
</div>
<div class="info-box">
... ...
<div class="order-status order" data-code="{{orderCode}}" data-codem="{{orderCodeM}}">
<div class="order-status order" data-code="{{order_code}}" data-codem="{{orderCodeM}}">
<div class="basic">
<p>订单号:{{orderCode}}</p>
<p>订单状态:{{statusStr}}</p>
<p>订单号:{{order_code}}</p>
<p>订单状态:{{status_str}}</p>
<div class="edit-btns hide-when-invalid">
<ul>
{{# btns}}
... ... @@ -23,7 +23,7 @@
<div class="time">
<span>剩余支付时间:</span>
<span class="iconfont hide-when-invalid">&#xe606;</span>
<p class="left-time" data-left={{payLefttime}}></p>
<p class="left-time" data-left={{pay_lefttime}}></p>
<span class="tip hide-when-invalid">(逾期订单将自动取消)</span>
</div>
{{/if}}
... ... @@ -35,7 +35,7 @@
<li class="{{#if @first}}first{{/if}} {{#if @last}}last{{/if}} {{#if isActive}}active{{/if}} {{#if isLastActive}}last-active{{/if}}">{{stepStr}}</li>
{{/ steps}}
</ul>
<p>{{createTime}}</p>
<p>{{create_time}}</p>
</div>
{{/if}}
</div>
... ...
<div class="good-info {{#if @last}}last{{/if}}">
<a href="{{https goodUrl}}" target="_blank">
<img src="{{image goodsImage 65 90}}">
<img src="{{image goods_image 65 90}}">
</a>
<div class="detail">
<a href="{{https goodUrl}}" target="_blank">
<p class="with-bottom-space good-name-text">{{productName}}</p>
<p class="with-bottom-space good-name-text">{{product_name}}</p>
</a>
<span class="with-space">颜色:{{colorName}}</span>
<span class="with-space">颜色:{{color_name}}</span>
<span>尺码:
<span class="bold">{{sizeName}}</span>
<span class="bold">{{size_name}}</span>
</span>
{{#if buyNumber}}
<p class="bold buy-number"><span class="iconfont">&#xe61d;</span>{{buyNumber}}</p>
{{#if buy_number}}
<p class="bold buy-number"><span class="iconfont">&#xe61d;</span>{{buy_number}}</p>
{{/if}}
</div>
</div>
... ...
<div class="goods-container special-border {{#if hidePrice}}no-price{{/if}}">
{{#orderGoods}}
{{#order_goods}}
{{> order/good-info}}
{{#unless hidePrice}}
<div class="sub-column right-border bold">
<p class="{{#if @last}}last{{/if}}">
¥{{goodsPrice}}
¥{{goods_price}}
{{#if changed}}
<a href="{{https returnUrl}}">
<span class="btn white change-tag">已退换</span>
... ... @@ -13,11 +13,11 @@
</p>
</div>
<div class="sub-column right-border special-column bold">
<p class="bold">{{buyNumber}}</p>
<p class="bold">{{buy_number}}</p>
</div>
<div class="sub-column special-column bold">
<p class="bold">¥{{goodsAmount}}</p>
<p class="bold">¥{{goods_amount}}</p>
</div>
{{/unless}}
{{/orderGoods}}
{{/order_goods}}
</div>
... ...
<ul class="header">
<li class="content">下单时间:{{createTime}}</li>
<li class="content">订单编号:{{orderCode}}</li>
<li class="content">下单时间:{{create_time}}</li>
<li class="content">订单编号:{{order_code}}</li>
{{#if showMobile}}
<li class="content"><span class="iconfont">&#xe62f;</span>手机订单</li>
{{/if}}
... ...
<div class="table table-body{{#unless orderList}} empty{{/unless}}">
{{#if orderList}}
{{#orderList}}
<div class="order" data-code="{{orderCode}}">
<div class="order" data-code="{{order_code}}">
{{> order/order-header}}
<div class="table-body">
{{> order/goods-box}}
<div class="common-column special-border">
<p class="bold">¥{{amount}}</p>
<p class="subtext no-pointer">{{paymentTypeStr}}</p>
<p class="subtext no-pointer">{{payment_type_str}}</p>
{{#if isRefundOrder}}
<p class="subtext refund-tag">换货订单</p>
{{/if}}
... ... @@ -23,7 +23,7 @@
<div class="pay-operation {{#unless showLeftTime}}marginhack{{/unless}}">
{{#if isOnlinePaid}}
{{#if showLeftTime}}
<span class="iconfont hide-when-invalid">&#xe606;</span><p class="left-time" data-left="{{payLefttime}}"></p>
<span class="iconfont hide-when-invalid">&#xe606;</span><p class="left-time" data-left="{{pay_lefttime}}"></p>
{{/if}}
<a href="{{https payUrl}}">
<span class="btn red hide-when-invalid ">立即付款</span>
... ...
... ... @@ -12,10 +12,10 @@
<li class="change-reason">换货原因</li>
<li class="change-num hide">换货数量</li>
</ul>
{{#goodsList}}
{{#goods_list}}
<div class="change-info-box">
<div class="table-body">
<div class="goods-container no-price" data-goods-id="{{goodsId}}" data-sku="{{productSku}}" data-id="{{productId}}" data-skn="{{productSkn}}" data-goods-type="{{goodsTypeId}}" data-price="{{lastPrice}}" data-skc={{productSkc}}>
<div class="goods-container no-price" data-goods-id="{{goods_id}}" data-sku="{{productSku}}" data-id="{{product_id}}" data-skn="{{productSkn}}" data-goods-type="{{goods_type_id}}" data-price="{{last_price}}" data-skc={{productSkc}}>
{{# showCheckbox}}
<span class="checkbox-box">
{{> icon/checkbox}}
... ... @@ -38,20 +38,20 @@
<div class="group color">
<span class="title">
<span class="asterisk">*</span>
换货Color: <span class="color-text" data-color={{colorName}}>{{colorName}}</span>
换货Color: <span class="color-text" data-color={{color_name}}>{{color_name}}</span>
</span>
</div>
<div class="group size">
<span class="title">
<span class="asterisk">*</span>
换货Size: <span class="size-text" data-size="{{sizeName}}">{{sizeName}}</span>
换货Size: <span class="size-text" data-size="{{size_name}}">{{size_name}}</span>
</span>
</div>
</div>
{{> returns/special-reason}}
</div>
{{/goodsList}}
{{/goods_list}}
</div>
</div>
<div class="change-type">
... ... @@ -65,7 +65,7 @@
<div class="input-group">
<span class="asterisk">*</span>
<label for="city" class="change-area">所在区域:</label>
<span id="city" class="cascading-address" data-code="{{areaCode}}"></span>
<span id="city" class="cascading-address" data-code="{{area_code}}"></span>
</div>
<div class="input-group require">
<span class="asterisk">*</span>
... ...
... ... @@ -16,7 +16,7 @@
<div class="table-body">
{{> order/goods-box}}
<div class="common-column special-border">
<p class="refund-status">{{statusName}}</p>
<p class="refund-status">{{status_name}}</p>
<p class="subtext badge refund-type">{{refundStr}}</p>
</div>
<div class="common-column special-border operation">
... ...
<select class="exchange-reasons" name="exchange-reasons">
<option value="0">请选择换货原因</option>
{{# exchangeReason}}
{{# exchange_reason}}
<option value="{{id}}" {{#if isSpecial}}class="is-special"{{/if}}>{{name}}</option>
{{/ exchangeReason}}
{{/ exchange_reason}}
</select>
... ...
... ... @@ -9,7 +9,6 @@
const _ = require('lodash');
const Search = require('../models/search');
const camelCase = global.yoho.camelCase;
const DataHelper = require('../models/helpers');
const Resouces = require('../models/resouces');
... ... @@ -30,20 +29,20 @@ const list = {
};
Promise.all([Search.queryAllSort(), Search.queryProduct(q)]).then(allResult => {
let allSort = camelCase(allResult[0]);
let allSort = allResult[0];
let result = allResult[1];
if (result && result.code === 200 && result.data) {
let data = camelCase(result.data);
let data = result.data;
let nav = [DataHelper.getChannelNav(channel)];
if (data.filter) {
data.filter.standard = data.standard;
data.filter.groupSort = DataHelper.sortConvert(allSort.data.sort);
data.filter.group_sort = DataHelper.sortConvert(allSort.data.sort);
retData.filter = DataHelper.filterHandle(data.filter, q);
retData.filter.showPrice = data.total > 10;
retData.filter.showInfo = (retData.filter.style && retData.filter.style.length > 0)
|| (data.standard && data.standard.length > 0); //eslint-disable-line
|| (data.standard && data.standard.length > 0); //eslint-disable-line
nav = _.concat(nav, retData.filter.nav);
}
... ... @@ -55,11 +54,11 @@ const list = {
page: q.page,
limit: data.limit || 45,
total: data.total,
pageTotal: data.pageTotal,
pageTotal: data.page_total,
queryParams: q
};
res.display('list', _.assign(retData, {
products: DataHelper.handleProductList(data.productList, q),
products: DataHelper.handleProductList(data.product_list, q),
order: q.order
}));
} else {
... ... @@ -87,7 +86,7 @@ const list = {
Promise.all([Resouces.newProductBanner(channel), Search.queryAllSort(),
Search.queryNewProduct(q)]).then(result => {
let banner = result[0];
let sortData = camelCase(result[1]);
let sortData = result[1];
let listData = result[2];
let nav = [DataHelper.getChannelNav(channel), {
name: '新品'
... ... @@ -96,11 +95,11 @@ const list = {
retData.banner = banner;
if (listData && listData.code === 200 && listData.data) {
let data = camelCase(listData.data);
let data = listData.data;
if (data.filter) {
data.filter.standard = data.standard;
data.filter.groupSort = DataHelper.sortConvert(sortData.data.sort);
data.filter.group_sort = DataHelper.sortConvert(sortData.data.sort);
retData.filter = DataHelper.filterHandle(data.filter, q);
retData.filter.showPrice = data.total > 10;
... ... @@ -116,11 +115,11 @@ const list = {
page: q.page,
limit: data.limit || 45,
total: data.total,
pageTotal: data.pageTotal,
pageTotal: data.page_total,
queryParams: q
};
res.display('newList', _.assign(retData, {
products: DataHelper.handleProductList(data.productList, q),
products: DataHelper.handleProductList(data.product_list, q),
order: q.order
}));
} else {
... ...
... ... @@ -10,7 +10,6 @@
const _ = require('lodash');
const Search = require('../models/search');
const camelCase = global.yoho.camelCase;
const DataHelper = require('../models/helpers');
const Query = {
... ... @@ -34,7 +33,7 @@ const Query = {
let result = allResult[0];
if (result && result.code === 200 && result.data) {
let data = camelCase(result.data);
let data = result.data;
let nav = [DataHelper.getChannelNav(channel)];
nav.push({
... ... @@ -59,11 +58,11 @@ const Query = {
page: q.page,
limit: data.limit || 45,
total: data.total,
pageTotal: data.pageTotal,
pageTotal: data.page_total,
queryParams: q
};
res.display('list', _.assign(retData, {
products: DataHelper.handleProductList(data.productList, q),
products: DataHelper.handleProductList(data.product_list, q),
order: q.order
}));
} else {
... ...
... ... @@ -9,7 +9,6 @@
'use strict';
const _ = require('lodash');
const camelCase = global.yoho.camelCase;
const Search = require('../models/search');
const DataHelper = require('../models/helpers');
const ShopData = require('../models/shop-service');
... ... @@ -70,16 +69,16 @@ const shop = {
});
if (productData && productData.code === 200 && productData.data) {
let ret = camelCase(productData.data);
let ret = productData.data;
data.paginationData = {
page: 1,
limit: 16,
total: ret.total,
pageTotal: ret.pageTotal,
pageTotal: ret.page_total,
queryParams: req.query
};
data.products = DataHelper.handleProductList(ret.productList);
data.products = DataHelper.handleProductList(ret.product_list);
res.display('shop-index', data);
} else {
shop.list(req, res, next);
... ... @@ -131,15 +130,15 @@ const shop = {
shop: q.shop_id,
small_sort: 1
}), Search.queryProductOfBrand(q)]).then(allResult => {
let allSort = camelCase(allResult[0]);
let allSort = allResult[0];
let result = allResult[1];
if (result && result.code === 200 && result.data) {
let ret = camelCase(result.data);
let ret = result.data;
if (ret.filter) {
ret.filter.standard = ret.standard;
ret.filter.groupSort = DataHelper.sortConvert(allSort.data.sort);
ret.filter.group_sort = DataHelper.sortConvert(allSort.data.sort);
ret.filter.singleBrand = true;
data.filter = DataHelper.filterHandle(ret.filter, q);
data.filter.showPrice = ret.total > 10;
... ... @@ -152,7 +151,7 @@ const shop = {
page: q.page,
limit: ret.limit || 45,
total: ret.total,
pageTotal: ret.pageTotal,
pageTotal: ret.page_total,
queryParams: req.query
};
... ... @@ -161,7 +160,7 @@ const shop = {
};
res.display('shop-list', _.assign(data, {
products: DataHelper.handleProductList(ret.productList, q, false),
products: DataHelper.handleProductList(ret.product_list, q, false),
order: q.order
}));
} else {
... ... @@ -189,21 +188,21 @@ const shop = {
return Search.queryProductOfBrand(query).then(result => {
if (result && result.code === 200 && result.data) {
let ret = camelCase(result.data);
let ret = result.data;
data.paginationData = {
page: page,
limit: 16,
total: ret.total,
pageTotal: ret.pageTotal,
pageTotal: ret.page_total,
queryParams: req.query
};
let products = DataHelper.handleProductList(ret.productList);
let products = DataHelper.handleProductList(ret.product_list);
products.forEach(p => {
p.defaultImages = global.yoho.helpers.image(p.defaultImages, 270, 366);
p.salesPrice = global.yoho.helpers.round(p.salesPrice, 2);
p.default_images = global.yoho.helpers.image(p.default_images, 270, 366);
p.sales_price = global.yoho.helpers.round(p.sales_price, 2);
});
res.json(_.assign(data, {
products: products
... ...
... ... @@ -7,7 +7,6 @@
const Promise = require('bluebird');
const co = Promise.coroutine;
const api = require('./brand-api');
const camelCase = global.yoho.camelCase;
/**
... ... @@ -21,7 +20,8 @@ const getDomainInfo = domain => {
if (!brandInfo.data || brandInfo.code !== 200) {
return {};
}
return camelCase(brandInfo.data);
return brandInfo.data;
})();
};
... ... @@ -39,7 +39,7 @@ const getBrandInfo = (bid, uid) => {
return {};
}
return camelCase(brandInfo.data);
return brandInfo.data;
})();
};
... ...
... ... @@ -6,7 +6,6 @@
*/
const ServiceApi = global.yoho.ServiceAPI;
const camelCase = global.yoho.camelCase;
const editorial = {
getByBrand(brand) {
... ... @@ -15,7 +14,7 @@ const editorial = {
limit: 3
}).then(result => {
if (result && result.code === 200 && result.data) {
return camelCase(result.data);
return result.data;
} else {
return [];
}
... ...
... ... @@ -51,7 +51,7 @@ const helpers = {
let other = false;
_.forEach(brands, (b) => {
let name = b.brandAlif || b.brandNameEn || b.brandName;
let name = b.brand_alif || b.brand_name_en || b.brand_name;
let char = name.toLowerCase().charAt(0);
if ((char >= 'a' && char <= 'z') || (char >= 'A' && char <= 'Z')) {
... ... @@ -122,10 +122,10 @@ const helpers = {
if (colors) {
return colors.map((c) => {
return {
id: c.colorId,
title: c.colorName,
rgb: c.colorValue ? `url(${c.colorValue})` : '#' + c.colorCode,
bgImg: c.colorValue || ''
id: c.color_id,
title: c.color_name,
rgb: c.color_value ? `url(${c.color_value})` : '#' + c.color_code,
bgImg: c.color_value || ''
};
});
} else {
... ... @@ -171,25 +171,25 @@ const helpers = {
if (msort && sorts) {
sorts.forEach(s => {
if (s.categoryId === msort) {
if (s.category_id === msort) {
sortQuery += 'msort=' + msort;
s.checked = true;
nav.push({
link: sortQuery,
pathTitle: '',
name: s.categoryName
name: s.category_name
});
}
if (s.sub && misort) {
s.sub.forEach((m) => {
if (m.categoryId === misort) {
if (m.category_id === misort) {
sortQuery += '&misort=' + misort;
m.checked = true;
nav.push({
link: sortQuery,
pathTitle: '',
name: m.categoryName
name: m.category_name
});
}
});
... ... @@ -222,8 +222,8 @@ const helpers = {
sortConvert(sorts) {
return _.map(sorts, s => {
return {
categoryId: s.sortId,
categoryName: s.sortName,
category_id: s.sort_id,
category_name: s.sort_name,
sub: helpers.sortConvert(s.sub)
};
});
... ... @@ -241,7 +241,7 @@ const helpers = {
let genders = this.genders(filter.gender);
let brands = filter.brand;
let colors = this.colorConvert(filter.color);
let sorts = filter.groupSort;
let sorts = filter.group_sort;
let singleSort = false;
let filters = [];
let customPriceLow = '';
... ... @@ -273,17 +273,17 @@ const helpers = {
_.forEach(sorts, s => {
s.sub.unshift({
categoryName: '全部' + s.categoryName,
categoryId: '',
relationParameter: {
sort: s.relationParameter ? s.relationParameter.sort : ''
category_name: '全部' + s.category_name,
category_id: '',
relation_parameter: {
sort: s.relation_parameter ? s.relation_parameter.sort : ''
},
checked: q.msort && q.msort === s.categoryId && !q.misort
checked: q.msort && q.msort === s.category_id && !q.misort
});
_.forEach(s.sub, ss => {
if ((q.misort && q.misort === ss.categoryId) ||
(ss.relationParameter && q.sort === ss.relationParameter.sort)) {
if ((q.misort && q.misort === ss.category_id) ||
(ss.relation_parameter && q.sort === ss.relation_parameter.sort)) {
ss.checked = true;
s.checked = true;
}
... ... @@ -337,9 +337,9 @@ const helpers = {
if (q.size) {
showSize = false;
sizeInfo.forEach(s => {
if (s.sizeId === parseInt(q.size, 10)) {
if (s.size_id === parseInt(q.size, 10)) {
s.checked = true;
filters.push(this.newFilter('size', q.size, s.sizeName));
filters.push(this.newFilter('size', q.size, s.size_name));
}
});
}
... ... @@ -350,7 +350,7 @@ const helpers = {
});
let brandNames = checkedBrands.map(b => {
b.checked = true;
return b.brandNameEn || b.brandName;
return b.brand_name_en || b.brand_name;
}).join('、');
if (filter.singleBrand) {
... ... @@ -378,10 +378,10 @@ const helpers = {
if (q.style) {
let styleNames = filter.style.filter(s => {
return (',' + q.style + ',').indexOf(',' + s.styleId + ',') >= 0;
return (',' + q.style + ',').indexOf(',' + s.style_id + ',') >= 0;
}).map(s => {
s.checked = true;
return s.styleName;
return s.style_name;
}).join(',');
if (styleNames) {
... ... @@ -394,9 +394,9 @@ const helpers = {
_.forEach(filter.standard, s => {
_.forEach(s.sub, b => {
if (q.standard.indexOf('_' + b.standardId) > 0) {
if (q.standard.indexOf('_' + b.standard_id) > 0) {
b.checked = true;
filters.push(this.newFilter('standard', q.standard, b.standardName));
filters.push(this.newFilter('standard', q.standard, b.standard_name));
}
});
});
... ... @@ -433,27 +433,27 @@ const helpers = {
if (_.isArray(list)) {
list.forEach(g => {
let goodsList = g.goodsList;
let defaultImages = g.defaultImages;
let goodsList = g.goods_list;
let defaultImages = g.default_images;
let goodsId;
if (goodsList && goodsList.length > 0) {
goodsId = goodsList[0].goodsId;
goodsId = goodsList[0].goods_id;
goodsList.forEach(o => {
o.url = `${config.siteUrl}/product/pro_${g.productId}_${o.goodsId}/${g.cnAlphabet}.html`;
if (q && q.color && q.color === o.colorId) {
defaultImages = o.imagesUrl;
o.url = `${config.siteUrl}/product/pro_${g.product_id}_${o.goods_id}/${g.cn_alphabet}.html`;
if (q && q.color && q.color === o.color_id) {
defaultImages = o.images_url;
}
});
}
g.salesPrice = g.salesPrice || g.marketPrice;
g.defaultImages = defaultImages;
g.sales_price = g.sales_price || g.market_price;
g.default_images = defaultImages;
g.showBrand = showBrand;
if (g.salesPrice === g.marketPrice) {
delete g.marketPrice;
if (g.sales_price === g.market_price) {
delete g.market_price;
}
g.url = `${config.siteUrl}/product/pro_${g.productId}_${goodsId}/${g.cnAlphabet}.html`;
g.url = `${config.siteUrl}/product/pro_${g.product_id}_${goodsId}/${g.cn_alphabet}.html`;
});
}
return list;
... ...
... ... @@ -255,19 +255,19 @@ const setBrandBanner = (base, brand, shop) => {
let resData = {},
banner = {};
if (base.brandInfo) {
let info = base.brandInfo;
if (base.brand_info) {
let info = base.brand_info;
// 基础品牌数据
banner = {
brandId: info.brandId,
brandId: info.brand_id,
bgColor: '#000',
brandLogo: {
link: `/product/shop/${info.brandDomain}`, // 品牌跳转链接
img: info.brandIco
link: `/product/shop/${info.brand_domain}`, // 品牌跳转链接
img: info.brand_ico
},
brandHome: {
link: `/product/shop/${info.brandDomain}` // 品牌跳转链接
link: `/product/shop/${info.brand_domain}` // 品牌跳转链接
}
};
... ... @@ -319,12 +319,12 @@ const setBrandBanner = (base, brand, shop) => {
*/
const setProductData = base => {
let resData = {
id: base.productId,
name: base.productName,
brandName: _.has(base, 'brandInfo.brandName') ? base.brandInfo.brandName : '',
intro: base.salesPhrase,
sellPrice: base.salesPrice,
marketPrice: base.marketPrice,
id: base.product_id,
name: base.product_name,
brandName: _.has(base, 'brand_info.brand_name') ? base.brand_info.brand_name : '',
intro: base.sales_phrase,
sellPrice: base.sales_price,
marketPrice: base.market_price,
total: 0
};
... ... @@ -336,11 +336,11 @@ const setProductData = base => {
}
// 遍历颜色尺寸
if (base.goodsList) {
if (base.goods_list) {
let goods = [];
// 处理商品数据
_.forEach(base.goodsList, function(value) {
_.forEach(base.goods_list, function(value) {
let group = {},
thumbs = [],
sizes = [];
... ... @@ -350,27 +350,27 @@ const setProductData = base => {
return;
}
if (value.imagesList) {
if (value.images_list) {
group = {
name: value.colorName,
title: `${resData.name} ${value.colorName}`,
color: value.colorName,
name: value.color_name,
title: `${resData.name} ${value.color_name}`,
color: value.color_name,
total: 0
};
// 有颜色图片时显示颜色图片,无颜色图片时显示rgb值
// 都没有则显示商品图
if (value.colorValue) {
group.bgImg = helpers.image(value.colorValue, 30, 30);
} else if (value.colorCode) {
group.rgb = `#${value.colorCode}`;
if (value.color_value) {
group.bgImg = helpers.image(value.color_value, 30, 30);
} else if (value.color_code) {
group.rgb = `#${value.color_code}`;
} else {
group.rgb = `url('${helpers.image(value.colorImage, 30, 30)}')`;
group.rgb = `url('${helpers.image(value.color_image, 30, 30)}')`;
}
// 商品颜色列表
_.forEach(value.imagesList, function(subValue) {
thumbs.push(subValue.imageUrl);
_.forEach(value.images_list, function(subValue) {
thumbs.push(subValue.image_url);
});
group.thumbs = thumbs;
... ... @@ -381,7 +381,7 @@ const setProductData = base => {
// 默认第一张图片
if (!_.has(resData, 'img')) {
resData.img = value.colorImage;
resData.img = value.color_image;
// 只有一张图时不显示左右切换箭头
if (thumbs.length < 2) {
... ... @@ -390,13 +390,13 @@ const setProductData = base => {
}
// 商品尺码列表
_.forEach(value.sizeList, function(subValue) {
_.forEach(value.size_list, function(subValue) {
let size = {
name: subValue.sizeName,
title: subValue.sizeName,
sku: subValue.productSku,
num: _.toInteger(subValue.storageNumber),
goodsId: value.goodsId
name: subValue.size_name,
title: subValue.size_name,
sku: subValue.product_sku,
num: _.toInteger(subValue.storage_number),
goodsId: value.goods_id
};
// 虚拟商品,增加为一件
... ... @@ -505,15 +505,15 @@ const setBrandIntro = brand => {
let barndIntro = {};
if (brand) {
let text = _.replace(brand.brandIntro, /<\/?[^>]*>|\s*|(\n)|(\t)|(\r)/g, ''),
let text = _.replace(brand.brand_intro, /<\/?[^>]*>|\s*|(\n)|(\t)|(\r)/g, ''),
more = '... <a href="javascript:;" class="more-brand-intro blue">了解更多>></a>';
barndIntro = {
brand: {
titleEn: 'BRAND',
titleCn: '品牌介绍',
logo: brand.brandIco,
fullIntro: brand.brandIntro,
logo: brand.brand_ico,
fullIntro: brand.brand_intro,
intro: _.truncate(text, {
length: 300,
omission: more
... ...
... ... @@ -11,7 +11,6 @@ const brandApi = require('./brand-api');
const shopApi = require('./shop-api');
const itemFun = require('./item-handler');
const search = require('./search-api');
const camelCase = global.yoho.camelCase;
/**
* 根据商品基本信息获取商品品牌、材质、尺码、描述、详情等
... ... @@ -20,11 +19,11 @@ const camelCase = global.yoho.camelCase;
* @return { Object } 返回单个商品品牌、材质、尺码、描述、详情等信息
*/
const _getMultiResourceByBaseInfo = (base) => {
const productId = base.productId;
const skn = base.productSkn;
const brandId = base.brandInfo.brandId || 0;
const brandDomain = _.get(base, 'brandInfo.brandName', false);
const shopId = base.shopId || 0;
const productId = base.product_id;
const skn = base.product_skn;
const brandId = base.brand_info.brand_id || 0;
const brandDomain = _.get(base, 'brand_info.brand_name', false);
const shopId = base.shop_id || 0;
let apiIndex = {};
// 获取相关数据
... ... @@ -91,7 +90,7 @@ const getProductItemData = (params, url, uid) => {
let resData = {};
let data = {};
result = camelCase(result.data);
result = result.data;
if (!result) {
return;
... ... @@ -102,10 +101,10 @@ const getProductItemData = (params, url, uid) => {
// return resData;
// }
if (!result.productName &&
!result.productSkn &&
!result.salesPrice &&
!result.marketPrice
if (!result.product_name &&
!result.product_skn &&
!result.sales_price &&
!result.market_price
) {
return resData;
}
... ... @@ -117,14 +116,14 @@ const getProductItemData = (params, url, uid) => {
data.goodInfo = itemFun.setProductData(result);
// BRAND品牌简介
if (result.brandInfo) {
Object.assign(data, itemFun.setBrandIntro(result.brandInfo));
if (result.brand_info) {
Object.assign(data, itemFun.setBrandIntro(result.brand_info));
}
return _getMultiResourceByBaseInfo(result).then(mulRes => {
Object.assign(data,
itemFun.setBrandBanner(result, mulRes.brandBanner, mulRes.shopInfo), // banner
itemFun.setPathNav(mulRes.sort, result.productName, params.channel), // 面包屑导航
itemFun.setPathNav(mulRes.sort, result.product_name, params.channel), // 面包屑导航
itemFun.setDescriptionData(mulRes.sizeInfo, mulRes.comfort), // DESCRIPTION商品描述
itemFun.setMaterialData(mulRes.sizeInfo), // MATERIALS材料洗涤
itemFun.setSizeData(mulRes.sizeInfo, mulRes.modelTry), // SIZEINFO尺码信息
... ...
... ... @@ -9,7 +9,6 @@
const Promise = require('bluebird');
const co = Promise.coroutine;
const camelCase = global.yoho.camelCase;
const BrandService = require('./brand-service');
const ShopApi = require('./shop-api');
const Search = require('../models/search');
... ... @@ -45,7 +44,7 @@ function resourceDataHandle(data) {
if (data && _.isArray(data)) {
data.forEach(d => {
resource[d.resourceName] = JSON.parse(d.resourceData);
resource[d.resource_name] = JSON.parse(d.resource_data);
});
}
... ... @@ -64,7 +63,7 @@ const ShopService = {
let shopIntro = yield ShopApi.getShopIntro(shopId, uid);
if (shopIntro && shopIntro.code === 200) {
return camelCase(shopIntro.data);
return shopIntro.data;
} else {
return {};
}
... ... @@ -80,7 +79,7 @@ const ShopService = {
let data = yield ShopApi.getShopDecorator(shopId);
if (data && data.code === 200) {
return camelCase(data.data);
return data.data;
} else {
return {};
}
... ... @@ -101,7 +100,7 @@ const ShopService = {
let sortArray = [];
if (data && data.data) {
let sorts = camelCase(data.data.sort);
let sorts = data.data.sort;
_.each(sorts, s => {
sortArray = sortArray.concat(s.sub);
... ... @@ -131,19 +130,19 @@ const ShopService = {
let domainInfo = yield BrandService.getDomainInfo(domain);
info.brandId = domainInfo.id;
info.shopId = domainInfo.shopId;
info.brandBanner = domainInfo.brandBanner;
info.info = domainInfo.brandIntro;
info.shopId = domainInfo.shop_id;
info.brandBanner = domainInfo.brand_banner;
info.info = domainInfo.brand_intro;
}
if (info.shopId) {
let shopIntro = yield ShopService.getShopIntro(info.shopId, uid);
info.name = shopIntro.shopName;
info.info = shopIntro.shopIntro;
info.name = shopIntro.shop_name;
info.info = shopIntro.shop_intro;
info.btnName = '品牌介绍';
info.isFavorite = shopIntro.isFavorite === 'Y';
info.showShopName = shopIntro.isShowShopName === 'Y';
info.isFavorite = shopIntro.is_favorite === 'Y';
info.showShopName = shopIntro.is_show_shop_name === 'Y';
let shopData = yield Promise.all([ShopService.getShopDecorator(info.shopId),
ShopService.getShopSecondSorts(info.brandId, shopId)]);
... ... @@ -163,14 +162,14 @@ const ShopService = {
if (info.brandId) {
let brandInfo = yield BrandService.getBrandInfo(info.brandId, uid);
info.name = info.name || brandInfo.brandName;
info.name = info.name || brandInfo.brand_name;
// info.info = brandInfo.brandIntro;
info.btnName = '品牌介绍';
if (!info.isFavorite && brandInfo.isFavorite === 'Y') {
if (!info.isFavorite && brandInfo.is_favorite === 'Y') {
favType = 'brand';
}
info.isFavorite = info.isFavorite || (brandInfo.isFavorite === 'Y');
info.isFavorite = info.isFavorite || (brandInfo.is_favorite === 'Y');
info.banner = info.banner || info.brandBanner;
}
info.favType = favType;
... ...
... ... @@ -11,7 +11,6 @@
</div>
{{# banner.resources}}
{{#if largeSlideImg}}
<div class="center-content clearfix slide-warp">
{{#each largeSlideImg}}
... ... @@ -41,13 +40,13 @@
<div class="goods-wrap">
{{#each newProducts}}
<div class="goods-info" data-skn="{{productSkn}}">
<a href="/product/pro_{{productId}}_{{goodsId}}/{{cnAlphabet}}.html" target="_blank">
<div class="goods-info" data-skn="{{product_skn}}">
<a href="/product/pro_{{product_id}}_{{goods_id}}/{{cn_alphabet}}.html" target="_blank">
<img class="lazy thumb" data-original="{{src}}">
</a>
<div class="desc">
<a class="name" href="" target="_blank">{{productName}}</a>
<p class="price">¥{{round salesPrice 2}}</p>
<a class="name" href="" target="_blank">{{product_name}}</a>
<p class="price">¥{{round sales_price 2}}</p>
</div>
</div>
{{/each}}
... ... @@ -65,14 +64,14 @@
<div class="goods-wrap">
{{#each hotProducts}}
<div class="goods-info" data-skn="{{productSkn}}">
<a href="/product/pro_{{productId}}_{{goodsId}}/{{cnAlphabet}}.html" target="_blank">
<div class="goods-info" data-skn="{{product_skn}}">
<a href="/product/pro_{{product_id}}_{{goods_id}}/{{cn_alphabet}}.html" target="_blank">
<img class="lazy thumb" data-original="{{src}}">
</a>
<div class="desc-cover"></div>
<div class="desc">
<a class="name" href="" target="_blank">{{productName}}</a>
<p class="price">¥{{round salesPrice 2}}</p>
<a class="name" href="" target="_blank">{{product_name}}</a>
<p class="price">¥{{round sales_price 2}}</p>
</div>
</div>
{{/each}}
... ... @@ -91,13 +90,13 @@
{{> list/order-area}}
<div class="goods-wrap">
{{#each products}}
<div class="goods-info" data-skn="{{productSkn}}">
<div class="goods-info" data-skn="{{product_skn}}">
<a href="{{https url}}" target="_blank">
<img class="lazy thumb" data-original="{{image defaultImages 270 366}}" style="display: block;">
<img class="lazy thumb" data-original="{{image default_images 270 366}}" style="display: block;">
</a>
<div class="desc">
<a class="name" href="{{https url}}" target="_blank">{{productName}}</a>
<p class="price">¥{{round salesPrice 2}}</p>
<a class="name" href="{{https url}}" target="_blank">{{product_name}}</a>
<p class="price">¥{{round sales_price 2}}</p>
</div>
</div>
{{/each}}
... ...
<div class="yoho-ui-accordion">
<h3>适用人群</h3>
<div class="body sex-body">
{{#each people}}
<div class="input-radio" data-value="{{value}}">
{{> icon/radio}}
<label>{{name}}</label>
</div>
{{/each}}
</div>
</div>
<div class="blank-div"></div>
{{#if singleSort}}
<div class="yoho-ui-accordion">
<h3>全部品类</h3>
<div class="body">
<div class="list-body nano">
<div class="nano-content">
{{#each sortData}}
<div class="input-radio" data-value="{{relationParameter.sort}}" data-usesmall="{{../useSmallSort}}"
data-category="{{categoryId}}">
{{> icon/radio }}
<label>{{categoryName}}</label>
</div>
{{/each}}
</div>
</div>
</div>
</div>
{{^}}
<div class="title">全部品类</div>
<div class="yoho-ui-accordion no-active">
{{#each sortData}}
<h3 {{#if checked}}class="active"{{/if}}>{{categoryName}}</h3>
<div class="body" data-value="{{categoryId}}">
<div class="list-body nano">
<div class="nano-content">
{{#each sub}}
<div class="input-radio" data-value="{{relationParameter.sort}}" data-usesmall="{{../../useSmallSort}}"
data-category="{{categoryId}}">
{{> icon/radio }}
<label>{{categoryName}}</label>
</div>
{{/each}}
</div>
</div>
</div>
{{/each}}
</div>
{{/if}}
<div class="blank-div"></div>
{{#if brandData}}
<div class="yoho-ui-accordion">
<h3>品牌</h3>
<div class="body">
<div class="brand-body">
<input type="text" class="brand-search" placeholder="输入您要查找的品牌">
</div>
<div class="brand-letter-items">
<span class="item item-all" data-value="">全部</span>
{{#each letters}}
<span class="item" data-value="{{letter}}">{{letter}}</span>
{{/each}}
<span class="mulit-choose">
多选 +
</span>
</div>
<div class="brand-list nano">
<div class="nano-content">
{{#each brandData}}
<div class="input-radio {{#if checked}}default-check{{/if}}" data-value="{{id}}"
data-word="{{brandAlif}}">
{{> icon/radio}}
{{#if brandNameEn}}
<label>{{brandNameEn}}</label>
{{^}}
<label>{{brandName}}</label>
{{/if}}
</div>
{{/each}}
</div>
</div>
<div class="brand-btns">
<span class="btn disable large confirm">确定</span>
<span class="btn white large cancel">取消</span>
</div>
</div>
</div>
{{/if}}
{{#if showPrice}}
<div class="yoho-ui-accordion">
<h3>价格</h3>
<div class="body price-body">
{{#each priceRange}}
<div class="input-radio" data-value="{{lower}},{{higher}}">
{{> icon/radio }}
<label>¥{{lower}}{{higher}}</label>
</div>
{{/each}}
<div class="price-btns">
<div class="price-input inline-block">
<span class="iconfont">&#xe63a;</span>
<input type="text" class="price-low" value="{{customPriceLow}}">
</div>
<span></span>
<div class="price-input inline-block">
<span class="iconfont">&#xe63a;</span>
<input type="text" class="price-high" value="{{customPriceHigh}}">
</div>
<span class="btn large confirm">确定</span>
</div>
</div>
</div>
{{/if}}
{{#if showSize}}
<div class="yoho-ui-accordion">
<h3>尺码</h3>
<div class="body">
<div class="size-body nano">
<div class="nano-content">
{{#each size}}
<div class="input-radio" data-value="{{sizeId}}">
{{> icon/radio }}
<label>{{sizeName}}</label>
</div>
{{/each}}
</div>
</div>
</div>
</div>
{{/if}}
{{#if colors}}
<div class="yoho-ui-accordion">
<h3>颜色</h3>
<div class="body">
<div class="color-body nano">
<div class="nano-content">
{{#each colors}}
<div class="input-radio" data-value="{{id}}">
{{> round-color}}
<label>{{title}}</label>
</div>
{{/each}}
</div>
</div>
</div>
</div>
{{/if}}
{{#if showInfo}}
<div class="blank-div"></div>
<div class="title">商品属性</div>
<div class="yoho-ui-accordion no-active">
{{#if style}}
<h3>风格</h3>
<div class="body">
<div class="style-mulit-btn">
<span class="btn white">多选</span>
</div>
<div class="style-body nano">
<div class="nano-content">
{{#each style}}
<div class="input-radio {{#if checked}}default-check{{/if}}" data-value="{{styleId}}">
{{> icon/radio }}
<label>{{styleName}}</label>
</div>
{{/each}}
</div>
</div>
<div class="style-btns">
<span class="btn disable large confirm">确定</span>
<span class="btn white large cancel">取消</span>
</div>
</div>
{{/if}}
{{#each standard}}
<h3>{{standardName}}</h3>
<div class="body" data-value="{{standardId}}">
<div class="standard-body nano">
<div class="nano-content">
{{#each sub}}
<div class="input-radio" data-value="{{standardId}}">
{{> icon/radio }}
<label>{{standardName}}</label>
</div>
{{/each}}
</div>
</div>
</div>
{{/each}}
</div>
{{/if}}
<div class="blank-div" style="margin-bottom: 10px;"></div>
<div class="yoho-ui-accordion">
<h3>适用人群</h3>
<div class="body sex-body">
{{#each people}}
<div class="input-radio" data-value="{{value}}">
{{> icon/radio}}
<label>{{name}}</label>
</div>
{{/each}}
</div>
</div>
<div class="blank-div"></div>
{{#if singleSort}}
<div class="yoho-ui-accordion">
<h3>全部品类</h3>
<div class="body">
<div class="list-body nano">
<div class="nano-content">
{{#each sortData}}
<div class="input-radio" data-value="{{relationParameter.sort}}" data-usesmall="{{../useSmallSort}}"
data-category="{{categoryId}}">
{{> icon/radio }}
<label>{{categoryName}}</label>
</div>
{{/each}}
</div>
</div>
</div>
</div>
{{^}}
<div class="title">全部品类</div>
<div class="yoho-ui-accordion no-active">
{{#each sortData}}
<h3 {{#if checked}}class="active"{{/if}}>{{category_name}}</h3>
<div class="body" data-value="{{category_id}}">
<div class="list-body nano">
<div class="nano-content">
{{#each sub}}
<div class="input-radio" data-value="{{relation_parameter.sort}}" data-usesmall="{{../../useSmallSort}}"
data-category="{{category_id}}">
{{> icon/radio }}
<label>{{category_name}}</label>
</div>
{{/each}}
</div>
</div>
</div>
{{/each}}
</div>
{{/if}}
<div class="blank-div"></div>
{{#if brandData}}
<div class="yoho-ui-accordion">
<h3>品牌</h3>
<div class="body">
<div class="brand-body">
<input type="text" class="brand-search" placeholder="输入您要查找的品牌">
</div>
<div class="brand-letter-items">
<span class="item item-all" data-value="">全部</span>
{{#each letters}}
<span class="item" data-value="{{letter}}">{{letter}}</span>
{{/each}}
<span class="mulit-choose">
多选 +
</span>
</div>
<div class="brand-list nano">
<div class="nano-content">
{{#each brandData}}
<div class="input-radio {{#if checked}}default-check{{/if}}" data-value="{{id}}"
data-word="{{brand_alif}}">
{{> icon/radio}}
{{#if brand_name_en}}
<label>{{brand_name_en}}</label>
{{^}}
<label>{{brand_name}}</label>
{{/if}}
</div>
{{/each}}
</div>
</div>
<div class="brand-btns">
<span class="btn disable large confirm">确定</span>
<span class="btn white large cancel">取消</span>
</div>
</div>
</div>
{{/if}}
{{#if showPrice}}
<div class="yoho-ui-accordion">
<h3>价格</h3>
<div class="body price-body">
{{#each priceRange}}
<div class="input-radio" data-value="{{lower}},{{higher}}">
{{> icon/radio }}
<label>¥{{lower}}{{higher}}</label>
</div>
{{/each}}
<div class="price-btns">
<div class="price-input inline-block">
<span class="iconfont">&#xe63a;</span>
<input type="text" class="price-low" value="{{customPriceLow}}">
</div>
<span></span>
<div class="price-input inline-block">
<span class="iconfont">&#xe63a;</span>
<input type="text" class="price-high" value="{{customPriceHigh}}">
</div>
<span class="btn large confirm">确定</span>
</div>
</div>
</div>
{{/if}}
{{#if showSize}}
<div class="yoho-ui-accordion">
<h3>尺码</h3>
<div class="body">
<div class="size-body nano">
<div class="nano-content">
{{#each size}}
<div class="input-radio" data-value="{{size_id}}">
{{> icon/radio }}
<label>{{size_name}}</label>
</div>
{{/each}}
</div>
</div>
</div>
</div>
{{/if}}
{{#if colors}}
<div class="yoho-ui-accordion">
<h3>颜色</h3>
<div class="body">
<div class="color-body nano">
<div class="nano-content">
{{#each colors}}
<div class="input-radio" data-value="{{id}}">
{{> round-color}}
<label>{{title}}</label>
</div>
{{/each}}
</div>
</div>
</div>
</div>
{{/if}}
{{#if showInfo}}
<div class="blank-div"></div>
<div class="title">商品属性</div>
<div class="yoho-ui-accordion no-active">
{{#if style}}
<h3>风格</h3>
<div class="body">
<div class="style-mulit-btn">
<span class="btn white">多选</span>
</div>
<div class="style-body nano">
<div class="nano-content">
{{#each style}}
<div class="input-radio {{#if checked}}default-check{{/if}}" data-value="{{style_id}}">
{{> icon/radio }}
<label>{{style_name}}</label>
</div>
{{/each}}
</div>
</div>
<div class="style-btns">
<span class="btn disable large confirm">确定</span>
<span class="btn white large cancel">取消</span>
</div>
</div>
{{/if}}
{{#each standard}}
<h3>{{standard_name}}</h3>
<div class="body" data-value="{{standard_id}}">
<div class="standard-body nano">
<div class="nano-content">
{{#each sub}}
<div class="input-radio" data-value="{{standard_id}}">
{{> icon/radio }}
<label>{{standard_name}}</label>
</div>
{{/each}}
</div>
</div>
</div>
{{/each}}
</div>
{{/if}}
<div class="blank-div" style="margin-bottom: 10px;"></div>
... ...
<div class="goods-area clearfix">
{{#each products}}
<div class="goods" data-id="{{productId}}" data-url="{{url}}">
<div class="goods" data-id="{{product_id}}" data-url="{{url}}">
<div class="goods-img">
<a href="{{https url}}" target="_blank">
<img class="lazy" data-original="{{image defaultImages 263 351}}" width="263" height="351" alt="">
<img class="lazy" data-original="{{image default_images 263 351}}" width="263" height="351" alt="">
</a>
</div>
{{#if showBrand}}
<div class="goods-brand">
<a href="/product/shop/{{brandDomain}}" target="_self">{{brandName}}</a>
<a href="/product/shop/{{brand_domain}}" target="_self">{{brand_name}}</a>
</div>
{{/if}}
<div class="goods-name">
<a href="{{https url}}" target="_blank">{{productName}}</a>
<a href="{{https url}}" target="_blank">{{product_name}}</a>
</div>
<div class="goods-price">
<span>¥{{round salesPrice}}</span>
{{#if marketPrice}}
<b>¥{{round marketPrice}}</b>
<span>¥{{round sales_price}}</span>
{{#if market_price}}
<b>¥{{round market_price}}</b>
{{/if}}
</div>
<div class="goods-list hide">
{{#each goodsList}}
<i data-url="{{url}}">{{image imagesUrl 263 351}}</i>
{{#each goods_list}}
<i data-url="{{url}}">{{image images_url 263 351}}</i>
{{/each}}
</div>
</div>
... ...
... ... @@ -5,7 +5,7 @@
<div><a href="{{@root.mores.all.url}}?gender=2,3">女士</a></div>
<div><a href="{{@root.mores.all.url}}?_Channel=lifestyle">生活</a></div>
{{# each banner.sorts}}
<div><a href="{{@root.mores.all.url}}?misort={{sortId}}">{{sortName}}</a></div>
<div><a href="{{@root.mores.all.url}}?misort={{sort_id}}">{{sort_name}}</a></div>
{{/ each}}
</div>
<div class="more"><a href="{{@root.mores.all.url}}">MORE</a></div>
... ...
... ... @@ -74,6 +74,7 @@
"eslint-config-yoho": "^1.0.1",
"gulp": "^3.9.1",
"gulp-cssnano": "^2.1.2",
"gulp-ftp": "^1.1.0",
"gulp-postcss": "^6.1.0",
"gulp-sourcemaps": "^2.0.0-alpha",
"gulp-util": "^3.0.7",
... ...
... ... @@ -99,8 +99,8 @@ function renderList(data) {
var resultSkn;
if (data) {
resultId = data.productId;
resultSkn = data.productSkn;
resultId = data.product_id;
resultSkn = data.product_skn;
$el.each(function(index, item) {
var $item = $(item);
... ...
{{#type}}
<span class="type {{#if isDefault}}active{{/if}}" data-type="{{id}}">{{name}}</span>
<span class="type {{#if is_default}}active{{/if}}" data-type="{{id}}">{{name}}</span>
{{/type}}
... ...
<div class="color-list">
{{#goodsList}}
{{#goods_list}}
<div class="img-box {{#if isActive}}active{{/if}}" >
<img src="{{colorImage}}" alt="{{colorName}}" data-index="{{@index}}" data-color="{{colorName}}" data-id="{{colorId}}" data-goods-id="{{goodsId}}">
<img src="{{color_image}}" alt="{{color_name}}" data-index="{{@index}}" data-color="{{color_name}}" data-id="{{color_id}}" data-goods-id="{{goods_id}}">
</div>
{{/goodsList}}
{{/goods_list}}
</div>
... ...
<div>
{{#goodsList}}
{{#goods_list}}
<div class="hide size-list" data-index="{{@index}}">
{{#sizeList}}
<span data-size="{{sizeName}}" data-sku="{{productSku}}" data-id="{{goodsId}}" {{#unless storageNumber}}class="disable"{{/unless}}>{{sizeName}}</span>
{{/sizeList}}
{{#size_list}}
<span data-size="{{size_name}}" data-sku="{{product_sku}}" data-id="{{goods_id}}" {{#unless storage_number}}class="disable"{{/unless}}>{{size_name}}</span>
{{/size_list}}
</div>
{{/goodsList}}
{{/goods_list}}
</div>
... ...