Showing
6 changed files
with
103 additions
and
14 deletions
@@ -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; |
apps/product/views/action/special-detail.hbs
0 → 100644
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 | +} |
-
Please register or login to post a comment