Authored by 王水玲

sale

@@ -13,6 +13,15 @@ const headerModel = require('../../../doraemon/models/header'); @@ -13,6 +13,15 @@ const headerModel = require('../../../doraemon/models/header');
13 const log = require(`${library}/logger`); 13 const log = require(`${library}/logger`);
14 const saleModel = require(`${mRoot}/sale`); 14 const saleModel = require(`${mRoot}/sale`);
15 15
  16 +const queryParam = {
  17 + brand: '0',
  18 + gender: '1,2,3',
  19 + sort: '0',
  20 + size: '0',
  21 + price: '0',
  22 + discount: '0.1,0.9'
  23 +};
  24 +
16 const saleLogger = (err, res) => { 25 const saleLogger = (err, res) => {
17 log.error('sale页面渲染错误:' + JSON.stringify(err)); 26 log.error('sale页面渲染错误:' + JSON.stringify(err));
18 res.send('error'); 27 res.send('error');
@@ -32,7 +41,7 @@ exports.index = (req, res) => { @@ -32,7 +41,7 @@ exports.index = (req, res) => {
32 }; 41 };
33 42
34 saleModel.getSaleData().then((result) => { 43 saleModel.getSaleData().then((result) => {
35 - res.render('sale', Object.assign(renderData, { 44 + res.render('sale', Object.assign(renderData, queryParam, {
36 content: result, 45 content: result,
37 floorHeader: { 46 floorHeader: {
38 title: { 47 title: {
@@ -58,7 +67,7 @@ exports.breakCode = (req, res) => { @@ -58,7 +67,7 @@ exports.breakCode = (req, res) => {
58 }; 67 };
59 68
60 saleModel.getBreakCodeData().then((result) => { 69 saleModel.getBreakCodeData().then((result) => {
61 - res.render('break-code', Object.assign(renderData, result)); 70 + res.render('break-code', Object.assign(renderData, queryParam, result));
62 }).catch((err) => { 71 }).catch((err) => {
63 saleLogger(err, res); 72 saleLogger(err, res);
64 }); 73 });
@@ -99,7 +108,7 @@ exports.specialDetail = (req, res) => { @@ -99,7 +108,7 @@ exports.specialDetail = (req, res) => {
99 saleModel.getSpecialDetailData(id).then((result) => { 108 saleModel.getSpecialDetailData(id).then((result) => {
100 headerData.navTitle = result.title; 109 headerData.navTitle = result.title;
101 renderData.pageHeader = headerData; 110 renderData.pageHeader = headerData;
102 - res.render('special-detail', Object.assign(renderData, result)); 111 + res.render('special-detail', Object.assign(renderData, queryParam, result));
103 }).catch((err) => { 112 }).catch((err) => {
104 saleLogger(err, res); 113 saleLogger(err, res);
105 }); 114 });
@@ -118,7 +127,7 @@ exports.vip = (req, res) => { @@ -118,7 +127,7 @@ exports.vip = (req, res) => {
118 }; 127 };
119 128
120 saleModel.getVipData().then((result) => { 129 saleModel.getVipData().then((result) => {
121 - res.render('vip', Object.assign(renderData, { 130 + res.render('vip', Object.assign(renderData, queryParam, {
122 content: result 131 content: result
123 })); 132 }));
124 }).catch((err) => { 133 }).catch((err) => {
@@ -257,49 +257,60 @@ const processFilter = (list, options) => { @@ -257,49 +257,60 @@ const processFilter = (list, options) => {
257 name: '所有品牌', 257 name: '所有品牌',
258 title: '品牌', 258 title: '品牌',
259 dataId: 'id', 259 dataId: 'id',
260 - subsName: 'brandName' 260 + subsName: 'brandName',
  261 + firstSub: 0,
  262 + dataType: 'brand'
261 }, 263 },
262 color: { 264 color: {
263 name: '所有颜色', 265 name: '所有颜色',
264 title: '颜色', 266 title: '颜色',
265 dataId: 'colorId', 267 dataId: 'colorId',
266 - subsName: 'colorName' 268 + subsName: 'colorName',
  269 + firstSub: 0,
  270 + dataType: 'color'
267 }, 271 },
268 discount: { 272 discount: {
269 name: '所有商品', 273 name: '所有商品',
270 title: '折扣', 274 title: '折扣',
271 dataId: 'key', 275 dataId: 'key',
272 - subsName: 'name' 276 + subsName: 'name',
  277 + firstSub: '0.1,0.9',
  278 + dataType: 'discount'
273 }, 279 },
274 gender: { 280 gender: {
275 name: '所有性别', 281 name: '所有性别',
276 title: '性别', 282 title: '性别',
277 dataId: 'key', 283 dataId: 'key',
278 - subsName: 'flag' 284 + subsName: 'flag',
  285 + firstSub: '1,2,3',
  286 + dataType: 'gender'
279 }, 287 },
280 groupSort: { 288 groupSort: {
281 name: '所有品类', 289 name: '所有品类',
282 title: '品类', 290 title: '品类',
283 dataId: 'relationParameter', 291 dataId: 'relationParameter',
284 - subsName: 'categoryName' 292 + subsName: 'categoryName',
  293 + firstSub: 0,
  294 + dataType: 'sort'
285 }, 295 },
286 priceRange: { 296 priceRange: {
287 name: '所有价格', 297 name: '所有价格',
288 title: '价格', 298 title: '价格',
289 dataId: 'key', 299 dataId: 'key',
290 - subsName: 'flag' 300 + subsName: 'flag',
  301 + firstSub: 0,
  302 + dataType: 'price'
291 }, 303 },
292 size: { 304 size: {
293 name: '所有尺码', 305 name: '所有尺码',
294 title: '尺码', 306 title: '尺码',
295 dataId: 'sizeId', 307 dataId: 'sizeId',
296 - subsName: 'sizeName' 308 + subsName: 'sizeName',
  309 + firstSub: 0,
  310 + dataType: 'size'
297 } 311 }
298 }; 312 };
299 313
300 - let subs = {};  
301 - let classify = {};  
302 -  
303 options = Object.assign({ 314 options = Object.assign({
304 gender: '1,2,3', // 默认选择的性别,默认1,2,3表示所有 315 gender: '1,2,3', // 默认选择的性别,默认1,2,3表示所有
305 exclude: null // 需要排除的字段 316 exclude: null // 需要排除的字段
@@ -307,28 +318,45 @@ const processFilter = (list, options) => { @@ -307,28 +318,45 @@ const processFilter = (list, options) => {
307 list = camelCase(list); 318 list = camelCase(list);
308 319
309 _.forEach(list, (item, key) => { 320 _.forEach(list, (item, key) => {
  321 + let classify = {
  322 + subs: []
  323 + };
  324 +
310 if (key === 'group_sort') { 325 if (key === 'group_sort') {
311 return; 326 return;
312 } 327 }
313 - classify.dataType = key; 328 +
  329 + classify.dataType = filtersType[key].dataType;
314 classify.name = filtersType[key].name; 330 classify.name = filtersType[key].name;
315 - classify.title = filtersType[key].typeCont; 331 + classify.title = filtersType[key].title;
  332 +
  333 + classify.subs.push({
  334 + chosed: true,
  335 + dataId: filtersType[key].firstSub,
  336 + name: filtersType[key].name
  337 + });
316 338
317 _.forEach(item, (sub, index) => { 339 _.forEach(item, (sub, index) => {
  340 + let subs = {};
  341 +
318 if (filtersType[key].dataId === 'key') { 342 if (filtersType[key].dataId === 'key') {
319 subs.dataId = index; 343 subs.dataId = index;
320 } else if (filtersType[key].dataId === 'relationParameter') { 344 } else if (filtersType[key].dataId === 'relationParameter') {
321 - subs.dataId = item.relationParameter.sort; 345 + subs.dataId = sub.relationParameter['sort']; // eslint-disable-line
322 } else { 346 } else {
323 - subs.dataId = item[filtersType[key].dataId]; 347 + subs.dataId = sub[filtersType[key].dataId];
324 } 348 }
325 - 349 +
326 if (filtersType[key].subsName === 'flag') { 350 if (filtersType[key].subsName === 'flag') {
327 - subs.name = index; 351 + subs.name = sub;
328 } else { 352 } else {
329 subs.name = sub[filtersType[key].subsName]; 353 subs.name = sub[filtersType[key].subsName];
  354 +
  355 + if (key === 'discount') {
  356 + subs.name = subs.name + '折商品';
  357 + }
330 } 358 }
331 - classify.subs.push(subs) 359 + classify.subs.push(subs);
332 }); 360 });
333 361
334 filters.classify.push(classify); 362 filters.classify.push(classify);
@@ -13,7 +13,7 @@ module.exports = { @@ -13,7 +13,7 @@ module.exports = {
13 port: 6001, 13 port: 6001,
14 siteUrl: 'http://m.yohobuy.com', 14 siteUrl: 'http://m.yohobuy.com',
15 domains: { 15 domains: {
16 - api: 'http://testapi.yoho.cn:28078/', // http://devapi.yoho.cn:58078/ http://testapi.yoho.cn:28078/ 16 + api: 'http://192.168.102.205:8080/gateway/', // http://devapi.yoho.cn:58078/ http://testapi.yoho.cn:28078/ http://192.168.102.205:8080/gateway/
17 service: 'http://testservice.yoho.cn:28077/', 17 service: 'http://testservice.yoho.cn:28077/',
18 search: 'http://192.168.10.64:8080/yohosearch/' 18 search: 'http://192.168.10.64:8080/yohosearch/'
19 }, 19 },
@@ -13,7 +13,9 @@ let camelCase, @@ -13,7 +13,9 @@ let camelCase,
13 camelCaseObject = (obj) => { 13 camelCaseObject = (obj) => {
14 _.forEach(Object.keys(obj), (k) => { 14 _.forEach(Object.keys(obj), (k) => {
15 obj[k] = camelCase(obj[k]); 15 obj[k] = camelCase(obj[k]);
16 - obj[_.camelCase(k)] = obj[k]; 16 + if (/[_-]/.test(k)) {
  17 + obj[_.camelCase(k)] = obj[k];
  18 + }
17 }); 19 });
18 return obj; 20 return obj;
19 }; 21 };
1 -.filter-mask, .filter-body { 1 +.filter-mask,
  2 +.filter-body {
2 position: absolute; 3 position: absolute;
3 left: 0; 4 left: 0;
4 right: 0; 5 right: 0;
@@ -7,7 +8,7 @@ @@ -7,7 +8,7 @@
7 8
8 .filter-mask { 9 .filter-mask {
9 height: 100%; 10 height: 100%;
10 - background: rgba(0,0,0,0.1); 11 + background: rgba(0, 0, 0, 0.1);
11 } 12 }
12 13
13 .filter-body { 14 .filter-body {
@@ -70,7 +71,7 @@ @@ -70,7 +71,7 @@
70 -webkit-overflow-scrolling: touch; 71 -webkit-overflow-scrolling: touch;
71 72
72 > li { 73 > li {
73 - height: 160px; 74 + height: 120px;
74 line-height: 120px; 75 line-height: 120px;
75 padding-left: 30px; 76 padding-left: 30px;
76 border-bottom: 1px solid #e6e6e6; 77 border-bottom: 1px solid #e6e6e6;