Merge branch 'release/1.0' of http://git.yoho.cn/fe/yoho-blk into release/1.0
Showing
11 changed files
with
79 additions
and
35 deletions
@@ -27,13 +27,16 @@ const list = { | @@ -27,13 +27,16 @@ const list = { | ||
27 | title: '列表' | 27 | title: '列表' |
28 | }; | 28 | }; |
29 | 29 | ||
30 | - Search.queryProduct(q).then(result => { | 30 | + Promise.all([Search.queryAllSort(), Search.queryProduct(q)]).then(allResult => { |
31 | + let allSort = camelCase(allResult[0]); | ||
32 | + let result = allResult[1]; | ||
31 | 33 | ||
32 | if (result && result.code === 200 && result.data) { | 34 | if (result && result.code === 200 && result.data) { |
33 | let data = camelCase(result.data); | 35 | let data = camelCase(result.data); |
34 | let nav = [DataHelper.getChannelNav()]; | 36 | let nav = [DataHelper.getChannelNav()]; |
35 | 37 | ||
36 | if (data.filter) { | 38 | if (data.filter) { |
39 | + data.filter.groupSort = DataHelper.sortConvert(allSort.data.sort); | ||
37 | retData.filter = DataHelper.filterHandle(data.filter, q); | 40 | retData.filter = DataHelper.filterHandle(data.filter, q); |
38 | retData.filter.showPrice = data.total > 10; | 41 | retData.filter.showPrice = data.total > 10; |
39 | nav = _.concat(nav, retData.filter.nav); | 42 | nav = _.concat(nav, retData.filter.nav); |
@@ -74,9 +77,10 @@ const list = { | @@ -74,9 +77,10 @@ const list = { | ||
74 | title: '列表' | 77 | title: '列表' |
75 | }; | 78 | }; |
76 | 79 | ||
77 | - Promise.all([Resouces.newProductBanner(), Search.queryNewProduct(q)]).then(result => { | 80 | + Promise.all([Resouces.newProductBanner(), Search.queryAllSort(), Search.queryNewProduct(q)]).then(result => { |
78 | let banner = result[0]; | 81 | let banner = result[0]; |
79 | - let listData = result[1]; | 82 | + let sortData = camelCase(result[1]); |
83 | + let listData = result[2]; | ||
80 | let nav = [DataHelper.getChannelNav(), { | 84 | let nav = [DataHelper.getChannelNav(), { |
81 | name: '新品' | 85 | name: '新品' |
82 | }]; | 86 | }]; |
@@ -87,6 +91,7 @@ const list = { | @@ -87,6 +91,7 @@ const list = { | ||
87 | let data = camelCase(listData.data); | 91 | let data = camelCase(listData.data); |
88 | 92 | ||
89 | if (data.filter) { | 93 | if (data.filter) { |
94 | + data.filter.groupSort = DataHelper.sortConvert(sortData.data.sort); | ||
90 | retData.filter = DataHelper.filterHandle(data.filter, q); | 95 | retData.filter = DataHelper.filterHandle(data.filter, q); |
91 | retData.filter.showPrice = data.total > 10; | 96 | retData.filter.showPrice = data.total > 10; |
92 | } | 97 | } |
@@ -28,7 +28,9 @@ const Query = { | @@ -28,7 +28,9 @@ const Query = { | ||
28 | query: query | 28 | query: query |
29 | }; | 29 | }; |
30 | 30 | ||
31 | - Search.queryProduct(q).then(result => { | 31 | + Promise.all([Search.queryAllSort(), Search.queryProduct(q)]).then(allResult => { |
32 | + let allSort = camelCase(allResult[0]); | ||
33 | + let result = allResult[1]; | ||
32 | 34 | ||
33 | if (result && result.code === 200 && result.data) { | 35 | if (result && result.code === 200 && result.data) { |
34 | let data = camelCase(result.data); | 36 | let data = camelCase(result.data); |
@@ -39,6 +41,7 @@ const Query = { | @@ -39,6 +41,7 @@ const Query = { | ||
39 | }); | 41 | }); |
40 | 42 | ||
41 | if (data.filter) { | 43 | if (data.filter) { |
44 | + data.filter.groupSort = DataHelper.sortConvert(allSort.data.sort); | ||
42 | retData.filter = DataHelper.filterHandle(data.filter, q); | 45 | retData.filter = DataHelper.filterHandle(data.filter, q); |
43 | retData.filter.showPrice = data.total > 10; | 46 | retData.filter.showPrice = data.total > 10; |
44 | } | 47 | } |
@@ -111,15 +111,23 @@ const shop = { | @@ -111,15 +111,23 @@ const shop = { | ||
111 | }); | 111 | }); |
112 | } else { | 112 | } else { |
113 | res.status(404); | 113 | res.status(404); |
114 | - return Promise.reject('brand not found'); | 114 | + return Promise.reject('brand-not-found'); |
115 | } | 115 | } |
116 | }).then(() => { | 116 | }).then(() => { |
117 | - return Search.queryProductOfBrand(q).then(result => { | 117 | + return Promise.all([Search.queryAllSort({ |
118 | + brand: q.brand, | ||
119 | + shop: q.shop_id, | ||
120 | + small_sort: 1 | ||
121 | + }), Search.queryProductOfBrand(q)]).then(allResult => { | ||
122 | + let allSort = camelCase(allResult[0]); | ||
123 | + let result = allResult[1]; | ||
124 | + | ||
118 | if (result && result.code === 200 && result.data) { | 125 | if (result && result.code === 200 && result.data) { |
119 | let ret = camelCase(result.data); | 126 | let ret = camelCase(result.data); |
120 | 127 | ||
121 | if (ret.filter) { | 128 | if (ret.filter) { |
122 | delete q.brand; | 129 | delete q.brand; |
130 | + ret.filter.groupSort = DataHelper.sortConvert(allSort.data.sort); | ||
123 | data.filter = DataHelper.filterHandle(ret.filter, req.query); | 131 | data.filter = DataHelper.filterHandle(ret.filter, req.query); |
124 | data.filter.showPrice = ret.total > 10; | 132 | data.filter.showPrice = ret.total > 10; |
125 | } | 133 | } |
@@ -96,27 +96,28 @@ const helpers = { | @@ -96,27 +96,28 @@ const helpers = { | ||
96 | * @param sorts | 96 | * @param sorts |
97 | * @returns {Array} | 97 | * @returns {Array} |
98 | */ | 98 | */ |
99 | - getSortNav(sort, sorts) { | 99 | + getSortNav(msort, misort, sorts) { |
100 | let nav = []; | 100 | let nav = []; |
101 | + let sortQuery = '?'; | ||
101 | 102 | ||
102 | - if (sort && sorts) { | 103 | + if (msort && sorts) { |
103 | sorts.forEach(s => { | 104 | sorts.forEach(s => { |
104 | - if (s.relationParameter.sort === sort) { | 105 | + if (s.categoryId === msort) { |
106 | + sortQuery += 'msort=' + msort; | ||
107 | + s.checked = true; | ||
105 | nav.push({ | 108 | nav.push({ |
106 | - link: '#', | 109 | + link: sortQuery, |
107 | pathTitle: '', | 110 | pathTitle: '', |
108 | name: s.categoryName | 111 | name: s.categoryName |
109 | }); | 112 | }); |
110 | - } else if (s.sub) { | 113 | + } |
114 | + if (s.sub && misort) { | ||
111 | s.sub.forEach(m => { | 115 | s.sub.forEach(m => { |
112 | - if (m.relationParameter.sort === sort) { | ||
113 | - nav.push({ | ||
114 | - link: '#', | ||
115 | - pathTitle: '', | ||
116 | - name: s.categoryName | ||
117 | - }); | 116 | + if (m.categoryId === misort) { |
117 | + sortQuery += '&misort=' + misort; | ||
118 | + m.checked = true; | ||
118 | nav.push({ | 119 | nav.push({ |
119 | - link: '#', | 120 | + link: sortQuery, |
120 | pathTitle: '', | 121 | pathTitle: '', |
121 | name: m.categoryName | 122 | name: m.categoryName |
122 | }); | 123 | }); |
@@ -143,6 +144,16 @@ const helpers = { | @@ -143,6 +144,16 @@ const helpers = { | ||
143 | }; | 144 | }; |
144 | }, | 145 | }, |
145 | 146 | ||
147 | + sortConvert(sorts) { | ||
148 | + return _.map(sorts, s => { | ||
149 | + return { | ||
150 | + categoryId: s.sortId, | ||
151 | + categoryName: s.sortName, | ||
152 | + sub: helpers.sortConvert(s.sub) | ||
153 | + }; | ||
154 | + }); | ||
155 | + }, | ||
156 | + | ||
146 | /** | 157 | /** |
147 | * 筛选器数据处理 | 158 | * 筛选器数据处理 |
148 | * @param filter | 159 | * @param filter |
@@ -160,6 +171,7 @@ const helpers = { | @@ -160,6 +171,7 @@ const helpers = { | ||
160 | let filters = []; | 171 | let filters = []; |
161 | let customPriceLow = ''; | 172 | let customPriceLow = ''; |
162 | let customPriceHigh = ''; | 173 | let customPriceHigh = ''; |
174 | + let showSize = (!!q.sort || !!q.misort); | ||
163 | 175 | ||
164 | genders.forEach(g => { | 176 | genders.forEach(g => { |
165 | if (g.value === q.gender) { | 177 | if (g.value === q.gender) { |
@@ -222,6 +234,7 @@ const helpers = { | @@ -222,6 +234,7 @@ const helpers = { | ||
222 | } | 234 | } |
223 | 235 | ||
224 | if (q.size) { | 236 | if (q.size) { |
237 | + showSize = false; | ||
225 | sizeInfo.forEach(s => { | 238 | sizeInfo.forEach(s => { |
226 | if (s.sizeId === parseInt(q.size, 10)) { | 239 | if (s.sizeId === parseInt(q.size, 10)) { |
227 | s.checked = true; | 240 | s.checked = true; |
@@ -270,9 +283,9 @@ const helpers = { | @@ -270,9 +283,9 @@ const helpers = { | ||
270 | letters: this.brandLetters(), | 283 | letters: this.brandLetters(), |
271 | customPriceLow: customPriceLow, | 284 | customPriceLow: customPriceLow, |
272 | customPriceHigh: customPriceHigh, | 285 | customPriceHigh: customPriceHigh, |
273 | - showSize: !!q.sort, | 286 | + showSize: showSize, |
274 | showPrice: true, | 287 | showPrice: true, |
275 | - nav: this.getSortNav(q.sort, sorts) | 288 | + nav: this.getSortNav(q.msort, q.misort, sorts) |
276 | }; | 289 | }; |
277 | }, | 290 | }, |
278 | 291 |
@@ -47,7 +47,7 @@ const Search = { | @@ -47,7 +47,7 @@ const Search = { | ||
47 | }, | 47 | }, |
48 | queryProductOfBrand(params) { | 48 | queryProductOfBrand(params) { |
49 | let finalParams = { | 49 | let finalParams = { |
50 | - method: 'app.search.brand', | 50 | + method: 'app.search.li', |
51 | limit: 45, | 51 | limit: 45, |
52 | app_type: 1 | 52 | app_type: 1 |
53 | }; | 53 | }; |
@@ -67,11 +67,11 @@ const Search = { | @@ -67,11 +67,11 @@ const Search = { | ||
67 | 67 | ||
68 | return api.get('', finalParams); | 68 | return api.get('', finalParams); |
69 | }, | 69 | }, |
70 | - queryAllSort() { | ||
71 | - return api.get('', { | ||
72 | - method: 'app.sort.get', | 70 | + queryAllSort(params) { |
71 | + return api.get('', _.assign({ | ||
72 | + method: 'web.regular.groupsort', | ||
73 | app_type: 1 | 73 | app_type: 1 |
74 | - }); | 74 | + }, params), {code: 200}); |
75 | } | 75 | } |
76 | }; | 76 | }; |
77 | 77 |
@@ -10,7 +10,7 @@ | @@ -10,7 +10,7 @@ | ||
10 | {{> list/banner-info }} | 10 | {{> list/banner-info }} |
11 | </div> | 11 | </div> |
12 | 12 | ||
13 | - <div class="center-content clearfix"> | 13 | + <div class="yoho-product-list-content center-content clearfix"> |
14 | <div class="left"> | 14 | <div class="left"> |
15 | {{!-- 筛选区域 --}} | 15 | {{!-- 筛选区域 --}} |
16 | {{#filter}} | 16 | {{#filter}} |
@@ -34,7 +34,7 @@ | @@ -34,7 +34,7 @@ | ||
34 | <div class="title">全部品类</div> | 34 | <div class="title">全部品类</div> |
35 | <div class="yoho-ui-accordion no-active"> | 35 | <div class="yoho-ui-accordion no-active"> |
36 | {{#each sortData}} | 36 | {{#each sortData}} |
37 | - <h3>{{categoryName}}</h3> | 37 | + <h3 {{#if checked}}class="active"{{/if}}>{{categoryName}}</h3> |
38 | <div class="body" data-value="{{categoryId}}"> | 38 | <div class="body" data-value="{{categoryId}}"> |
39 | <div class="list-body nano"> | 39 | <div class="list-body nano"> |
40 | <div class="nano-content"> | 40 | <div class="nano-content"> |
@@ -19,8 +19,10 @@ module.exports = { | @@ -19,8 +19,10 @@ module.exports = { | ||
19 | }, | 19 | }, |
20 | cookieDomain: 'yohobuy.com', | 20 | cookieDomain: 'yohobuy.com', |
21 | domains: { | 21 | domains: { |
22 | - api: 'http://testapi.yoho.cn:28078/', // devapi.yoho.cn:58078 testapi.yoho.cn:28078 devapi.yoho.cn:58078 | ||
23 | - service: 'http://testservice.yoho.cn:28077/', // testservice.yoho.cn:28077 devservice.yoho.cn:58077 | 22 | + api: 'http://devapi.yoho.cn:58078/', // devapi.yoho.cn:58078 testapi.yoho.cn:28078 devapi.yoho.cn:58078 |
23 | + service: 'http://devservice.yoho.cn:58077/', // testservice.yoho.cn:28077 devservice.yoho.cn:58077 | ||
24 | + // api: 'http://api.yoho.cn/', | ||
25 | + // service: 'http://service.yoho.cn/', | ||
24 | search: 'http://192.168.102.216:8080/yohosearch/' | 26 | search: 'http://192.168.102.216:8080/yohosearch/' |
25 | }, | 27 | }, |
26 | useOneapm: false, | 28 | useOneapm: false, |
@@ -23,12 +23,18 @@ var YohoListPage = { | @@ -23,12 +23,18 @@ var YohoListPage = { | ||
23 | $('.yoho-ui-accordion', this.rootDoc).each(function() { | 23 | $('.yoho-ui-accordion', this.rootDoc).each(function() { |
24 | var opts = { | 24 | var opts = { |
25 | collapsible: true, | 25 | collapsible: true, |
26 | - heightStyle: 'content' | 26 | + heightStyle: 'content', |
27 | + active: 0 | ||
27 | }; | 28 | }; |
28 | 29 | ||
29 | if ($(this).hasClass('no-active')) { | 30 | if ($(this).hasClass('no-active')) { |
30 | opts.active = false; | 31 | opts.active = false; |
31 | } | 32 | } |
33 | + $(this).find('h3').each(function(index) { | ||
34 | + if ($(this).hasClass('active')) { | ||
35 | + opts.active = index; | ||
36 | + } | ||
37 | + }); | ||
32 | $(this).accordion(opts); | 38 | $(this).accordion(opts); |
33 | }); | 39 | }); |
34 | 40 | ||
@@ -45,14 +51,13 @@ var YohoListPage = { | @@ -45,14 +51,13 @@ var YohoListPage = { | ||
45 | $('.list-body .input-radio', this.rootDoc).check({ | 51 | $('.list-body .input-radio', this.rootDoc).check({ |
46 | type: 'radio', | 52 | type: 'radio', |
47 | group: 'sort', | 53 | group: 'sort', |
48 | - onChange: function(ele, checked, value) { | 54 | + onChange: function(ele) { |
49 | var subCategoryId = $(ele).data('category'); | 55 | var subCategoryId = $(ele).data('category'); |
50 | var categoryId = $(ele).parents('.body').data('value'); | 56 | var categoryId = $(ele).parents('.body').data('value'); |
51 | 57 | ||
52 | YohoListPage.go({ | 58 | YohoListPage.go({ |
53 | - categoryId: categoryId, | ||
54 | - subCategoryId: subCategoryId, | ||
55 | - sort: checked ? value : '' | 59 | + msort: categoryId, |
60 | + misort: subCategoryId | ||
56 | }); | 61 | }); |
57 | } | 62 | } |
58 | }); | 63 | }); |
@@ -340,6 +340,11 @@ | @@ -340,6 +340,11 @@ | ||
340 | text-align: center; | 340 | text-align: center; |
341 | margin: 20px 0 40px; | 341 | margin: 20px 0 40px; |
342 | 342 | ||
343 | + li { | ||
344 | + width: auto; | ||
345 | + margin: 0 4px; | ||
346 | + } | ||
347 | + | ||
343 | li:first-child, | 348 | li:first-child, |
344 | li:last-child { | 349 | li:last-child { |
345 | border-width: 2px; | 350 | border-width: 2px; |
1 | .yoho-product-list, | 1 | .yoho-product-list, |
2 | .yoho-shop-index { | 2 | .yoho-shop-index { |
3 | 3 | ||
4 | + .yoho-product-list-content { | ||
5 | + margin-top: 30px; | ||
6 | + } | ||
7 | + | ||
4 | .brand-banner { | 8 | .brand-banner { |
5 | width: 100%; | 9 | width: 100%; |
6 | height: 150px; | 10 | height: 150px; |
@@ -37,7 +41,6 @@ | @@ -37,7 +41,6 @@ | ||
37 | .shop-menu { | 41 | .shop-menu { |
38 | 42 | ||
39 | border-bottom: 1px solid #eee; | 43 | border-bottom: 1px solid #eee; |
40 | - margin-bottom: 30px; | ||
41 | 44 | ||
42 | li { | 45 | li { |
43 | display: inline-block; | 46 | display: inline-block; |
-
Please register or login to post a comment