99 lines
1.6 KiB
Vue
99 lines
1.6 KiB
Vue
<template>
|
|
<el-row class="product__wrapper">
|
|
<el-col>
|
|
<product-list :products="products" @currentChange="currentChangeProduct"></product-list>
|
|
</el-col>
|
|
</el-row>
|
|
</template>
|
|
|
|
<script>
|
|
import {mapState} from "vuex";
|
|
import ProductList from "~/components/common/product/list";
|
|
|
|
export default {
|
|
name: "products",
|
|
components: {ProductList},
|
|
fetch() {
|
|
let {store, query, error} = this.$nuxt.context
|
|
return Promise.all([
|
|
store
|
|
.dispatch('product/fetchList', {page: query.page || 1})
|
|
.catch(err => error({statusCode: 404}))
|
|
])
|
|
},
|
|
watch: {
|
|
'$route'(to, from) {
|
|
if (from.query.page && to.query.page) {
|
|
this.$router.go()
|
|
}
|
|
}
|
|
},
|
|
computed: {
|
|
...mapState({
|
|
products: state => state.product.list.data
|
|
})
|
|
},
|
|
data() {
|
|
return {
|
|
currentDate: new Date().toLocaleString()
|
|
};
|
|
},
|
|
methods: {
|
|
currentChangeProduct(page) {
|
|
this.$router.push({
|
|
name: 'products',
|
|
query: {
|
|
page: page
|
|
}
|
|
})
|
|
}
|
|
},
|
|
mounted() {
|
|
this.$store.commit('setActiveMenu', 'products');
|
|
}
|
|
}
|
|
</script>
|
|
|
|
<style scoped>
|
|
|
|
.product__wrapper {
|
|
max-width: 980px;
|
|
margin: 20px auto;
|
|
display: block;
|
|
padding-left: 1rem;
|
|
padding-right: 1rem;
|
|
box-sizing: border-box;
|
|
}
|
|
|
|
.time {
|
|
font-size: 13px;
|
|
color: #999;
|
|
}
|
|
|
|
.bottom {
|
|
margin-top: 13px;
|
|
line-height: 12px;
|
|
}
|
|
|
|
.button {
|
|
padding: 0;
|
|
float: right;
|
|
margin-left: 10px;
|
|
}
|
|
|
|
.image {
|
|
width: 100%;
|
|
display: block;
|
|
}
|
|
|
|
.clearfix:before,
|
|
.clearfix:after {
|
|
display: table;
|
|
content: "";
|
|
}
|
|
|
|
.clearfix:after {
|
|
clear: both
|
|
}
|
|
</style>
|