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
石坚
8 years ago
Commit
b491199e54c93b988cf240d210eb3de22c16c8d1
2 parents
55ad519a
ccef83e8
merge camel
Hide whitespace changes
Inline
Side-by-side
Showing
43 changed files
with
599 additions
and
601 deletions
apps/brand/models/brand.js
apps/brand/views/partial/list.hbs
apps/channel/models/index.js
apps/editorial/controllers/editorial.js
apps/editorial/models/editorial.js
apps/editorial/views/partial/msg.hbs
apps/me/controllers/currency.js
apps/me/controllers/favorite.js
apps/me/models/currency.js
apps/me/models/order.js
apps/me/models/returns.js
apps/me/views/partial/collection/brand.hbs
apps/me/views/partial/collection/editorial.hbs
apps/me/views/partial/collection/product.hbs
apps/me/views/partial/exchange-detail.hbs
apps/me/views/partial/order/detail/goods-list.hbs
apps/me/views/partial/order/detail/info-box.hbs
apps/me/views/partial/order/detail/order-status.hbs
apps/me/views/partial/order/good-info.hbs
apps/me/views/partial/order/goods-box.hbs
apps/me/views/partial/order/order-header.hbs
apps/me/views/partial/order/table-body.hbs
apps/me/views/partial/returns-change.hbs
apps/me/views/partial/returns-list.hbs
apps/me/views/partial/returns/change-reason.hbs
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
package.json
public/js/me/exchange.page.js
public/tpl/me/change-type.hbs
public/tpl/me/color-list.hbs
public/tpl/me/size-list.hbs
apps/brand/models/brand.js
View file @
b491199
...
...
@@ -7,7 +7,6 @@
'use strict'
;
const
api
=
global
.
yoho
.
API
;
const
camelCase
=
global
.
yoho
.
camelCase
;
const
_
=
require
(
'lodash'
);
const
logger
=
global
.
yoho
.
logger
;
const
serviceAPI
=
global
.
yoho
.
ServiceAPI
;
...
...
@@ -22,39 +21,43 @@ const _processListData = (list) => {
let
listData
=
[];
list
=
list
||
[];
list
=
camelCase
(
list
);
// list = camelCase(list);
let
listKey
=
[];
// console.log(list)
if
(
list
.
data
)
{
_
.
forEach
(
list
.
data
.
all_list
,
function
(
value
,
index
)
{
_
.
forEach
(
list
.
data
.
allList
,
function
(
value
,
index
)
{
_
.
forEach
(
value
,
function
(
data
)
{
data
.
brand_domain
=
`
$
{
config
.
siteUrl
}
/product/
shop
/
$
{
data
.
brand_domain
}
`
;
});
_
.
forEach
(
value
,
function
(
data
)
{
data
.
brandDomain
=
`
$
{
config
.
siteUrl
}
/product/
shop
/
$
{
data
.
brandDomain
}
`
;
if
(
index
!==
'0~9'
)
{
listKey
.
push
(
index
);
}
});
if
(
index
!==
'0~9'
)
{
listKey
.
push
(
index
);
}
});
listKey
.
sort
();
listKey
.
push
(
'0-9'
);
listKey
.
sort
(
);
_
.
forEach
(
listKey
,
function
(
key
)
{
let
keyName
=
key
;
listKey
.
push
(
'0-9'
);
if
(
key
===
'0-9'
)
{
key
=
'0~9'
;
}
_
.
forEach
(
listKey
,
function
(
key
)
{
let
keyName
=
key
;
listData
.
push
({
key
:
keyName
,
brands
:
list
.
data
.
allList
[
key
]
if
(
key
===
'0-9'
)
{
key
=
'0~9'
;
}
listData
.
push
({
key
:
keyName
,
brands
:
list
.
data
.
all_list
[
key
]
});
});
}
);
}
return
listData
;
};
...
...
@@ -67,7 +70,8 @@ const _processTabData = (list) => {
let
tabData
=
[];
list
=
list
||
[];
list
=
camelCase
(
list
);
// list = camelCase(list);
_
.
forEach
(
list
,
function
(
value
)
{
...
...
apps/brand/views/partial/list.hbs
View file @
b491199
...
...
@@ -5,9 +5,9 @@
<ul
class=
"clearfix"
>
{{#
each
brands
}}
<li>
<a
data-key=
"
{{
key
}}
"
href=
"
{{
brandDomain
}}
?gender=
{{
@root
.
brand
.
gender
}}
"
target=
"_blank"
>
<img
class=
"lazy"
data-original=
"
{{
image
brandIco
270
190
}}
"
>
<span>
{{#if
brandName
}}{{
brandName
}}{{else}}{{
brandNameEn
}}{{/if}}
</span>
<a
data-key=
"
{{
key
}}
"
href=
"
{{
brand_domain
}}
?gender=
{{
@root
.
brand
.
gender
}}
"
target=
"_blank"
>
<img
class=
"lazy"
data-original=
"
{{
image
brand_ico
270
190
}}
"
>
<span>
{{#if
brand_name
}}{{
brand_name
}}{{else}}{{
brand_name_en
}}{{/if}}
</span>
</a>
</li>
{{/
each
}}
...
...
apps/channel/models/index.js
View file @
b491199
...
...
@@ -7,7 +7,6 @@
const
channelApi
=
require
(
'./channel-api'
);
const
floorDataHandler
=
require
(
'./floor-data-handler'
);
const
camelCase
=
global
.
yoho
.
camelCase
;
const
_
=
require
(
'lodash'
);
...
...
@@ -106,8 +105,8 @@ const _processFloorData = d => {
return
false
;
}
if
(
templateMap
[
data
.
templateName
])
{
floorData
=
templateMap
[
data
.
templateName
](
data
.
data
);
if
(
templateMap
[
data
.
template_name
])
{
floorData
=
templateMap
[
data
.
template_name
](
data
.
data
);
}
floorList
.
push
(
floorData
);
...
...
@@ -124,7 +123,7 @@ const _processFloorData = d => {
const
getContent
=
type
=>
{
return
channelApi
.
getChannelDataAsync
(
type
).
then
(
result
=>
{
if
(
result
.
data
&&
result
.
data
.
list
)
{
const
l
=
camelCase
(
result
.
data
.
list
);
const
l
=
result
.
data
.
list
;
//
camelCase(result.data.list);
const
floor
=
{
content
:
_processFloorData
(
l
)
};
...
...
apps/editorial/controllers/editorial.js
View file @
b491199
...
...
@@ -184,42 +184,45 @@ const detail = (req, res, next) => {
}
editorialModel
.
getDetailData
(
id
,
appType
,
gender
,
tag
,
uid
,
udid
).
then
((
result
)
=>
{
let
editorialDetail
=
{
nav
:
[
{
link
:
link
,
pathTitle
:
'首页'
,
name
:
name
},
{
link
:
'//www.yohoblk.com/editorial'
,
pathTitle
:
'资讯'
,
name
:
'Editorial资讯'
},
{
pathTitle
:
'资讯'
,
name
:
result
.
head
.
title
}
],
id
:
id
,
header
:
result
.
head
,
content
:
result
.
content
.
contents
,
tags
:
result
.
tags
,
userInfo
:
result
.
head
,
comment
:
result
.
comment
,
brands
:
result
.
brands
,
nextArticle
:
result
.
nextArticle
,
perArticle
:
result
.
perArticle
,
share
:
{
shareImg
:
result
.
content
.
shareImg
,
shareDesc
:
result
.
head
.
title
,
weixinUrl
:
result
.
head
.
weixinUrl
}
};
res
.
display
(
'detail'
,
{
module
:
'editorial'
,
page
:
'detail'
,
title
:
result
.
head
.
title
,
editorialDetail
:
{
nav
:
[
{
link
:
link
,
pathTitle
:
'首页'
,
name
:
name
},
{
link
:
'//www.yohoblk.com/editorial'
,
pathTitle
:
'资讯'
,
name
:
'Editorial资讯'
},
{
pathTitle
:
'资讯'
,
name
:
result
.
head
.
title
}
],
id
:
id
,
header
:
result
.
head
,
content
:
result
.
content
.
contents
,
tags
:
result
.
tags
,
userInfo
:
result
.
head
,
comment
:
result
.
comment
,
brands
:
result
.
brands
,
nextArticle
:
result
.
nextArticle
,
perArticle
:
result
.
perArticle
,
share
:
{
shareImg
:
result
.
content
.
shareImg
,
shareDesc
:
result
.
head
.
title
,
weixinUrl
:
result
.
head
.
weixinUrl
}
},
editorialDetail
:
editorialDetail
,
helpers
:
{
// import component, path depends on your project
pagination
:
require
(
'../../../doraemon/components/pagination/pagination'
).
createPagination
...
...
apps/editorial/models/editorial.js
View file @
b491199
...
...
@@ -6,7 +6,6 @@
'use strict'
;
const
serviceAPI
=
global
.
yoho
.
ServiceAPI
;
const
api
=
global
.
yoho
.
API
;
const
camelCase
=
global
.
yoho
.
camelCase
;
const
_
=
require
(
'lodash'
);
const
Promise
=
require
(
'bluebird'
);
const
co
=
Promise
.
coroutine
;
...
...
@@ -25,7 +24,8 @@ const logger = global.yoho.logger;
const
_processListData
=
(
list
)
=>
{
list
=
list
||
[];
list
=
camelCase
(
list
);
// list = camelCase(list);
let
listData
=
{
tabs
:
[]
...
...
@@ -43,8 +43,8 @@ const _processListData = (list) => {
});
}
data
.
publishTime
=
data
.
publishTime
.
replace
(
/年|月/g
,
'/'
);
data
.
publishTime
=
data
.
publishTime
.
replace
(
/日/g
,
''
);
data
.
publish_time
=
data
.
publish_time
.
replace
(
/年|月/g
,
'/'
);
data
.
publish_time
=
data
.
publish_time
.
replace
(
/日/g
,
''
);
data
.
isPraise
=
data
.
isPraise
===
'Y'
;
});
...
...
@@ -140,7 +140,8 @@ const _processHeadData = (list) => {
return
co
(
function
*
()
{
list
=
list
||
[];
list
=
camelCase
(
list
);
// list = camelCase(list);
let
newData
=
{
headData
:
{},
...
...
@@ -155,11 +156,11 @@ const _processHeadData = (list) => {
newData
.
headData
=
{
title
:
data
.
title
,
click
:
data
.
viewNum
,
time
:
data
.
publishTime
,
click
:
data
.
view_num
,
time
:
data
.
publish_time
,
isLike
:
data
.
isPraise
,
isCollected
:
data
.
isFavor
,
likeNum
:
data
.
praise
N
um
,
likeNum
:
data
.
praise
_n
um
,
weixinUrl
:
`
http
:
//m.yohoblk.com/${data.id}.html`
};
...
...
@@ -167,8 +168,8 @@ const _processHeadData = (list) => {
if
(
index
===
1
)
{
newData
.
headData
=
_
.
assign
(
newData
.
headData
,
{
authorId
:
data
.
authorId
,
authorUrl
:
`
/
editorial
/
list
/
?
authorId
=
$
{
data
.
authorId
}
`
authorId
:
data
.
author_id
,
authorUrl
:
`
/
editorial
/
list
/
?
authorId
=
$
{
data
.
author_id
}
`
});
_
.
forEach
(
data
.
tags
,
function
(
value
)
{
...
...
@@ -249,7 +250,8 @@ const _getRelatedData = (idList) => {
*/
const
_processContentData
=
(
list
)
=>
{
list
=
list
||
[];
list
=
camelCase
(
list
);
// list = camelCase(list);
// console.log(list)
...
...
@@ -466,7 +468,7 @@ const _getCommentsData = (id, appType) => {
data
.
create_time
=
data
.
create_time
.
replace
(
/月/g
,
'/'
);
data
.
create_time
=
data
.
create_time
.
replace
(
/日/g
,
''
);
});
return
camelCase
(
result
.
data
);
return
result
.
data
;
//
camelCase(result.data);
}
else
{
logger
.
error
(
'Review data return code is not 200'
);
return
{};
...
...
@@ -492,7 +494,7 @@ const _getRelateBrand = (id, appType) => {
domain
=
domain
.
substring
(
domain
.
indexOf
(
'/'
)
+
2
,
domain
.
indexOf
(
'.'
));
data
.
url
=
`
$
{
config
.
siteUrl
}
/product/
shop
/
$
{
domain
}
`
;
});
return
camelCase
(
result
.
data
);
return
result
.
data
;
//
camelCase(result.data);
}
else
{
logger
.
error
(
'Related brand return code is not 200'
);
return
{};
...
...
@@ -667,7 +669,7 @@ const addComment = (id, uid, comment) => {
const
shareData
=
()
=>
{
return
serviceAPI
.
get
(
'guang/api/*/share/guang'
,
{}).
then
((
result
)
=>
{
if
(
result
&&
result
.
code
===
200
)
{
return
camelCase
(
result
.
data
);
return
result
.
data
;
//
camelCase(result.data);
}
else
{
logger
.
error
(
'Related brand return code is not 200'
);
return
{};
...
...
apps/editorial/views/partial/msg.hbs
View file @
b491199
<div
class=
"content-msg clearfix"
data-id=
"
{{
id
}}
"
>
<div
class=
"msg-left"
><i
class=
"iconfont"
>

</i>
<span
class=
"time-word font brown-light"
>
{{
publish
T
ime
}}
</span></div>
<div
class=
"msg-left"
><i
class=
"iconfont"
>

</i>
<span
class=
"time-word font brown-light"
>
{{
publish
_t
ime
}}
</span></div>
<div
class=
"msg-right"
>
<a
class=
"msg-title"
href=
"/editorial/
{{
id
}}
.html"
target=
"_blank"
>
{{
title
}}
</a>
<a
href=
"/editorial/
{{
id
}}
.html"
target=
"_blank"
>
...
...
@@ -9,8 +9,8 @@
<div
class=
"msg-app"
>
<span
class=
"like-comment"
>
<i
class=
"iconfont like-icon
{{#if
isPraise
}}
liked
{{/if}}
"
>

</i>
<b
class=
"like-num brown-light font"
>
{{
praise
N
um
}}
</b>
<b
class=
"like-num brown-light font"
>
{{
praise
_n
um
}}
</b>
</span>
</div>
</div>
</div>
\ No newline at end of file
</div>
...
...
apps/me/controllers/currency.js
View file @
b491199
...
...
@@ -61,7 +61,6 @@ const index = (req, res, next) => {
beginTime
:
beginTime
};
}
res
.
display
(
'index'
,
{
module
:
'me'
,
page
:
'currency'
,
...
...
apps/me/controllers/favorite.js
View file @
b491199
...
...
@@ -7,7 +7,6 @@
'use strict'
;
const
_
=
require
(
'lodash'
);
const
camelCase
=
global
.
yoho
.
camelCase
;
const
config
=
global
.
yoho
.
config
;
const
mcHandler
=
require
(
'../models/menu-crumb-handler'
);
const
FavoriteData
=
require
(
'../models/favorite'
);
...
...
@@ -44,7 +43,7 @@ const favorite = {
let
thumb
=
result
[
1
];
if
(
result
[
0
]
&&
result
[
0
].
code
===
200
&&
result
[
0
].
data
)
{
let
data
=
camelCase
(
result
[
0
].
data
);
let
data
=
result
[
0
].
data
;
//
camelCase(result[0].data);
let
retData
=
{
siteUrl
:
config
.
siteUrl
};
...
...
@@ -58,7 +57,7 @@ const favorite = {
queryParams
:
q
};
retData
.
categoryList
=
data
.
category
L
ist
;
retData
.
categoryList
=
data
.
category
_l
ist
;
retData
.
categoryList
.
unshift
({
categoryId
:
''
,
...
...
@@ -67,11 +66,13 @@ const favorite = {
});
retData
.
categoryList
.
forEach
(
c
=>
{
c
.
categoryId
=
'categoryId'
in
c
?
c
.
categoryId
:
c
.
category_id
;
c
.
checked
=
c
.
categoryId
===
sort
;
c
.
categoryName
=
'categoryName'
in
c
?
c
.
categoryName
:
c
.
category_name
;
});
retData
.
products
=
data
.
productList
.
filter
(
p
=>
{
return
!
sort
||
sort
===
p
.
categoryId
;
retData
.
products
=
data
.
product_list
.
filter
(
p
=>
{
return
!
sort
||
sort
===
p
.
category_id
;
}).
slice
((
page
-
1
)
*
16
,
page
*
16
);
retData
.
products
.
forEach
(
p
=>
{
...
...
@@ -125,7 +126,7 @@ const favorite = {
let
thumb
=
result
[
1
];
if
(
result
[
0
]
&&
result
[
0
].
code
===
200
&&
result
[
0
].
data
)
{
let
data
=
camelCase
(
result
[
0
].
data
);
let
data
=
result
[
0
].
data
;
//
camelCase(result[0].data);
let
retData
=
{
siteUrl
:
config
.
siteUrl
};
...
...
@@ -135,22 +136,22 @@ const favorite = {
page
:
page
,
limit
:
limit
,
total
:
data
.
total
,
pageTotal
:
data
.
page
T
otal
,
pageTotal
:
data
.
page
_t
otal
,
queryParams
:
q
};
retData
.
brandList
=
data
.
brand
L
ist
;
retData
.
brandList
=
data
.
brand
_l
ist
;
if
(
retData
.
brandList
)
{
_
.
each
(
retData
.
brandList
,
b
=>
{
if
(
b
.
newProduct
&&
b
.
newProduct
.
length
>
0
)
{
b
.
newProduct
.
forEach
(
p
=>
{
if
(
b
.
new_product
&&
b
.
new_product
.
length
>
0
)
{
b
.
new_product
.
forEach
(
p
=>
{
p
.
url
=
`
$
{
config
.
siteUrl
}
/product/
pro_$
{
p
.
productId
}
_$
{
p
.
goods
[
0
].
id
}
/${p.cnAlphabet}.html`; // eslint-disable-lin
e
});
b
.
new
P
roduct
.
push
({
b
.
new
_p
roduct
.
push
({
more
:
true
});
b
.
new
Product
=
_
.
chunk
(
b
.
newP
roduct
,
4
);
b
.
new
_product
=
_
.
chunk
(
b
.
new_p
roduct
,
4
);
}
else
{
b
.
noNewProduct
=
true
;
}
...
...
@@ -195,15 +196,15 @@ const favorite = {
let
thumb
=
result
[
1
];
if
(
result
[
0
]
&&
result
[
0
].
code
===
200
&&
result
[
0
].
data
)
{
let
data
=
camelCase
(
result
[
0
].
data
);
let
data
=
result
[
0
].
data
;
//
camelCase(result[0].data);
let
retData
=
{
siteUrl
:
config
.
siteUrl
,
editorialList
:
data
.
data
};
_
.
forEach
(
retData
.
editorialList
,
function
(
val
)
{
val
.
publishTime
=
val
.
publishTime
.
replace
(
/年|月/g
,
'/'
);
val
.
publishTime
=
val
.
publishTime
.
replace
(
/日/g
,
''
);
val
.
publish_time
=
val
.
publish_time
.
replace
(
/年|月/g
,
'/'
);
val
.
publish_time
=
val
.
publish_time
.
replace
(
/日/g
,
''
);
});
...
...
apps/me/models/currency.js
View file @
b491199
...
...
@@ -7,7 +7,6 @@
'use strict'
;
const
api
=
global
.
yoho
.
API
;
const
camelCase
=
global
.
yoho
.
camelCase
;
/**
* 有货币列表数据
...
...
@@ -33,7 +32,7 @@ const yohoCoinList = (uid, page, queryType, beginTime) => {
let
curPage
=
1
;
if
(
result
&&
result
.
data
)
{
coinList
=
camelCase
(
result
.
data
.
coinlist
);
coinList
=
result
.
data
.
coinlist
;
//
camelCase(result.data.coinlist);
total
=
result
.
data
.
total
;
curPage
=
result
.
data
.
page
;
}
...
...
apps/me/models/order.js
View file @
b491199
...
...
@@ -7,7 +7,6 @@
'use strict'
;
const
api
=
global
.
yoho
.
API
;
const
camelCase
=
global
.
yoho
.
camelCase
;
const
moment
=
require
(
'moment'
);
const
helpers
=
global
.
yoho
.
helpers
;
...
...
@@ -152,7 +151,7 @@ const _convertAddress = (addressList, createTime) => {
};
address
.
time
=
addr
.
acceptTime
;
addr
=
addr
.
accept
A
ddress
.
split
(
' '
);
addr
=
addr
.
accept
_a
ddress
.
split
(
' '
);
if
(
addr
.
length
>
1
&&
/市/
.
test
(
addr
[
0
]))
{
address
.
city
=
addr
[
0
].
replace
(
'市'
,
''
);
...
...
@@ -240,31 +239,31 @@ const _getUserOrder = (uid, type, page) => {
if
(
result
&&
result
.
data
)
{
orderList
=
camelCase
(
result
.
data
.
order_list
);
orderList
=
result
.
data
.
order_list
;
//
camelCase(result.data.order_list);
total
=
result
.
data
.
total
;
curPage
=
result
.
data
.
page
;
}
orderList
.
forEach
(
item
=>
{
const
ot
=
parseInt
(
item
.
order
T
ype
,
10
);
const
ot
=
parseInt
(
item
.
order
_t
ype
,
10
);
const
st
=
parseInt
(
item
.
status
,
10
);
let
hasRefund
=
false
;
let
canRefund
=
false
;
item
.
orderGoods
.
forEach
(
good
=>
{
let
cnAlphabet
=
good
.
cnAlphabet
?
good
.
cnAlphabet
:
''
;
item
.
order_goods
.
forEach
(
good
=>
{
let
cnAlphabet
=
good
.
cn_alphabet
?
good
.
cn_alphabet
:
''
;
good
.
goodUrl
=
helpers
.
urlFormat
(
`
/
product
/
pro_$
{
good
.
product
Id
}
_$
{
good
.
goodsI
d
}
/${cnAlphabet}.html`
)
;
good
.
goodUrl
=
helpers
.
urlFormat
(
`
/
product
/
pro_$
{
good
.
product
_id
}
_$
{
good
.
goods_i
d
}
/${cnAlphabet}.html`
)
;
// 判断该订单是否有换货商品
if
(
good
.
refund
N
um
)
{
if
(
good
.
refund
_n
um
)
{
hasRefund
=
true
;
good
.
changed
=
true
;
good
.
returnUrl
=
helpers
.
urlFormat
(
'/me/return'
);
}
// 判断该订单是否可以退换货
if
(
parseInt
(
good
.
buy
Number
,
10
)
!==
parseInt
(
good
.
refundN
um
,
10
))
{
if
(
parseInt
(
good
.
buy
_number
,
10
)
!==
parseInt
(
good
.
refund_n
um
,
10
))
{
canRefund
=
true
;
}
});
...
...
@@ -274,10 +273,10 @@ const _getUserOrder = (uid, type, page) => {
item
.
hideChange
=
!
canRefund
;
// 转换订单创建时间
item
.
create
Time
=
_convertUnixTime
(
item
.
createT
ime
);
item
.
create
_time
=
_convertUnixTime
(
item
.
create_t
ime
);
// 没有取消订单并且状态为0的时候显示付款按钮
if
(
item
.
is
C
ancel
===
'N'
&&
if
(
item
.
is
_c
ancel
===
'N'
&&
st
===
0
)
{
item
.
showPayButton
=
true
;
}
...
...
@@ -293,15 +292,15 @@ const _getUserOrder = (uid, type, page) => {
item
.
showGetBtn
=
statusMap
[
st
].
showGetBtn
;
// 在线支付和货到付款有按钮的差异
item
.
isOnlinePaid
=
parseInt
(
item
.
payment
T
ype
,
10
)
===
1
;
item
.
isOnlinePaid
=
parseInt
(
item
.
payment
_t
ype
,
10
)
===
1
;
item
.
isRefundOrder
=
ot
===
7
;
if
(
parseInt
(
item
.
pay
L
efttime
,
10
)
!==
0
)
{
if
(
parseInt
(
item
.
pay
_l
efttime
,
10
)
!==
0
)
{
item
.
showLeftTime
=
true
;
}
if
(
item
.
is
C
ancel
===
'Y'
)
{
if
(
item
.
is
_c
ancel
===
'Y'
)
{
item
.
showBuyBtn
=
true
;
item
.
statusStr
=
'已取消'
;
}
else
if
(
item
.
isOnlinePaid
)
{
...
...
@@ -309,17 +308,17 @@ const _getUserOrder = (uid, type, page) => {
}
item
.
payUrl
=
helpers
.
urlFormat
(
'/shopping/pay/online'
,
{
code
:
item
.
order
C
ode
code
:
item
.
order
_c
ode
});
item
.
refundUrl
=
helpers
.
urlFormat
(
'/me/return/refund/'
,
{
orderCode
:
item
.
order
C
ode
orderCode
:
item
.
order
_c
ode
});
item
.
exchangeUrl
=
helpers
.
urlFormat
(
'/me/return/exchange/'
,
{
orderCode
:
item
.
order
C
ode
orderCode
:
item
.
order
_c
ode
});
item
.
detailUrl
=
helpers
.
urlFormat
(
'/me/order/detail/'
,
{
orderCode
:
item
.
order
C
ode
orderCode
:
item
.
order
_c
ode
});
});
...
...
@@ -485,8 +484,8 @@ const getOrderData = (uid, type, page) => {
*/
const
getOrderDetail
=
(
uid
,
code
)
=>
{
return
api
.
all
([
_getDetail
(
uid
,
code
),
getExpressInfo
(
uid
,
code
)]).
then
(
result
=>
{
const
detail
=
result
[
0
]
&&
camelCase
(
result
[
0
].
data
);
const
express
=
result
[
1
]
&&
camelCase
(
result
[
1
].
data
);
const
detail
=
result
[
0
]
&&
result
[
0
].
data
;
// camelCase(result[0].data);
const
express
=
result
[
1
]
&&
result
[
1
].
data
;
// camelCase(result[1].data);
const
st
=
parseInt
(
detail
.
status
,
10
);
...
...
@@ -496,25 +495,25 @@ const getOrderDetail = (uid, code) => {
let
btns
=
[];
detail
.
orderGoods
.
forEach
(
good
=>
{
let
cnAlphabet
=
good
.
cnAlphabet
?
good
.
cnAlphabet
:
''
;
detail
.
order_goods
.
forEach
(
good
=>
{
let
cnAlphabet
=
good
.
cn_alphabet
?
good
.
cn_alphabet
:
''
;
good
.
goodUrl
=
helpers
.
urlFormat
(
`
/
product
/
pro_$
{
good
.
product
Id
}
_$
{
good
.
goodsI
d
}
/${cnAlphabet}.html`
)
;
good
.
goodUrl
=
helpers
.
urlFormat
(
`
/
product
/
pro_$
{
good
.
product
_id
}
_$
{
good
.
goods_i
d
}
/${cnAlphabet}.html`
)
;
});
detail
.
create
Time
=
_convertUnixTime
(
detail
.
createT
ime
);
detail
.
create
_time
=
_convertUnixTime
(
detail
.
create_t
ime
);
if
(
detail
.
is
C
ancel
===
'N'
&&
if
(
detail
.
is
_c
ancel
===
'N'
&&
st
===
0
&&
parseInt
(
detail
.
pay
L
efttime
,
10
)
!==
0
)
{
parseInt
(
detail
.
pay
_l
efttime
,
10
)
!==
0
)
{
detail
.
showLeftTime
=
true
;
}
if
(
st
!==
0
&&
detail
.
is
C
ancel
!==
'Y'
)
{
if
(
st
!==
0
&&
detail
.
is
_c
ancel
!==
'Y'
)
{
detail
.
showPaid
=
true
;
}
if
(
detail
.
is
C
ancel
!==
'Y'
)
{
if
(
detail
.
is
_c
ancel
!==
'Y'
)
{
detail
.
steps
=
_getStepByOrderStatus
(
st
);
statusMap
[
st
].
btns
.
forEach
(
function
(
btn
)
{
...
...
@@ -531,15 +530,15 @@ const getOrderDetail = (uid, code) => {
}
});
if
(
detail
.
can
UpdateDeliveryA
ddress
===
'N'
)
{
if
(
detail
.
can
_update_delivery_a
ddress
===
'N'
)
{
_
.
remove
(
detail
.
btns
,
btn
=>
{
return
btn
.
isEditBtn
;
});
}
if
(
parseInt
(
detail
.
payment
T
ype
,
10
)
===
2
&&
if
(
parseInt
(
detail
.
payment
_t
ype
,
10
)
===
2
&&
(
statusMap
[
st
].
valueStr
===
'备货中'
||
detail
.
status
S
tr
===
'备货中'
))
{
detail
.
status
_s
tr
===
'备货中'
))
{
detail
.
btns
=
btnMap
.
special
;
}
else
{
detail
.
statusStr
=
statusMap
[
st
].
valueStr
;
...
...
@@ -553,12 +552,12 @@ const getOrderDetail = (uid, code) => {
detail
.
invoice
=
false
;
}
detail
.
paymentTypeStr
=
paymentTypeStr
[
detail
.
payment
T
ype
];
detail
.
paymentTypeStr
=
paymentTypeStr
[
detail
.
payment
_t
ype
];
detail
.
allAddress
=
detail
.
area
+
detail
.
address
;
detail
.
expressInfo
=
express
;
detail
.
expressInfo
.
addressList
=
_convertAddress
(
express
.
express
Detail
,
detail
.
createT
ime
);
detail
.
expressInfo
.
addressList
=
_convertAddress
(
express
.
express
_detail
,
detail
.
create_t
ime
);
return
{
orderDetail
:
Object
.
assign
(
basicData
,
detail
)
...
...
apps/me/models/returns.js
View file @
b491199
...
...
@@ -6,7 +6,6 @@
'use strict'
;
const
api
=
global
.
yoho
.
API
;
const
camelCase
=
global
.
yoho
.
camelCase
;
const
_
=
require
(
'lodash'
);
const
mcHandler
=
require
(
'./menu-crumb-handler'
);
...
...
@@ -81,7 +80,7 @@ const getUserReturn = (uid, page) => {
let
paginationOpts
=
false
;
if
(
result
&&
result
.
data
)
{
data
=
camelCase
(
result
.
data
);
data
=
result
.
data
;
//
camelCase(result.data);
paginationOpts
=
data
.
total
>
pageSize
?
{
paginationOpts
:
{
...
...
@@ -92,21 +91,21 @@ const getUserReturn = (uid, page) => {
}
:
false
;
data
.
list
.
forEach
(
item
=>
{
item
.
orderGoods
=
item
.
goods
;
item
.
createTime
=
item
.
orderCreateTime
;
item
.
order_goods
=
item
.
goods
;
item
.
createTime
=
item
.
order_create_time
;
item
.
hidePrice
=
true
;
item
.
showStatus
=
true
;
item
.
refundStr
=
refundStr
[
item
.
refundType
];
item
.
detailUrl
=
helpers
.
urlFormat
(
urlIndex
[
item
.
refundType
],
{
item
.
refundStr
=
refundStr
[
item
.
refund_type
];
item
.
detailUrl
=
helpers
.
urlFormat
(
urlIndex
[
item
.
refund_type
],
{
orderCode
:
item
.
id
});
item
.
type
=
typeIndex
[
item
.
refund
T
ype
];
item
.
type
=
typeIndex
[
item
.
refund
_t
ype
];
item
.
orderGoods
.
forEach
(
good
=>
{
let
cnAlphabet
=
good
.
cnAlphabet
?
good
.
cnAlphabet
:
''
;
item
.
order_goods
.
forEach
(
good
=>
{
let
cnAlphabet
=
good
.
cn_alphabet
?
good
.
cn_alphabet
:
''
;
good
.
hidePrice
=
true
;
good
.
goodUrl
=
helpers
.
urlFormat
(
`
/
product
/
pro_$
{
good
.
product
Id
}
_$
{
good
.
goodsI
d
}
/${cnAlphabet}.html`
)
; // eslint-disable-lin
e
good
.
goodUrl
=
helpers
.
urlFormat
(
`
/
product
/
pro_$
{
good
.
product
_id
}
_$
{
good
.
goods_i
d
}
/${cnAlphabet}.html`
)
; // eslint-disable-lin
e
});
});
}
...
...
@@ -534,9 +533,9 @@ const saveRefund = (orderCode, uid, goods, payment) => {
const
getProductInfo
=
(
productId
,
productSkn
)
=>
{
return
returnsAPI
.
getProductInfoAsync
(
productId
,
productSkn
).
then
(
result
=>
{
if
(
result
.
code
===
200
)
{
camelCase
(
result
);
result
.
data
.
goodsList
.
forEach
(
good
=>
{
good
.
colorImage
=
helpers
.
image
(
good
.
colorImage
,
20
,
20
);
// camelCase(result);
result
.
data
.
goods_list
.
forEach
(
good
=>
{
good
.
color_image
=
helpers
.
image
(
good
.
color_image
,
20
,
20
);
});
}
return
result
;
...
...
@@ -552,11 +551,11 @@ const getProductInfo = (productId, productSkn) => {
*/
const
getChangeType
=
(
uid
,
areaCode
)
=>
{
return
returnsAPI
.
getChangeTypeAsync
(
uid
,
areaCode
).
then
(
result
=>
{
camelCase
(
result
);
//
camelCase(result);
if
(
result
.
data
)
{
result
.
data
.
forEach
(
data
=>
{
data
.
is
Default
=
data
.
isD
efault
===
'Y'
;
data
.
is
_default
=
data
.
is_d
efault
===
'Y'
;
});
}
...
...
@@ -580,23 +579,23 @@ const getChangeGoodsList = (orderCode, uid) => {
if
(
result
&&
result
.
data
)
{
data
=
camelCase
(
result
.
data
);
data
=
result
.
data
;
//
camelCase(result.data);
data
.
hidePrice
=
true
;
data
.
orderCode
=
orderCode
;
// 设置特殊原因
_
.
forEach
(
data
.
specialExchangeReason
,
r
=>
{
_
.
find
(
data
.
exchangeReason
,
{
id
:
r
.
id
}).
isSpecial
=
true
;
_
.
forEach
(
data
.
special_exchange_reason
,
r
=>
{
_
.
find
(
data
.
exchange_reason
,
{
id
:
r
.
id
}).
isSpecial
=
true
;
});
if
(
data
.
goodsList
)
{
data
.
goodsList
.
forEach
(
good
=>
{
let
cnAlphabet
=
good
.
cnAlphabet
?
good
.
cnAlphabet
:
''
;
if
(
data
.
goods_list
)
{
data
.
goods_list
.
forEach
(
good
=>
{
let
cnAlphabet
=
good
.
cn_alphabet
?
good
.
cn_alphabet
:
''
;
good
.
showCheckbox
=
true
;
good
.
hidePrice
=
true
;
good
.
buyNumber
=
1
;
good
.
goodUrl
=
helpers
.
urlFormat
(
`
/
product
/
pro_$
{
good
.
product
Id
}
_$
{
good
.
goodsI
d
}
/${cnAlphabet}.html`
)
; //eslint-disable-lin
e
good
.
goodUrl
=
helpers
.
urlFormat
(
`
/
product
/
pro_$
{
good
.
product
_id
}
_$
{
good
.
goods_i
d
}
/${cnAlphabet}.html`
)
; //eslint-disable-lin
e
});
}
}
...
...
@@ -615,12 +614,12 @@ const getChangeGoodsList = (orderCode, uid) => {
* @return { Object } 模板渲染换货数据
*/
const
_setExchangeDetailData
=
(
data
)
=>
{
data
=
camelCase
(
data
);
//
data = camelCase(data);
let
list
=
{};
switch
(
data
.
status
)
{
case
0
:
if
(
data
.
delivery
TpyeN
ame
===
'寄回换货'
)
{
if
(
data
.
delivery
_tpye_n
ame
===
'寄回换货'
)
{
Object
.
assign
(
list
,
{
audit
:
true
,
reminder
:
true
,
...
...
@@ -646,7 +645,7 @@ const _setExchangeDetailData = (data) => {
location
:
true
});
if
(
data
.
delivery
TpyeN
ame
===
'寄回换货'
)
{
if
(
data
.
delivery
_tpye_n
ame
===
'寄回换货'
)
{
Object
.
assign
(
list
,
{
logistics
:
true
,
sendBack
:
true
,
...
...
@@ -660,7 +659,7 @@ const _setExchangeDetailData = (data) => {
break
;
case
20
:
if
(
data
.
delivery
TpyeN
ame
===
'寄回换货'
)
{
if
(
data
.
delivery
_tpye_n
ame
===
'寄回换货'
)
{
Object
.
assign
(
list
,
{
logistics
:
true
});
...
...
@@ -669,15 +668,15 @@ const _setExchangeDetailData = (data) => {
list
.
reminder
=
true
;
list
.
inDoor
=
true
;
list
.
auditSuccess
=
true
;
list
.
view
=
`
/
me
/
order
/
detail
/
?
orderCode
=
$
{
data
.
order
C
ode
}
`
;
list
.
view
=
`
/
me
/
order
/
detail
/
?
orderCode
=
$
{
data
.
order
_c
ode
}
`
;
}
break
;
case
30
:
if
(
data
.
delivery
TpyeN
ame
===
'寄回换货'
)
{
if
(
data
.
delivery
_tpye_n
ame
===
'寄回换货'
)
{
list
.
takeGoods
=
true
;
list
.
auditSuccess
=
true
;
list
.
view
=
`
/
me
/
order
/
detail
/
?
orderCode
=
$
{
data
.
order
C
ode
}
`
;
list
.
view
=
`
/
me
/
order
/
detail
/
?
orderCode
=
$
{
data
.
order
_c
ode
}
`
;
}
else
{
list
.
takeGoods
=
true
;
}
...
...
@@ -687,14 +686,14 @@ const _setExchangeDetailData = (data) => {
send
:
true
,
doubt
:
true
,
auditSuccess
:
true
,
view
:
`
/
me
/
order
/
detail
/
?
orderCode
=
$
{
data
.
order
C
ode
}
`
view
:
`
/
me
/
order
/
detail
/
?
orderCode
=
$
{
data
.
order
_c
ode
}
`
});
break
;
case
40
:
Object
.
assign
(
list
,
{
finish
:
true
,
auditSuccess
:
true
,
view
:
`
/
me
/
order
/
detail
/
?
orderCode
=
$
{
data
.
order
C
ode
}
`
view
:
`
/
me
/
order
/
detail
/
?
orderCode
=
$
{
data
.
order
_c
ode
}
`
});
break
;
case
91
:
...
...
@@ -746,7 +745,7 @@ const getExchangeDetailData = (id, uid) => {
exchangeData
.
exchangeDetail
,
_setReturnStatus
(
data
.
statusList
),
_setExchangeDetailData
(
data
),
camelCase
(
data
)
data
//
camelCase(data)
);
}
...
...
apps/me/views/partial/collection/brand.hbs
View file @
b491199
...
...
@@ -10,16 +10,16 @@
<div
class=
"check"
>
{{>
icon
/
checkbox
}}
</div>
<div
class=
"brand-info"
data-id=
"
{{
brand
I
d
}}
"
data-type=
"
{{
brandOrShopType
}}
"
>
<div
class=
"brand-info"
data-id=
"
{{
brand
_i
d
}}
"
data-type=
"
{{
brandOrShopType
}}
"
>
<div
class=
"brand-icon"
>
<img
src=
"
{{
image
brand
I
co
145
126
}}
"
alt=
""
width=
"145"
height=
"126"
>
<img
src=
"
{{
image
brand
_i
co
145
126
}}
"
alt=
""
width=
"145"
height=
"126"
>
</div>
<div
class=
"brand-name"
>
{{
brand
N
ame
}}
{{
brand
_n
ame
}}
</div>
<div
class=
"tool-area clearfix"
>
<a
class=
"btn white"
href=
"/product/shop/
{{
brand
D
omain
}}{{#if
shopId
}}
?shopId=
{{
shopId
}}{{/if}}
"
href=
"/product/shop/
{{
brand
_d
omain
}}{{#if
shopId
}}
?shopId=
{{
shopId
}}{{/if}}
"
target=
"_blank"
>
去店铺页
</a>
<span
class=
"btn white cancel"
>
取消收藏
</span>
</div>
...
...
@@ -27,7 +27,7 @@
<div
class=
"brand-products slide-container"
>
{{#if
noNewProduct
}}
<p
class=
"no-product-info"
>
暂无新品, 去
<a
href=
"/product/shop/
{{
brand
D
omain
}}{{#if
shopId
}}
?shopId=
{{
shopId
}}{{/if}}
"
target=
"_blank"
>
名牌频道
</a>
看看吧
暂无新品, 去
<a
href=
"/product/shop/
{{
brand
_d
omain
}}{{#if
shopId
}}
?shopId=
{{
shopId
}}{{/if}}
"
target=
"_blank"
>
名牌频道
</a>
看看吧
</p>
{{^}}
<div
class=
"slide-switch"
>
...
...
@@ -40,12 +40,12 @@
</div>
<div
class=
"slide-wrap"
>
<ul>
{{#
each
new
P
roduct
}}
{{#
each
new
_p
roduct
}}
<li
class=
"clearfix"
>
{{#
each
this
}}
{{#if
more
}}
<div
class=
"goods-more"
>
<a
href=
"/product/shop/
{{
..
/
..
/
brand
D
omain
}}{{#if
..
/
..
/
shopId
}}
?shopId=
{{
..
/
..
/
shopId
}}{{/if}}
"
<a
href=
"/product/shop/
{{
..
/
..
/
brand
_d
omain
}}{{#if
..
/
..
/
shopId
}}
?shopId=
{{
..
/
..
/
shopId
}}{{/if}}
"
target=
"_blank"
>
<div
class=
"more-text"
>
MORE
</div>
<p>
查看更多
</p>
...
...
@@ -55,11 +55,11 @@
<div
class=
"goods-info"
>
<a
href=
"
{{
url
}}
"
target=
"_blank"
>
<img
class=
"lazy thumb"
src=
"
{{
image
default
I
mages
148
196
}}
"
src=
"
{{
image
default
_i
mages
148
196
}}
"
style=
"display: block;"
>
<div
class=
"desc"
>
<span
class=
"name"
>
{{
productName
}}
</span>
<p
class=
"price"
>
¥
{{
round
salesPrice
2
}}
</p>
<span
class=
"name"
>
{{
product_name
}}
</span>
<p
class=
"price"
>
¥
{{
round
sales_price
2
}}
</p>
</div>
</a>
</div>
...
...
apps/me/views/partial/collection/editorial.hbs
View file @
b491199
...
...
@@ -23,9 +23,9 @@
</div>
<div
class=
"editorial-some"
>
<span
class=
"author"
>
{{
author
.
name
}}
</span>
<span
class=
"time brown-light"
>
{{
publishTime
}}
</span>
<span>
浏览:
<b
class=
"brown-light"
>
{{
viewsNum
}}
</b></span>
<span>
评论:
<b
class=
"brown-light"
>
{{
praiseNum
}}
</b></span>
<span
class=
"time brown-light"
>
{{
publish_time
}}
</span>
<span>
浏览:
<b
class=
"brown-light"
>
{{
views_num
}}
</b></span>
<span>
评论:
<b
class=
"brown-light"
>
{{
praise_num
}}
</b></span>
</div>
<p
class=
"summer"
>
{{
intro
}}
...
...
apps/me/views/partial/collection/product.hbs
View file @
b491199
...
...
@@ -11,7 +11,7 @@
<div
class=
"clearfix product-list"
>
{{#
each
products
}}
<div
class=
"goods-info"
data-id=
"
{{
product
I
d
}}
"
>
<div
class=
"goods-info"
data-id=
"
{{
product
_i
d
}}
"
>
<div
class=
"choose-icon"
>
<span
class=
"iconfont"
>

</span>
</div>
...
...
@@ -26,9 +26,9 @@
{{/
stateText
}}
</div>
<div
class=
"desc"
>
<div
class=
"brand-name"
><a
href=
"
{{
https
url
}}
"
target=
"_blank"
>
{{
brandName
}}
</a></div>
<div
class=
"product-name"
><a
href=
"
{{
https
url
}}
"
target=
"_blank"
>
{{
productName
}}
</a></div>
<p
class=
"price"
>
¥
{{
round
salesPrice
2
}}
</p>
<div
class=
"brand-name"
><a
href=
"
{{
https
url
}}
"
target=
"_blank"
>
{{
brand_name
}}
</a></div>
<div
class=
"product-name"
><a
href=
"
{{
https
url
}}
"
target=
"_blank"
>
{{
product_name
}}
</a></div>
<p
class=
"price"
>
¥
{{
round
sales_price
2
}}
</p>
</div>
<div
class=
"tool-area clearfix"
>
...
...
apps/me/views/partial/exchange-detail.hbs
View file @
b491199
...
...
@@ -135,21 +135,21 @@
</div>
<div
class=
"table"
>
{{#
goods
L
ist
}}
{{#
goods
_l
ist
}}
<div
class=
"table-body"
>
<div
class=
"goods-info"
>
<img
src=
"
{{
image
goods
I
mage
70
90
}}
"
>
<img
src=
"
{{
image
goods
_i
mage
70
90
}}
"
>
<div
class=
"info"
>
<p
class=
"good-name"
>
{{
productName
}}
</p>
<p>
颜色:
{{
colorName
}}
尺码:
{{
sizeName
}}
</p>
<p
class=
"good-name"
>
{{
product_name
}}
</p>
<p>
颜色:
{{
color_name
}}
尺码:
{{
size_name
}}
</p>
<p>
{{
num
}}
</p>
</div>
</div>
<div
class=
"common special-border"
>
<p
class=
"reason"
>
{{
reason
N
ame
}}
</p>
<p
class=
"reason"
>
{{
reason
_n
ame
}}
</p>
</div>
<div
class=
"common special-border operation"
>
<p
class=
"subtext"
>
color:
{{
new
ColorName
}}
<br>
size:
{{
newSizeN
ame
}}
</p>
<p
class=
"subtext"
>
color:
{{
new
_color_name
}}
<br>
size:
{{
new_size_n
ame
}}
</p>
</div>
</div>
{{#if
evidenceImages
}}
...
...
@@ -166,7 +166,7 @@
</div>
</div>
{{/if}}
{{/
goods
L
ist
}}
{{/
goods
_l
ist
}}
</div>
</div>
</div>
...
...
apps/me/views/partial/order/detail/goods-list.hbs
View file @
b491199
<div
class=
"goods-list info-box"
>
<h4
class=
"status-title"
>
商品清单
</h4>
{{#
isY
is
MultiP
ackage
}}
{{#
isY
is
_multi_p
ackage
}}
<div
class=
"multi-package-row"
>
温馨提示:您购买的商品
<em
class=
"blue"
>
分属不同仓库
</em>
,需要调拨,将被拆分成多个包裹送达
<span
class=
"iconfont show-package"
>

</span>
...
...
@@ -36,15 +36,15 @@
</div>
<div
class=
"payment-info info-box"
>
{{#
promotion
F
ormulas
}}
{{#
promotion
_f
ormulas
}}
<p>
<span
class=
"tip"
>
{{
promotion
}}
:
</span>
<span
class=
"amount"
>
{{
promotion
A
mount
}}
</span>
<span
class=
"amount"
>
{{
promotion
_a
mount
}}
</span>
</p>
{{/
promotion
F
ormulas
}}
{{/
promotion
_f
ormulas
}}
<p
class=
"payment-amount"
>
<span
class=
"tip"
>
实付金额:
</span>
<span
class=
"amount"
>
¥
{{
payment
A
mount
}}
</span>
<span
class=
"amount"
>
¥
{{
payment
_a
mount
}}
</span>
</p>
{{#if
showPaid
}}
<p
class=
"paid"
>
...
...
apps/me/views/partial/order/detail/info-box.hbs
View file @
b491199
<div
class=
"user-info info-box"
data-area=
"
{{
area
C
ode
}}
"
>
<div
class=
"user-info info-box"
data-area=
"
{{
area
_c
ode
}}
"
>
<h4
class=
"status-title"
>
收货人信息
</h4>
<p
class=
"text user-name-sel"
data-name=
"
{{
user
Name
}}
"
>
收货人:
{{
userN
ame
}}
</p>
<p
class=
"text user-name-sel"
data-name=
"
{{
user
_name
}}
"
>
收货人:
{{
user_n
ame
}}
</p>
<p
class=
"text user-addr-sel"
data-address=
"
{{
address
}}
"
>
收货地址:
{{
allAddress
}}
</p>
<p
class=
"text user-mo-sel"
data-mobile=
"
{{
mobile
}}
"
>
联系电话:
{{
mobile
}}
</p>
<p
class=
"text user-ph-sel hide"
data-phone=
"
{{
phone
}}
"
>
联系电话:
{{
phone
}}
</p>
...
...
@@ -9,10 +9,10 @@
<div
class=
"info-box"
>
<h4
class=
"status-title"
>
支付及配送方式
</h4>
<p
class=
"text"
>
支付类型:
{{
paymentTypeStr
}}
</p>
{{#if
paymentName
}}
<p
class=
"text"
>
支付方式:
{{
paymentName
}}
</p>
{{#if
payment_name
}}
<p
class=
"text"
>
支付方式:
{{
payment_name
}}
</p>
{{/if}}
<p
class=
"text"
>
送货时间:
{{
delivery
T
ime
}}
</p>
<p
class=
"text"
>
送货时间:
{{
delivery
_t
ime
}}
</p>
</div>
<div
class=
"info-box"
>
...
...
apps/me/views/partial/order/detail/order-status.hbs
View file @
b491199
<div
class=
"order-status order"
data-code=
"
{{
order
C
ode
}}
"
data-codem=
"
{{
orderCodeM
}}
"
>
<div
class=
"order-status order"
data-code=
"
{{
order
_c
ode
}}
"
data-codem=
"
{{
orderCodeM
}}
"
>
<div
class=
"basic"
>
<p>
订单号:
{{
orderCode
}}
</p>
<p>
订单状态:
{{
statusStr
}}
</p>
<p>
订单号:
{{
order_code
}}
</p>
<p>
订单状态:
{{
status_str
}}
</p>
<div
class=
"edit-btns hide-when-invalid"
>
<ul>
{{#
btns
}}
...
...
@@ -23,7 +23,7 @@
<div
class=
"time"
>
<span>
剩余支付时间:
</span>
<span
class=
"iconfont hide-when-invalid"
>

</span>
<p
class=
"left-time"
data-left=
{{
pay
L
efttime
}}
>
</p
>
<p
class=
"left-time"
data-left=
{{
pay
_l
efttime
}}
>
</p
>
<span
class=
"tip hide-when-invalid"
>
(逾期订单将自动取消)
</span>
</div>
{{/if}}
...
...
@@ -35,7 +35,7 @@
<li
class=
"
{{#if
@first
}}
first
{{/if}}
{{#if
@last
}}
last
{{/if}}
{{#if
isActive
}}
active
{{/if}}
{{#if
isLastActive
}}
last-active
{{/if}}
"
>
{{
stepStr
}}
</li>
{{/
steps
}}
</ul>
<p>
{{
create
T
ime
}}
</p>
<p>
{{
create
_t
ime
}}
</p>
</div>
{{/if}}
</div>
...
...
apps/me/views/partial/order/good-info.hbs
View file @
b491199
<div
class=
"good-info
{{#if
@last
}}
last
{{/if}}
"
>
<a
href=
"
{{
https
goodUrl
}}
"
target=
"_blank"
>
<img
src=
"
{{
image
goods
I
mage
65
90
}}
"
>
<img
src=
"
{{
image
goods
_i
mage
65
90
}}
"
>
</a>
<div
class=
"detail"
>
<a
href=
"
{{
https
goodUrl
}}
"
target=
"_blank"
>
<p
class=
"with-bottom-space good-name-text"
>
{{
product
N
ame
}}
</p>
<p
class=
"with-bottom-space good-name-text"
>
{{
product
_n
ame
}}
</p>
</a>
<span
class=
"with-space"
>
颜色:
{{
color
N
ame
}}
</span>
<span
class=
"with-space"
>
颜色:
{{
color
_n
ame
}}
</span>
<span>
尺码:
<span
class=
"bold"
>
{{
size
N
ame
}}
</span>
<span
class=
"bold"
>
{{
size
_n
ame
}}
</span>
</span>
{{#if
buyNumber
}}
<p
class=
"bold buy-number"
><span
class=
"iconfont"
>

</span>
{{
buyNumber
}}
</p>
{{#if
buy_number
}}
<p
class=
"bold buy-number"
><span
class=
"iconfont"
>

</span>
{{
buy_number
}}
</p>
{{/if}}
</div>
</div>
...
...
apps/me/views/partial/order/goods-box.hbs
View file @
b491199
<div
class=
"goods-container special-border
{{#if
hidePrice
}}
no-price
{{/if}}
"
>
{{#
order
G
oods
}}
{{#
order
_g
oods
}}
{{>
order
/
good-info
}}
{{#
unless
hidePrice
}}
<div
class=
"sub-column right-border bold"
>
<p
class=
"
{{#if
@last
}}
last
{{/if}}
"
>
¥
{{
goods
P
rice
}}
¥
{{
goods
_p
rice
}}
{{#if
changed
}}
<a
href=
"
{{
https
returnUrl
}}
"
>
<span
class=
"btn white change-tag"
>
已退换
</span>
...
...
@@ -13,11 +13,11 @@
</p>
</div>
<div
class=
"sub-column right-border special-column bold"
>
<p
class=
"bold"
>
{{
buy
N
umber
}}
</p>
<p
class=
"bold"
>
{{
buy
_n
umber
}}
</p>
</div>
<div
class=
"sub-column special-column bold"
>
<p
class=
"bold"
>
¥
{{
goods
A
mount
}}
</p>
<p
class=
"bold"
>
¥
{{
goods
_a
mount
}}
</p>
</div>
{{/
unless
}}
{{/
order
G
oods
}}
{{/
order
_g
oods
}}
</div>
...
...
apps/me/views/partial/order/order-header.hbs
View file @
b491199
<ul
class=
"header"
>
<li
class=
"content"
>
下单时间:
{{
createTime
}}
</li>
<li
class=
"content"
>
订单编号:
{{
orderCode
}}
</li>
<li
class=
"content"
>
下单时间:
{{
create_time
}}
</li>
<li
class=
"content"
>
订单编号:
{{
order_code
}}
</li>
{{#if
showMobile
}}
<li
class=
"content"
><span
class=
"iconfont"
>

</span>
手机订单
</li>
{{/if}}
...
...
apps/me/views/partial/order/table-body.hbs
View file @
b491199
<div
class=
"table table-body
{{#
unless
orderList
}}
empty
{{/
unless
}}
"
>
{{#if
orderList
}}
{{#
orderList
}}
<div
class=
"order"
data-code=
"
{{
order
C
ode
}}
"
>
<div
class=
"order"
data-code=
"
{{
order
_c
ode
}}
"
>
{{>
order
/
order-header
}}
<div
class=
"table-body"
>
{{>
order
/
goods-box
}}
<div
class=
"common-column special-border"
>
<p
class=
"bold"
>
¥
{{
amount
}}
</p>
<p
class=
"subtext no-pointer"
>
{{
payment
TypeS
tr
}}
</p>
<p
class=
"subtext no-pointer"
>
{{
payment
_type_s
tr
}}
</p>
{{#if
isRefundOrder
}}
<p
class=
"subtext refund-tag"
>
换货订单
</p>
{{/if}}
...
...
@@ -23,7 +23,7 @@
<div
class=
"pay-operation
{{#
unless
showLeftTime
}}
marginhack
{{/
unless
}}
"
>
{{#if
isOnlinePaid
}}
{{#if
showLeftTime
}}
<span
class=
"iconfont hide-when-invalid"
>

</span><p
class=
"left-time"
data-left=
"
{{
pay
L
efttime
}}
"
></p>
<span
class=
"iconfont hide-when-invalid"
>

</span><p
class=
"left-time"
data-left=
"
{{
pay
_l
efttime
}}
"
></p>
{{/if}}
<a
href=
"
{{
https
payUrl
}}
"
>
<span
class=
"btn red hide-when-invalid "
>
立即付款
</span>
...
...
apps/me/views/partial/returns-change.hbs
View file @
b491199
...
...
@@ -12,10 +12,10 @@
<li
class=
"change-reason"
>
换货原因
</li>
<li
class=
"change-num hide"
>
换货数量
</li>
</ul>
{{#
goods
L
ist
}}
{{#
goods
_l
ist
}}
<div
class=
"change-info-box"
>
<div
class=
"table-body"
>
<div
class=
"goods-container no-price"
data-goods-id=
"
{{
goods
Id
}}
"
data-sku=
"
{{
productSku
}}
"
data-id=
"
{{
productId
}}
"
data-skn=
"
{{
productSkn
}}
"
data-goods-type=
"
{{
goodsTypeId
}}
"
data-price=
"
{{
lastP
rice
}}
"
data-skc=
{{
productSkc
}}
>
<div
class=
"goods-container no-price"
data-goods-id=
"
{{
goods
_id
}}
"
data-sku=
"
{{
productSku
}}
"
data-id=
"
{{
product_id
}}
"
data-skn=
"
{{
productSkn
}}
"
data-goods-type=
"
{{
goods_type_id
}}
"
data-price=
"
{{
last_p
rice
}}
"
data-skc=
{{
productSkc
}}
>
{{#
showCheckbox
}}
<span
class=
"checkbox-box"
>
{{>
icon
/
checkbox
}}
...
...
@@ -38,20 +38,20 @@
<div
class=
"group color"
>
<span
class=
"title"
>
<span
class=
"asterisk"
>
*
</span>
换货Color:
<span
class=
"color-text"
data-color=
{{
color
Name
}}
>
{{
colorN
ame
}}
</span
>
换货Color:
<span
class=
"color-text"
data-color=
{{
color
_name
}}
>
{{
color_n
ame
}}
</span
>
</span>
</div>
<div
class=
"group size"
>
<span
class=
"title"
>
<span
class=
"asterisk"
>
*
</span>
换货Size:
<span
class=
"size-text"
data-size=
"
{{
size
Name
}}
"
>
{{
sizeN
ame
}}
</span>
换货Size:
<span
class=
"size-text"
data-size=
"
{{
size
_name
}}
"
>
{{
size_n
ame
}}
</span>
</span>
</div>
</div>
{{>
returns
/
special-reason
}}
</div>
{{/
goods
L
ist
}}
{{/
goods
_l
ist
}}
</div>
</div>
<div
class=
"change-type"
>
...
...
@@ -65,7 +65,7 @@
<div
class=
"input-group"
>
<span
class=
"asterisk"
>
*
</span>
<label
for=
"city"
class=
"change-area"
>
所在区域:
</label>
<span
id=
"city"
class=
"cascading-address"
data-code=
"
{{
area
C
ode
}}
"
></span>
<span
id=
"city"
class=
"cascading-address"
data-code=
"
{{
area
_c
ode
}}
"
></span>
</div>
<div
class=
"input-group require"
>
<span
class=
"asterisk"
>
*
</span>
...
...
apps/me/views/partial/returns-list.hbs
View file @
b491199
...
...
@@ -16,7 +16,7 @@
<div
class=
"table-body"
>
{{>
order
/
goods-box
}}
<div
class=
"common-column special-border"
>
<p
class=
"refund-status"
>
{{
status
N
ame
}}
</p>
<p
class=
"refund-status"
>
{{
status
_n
ame
}}
</p>
<p
class=
"subtext badge refund-type"
>
{{
refundStr
}}
</p>
</div>
<div
class=
"common-column special-border operation"
>
...
...
apps/me/views/partial/returns/change-reason.hbs
View file @
b491199
<select
class=
"exchange-reasons"
name=
"exchange-reasons"
>
<option
value=
"0"
>
请选择换货原因
</option>
{{#
exchange
R
eason
}}
{{#
exchange
_r
eason
}}
<option
value=
"
{{
id
}}
"
{{#if
isSpecial
}}
class=
"is-special"
{{/if}}
>
{{
name
}}
</option>
{{/
exchange
R
eason
}}
{{/
exchange
_r
eason
}}
</select>
...
...
apps/product/controllers/list.js
View file @
b491199
...
...
@@ -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 @
b491199
...
...
@@ -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 @
b491199
...
...
@@ -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 @
b491199
...
...
@@ -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 @
b491199
...
...
@@ -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 @
b491199
...
...
@@ -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 @
b491199
...
...
@@ -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
=
helpers
.
image
(
value
.
colorValue
,
30
,
30
);
}
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
};
// 虚拟商品,增加为一件
...
...
@@ -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 @
b491199
...
...
@@ -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 @
b491199
...
...
@@ -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 @
b491199
...
...
@@ -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 @
b491199
<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 @
b491199
<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 @
b491199
...
...
@@ -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>
...
...
package.json
View file @
b491199
...
...
@@ -74,6 +74,7 @@
"eslint-config-yoho"
:
"^1.0.1"
,
"gulp"
:
"^3.9.1"
,
"gulp-cssnano"
:
"^2.1.2"
,
"gulp-ftp"
:
"^1.1.0"
,
"gulp-postcss"
:
"^6.1.0"
,
"gulp-sourcemaps"
:
"^2.0.0-alpha"
,
"gulp-util"
:
"^3.0.7"
,
...
...
public/js/me/exchange.page.js
View file @
b491199
...
...
@@ -99,8 +99,8 @@ function renderList(data) {
var
resultSkn
;
if
(
data
)
{
resultId
=
data
.
productId
;
resultSkn
=
data
.
productSkn
;
resultId
=
data
.
product_id
;
resultSkn
=
data
.
product_skn
;
$el
.
each
(
function
(
index
,
item
)
{
var
$item
=
$
(
item
);
...
...
public/tpl/me/change-type.hbs
View file @
b491199
{{#
type
}}
<span
class=
"type
{{#if
is
D
efault
}}
active
{{/if}}
"
data-type=
"
{{
id
}}
"
>
{{
name
}}
</span>
<span
class=
"type
{{#if
is
_d
efault
}}
active
{{/if}}
"
data-type=
"
{{
id
}}
"
>
{{
name
}}
</span>
{{/
type
}}
...
...
public/tpl/me/color-list.hbs
View file @
b491199
<div
class=
"color-list"
>
{{#
goods
L
ist
}}
{{#
goods
_l
ist
}}
<div
class=
"img-box
{{#if
isActive
}}
active
{{/if}}
"
>
<img
src=
"
{{
color
Image
}}
"
alt=
"
{{
colorName
}}
"
data-index=
"
{{
@index
}}
"
data-color=
"
{{
colorName
}}
"
data-id=
"
{{
colorId
}}
"
data-goods-id=
"
{{
goodsI
d
}}
"
>
<img
src=
"
{{
color
_image
}}
"
alt=
"
{{
color_name
}}
"
data-index=
"
{{
@index
}}
"
data-color=
"
{{
color_name
}}
"
data-id=
"
{{
color_id
}}
"
data-goods-id=
"
{{
goods_i
d
}}
"
>
</div>
{{/
goods
L
ist
}}
{{/
goods
_l
ist
}}
</div>
...
...
public/tpl/me/size-list.hbs
View file @
b491199
<div>
{{#
goods
L
ist
}}
{{#
goods
_l
ist
}}
<div
class=
"hide size-list"
data-index=
"
{{
@index
}}
"
>
{{#
sizeList
}}
<span
data-size=
"
{{
sizeName
}}
"
data-sku=
"
{{
productSku
}}
"
data-id=
"
{{
goodsId
}}
"
{{#
unless
storageNumber
}}
class=
"disable"
{{/
unless
}}
>
{{
sizeName
}}
</span>
{{/
sizeList
}}
{{#
size_list
}}
<span
data-size=
"
{{
size_name
}}
"
data-sku=
"
{{
product_sku
}}
"
data-id=
"
{{
goods_id
}}
"
{{#
unless
storage_number
}}
class=
"disable"
{{/
unless
}}
>
{{
size_name
}}
</span>
{{/
size_list
}}
</div>
{{/
goods
L
ist
}}
{{/
goods
_l
ist
}}
</div>
...
...
Please
register
or
login
to post a comment