Authored by 石坚

Merge branch 'feature/removCamel' of http://git.yoho.cn/fe/yoho-blk into feature/removCamel

... ... @@ -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 = value.colorValue;
} 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
};
// 虚拟商品,增加为一件
... ... @@ -439,7 +439,7 @@ const setProductData = base => {
}
// 限购商品
if (base.isLimitBuy === 'Y') {
if (base.isLimitBuy === true) {
let isBeginSale = (base.saleStatus && +base.saleStatus) === 1; // 是否开售
let showStatus = 1; // 限购商品有关的展示状态
... ... @@ -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>
... ...
... ... @@ -29,6 +29,9 @@ module.exports = {
service: 'http://dev-service.yohops.com:9999/',
singleApi: 'http://192.168.102.27:8092/',
search: 'http://search.yohoops.org/yohosearch/'
// api: 'http://api-test1.yohops.com:9999/',
// service: 'http://service-test1.yohops.com:9999/',
},
useOneapm: false,
useCache: false,
... ...