Toggle navigation
Toggle navigation
This project
Loading...
Sign in
fe
/
xianyu-ufo-app-web
·
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
zhangwenxue
5 years ago
Commit
6d09dbcb62887635ce31b50e3442a6601d4a2fd1
1 parent
36fe1a45
商品详情: 添加商品品牌列表页
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
88 additions
and
25 deletions
apps/pages/product/brand-product-list.vue
apps/pages/product/components/activity-list-sheet.vue
apps/pages/product/components/top-list.vue
apps/pages/product/index.js
apps/pages/product/product-detail.vue
apps/store/product/actions.js
apps/store/product/mutations.js
apps/store/product/types.js
apps/pages/product/brand-product-list.vue
0 → 100644
View file @
6d09dbc
<template>
<layout-app title="商品列表" class="brand-product-list">
<scroll-view
ref="scroll"
:data="brandProductList"
:options="scrollOption"
@pulling-down="onPullingDown">
<div class="list-wrapper" v-if="brandProductList != null">
<product-list :list="brandProductList" />
</div>
</scroll-view>
</layout-app>
</template>
<script>
import { createNamespacedHelpers } from 'vuex';
import ScrollView from 'components/layout/scroll-view';
import ProductList from '../list/components/productList';
const STORE_PATH = 'product';
const { mapActions, mapState } = createNamespacedHelpers(STORE_PATH);
export default {
name: 'BrandProductList',
props: ['productId'],
components: {
ProductList,
ScrollView,
},
data() {
return {
inLoading: false,
scrollOption: {
pullDownRefresh: {
threshold: 70,
stop: 90
},
observeDOM: false,
pullUpLoad: false,
},
};
},
computed: {
...mapState(['topLists']),
brandProductList() {
return this.topLists[this.$route.params.productId];
},
},
asyncData({store, router}) {
return store.dispatch(`${STORE_PATH}/fetchBrandTop`, {productId: router.params.productId});
},
methods: {
...mapActions(['fetchBrandTop']),
onPullingDown() {
this.fetchBrandTop({productId: this.productId});
},
},
};
</script>
<style lang="scss" scoped>
.brand-product-list /deep/ .scroll-view {
background: #f5f5f5;
}
</style>
...
...
apps/pages/product/components/activity-list-sheet.vue
View file @
6d09dbc
...
...
@@ -67,11 +67,11 @@ export default {
span {
font-size: 0.7em;
line-height: 1.
4
;
line-height: 1.
8
;
border: 1px solid #feabac;
color: #feabac;
text-align: center;
padding: 0
0.9
em;
padding: 0
1.2
em;
margin-right: 0.8em;
display: inline-block;
position: relative;
...
...
apps/pages/product/components/top-list.vue
View file @
6d09dbc
...
...
@@ -5,7 +5,7 @@
<div @click="onAllClick">全部 <i class="cubeic-arrow"></i></div>
</div>
<div class="row">
<div class="col" v-for="(product, idx) in
l
ist" :key="idx" @click="onItemClick(product)">
<div class="col" v-for="(product, idx) in
viewL
ist" :key="idx" @click="onItemClick(product)">
<div class="product-item">
<square-img :src="product.default_images" :width="300" :height="300" />
</div>
...
...
@@ -30,6 +30,11 @@ export default {
default: [],
},
},
computed: {
viewList() {
return this.list && this.list.slice(0, 3) || [];
},
},
methods: {
onItemClick(item) {
this.$emit('itemClick', item);
...
...
apps/pages/product/index.js
View file @
6d09dbc
...
...
@@ -7,4 +7,9 @@ export default [{
productId
:
parseInt
(
params
.
productId
,
10
),
};
},
},
{
name
:
'BrandProductList'
,
path
:
'/xianyu/brand-product/:productId.html'
,
component
:
()
=>
import
(
/* webpackChunkName: "product" */
'./brand-product-list'
),
props
:
true
,
}];
...
...
apps/pages/product/product-detail.vue
View file @
6d09dbc
...
...
@@ -201,7 +201,7 @@ export default {
next();
},
methods: {
...mapActions(['fetchProductInfo', 'fetch
Top3
', 'fetchFav', 'toggleFav', 'updateTradeInfo', 'getSelectedTradeProduct', 'payment', 'resetSelectedSize']),
...mapActions(['fetchProductInfo', 'fetch
BrandTop
', 'fetchFav', 'toggleFav', 'updateTradeInfo', 'getSelectedTradeProduct', 'payment', 'resetSelectedSize']),
refresh() {
this.$refs.slide.refresh();
},
...
...
@@ -218,7 +218,7 @@ export default {
loadData(productId = this.productId, loading) {
loading && loading.show();
this.fetch
Top3
({productId});
this.fetch
BrandTop
({productId});
this.fetchFav({productId});
return this.fetchProductInfo({productId}).then(() => {
...
...
@@ -273,23 +273,11 @@ export default {
});
},
gotoBrand() {
// type: 4,品牌;5,系列
const query = {
type: 5,
};
if (this.productDetail.seriesId && this.productDetail.series_name) {
query.series = this.productDetail.seriesId;
query.title = this.productDetail.series_name;
} else {
query.type = 4;
query.brand = this.productDetail.brandId;
query.title = this.productDetail.brand_name;
}
this.$router.push({
name: 'List',
query,
name: 'BrandProductList',
params: {
productId: this.productId,
},
});
},
showActivity() {
...
...
apps/store/product/actions.js
View file @
6d09dbc
...
...
@@ -62,13 +62,13 @@ export default {
commit
(
Types
.
UPDATE_PRODUCT_FAV
,
{
productId
,
isFav
});
},
async
fetch
Top3
({
commit
},
{
productId
})
{
async
fetch
BrandTop
({
commit
},
{
productId
})
{
const
result
=
await
this
.
$api
.
post
(
'/api/ufo/product/top'
,
{
product_id
:
productId
});
if
(
result
.
code
===
200
)
{
const
productList
=
result
.
data
.
product_list
||
[];
commit
(
Types
.
UPDATE_
PRODUCT_TOP3
,
{
productId
,
topList
:
productList
.
slice
(
0
,
3
)
});
commit
(
Types
.
UPDATE_
BRAND_PRODUCT_TOP_LIST
,
{
productId
,
topList
:
productList
});
}
},
async
toggleFav
({
commit
},
{
productId
,
isFav
})
{
...
...
apps/store/product/mutations.js
View file @
6d09dbc
...
...
@@ -30,7 +30,7 @@ export default {
state
.
products
=
{...
state
.
products
,
[
payload
.
product_id
]:
payload
};
ensureSelectedProduct
(
state
,
payload
.
product_id
);
},
[
Types
.
UPDATE_
PRODUCT_TOP3
](
state
,
{
productId
,
topList
})
{
[
Types
.
UPDATE_
BRAND_PRODUCT_TOP_LIST
](
state
,
{
productId
,
topList
})
{
state
.
topLists
=
{...
state
.
topLists
,
[
productId
]:
topList
};
},
[
Types
.
UPDATE_PRODUCT_FAV
](
state
,
{
productId
,
isFav
})
{
...
...
apps/store/product/types.js
View file @
6d09dbc
...
...
@@ -3,4 +3,4 @@ export const ENSURE_PRODUCT_DETAIL = 'ENSURE_PRODUCT_DETAIL';
export
const
UPDATE_PRODUCT_FAV
=
'UPDATE_PRODUCT_FAV'
;
export
const
UPDATE_SELECTED_PRODUCT_SIZE
=
'UPDATE_SELECTED_PRODUCT_SIZE'
;
export
const
RESET_SELECTED_PRODUCT_SIZE
=
'RESET_SELECTED_PRODUCT_SIZE'
;
export
const
UPDATE_
PRODUCT_TOP3
=
'UPDATE_PRODUCT_TOP3
'
;
export
const
UPDATE_
BRAND_PRODUCT_TOP_LIST
=
'UPDATE_BRAND_PRODUCT_TOP_LIST
'
;
...
...
Please
register
or
login
to post a comment