Toggle navigation
Toggle navigation
This project
Loading...
Sign in
fe
/
yoho-blk
·
Commits
Go to a project
GitLab
Go to group
Project
Activity
Files
Commits
Pipelines
0
Builds
0
Graphs
Milestones
Issues
0
Merge Requests
1
Members
Labels
Wiki
Forks
Network
Create a new issue
Download as
Plain Diff
Browse Files
Authored by
石坚
9 years ago
Commit
ff6e98d7deb52352808291c0ffc59c6099cc272e
2 parents
43d2ec0b
0c287aae
Merge branch 'feature/removCamel' of
http://git.yoho.cn/fe/yoho-blk
into feature/removCamel
Hide whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
362 additions
and
367 deletions
apps/product/controllers/list.js
apps/product/controllers/query.js
apps/product/controllers/shop.js
apps/product/models/brand-service.js
apps/product/models/editorial.js
apps/product/models/helpers.js
apps/product/models/item-handler.js
apps/product/models/item.js
apps/product/models/shop-service.js
apps/product/views/action/shop-index.hbs
apps/product/views/partial/list/filter.hbs
apps/product/views/partial/list/goods-box.hbs
apps/product/views/partial/list/shop-sort.hbs
config/common.js
apps/product/controllers/list.js
View file @
ff6e98d
...
...
@@ -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
.
group
S
ort
=
DataHelper
.
sortConvert
(
allSort
.
data
.
sort
);
data
.
filter
.
group
_s
ort
=
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
.
page
T
otal
,
pageTotal
:
data
.
page
_t
otal
,
queryParams
:
q
};
res
.
display
(
'list'
,
_
.
assign
(
retData
,
{
products
:
DataHelper
.
handleProductList
(
data
.
product
L
ist
,
q
),
products
:
DataHelper
.
handleProductList
(
data
.
product
_l
ist
,
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
.
group
S
ort
=
DataHelper
.
sortConvert
(
sortData
.
data
.
sort
);
data
.
filter
.
group
_s
ort
=
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
.
page
T
otal
,
pageTotal
:
data
.
page
_t
otal
,
queryParams
:
q
};
res
.
display
(
'newList'
,
_
.
assign
(
retData
,
{
products
:
DataHelper
.
handleProductList
(
data
.
product
L
ist
,
q
),
products
:
DataHelper
.
handleProductList
(
data
.
product
_l
ist
,
q
),
order
:
q
.
order
}));
}
else
{
...
...
apps/product/controllers/query.js
View file @
ff6e98d
...
...
@@ -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
.
page
T
otal
,
pageTotal
:
data
.
page
_t
otal
,
queryParams
:
q
};
res
.
display
(
'list'
,
_
.
assign
(
retData
,
{
products
:
DataHelper
.
handleProductList
(
data
.
product
L
ist
,
q
),
products
:
DataHelper
.
handleProductList
(
data
.
product
_l
ist
,
q
),
order
:
q
.
order
}));
}
else
{
...
...
apps/product/controllers/shop.js
View file @
ff6e98d
...
...
@@ -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
.
page
T
otal
,
pageTotal
:
ret
.
page
_t
otal
,
queryParams
:
req
.
query
};
data
.
products
=
DataHelper
.
handleProductList
(
ret
.
product
L
ist
);
data
.
products
=
DataHelper
.
handleProductList
(
ret
.
product
_l
ist
);
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
.
group
S
ort
=
DataHelper
.
sortConvert
(
allSort
.
data
.
sort
);
ret
.
filter
.
group
_s
ort
=
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
.
page
T
otal
,
pageTotal
:
ret
.
page
_t
otal
,
queryParams
:
req
.
query
};
...
...
@@ -161,7 +160,7 @@ const shop = {
};
res
.
display
(
'shop-list'
,
_
.
assign
(
data
,
{
products
:
DataHelper
.
handleProductList
(
ret
.
product
L
ist
,
q
,
false
),
products
:
DataHelper
.
handleProductList
(
ret
.
product
_l
ist
,
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
.
page
T
otal
,
pageTotal
:
ret
.
page
_t
otal
,
queryParams
:
req
.
query
};
let
products
=
DataHelper
.
handleProductList
(
ret
.
product
L
ist
);
let
products
=
DataHelper
.
handleProductList
(
ret
.
product
_l
ist
);
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
...
...
apps/product/models/brand-service.js
View file @
ff6e98d
...
...
@@ -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
;
})();
};
...
...
apps/product/models/editorial.js
View file @
ff6e98d
...
...
@@ -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
[];
}
...
...
apps/product/models/helpers.js
View file @
ff6e98d
...
...
@@ -51,7 +51,7 @@ const helpers = {
let
other
=
false
;
_
.
forEach
(
brands
,
(
b
)
=>
{
let
name
=
b
.
brand
Alif
||
b
.
brandNameEn
||
b
.
brandN
ame
;
let
name
=
b
.
brand
_alif
||
b
.
brand_name_en
||
b
.
brand_n
ame
;
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
.
category
I
d
===
msort
)
{
if
(
s
.
category
_i
d
===
msort
)
{
sortQuery
+=
'msort='
+
msort
;
s
.
checked
=
true
;
nav
.
push
({
link
:
sortQuery
,
pathTitle
:
''
,
name
:
s
.
category
N
ame
name
:
s
.
category
_n
ame
});
}
if
(
s
.
sub
&&
misort
)
{
s
.
sub
.
forEach
((
m
)
=>
{
if
(
m
.
category
I
d
===
misort
)
{
if
(
m
.
category
_i
d
===
misort
)
{
sortQuery
+=
'&misort='
+
misort
;
m
.
checked
=
true
;
nav
.
push
({
link
:
sortQuery
,
pathTitle
:
''
,
name
:
m
.
category
N
ame
name
:
m
.
category
_n
ame
});
}
});
...
...
@@ -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
.
group
S
ort
;
let
sorts
=
filter
.
group
_s
ort
;
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
.
category
I
d
&&
!
q
.
misort
checked
:
q
.
msort
&&
q
.
msort
===
s
.
category
_i
d
&&
!
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
.
size
I
d
===
parseInt
(
q
.
size
,
10
))
{
if
(
s
.
size
_i
d
===
parseInt
(
q
.
size
,
10
))
{
s
.
checked
=
true
;
filters
.
push
(
this
.
newFilter
(
'size'
,
q
.
size
,
s
.
size
N
ame
));
filters
.
push
(
this
.
newFilter
(
'size'
,
q
.
size
,
s
.
size
_n
ame
));
}
});
}
...
...
@@ -350,7 +350,7 @@ const helpers = {
});
let
brandNames
=
checkedBrands
.
map
(
b
=>
{
b
.
checked
=
true
;
return
b
.
brand
NameEn
||
b
.
brandN
ame
;
return
b
.
brand
_name_en
||
b
.
brand_n
ame
;
}).
join
(
'、'
);
if
(
filter
.
singleBrand
)
{
...
...
@@ -378,10 +378,10 @@ const helpers = {
if
(
q
.
style
)
{
let
styleNames
=
filter
.
style
.
filter
(
s
=>
{
return
(
','
+
q
.
style
+
','
).
indexOf
(
','
+
s
.
style
I
d
+
','
)
>=
0
;
return
(
','
+
q
.
style
+
','
).
indexOf
(
','
+
s
.
style
_i
d
+
','
)
>=
0
;
}).
map
(
s
=>
{
s
.
checked
=
true
;
return
s
.
style
N
ame
;
return
s
.
style
_n
ame
;
}).
join
(
','
);
if
(
styleNames
)
{
...
...
@@ -394,9 +394,9 @@ const helpers = {
_
.
forEach
(
filter
.
standard
,
s
=>
{
_
.
forEach
(
s
.
sub
,
b
=>
{
if
(
q
.
standard
.
indexOf
(
'_'
+
b
.
standard
I
d
)
>
0
)
{
if
(
q
.
standard
.
indexOf
(
'_'
+
b
.
standard
_i
d
)
>
0
)
{
b
.
checked
=
true
;
filters
.
push
(
this
.
newFilter
(
'standard'
,
q
.
standard
,
b
.
standard
N
ame
));
filters
.
push
(
this
.
newFilter
(
'standard'
,
q
.
standard
,
b
.
standard
_n
ame
));
}
});
});
...
...
@@ -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
].
goods
I
d
;
goodsId
=
goodsList
[
0
].
goods
_i
d
;
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
.
product
Id
}
_$
{
goodsId
}
/${g.cnA
lphabet}.html`
;
g
.
url
=
`
$
{
config
.
siteUrl
}
/product/
pro_$
{
g
.
product
_id
}
_$
{
goodsId
}
/${g.cn_a
lphabet}.html`
;
});
}
return
list
;
...
...
apps/product/models/item-handler.js
View file @
ff6e98d
...
...
@@ -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
.
brand
I
d
,
brandId
:
info
.
brand
_i
d
,
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
.
brand
D
omain
}
`
// 品牌跳转链接
link
:
`
/
product
/
shop
/
$
{
info
.
brand
_d
omain
}
`
// 品牌跳转链接
}
};
...
...
@@ -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
.
goods
L
ist
)
{
if
(
base
.
goods
_l
ist
)
{
let
goods
=
[];
// 处理商品数据
_
.
forEach
(
base
.
goods
L
ist
,
function
(
value
)
{
_
.
forEach
(
base
.
goods
_l
ist
,
function
(
value
)
{
let
group
=
{},
thumbs
=
[],
sizes
=
[];
...
...
@@ -350,27 +350,27 @@ const setProductData = base => {
return
;
}
if
(
value
.
images
L
ist
)
{
if
(
value
.
images
_l
ist
)
{
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.color
I
mage, 30, 30)}'
)
`
;
group
.
rgb
=
`
url
(
'${helpers.image(value.color
_i
mage, 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
.
color
I
mage
;
resData
.
img
=
value
.
color
_i
mage
;
// 只有一张图时不显示左右切换箭头
if
(
thumbs
.
length
<
2
)
{
...
...
@@ -390,13 +390,13 @@ const setProductData = base => {
}
// 商品尺码列表
_
.
forEach
(
value
.
size
L
ist
,
function
(
subValue
)
{
_
.
forEach
(
value
.
size
_l
ist
,
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
.
brand
I
ntro
,
/<
\/?[^
>
]
*>|
\s
*|
(\n)
|
(\t)
|
(\r)
/g
,
''
),
let
text
=
_
.
replace
(
brand
.
brand
_i
ntro
,
/<
\/?[^
>
]
*>|
\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
...
...
apps/product/models/item.js
View file @
ff6e98d
...
...
@@ -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
.
product
N
ame
,
params
.
channel
),
// 面包屑导航
itemFun
.
setPathNav
(
mulRes
.
sort
,
result
.
product
_n
ame
,
params
.
channel
),
// 面包屑导航
itemFun
.
setDescriptionData
(
mulRes
.
sizeInfo
,
mulRes
.
comfort
),
// DESCRIPTION商品描述
itemFun
.
setMaterialData
(
mulRes
.
sizeInfo
),
// MATERIALS材料洗涤
itemFun
.
setSizeData
(
mulRes
.
sizeInfo
,
mulRes
.
modelTry
),
// SIZEINFO尺码信息
...
...
apps/product/models/shop-service.js
View file @
ff6e98d
...
...
@@ -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
.
resource
Name
]
=
JSON
.
parse
(
d
.
resourceD
ata
);
resource
[
d
.
resource
_name
]
=
JSON
.
parse
(
d
.
resource_d
ata
);
});
}
...
...
@@ -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
.
brand
N
ame
;
info
.
name
=
info
.
name
||
brandInfo
.
brand
_n
ame
;
// info.info = brandInfo.brandIntro;
info
.
btnName
=
'品牌介绍'
;
if
(
!
info
.
isFavorite
&&
brandInfo
.
is
F
avorite
===
'Y'
)
{
if
(
!
info
.
isFavorite
&&
brandInfo
.
is
_f
avorite
===
'Y'
)
{
favType
=
'brand'
;
}
info
.
isFavorite
=
info
.
isFavorite
||
(
brandInfo
.
is
F
avorite
===
'Y'
);
info
.
isFavorite
=
info
.
isFavorite
||
(
brandInfo
.
is
_f
avorite
===
'Y'
);
info
.
banner
=
info
.
banner
||
info
.
brandBanner
;
}
info
.
favType
=
favType
;
...
...
apps/product/views/action/shop-index.hbs
View file @
ff6e98d
...
...
@@ -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=
"
{{
product
S
kn
}}
"
>
<div
class=
"goods-info"
data-skn=
"
{{
product
_s
kn
}}
"
>
<a
href=
"
{{
https
url
}}
"
target=
"_blank"
>
<img
class=
"lazy thumb"
data-original=
"
{{
image
default
I
mages
270
366
}}
"
style=
"display: block;"
>
<img
class=
"lazy thumb"
data-original=
"
{{
image
default
_i
mages
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
}}
...
...
apps/product/views/partial/list/filter.hbs
View file @
ff6e98d
<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"
>

</span>
<input
type=
"text"
class=
"price-low"
value=
"
{{
customPriceLow
}}
"
>
</div>
<span>
-
</span>
<div
class=
"price-input inline-block"
>
<span
class=
"iconfont"
>

</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"
>

</span>
<input
type=
"text"
class=
"price-low"
value=
"
{{
customPriceLow
}}
"
>
</div>
<span>
-
</span>
<div
class=
"price-input inline-block"
>
<span
class=
"iconfont"
>

</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>
...
...
apps/product/views/partial/list/goods-box.hbs
View file @
ff6e98d
<div
class=
"goods-area clearfix"
>
{{#
each
products
}}
<div
class=
"goods"
data-id=
"
{{
product
I
d
}}
"
data-url=
"
{{
url
}}
"
>
<div
class=
"goods"
data-id=
"
{{
product
_i
d
}}
"
data-url=
"
{{
url
}}
"
>
<div
class=
"goods-img"
>
<a
href=
"
{{
https
url
}}
"
target=
"_blank"
>
<img
class=
"lazy"
data-original=
"
{{
image
default
I
mages
263
351
}}
"
width=
"263"
height=
"351"
alt=
""
>
<img
class=
"lazy"
data-original=
"
{{
image
default
_i
mages
263
351
}}
"
width=
"263"
height=
"351"
alt=
""
>
</a>
</div>
{{#if
showBrand
}}
<div
class=
"goods-brand"
>
<a
href=
"/product/shop/
{{
brand
Domain
}}
"
target=
"_self"
>
{{
brandN
ame
}}
</a>
<a
href=
"/product/shop/
{{
brand
_domain
}}
"
target=
"_self"
>
{{
brand_n
ame
}}
</a>
</div>
{{/if}}
<div
class=
"goods-name"
>
<a
href=
"
{{
https
url
}}
"
target=
"_blank"
>
{{
product
N
ame
}}
</a>
<a
href=
"
{{
https
url
}}
"
target=
"_blank"
>
{{
product
_n
ame
}}
</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>
...
...
apps/product/views/partial/list/shop-sort.hbs
View file @
ff6e98d
...
...
@@ -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=
{{
sort
Id
}}
"
>
{{
sortN
ame
}}
</a></div>
<div><a
href=
"
{{
@root
.
mores
.
all
.
url
}}
?misort=
{{
sort
_id
}}
"
>
{{
sort_n
ame
}}
</a></div>
{{/
each
}}
</div>
<div
class=
"more"
><a
href=
"
{{
@root
.
mores
.
all
.
url
}}
"
>
MORE
</a></div>
...
...
config/common.js
View file @
ff6e98d
...
...
@@ -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
,
...
...
Please
register
or
login
to post a comment