Authored by 王水玲

折扣专场

@@ -31,7 +31,7 @@ exports.index = (req, res) => { @@ -31,7 +31,7 @@ exports.index = (req, res) => {
31 }; 31 };
32 32
33 33
34 - saleModel.getSaleDate({ 34 + saleModel.getSaleData({
35 uid: cookie.getUid(req) 35 uid: cookie.getUid(req)
36 }).then((result) => { 36 }).then((result) => {
37 37
@@ -84,9 +84,29 @@ exports.special = (req, res) => { @@ -84,9 +84,29 @@ exports.special = (req, res) => {
84 pageFooter: true 84 pageFooter: true
85 }; 85 };
86 86
87 - saleModel.getSpecialDate().then((result) => { 87 + saleModel.getSpecialData().then((result) => {
88 res.render('special', Object.assign(renderData, result)); 88 res.render('special', Object.assign(renderData, result));
89 }).catch((err) => { 89 }).catch((err) => {
90 saleLogger(err, res); 90 saleLogger(err, res);
91 }); 91 });
92 }; 92 };
  93 +
  94 +
  95 +/**
  96 + * 折扣专场专题详情
  97 + */
  98 +exports.specialDetail = (req, res) => {
  99 + let headerData = headerModel.setNavHeader('折扣专场');
  100 + let renderData = {
  101 + module: 'product',
  102 + page: 'sale',
  103 + pageHeader: headerData,
  104 + pageFooter: true
  105 + };
  106 +
  107 + saleModel.getSpecialDetailData().then((result) => {
  108 + res.render('special-detail', Object.assign(renderData, result));
  109 + }).catch((err) => {
  110 + saleLogger(err, res);
  111 + });
  112 +}
@@ -7,14 +7,33 @@ @@ -7,14 +7,33 @@
7 const library = '../../../library'; 7 const library = '../../../library';
8 const API = require(`${library}/api`).API; 8 const API = require(`${library}/api`).API;
9 const sign = require(`${library}/sign`); 9 const sign = require(`${library}/sign`);
  10 +const _ = require('lodash');
  11 +const camelCase = require(`${library}/camel-case`);
10 const api = new API(); 12 const api = new API();
11 13
12 /** 14 /**
  15 + * 折扣专场跳转链接处理
  16 + */
  17 +const processSpecial = (list) => {
  18 + const formatData = [];
  19 +
  20 + list = list || [];
  21 + list = camelCase(list);
  22 +
  23 + _.forEach(list, (data) => {
  24 + data.specialUrl = `/product/specialDetail?id=${data.id}`;
  25 + formatData.push(data);
  26 + });
  27 +
  28 + return formatData;
  29 +}
  30 +
  31 +/**
13 * 获取首页数据 32 * 获取首页数据
14 * @param {[object]} params 33 * @param {[object]} params
15 * @return {[object]} 34 * @return {[object]}
16 */ 35 */
17 -exports.getSaleDate = (params) => { 36 +exports.getSaleData = (params) => {
18 37
19 return api.get('', sign.apiSign(Object.assign({ 38 return api.get('', sign.apiSign(Object.assign({
20 method: 'app.search.sales', 39 method: 'app.search.sales',
@@ -28,7 +47,8 @@ exports.getSaleDate = (params) => { @@ -28,7 +47,8 @@ exports.getSaleDate = (params) => {
28 * @param {[object]} params 47 * @param {[object]} params
29 * @return {[object]} 48 * @return {[object]}
30 */ 49 */
31 -exports.getSpecialDate = (params) => { 50 +exports.getSpecialData = (params) => {
  51 + const specialData = {};
32 52
33 return api.get('', sign.apiSign(Object.assign({ 53 return api.get('', sign.apiSign(Object.assign({
34 method: 'app.activity.get', 54 method: 'app.activity.get',
@@ -36,7 +56,9 @@ exports.getSpecialDate = (params) => { @@ -36,7 +56,9 @@ exports.getSpecialDate = (params) => {
36 plateform: 2 56 plateform: 2
37 }, params))).then((result) => { 57 }, params))).then((result) => {
38 if (result && result.code === 200) { 58 if (result && result.code === 200) {
39 - return result; 59 + specialData.data = processSpecial(result.data);
  60 + return specialData;
  61 + // return camelCase(result);
40 } else { 62 } else {
41 return Promise.reject('error'); 63 return Promise.reject('error');
42 } 64 }
@@ -44,3 +66,22 @@ exports.getSpecialDate = (params) => { @@ -44,3 +66,22 @@ exports.getSpecialDate = (params) => {
44 }; 66 };
45 67
46 68
  69 +/**
  70 + * 获取折扣专场专题详情数据
  71 + * @param {[object]} params
  72 + * @return {[object]}
  73 + */
  74 +exports.getSpecialDetailData = (params) => {
  75 + return api.get('', sign.apiSign(Object.assign({
  76 + method: 'app.activity.get',
  77 + sort: 2,
  78 + plateform: 2
  79 + }, params))).then((result) => {
  80 + if (result && result.code === 200) {
  81 + return camelCase(result.data);
  82 + } else {
  83 + return Promise.reject('error');
  84 + }
  85 + });
  86 +}
  87 +
@@ -20,6 +20,6 @@ router.get('/detail/:id/:gid', detail.index); @@ -20,6 +20,6 @@ router.get('/detail/:id/:gid', detail.index);
20 20
21 router.get('/sale', sale.index); 21 router.get('/sale', sale.index);
22 router.get('/special', sale.special); 22 router.get('/special', sale.special);
23 - 23 +router.get('/specialDetail', sale.specialDetail);
24 24
25 module.exports = router; 25 module.exports = router;
  1 +<div class="sale-channel-page yoho-page">
  2 + <div class="banner">
  3 + <img src="{{image src 640 250}}"/>
  4 + <span class="activity-time"><i class="iconfont time-ico">&#xe603;</i>{{time}}</span>
  5 + </div>
  6 +</div>
1 -{{# data}}  
2 <div class="sale-special-page yoho-page"> 1 <div class="sale-special-page yoho-page">
3 <ul class="special-list"> 2 <ul class="special-list">
  3 + {{#each data}}
4 <li> 4 <li>
5 - <a href="">  
6 - <img class="lazy" data-original="{{image cover_url 640 250}}" /> 5 + <a href="{{specialUrl}}">
  6 + <img class="lazy" data-original="{{image coverUrl 640 250}}" />
7 <p class="special-cont"> 7 <p class="special-cont">
8 <span class="special-title">{{title}}</span> 8 <span class="special-title">{{title}}</span>
9 - <span class="special-time"></span> 9 + <span class="special-time {{#if warnColor}}red-color{{/if}}">{{leftTime}}</span>
10 </p> 10 </p>
11 </a> 11 </a>
12 </li> 12 </li>
  13 + {{/each}}
13 </ul> 14 </ul>
14 -</div>  
15 -{{/ data}}  
  15 +</div>
@@ -10,12 +10,34 @@ @@ -10,12 +10,34 @@
10 margin-bottom: 30px; 10 margin-bottom: 30px;
11 } 11 }
12 12
  13 + img {
  14 + width: 100%;
  15 + height: 250px;
  16 + }
  17 +
13 .special-cont { 18 .special-cont {
14 height: 77px; 19 height: 77px;
15 line-height: 77px; 20 line-height: 77px;
16 border-bottom: 1px solid #e0e0e0; 21 border-bottom: 1px solid #e0e0e0;
17 - padding-left: 20px; 22 + padding: 0 20px;
18 box-sizing: border-box; 23 box-sizing: border-box;
19 } 24 }
  25 +
  26 + .special-title {
  27 + width: 450px;
  28 + height: 77px;
  29 + float: left;
  30 + text-overflow: ellipsis;
  31 + overflow: hidden;
  32 + white-space: nowrap;
  33 + }
  34 +
  35 + .special-time {
  36 + float: right;
  37 + }
  38 +
  39 + .red-color {
  40 + color: #d0021b;
  41 + }
20 } 42 }
21 -}  
  43 +}