Toggle navigation
Toggle navigation
This project
Loading...
Sign in
fe
/
yohobuywap-node
·
Commits
Go to a project
GitLab
Go to group
Project
Activity
Files
Commits
Pipelines
0
Builds
0
Graphs
Milestones
Issues
0
Merge Requests
0
Members
Labels
Wiki
Forks
Network
Create a new issue
Download as
Email Patches
Plain Diff
Browse Files
Authored by
yyq
9 years ago
Commit
7546a02393eef6bc79fee4a302a41494e2e3cbe8
1 parent
d0791c73
商品详情调整
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
214 additions
and
201 deletions
apps/product/controllers/detail.js
apps/product/models/detail.js
apps/product/models/preference.js
apps/product/router.js
apps/product/views/action/detail/detail.hbs
apps/product/views/action/detail/preference.hbs
apps/product/views/partial/cart/chose-panel.hbs
public/scss/product/detail/_comments-consults.css
public/scss/product/detail/_detail.css
public/scss/product/detail/_index.css
apps/product/controllers/detail.js
View file @
7546a02
...
...
@@ -55,7 +55,8 @@ exports.intro = (req, res) => {
productskn
:
req
.
params
.
productskn
}).
then
((
result
)
=>
{
res
.
render
(
'detail/intro'
,
{
result
:
result
result
:
result
,
layout
:
false
});
});
};
...
...
@@ -74,7 +75,7 @@ exports.preference = (req, res) => {
}).
then
((
result
)
=>
{
res
.
render
(
'detail/preference'
,
{
result
:
result
,
devEnv
:
tru
e
layout
:
fals
e
});
});
};
...
...
apps/product/models/detail.js
View file @
7546a02
...
...
@@ -19,24 +19,23 @@ const api = new API();
* @return {array}
*/
const
getShopsInfo
=
(
data
)
=>
{
let
enterStore
=
{}
;
let
enterStore
=
[]
;
_
.
forEach
(
data
,
function
(
value
,
key
)
{
enterStore
[
key
]
=
{
_
.
forEach
(
data
,
function
(
value
)
{
let
shopInfo
=
{
img
:
value
.
brand_ico
,
storeName
:
value
.
brand_name
};
if
(
value
.
shop_id
!==
null
&&
typeof
value
.
shop_id
!==
'undefined'
)
{
let
params
=
{};
params
.
shop_id
=
value
.
shop_id
;
enterStore
[
key
].
url
=
helpers
.
urlFormat
(
'/product/index/brand'
,
params
);
if
(
value
.
shop_id
)
{
shopInfo
.
url
=
helpers
.
urlFormat
(
'/product/index/brand'
,
{
shop_id
:
value
.
shop_id
});
}
else
{
enterStore
[
key
].
url
=
helpers
.
urlFormat
(
''
,
null
,
value
.
brand_domain
);
shopInfo
.
url
=
helpers
.
urlFormat
(
''
,
null
,
value
.
brand_domain
);
}
enterStore
.
push
(
shopInfo
);
});
return
enterStore
;
};
...
...
@@ -120,9 +119,9 @@ const getLimitCodeUrl = (productCode, skn, ua) => {
*/
const
detailDataPkg
=
(
origin
,
uid
,
vipLevel
,
ua
)
=>
{
let
dest
=
{},
// 结果输出
thumbImageList
=
[],
colorGroup
=
{},
thumbImageList
=
{},
sizeGroup
=
{},
sizeGroup
=
[],
totalStorageNum
=
0
;
// 商品名称
...
...
@@ -141,92 +140,110 @@ const detailDataPkg = (origin, uid, vipLevel, ua) => {
}
// 商品促销短语
if
(
origin
.
salesPhrase
!==
null
&&
typeof
origin
.
salesPhrase
!==
'undefined'
)
{
if
(
origin
.
salesPhrase
)
{
dest
.
goodsSubtitle
=
origin
.
salesPhrase
;
}
// 商品标签
if
(
origin
.
productTagBoList
!==
null
&&
typeof
origin
.
productTagBoList
!==
'undefined'
)
{
if
(
origin
.
productTagBoList
)
{
let
productTags
=
{};
_
.
forEach
(
origin
.
productTagBoList
,
function
(
value
)
{
switch
(
value
.
tagLabel
)
{
case
'is_soon_sold_out'
:
dest
.
t
ags
.
is_soon_sold_out
=
true
;
productT
ags
.
is_soon_sold_out
=
true
;
break
;
case
'is_new'
:
dest
.
t
ags
.
is_new
=
true
;
productT
ags
.
is_new
=
true
;
break
;
case
'is_discount'
:
dest
.
t
ags
.
is_discount
=
true
;
productT
ags
.
is_discount
=
true
;
break
;
case
'is_limited'
:
dest
.
t
ags
.
is_limited
=
true
;
productT
ags
.
is_limited
=
true
;
break
;
case
'is_yohood'
:
dest
.
t
ags
.
is_yohood
=
true
;
productT
ags
.
is_yohood
=
true
;
break
;
case
'is_advance'
:
dest
.
t
ags
.
is_advance
=
true
;
productT
ags
.
is_advance
=
true
;
break
;
default
:
break
;
}
});
dest
.
tags
=
productTags
;
}
// 商品价格
dest
.
goodsPrice
=
{};
if
(
origin
.
productPriceBo
)
{
let
originPrice
=
origin
.
productPriceBo
;
let
goodsPrice
=
{
currentPrice
:
originPrice
.
formatSalesPrice
};
if
(
origin
.
productPriceBo
!==
null
&&
typeof
origin
.
productPriceBo
!==
'undefined'
)
{
dest
.
goodsPrice
.
currentPrice
=
origin
.
productPriceBo
.
formatSalesPrice
;
if
(
origin
.
productPriceBo
.
formatMarketPrice
!==
origin
.
productPriceBo
.
formatSalesPrice
)
{
dest
.
goodsPrice
.
previousPrice
=
origin
.
productPriceBo
.
formatMarketPrice
;
if
(
originPrice
.
formatMarketPrice
!==
originPrice
.
formatSalesPrice
)
{
goodsPrice
.
previousPrice
=
originPrice
.
formatMarketPrice
;
}
dest
.
goodsPrice
=
goodsPrice
;
// 商品返回 YOHO 币
if
(
origin
.
productPriceBo
.
yohoCoinNum
!==
null
&&
origin
.
productPriceBo
.
yohoCoinNum
!==
0
)
{
dest
.
commodityReturn
=
origin
.
productPriceBo
.
yohoCoinNum
;
if
(
originPrice
.
yohoCoinNum
)
{
dest
.
commodityReturn
=
originPrice
.
yohoCoinNum
;
}
}
// VIP 商品价格
dest
.
vipLevel
=
{};
dest
.
vipLevel
.
list
=
[];
if
(
origin
.
productPriceBo
.
vipPrices
)
{
let
vipList
=
[];
if
(
origin
.
productPriceBo
.
vipPrices
!==
null
&&
typeof
origin
.
productPriceBo
.
vipPrices
!==
'undefined'
)
{
_
.
forEach
(
origin
.
productPriceBo
.
vipPrices
,
function
(
value
)
{
dest
.
vipLevel
.
l
ist
.
push
({
vipL
ist
.
push
({
level
:
value
.
vipLevel
,
text
:
value
.
vipPrice
,
currentLevel
:
(
value
.
vipLevel
===
vipLevel
)
});
});
if
(
vipList
.
length
)
{
dest
.
vipLevel
=
{
list
:
vipList
};
}
}
// 上市期
if
(
origin
.
expectArrivalTime
!==
null
&&
typeof
origin
.
expectArrivalTime
!==
'undefined'
)
{
dest
.
periodOfMarket
=
origin
.
expectArrivalTime
+
'月'
;
if
(
origin
.
expectArrivalTime
)
{
dest
.
periodOfMarket
=
`
$
{
origin
.
expectArrivalTime
}
月`
;
}
// 促销信息
dest
.
goodsDiscount
=
{};
dest
.
goodsDiscount
.
list
=
[];
if
(
origin
.
promotionBoList
)
{
let
discountList
=
[];
if
(
origin
.
promotionBoList
!==
null
&&
typeof
origin
.
promotionBoList
!==
'undefined'
)
{
_
.
forEach
(
origin
.
promotionBoList
,
function
(
value
)
{
let
temp
=
{};
temp
.
text
=
'【'
+
value
.
promotionType
+
'】'
+
value
.
promotionTitle
;
dest
.
goodsDiscount
.
list
.
push
(
temp
);
discountList
.
push
({
text
:
`【
$
{
value
.
promotionType
}
】
$
{
value
.
promotionTitle
}
`
});
});
if
(
discountList
.
length
)
{
dest
.
goodsDiscount
=
{
list
:
discountList
};
}
}
// 商品咨询
dest
.
feedbacks
=
{};
dest
.
feedbacks
.
consults
=
[];
dest
.
feedbacks
.
consultsNum
=
0
;
dest
.
feedbacks
=
{
consults
:
[],
consultsNum
:
0
};
if
(
origin
.
consultBoWrapper
!==
null
&&
typeof
origin
.
consultBoWrapper
!==
'undefined'
)
{
if
(
origin
.
consultBoWrapper
)
{
dest
.
feedbacks
.
consultsNum
=
origin
.
consultBoWrapper
.
consultTotal
;
_
.
forEach
(
origin
.
consultBoWrapper
.
consultBoList
,
function
(
value
)
{
dest
.
feedbacks
.
consults
.
push
({
...
...
@@ -235,62 +252,57 @@ const detailDataPkg = (origin, uid, vipLevel, ua) => {
answer
:
value
.
answer
});
});
}
let
params
=
{};
params
.
product_id
=
origin
.
id
;
params
.
total
=
dest
.
feedbacks
.
consultsNum
;
dest
.
feedbacks
.
consultsUrl
=
helpers
.
urlFormat
(
'/product/detail/consults'
,
params
);
}
else
{
// 暂无咨询
let
consultParams
=
{
product_id
:
origin
.
id
};
let
params
=
{};
if
(
_
.
has
(
dest
,
'feedbacks.consultsNum'
))
{
consultParams
.
total
=
dest
.
feedbacks
.
consultsNum
;
}
params
.
product_id
=
origin
.
id
;
dest
.
feedbacks
.
consultsUrl
=
helpers
.
urlFormat
(
'/product/detail/consultform'
,
consultParams
)
;
dest
.
feedbacks
.
consultsUrl
=
helpers
.
urlFormat
(
'/product/detail/consultform'
,
params
);
}
// 商品评价
dest
.
feedbacks
.
commentsNum
=
0
;
if
(
origin
.
commentBoWrapper
!==
null
&&
typeof
origin
.
commentBoWrapper
!==
'undefined'
)
{
if
(
origin
.
commentBoWrapper
)
{
dest
.
feedbacks
.
commentsNum
=
origin
.
commentBoWrapper
.
commentTotal
;
dest
.
feedbacks
.
comments
=
[];
let
commentList
=
[];
_
.
forEach
(
origin
.
commentBoWrapper
.
commentBoList
,
function
(
value
)
{
dest
.
feedbacks
.
comments
.
push
({
commentList
.
push
({
userName
:
value
.
nickName
,
desc
:
value
.
colorName
+
'/'
+
value
.
sizeName
,
desc
:
`
$
{
value
.
colorName
}
/${value.sizeName}`
,
content
:
value
.
content
?
value
.
content
:
''
,
time
:
value
.
createTime
});
});
let
params
=
{};
params
.
product_id
=
origin
.
id
;
params
.
total
=
dest
.
feedbacks
.
commentsNum
;
dest
.
feedbacks
.
comments
=
commentList
;
dest
.
feedbacks
.
commentsUrl
=
helpers
.
urlFormat
(
'/product/detail/comments'
,
params
);
dest
.
feedbacks
.
commentsUrl
=
helpers
.
urlFormat
(
'/product/detail/comments'
,
{
product_id
:
origin
.
id
,
total
:
dest
.
feedbacks
.
commentsNum
});
}
// 品牌信息
if
(
origin
.
brand
!==
null
&&
typeof
origin
.
brand
!==
'undefined'
)
{
// 为你优选的链接
let
params
=
{};
if
(
origin
.
brand
)
{
params
.
productSkn
=
origin
.
erpProductId
;
params
.
brandId
=
origin
.
brand
.
id
;
dest
.
preferenceUrl
=
helpers
.
urlFormat
(
'/product/detail/preference'
,
params
,
''
);
dest
.
preferenceUrl
=
helpers
.
urlFormat
(
'/product/detail/preference'
,
{
productSkn
:
origin
.
erpProductId
,
brandId
:
origin
.
brand
.
id
});
}
dest
.
productSkn
=
origin
.
erpProductId
;
// 商品信息
if
(
origin
.
goodsList
!==
null
&&
typeof
origin
.
goodsList
!==
'undefined'
)
{
let
goodsGroup
=
{},
if
(
origin
.
goodsList
)
{
let
goodsGroup
=
[],
sizeName
=
''
,
colorList
=
{},
sizeList
=
{},
...
...
@@ -300,42 +312,44 @@ const detailDataPkg = (origin, uid, vipLevel, ua) => {
_
.
forEach
(
origin
.
goodsList
,
function
(
value
,
key
)
{
if
(
value
.
status
===
0
)
{
return
true
;
return
;
}
colorStorageNum
=
0
;
// 商品分组
if
(
value
.
goodsImagesList
!==
null
&&
typeof
value
.
goodsImagesList
!==
'undefined'
)
{
_
.
forEach
(
value
.
goodsImagesList
,
function
(
good
,
keyForGood
)
{
goodsGroup
[
keyForGood
]
=
{};
goodsGroup
[
keyForGood
].
goodsId
=
good
.
goodsId
;
goodsGroup
[
keyForGood
].
img
=
good
.
imageUrl
;
if
(
value
.
goodsImagesList
)
{
_
.
forEach
(
value
.
goodsImagesList
,
function
(
good
)
{
goodsGroup
.
push
({
goodsId
:
good
.
goodsId
,
img
:
good
.
imageUrl
});
});
}
// 商品的尺码列表
colorStorageGroup
[
value
.
productSkc
]
=
{};
if
(
value
.
goodsSizeBoList
!==
null
&&
typeof
value
.
goodsSizeBoList
!==
'undefined'
)
{
_
.
forEach
(
value
.
goodsSizeBoList
,
function
(
size
,
keyForSize
)
{
sizeList
[
value
.
productSkc
]
=
{};
sizeList
[
value
.
productSkc
][
keyForSize
]
=
{};
sizeList
[
value
.
productSkc
][
keyForSize
].
id
=
size
.
id
;
sizeList
[
value
.
productSkc
][
keyForSize
].
skuId
=
size
.
goodsSizeSkuId
;
sizeList
[
value
.
productSkc
][
keyForSize
].
goodsId
=
size
.
goodsId
;
sizeList
[
value
.
productSkc
][
keyForSize
].
colorId
=
size
.
colorId
;
sizeList
[
value
.
productSkc
][
keyForSize
].
name
=
size
.
sizeName
;
sizeList
[
value
.
productSkc
][
keyForSize
].
sizeNum
=
size
.
goodsSizeStorageNum
;
if
(
value
.
goodsSizeBoList
)
{
sizeList
[
value
.
productSkc
]
=
[];
_
.
forEach
(
value
.
goodsSizeBoList
,
function
(
size
)
{
sizeList
[
value
.
productSkc
].
push
({
id
:
size
.
id
,
skuId
:
size
.
goodsSizeSkuId
,
goodsId
:
size
.
goodsId
,
colorId
:
size
.
colorId
,
name
:
size
.
sizeName
,
sizeNum
:
size
.
goodsSizeStorageNum
});
sizeName
=
size
.
sizeName
;
// 所有尺码列表,赋值用于前端展示默认尺码的时候
// 判断出没有库存则显示灰色
let
build
=
{};
let
build
=
{
id
:
size
.
id
,
storage
:
size
.
goodsSizeStorageNum
};
build
.
storage
=
size
.
goodsSizeStorageNum
;
build
.
id
=
size
.
id
;
allSizeList
[
sizeName
]
=
(
allSizeList
[
sizeName
]
===
null
||
typeof
allSizeList
[
sizeName
]
===
'undefined'
)
?
build
:
allSizeList
[
sizeName
];
...
...
@@ -345,94 +359,100 @@ const detailDataPkg = (origin, uid, vipLevel, ua) => {
});
// 颜色分组
colorList
[
key
]
=
{};
colorList
[
key
].
id
=
value
.
colorId
;
colorList
[
key
].
skcId
=
value
.
productSkc
;
colorList
[
key
].
name
=
value
.
colorName
;
colorList
[
key
].
goodsName
=
value
.
goodsName
;
colorList
[
key
].
colorNum
=
colorStorageNum
;
colorList
[
key
]
=
{
id
:
value
.
colorId
,
skcId
:
value
.
productSkc
,
name
:
value
.
colorName
,
goodsName
:
value
.
goodsName
,
colorNum
:
colorStorageNum
};
}
// 缩略图
let
params
=
{};
params
.
img
=
value
.
colorImage
;
thumbImageList
[
key
]
=
params
;
thumbImageList
.
push
({
img
:
value
.
colorImage
});
// 商品库存总数
totalStorageNum
+=
colorStorageNum
;
totalStorageNum
+=
_
.
toNumber
(
colorStorageNum
)
;
});
// 遍历所有尺码,构建颜色显示数据
let
i
=
1
;
_
.
forEach
(
allSizeList
,
function
(
value
,
key
)
{
sizeGroup
[
0
]
=
{
size
:
[]
};
_
.
forEach
(
allSizeList
,
function
(
value
)
{
// 默认尺码
sizeGroup
[
0
]
=
{};
sizeGroup
[
0
].
size
.
push
({
name
:
sizeName
,
sizeNum
:
_
.
toNumber
(
value
.
storage
)
>
0
?
true
:
false
,
id
:
value
.
id
});
sizeGroup
[
0
].
size
=
{};
sizeGroup
[
0
].
size
[
key
]
=
{};
sizeGroup
[
0
].
size
[
key
].
name
=
sizeName
;
sizeGroup
[
0
].
size
[
key
].
sizeNum
=
(
typeof
value
.
storage
===
'undefined'
||
value
.
storage
===
null
)
?
false
:
true
;
sizeGroup
[
0
].
size
[
key
].
id
=
value
.
id
;
colorGroup
[
i
]
=
{
color
:
[]
};
// 各个颜色的尺码, 每行显示一个尺码对应的颜色
_
.
forEach
(
colorList
,
function
(
colorArr
,
keyForColorArr
)
{
colorGroup
[
i
]
=
{};
colorGroup
[
i
].
color
=
{};
colorGroup
[
i
].
color
[
keyForColorArr
]
=
{};
colorGroup
[
i
].
color
[
keyForColorArr
].
colorNum
=
(
colorStorageGroup
[
colorArr
.
skcId
][
sizeName
]
!==
null
&&
typeof
colorStorageGroup
[
colorArr
.
skcId
][
sizeName
]
!==
'undefined'
)
?
colorStorageGroup
[
colorArr
.
skcId
][
sizeName
]
:
0
;
_
.
forEach
(
colorList
,
function
(
colorArr
)
{
colorArr
.
colorNum
=
0
;
if
(
colorStorageGroup
[
colorArr
.
skcId
]
&&
colorStorageGroup
[
colorArr
.
skcId
][
sizeName
])
{
colorArr
.
colorNum
=
colorStorageGroup
[
colorArr
.
skcId
][
sizeName
];
}
colorGroup
[
i
].
color
.
push
(
colorArr
);
});
colorGroup
[
i
].
id
=
value
.
id
;
++
i
;
});
// 遍历所有颜色, 构建尺码显示数据
colorGroup
[
0
]
=
{
color
:
[]
};
// 遍历所有颜色, 构建尺码显示数据
i
=
1
;
_
.
forEach
(
colorList
,
function
(
value
,
key
)
{
_
.
forEach
(
colorList
,
function
(
value
)
{
// 各个尺码的颜色, 每行显示一个颜色的对应尺码
sizeGroup
[
i
]
=
{};
sizeGroup
[
i
].
size
=
sizeList
[
value
.
skcId
];
sizeGroup
[
i
].
colorId
=
value
.
skcId
;
sizeGroup
[
i
]
=
{
size
:
sizeList
[
value
.
skcId
],
colorId
:
value
.
skcId
};
// 默认颜色
colorGroup
[
0
]
=
{};
colorGroup
[
0
].
color
=
{};
colorGroup
[
0
].
color
[
key
]
=
value
;
colorGroup
[
0
].
color
.
push
(
value
);
++
i
;
});
// 商品图:多个
if
(
goodsGroup
[
1
]
!==
null
&&
typeof
goodsGroup
[
1
]
!==
'undefined'
)
{
dest
.
bannerTop
=
{};
dest
.
bannerTop
.
list
=
[];
if
(
goodsGroup
.
length
>
1
)
{
let
bannerList
=
[];
_
.
forEach
(
goodsGroup
,
function
(
value
)
{
let
params
=
{};
params
.
img
=
value
.
img
;
dest
.
bannerTop
.
list
.
push
(
params
);
bannerList
.
push
({
img
:
value
.
img
});
});
dest
.
bannerTop
=
{
list
:
bannerList
};
}
else
if
(
goodsGroup
[
0
]
!==
null
&&
typeof
goodsGroup
[
0
]
!==
'undefined'
)
{
dest
.
bannerTop
=
{};
dest
.
bannerTop
.
img
=
goodsGroup
[
0
].
img
;
dest
.
bannerTop
=
{
img
:
goodsGroup
[
0
].
img
};
}
}
// 悬浮的购物车信息
dest
.
cartInfo
=
{};
dest
.
cartInfo
.
cartUrl
=
helpers
.
urlFormat
(
'/cart/index/index'
,
null
);
dest
.
cartInfo
.
numInCart
=
0
;
dest
.
cartInfo
.
goodsInstore
=
origin
.
storage
;
dest
.
cartInfo
=
{
cartUrl
:
helpers
.
urlFormat
(
'/cart/index/index'
),
numInCart
:
0
,
goodsInstore
:
origin
.
storage
};
let
soldOut
=
(
origin
.
storage
===
0
)
||
(
origin
.
status
===
0
||
totalStorageNum
===
0
);
let
notForSale
=
origin
.
attribute
===
2
;
...
...
@@ -441,17 +461,16 @@ const detailDataPkg = (origin, uid, vipLevel, ua) => {
if
(
!
soldOut
&&
!
notForSale
)
{
_
.
orderBy
(
colorGroup
);
dest
.
cartInfo
=
{};
dest
.
cartInfo
.
productId
=
origin
.
id
;
dest
.
cartInfo
.
thumbs
=
thumbImageList
;
dest
.
cartInfo
.
name
=
(
dest
.
goodsName
!==
null
&&
typeof
dest
.
goodsName
!==
'undefined'
)
?
dest
.
goodsName
:
''
;
dest
.
cartInfo
.
price
=
(
dest
.
goodsPrice
.
previousPrice
!==
null
&&
typeof
dest
.
goodsPrice
.
previousPrice
!==
'undefined'
)
?
dest
.
goodsPrice
.
previousPrice
:
''
;
dest
.
cartInfo
.
salePrice
=
(
dest
.
goodsPrice
.
currentPrice
!==
null
&&
typeof
dest
.
goodsPrice
.
currentPrice
!==
'undefined'
)
?
dest
.
goodsPrice
.
currentPrice
:
''
;
dest
.
cartInfo
.
totalNum
=
totalStorageNum
;
dest
.
cartInfo
.
colors
=
colorGroup
;
dest
.
cartInfo
.
sizes
=
sizeGroup
;
Object
.
assign
(
dest
.
cartInfo
,
{
productId
:
origin
.
id
,
thumbs
:
thumbImageList
,
name
:
dest
.
goodsName
?
dest
.
goodsName
:
''
,
price
:
dest
.
goodsPrice
.
previousPrice
?
dest
.
goodsPrice
.
previousPrice
:
''
,
salePrice
:
dest
.
goodsPrice
.
currentPrice
?
dest
.
goodsPrice
.
currentPrice
:
''
,
totalNum
:
totalStorageNum
,
colors
:
_
.
toArray
(
colorGroup
),
sizes
:
sizeGroup
});
// 限购商品
if
(
origin
.
isLimitBuy
===
'Y'
)
{
...
...
@@ -468,6 +487,7 @@ const detailDataPkg = (origin, uid, vipLevel, ua) => {
// 处理限购商品有关的按钮状态
dest
=
procShowStatus
(
dest
,
showStatus
,
isBeginSale
);
Object
.
assign
;
dest
.
cartInfo
.
limitProductCode
=
origin
.
limitProductCode
;
dest
.
cartInfo
.
limitCodeUrl
=
getLimitCodeUrl
(
origin
.
limitProductCode
,
origin
.
erpProductId
,
ua
);
dest
.
cartInfo
.
limitProductPay
=
helpers
.
urlFormat
(
'/cart/index/orderEnsure'
);
// 待处理 相关处理逻辑还不存在
...
...
@@ -488,11 +508,8 @@ const detailDataPkg = (origin, uid, vipLevel, ua) => {
dest
.
isCollect
=
true
;
}
// 底部简介的URL链接 待处理
// dest.introUrl = helpers.urlFormat('/product/intro_' + origin.erpProductId +
// '/' + origin.cnAlphabet + '.html', null, '');
dest
.
introUrl
=
'http://localhost:6001/product/detail/intro/'
+
origin
.
erpProductId
;
// 底部简介URL链接
dest
.
introUrl
=
'/product/detail/intro/'
+
origin
.
erpProductId
;
dest
.
id
=
origin
.
id
;
return
dest
;
...
...
apps/product/models/preference.js
View file @
7546a02
...
...
@@ -10,20 +10,19 @@
const
library
=
'../../../library'
;
const
utils
=
'../../../utils'
;
const
API
=
require
(
`
$
{
library
}
/api`
)
.API
;
const
sign
=
require
(
`
$
{
library
}
/sign`
)
;
const
_
=
require
(
'lodash'
);
const
productProcess
=
require
(
`
$
{
utils
}
/product-process`
)
;
var
api
=
new
API
();
const
api
=
new
API
();
module
.
exports
=
(
data
)
=>
{
var
finalResult
;
let
finalResult
;
return
api
.
get
(
''
,
sign
.
apiSign
(
{
return
api
.
get
(
''
,
{
method
:
'h5.preference.Search'
,
productskn
:
data
.
productskn
,
yhchannel
:
data
.
yhchannel
,
brandId
:
data
.
brandId
})
)
.
then
(
result
=>
{
}).
then
(
result
=>
{
if
(
!
_
.
isEmpty
(
result
)
&&
result
.
code
===
200
)
{
// 为你优选数据处理,接口没有数据,待处理,待验证
finalResult
=
productProcess
.
processProductList
(
result
.
data
);
...
...
apps/product/router.js
View file @
7546a02
...
...
@@ -23,7 +23,7 @@ const outlet = require(`${cRoot}/outlet`);
// /pro_136349_455445/HEARTSOFARMianMaShuJiaoXiuXianKuPS1684.html
router
.
get
(
/
\/
pro_
([\d]
+
)
_
([\d]
+
)\/(
.*
)
/
,
detail
.
index
);
router
.
get
(
'/detail/intro/:productskn'
,
detail
.
intro
);
router
.
get
(
'/detail/preference
/:productskn/:yhchannel/:brandId
'
,
detail
.
preference
);
router
.
get
(
'/detail/preference'
,
detail
.
preference
);
router
.
get
(
'/sale'
,
sale
.
index
);
router
.
get
(
'/sale/discount'
,
sale
.
discount
);
...
...
apps/product/views/action/detail/detail.hbs
View file @
7546a02
...
...
@@ -75,25 +75,25 @@
</li>
{{/
list
}}
</ul>
{{/
vipLevel
}}
{{/
vipLevel
}}
{{#
goodsDiscount
}}
<div
class=
"goods-discount"
id=
"goodsDiscount"
>
{{#
list
}}
{{#if
@first
}}
{{#if
text
}}
<h1
class=
"first-item short-text tap-hightlight"
>
{{
text
}}
<span
class=
"icon-down iconfont dropdown"
>

</span></h1>
{{/if}}
{{/if}}
{{#if
@first
}}
{{#if
text
}}
<h1
class=
"first-item short-text tap-hightlight"
>
{{
text
}}
<span
class=
"icon-down iconfont dropdown"
>

</span></h1>
{{/if}}
{{/if}}
{{/
list
}}
<div
class=
"discount-folder"
>
{{#
list
}}
{{#if
@first
}}
{{else}}
{{#if
text
}}
<h1
class=
"folder-item tap-hightlight"
>
{{
text
}}
</h1>
{{/if}}
{{/if}}
{{#if
@first
}}
{{else}}
{{#if
text
}}
<h1
class=
"folder-item tap-hightlight"
>
{{
text
}}
</h1>
{{/if}}
{{/if}}
{{/
list
}}
</div>
</div>
...
...
@@ -101,25 +101,25 @@
{{#
feedbacks
}}
<div
class=
"feedback-list "
>
{{#if
commentsNum
}}
{{>
product
/
detail
/
feedback-tab
}}
{{else}}
{{#if
consultsNum
}}
{{>
product
/
detail
/
feedback-tab
}}
{{#if
commentsNum
}}
{{>
product
/
detail
/
feedback-tab
}}
{{else}}
<div
class=
"nodata tap-hightlight"
id=
"goto-consult"
>
<span>
暂无商品评价和咨询
</span>
<a
href=
"
{{
consultsUrl
}}
"
class=
"go-consult"
>
我要咨询
<span
class=
"iconfont"
>

</span></a>
</div>
{{#if
consultsNum
}}
{{>
product
/
detail
/
feedback-tab
}}
{{else}}
<div
class=
"nodata tap-hightlight"
id=
"goto-consult"
>
<span>
暂无商品评价和咨询
</span>
<a
href=
"
{{
consultsUrl
}}
"
class=
"go-consult"
>
我要咨询
<span
class=
"iconfont"
>

</span></a>
</div>
{{/if}}
{{/if}}
{{/if}}
</div>
{{/
feedbacks
}}
{{#
enterStore
}}
<div
id=
"enter-store"
class=
"enter-store page-block tap-hightlight"
>
<a
class=
"store-logo"
href=
"
{{
url
}}
"
style=
""
>
<img
class=
"lazy"
data-original=
"
{{
im
g
}}
"
alt=
"
{{
storeName
}}
"
>
<img
class=
"lazy"
data-original=
"
{{
im
age
img
47
47
}}
"
alt=
"
{{
storeName
}}
"
>
</a>
<a
class=
"store-name"
href=
"
{{
url
}}
"
>
{{
storeName
}}
</a>
<a
class=
"store-link"
href=
"
{{
url
}}
"
>
进入店铺
<span
class=
"iconfont"
>

</span></a>
...
...
apps/product/views/action/detail/preference.hbs
View file @
7546a02
{{>
product
/
recommend-content
}}
\ No newline at end of file
{{>
product
/
detail
/
recommend-for-you
}}
\ No newline at end of file
...
...
apps/product/views/partial/cart/chose-panel.hbs
View file @
7546a02
...
...
@@ -4,7 +4,7 @@
<div
class=
"infos"
>
<div
class=
"basic-info"
>
{{#
thumbs
}}
<img
class=
"thumb
{{#
unless
@first
}}
hide
{{/
unless
}}
"
src=
{{
im
g
}}
>
<img
class=
"thumb
{{#
unless
@first
}}
hide
{{/
unless
}}
"
src=
{{
im
age
img
60
60
}}
>
{{/
thumbs
}}
<div
class=
"text-info"
>
<p
class=
"name"
>
{{
name
}}
</p>
...
...
public/scss/product/detail/_comments-consults.css
View file @
7546a02
...
...
@@ -272,7 +272,6 @@
.nav-tab
{
padding
:
10px
0
;
width
:
100%
;
height
:
60px
;
border-top
:
1px
solid
$
borderC
;
border-bottom
:
1px
solid
$
borderC
;
background-color
:
#fff
;
...
...
public/scss/product/detail/_detail.css
View file @
7546a02
...
...
@@ -569,6 +569,3 @@ $basicBtnC: #eb0313;
top
:
40%
;
}
}
@import
"comments-consults"
;
@import
"product-description"
;
...
...
public/scss/product/detail/_index.css
View file @
7546a02
@import
"detail"
;
@import
"comments-consults"
;
@import
"
comments-consults
"
;
@import
"
product-description
"
;
@import
"recommend-for-you"
;
...
...
Please
register
or
login
to post a comment