You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

229 lines
4.9 KiB

<template>
<view>
<!-- 筛选 -->
<view class="root" v-if="filterData.length > 1">
<ren-dropdown-filter v-if="filterData.length > 1" :filterData='filterData' @click="navClick"
:defaultIndex='defaultIndex' @ed='ed' @dateChange='dateChange'></ren-dropdown-filter>
</view>
<view class="card-box" v-if="goodsHomeList.length > 0">
<task-home-list class="task-home" splitLine @click="clickItem" :list="goodsHomeList"></task-home-list>
</view>
<!-- 加载更多提示 -->
<view v-if="goodsHomeList.length > 0">
<load-more :loadingType="loadingType" :contentText="contentText"></load-more>
</view>
</view>
</template>
<script>
import RenDropdownFilter from '@/components/ren-dropdown-filter/ren-dropdown-filter.vue'
import taskHomeList from "@/components/mask/task-home-list1.vue"
export default {
components: {
taskHomeList,
RenDropdownFilter
},
data() {
return {
city: '',
latitude: '',
longitude: '',
sortType: 0,
typeId: 0,
tuijianList: [],
goodsHomeList: [],
page: 1,
limit: 10,
loadingType: 0,
contentText: {
contentdown: '上拉显示更多',
contentrefresh: '正在加载...',
contentnomore: '没有更多数据了'
},
filterData: [
[{
text: '综合分类',
value: ''
}, {
text: '返现最高',
value: 1
}, {
text: '最新发布',
value: 2
}, {
text: '距离最近',
value: 3
}]
],
defaultIndex: [0, 0]
}
},
onLoad() {
this.city = this.$queue.getData('city');
this.latitude = this.$queue.getData('latitude');
this.longitude = this.$queue.getData('longitude');
this.getnavlistClassify();
this.getHaoDianTuiJian();
},
methods: {
getnavlistClassify() {
this.$Request.getT('/banner/selectBannerList?state=-1&classify=2').then(res => {
if (res.code === 0) {
let dataList = [];
let data = {
text: '全部品类',
value: 0
}
dataList.push(data);
res.data.forEach(d => {
let data = {
text: '',
value: ''
}
data.text = d.name;
data.value = d.id;
dataList.push(data);
});
this.filterData.push(dataList);
}
});
},
getHaoDianTuiJian() {
this.loadingType = 1;
uni.showLoading({
title: '加载中...',
});
let data = {
page: this.page,
limit: this.limit,
longitude: this.longitude,
latitude: this.latitude,
city: this.city,
search: '',
sort: this.sortType,
typeId: this.typeId,
isGoods: '1'
}
this.$Request.getT('/wm/selectHomeGoodsList', data).then(res => {
if (res.code === 0) {
if (this.page === 1) {
this.goodsHomeList = [];
}
res.data.list.forEach(d => {
d.distance = this.setMorKm(d.distance);
this.goodsHomeList.push(d)
});
if (res.data.list.length === this.limit) {
this.loadingType = 0;
} else {
this.loadingType = 3;
}
} else {
this.loadingType = 2;
}
uni.hideLoading();
})
},
goLogin() {
uni.navigateTo({
url: '/pages/public/login'
});
},
goDetail(nav) {
uni.navigateTo({
url: '/pages/index/taskDetail?goodsId=' + nav.goodsId + '&latitude=' + this
.latitude + '&longitude=' + this.longitude
})
},
navClick: function(res) {
console.log('点击', res)
this.page = 1;
if (res.index1 == 0) {
this.sortType = res.index ? res.index : 0;
this.getHaoDianTuiJian();
} else if (res.index1 == 1) {
this.typeId = res.index ? res.index : 0;
this.getHaoDianTuiJian();
}
},
clickItem: function(options) {
let token = this.$queue.getData('token');
let userId = this.$queue.getData('userId');
if (token) {
uni.navigateTo({
url: '/pages/index/taskDetail?goodsId=' + options.item.goodsId + '&latitude=' + this
.latitude + '&longitude=' + this.longitude
})
} else {
this.goLogin();
}
},
setMorKm(m) {
var n = ''
if (m) {
if (m >= 1000) {
n = (m / 1000).toFixed(0) + 'km'
} else {
n = parseInt(m) + 'm'
}
} else {
n = '0m'
}
return n
},
topScrollTap: function() {
uni.pageScrollTo({
scrollTop: 0,
duration: 300
});
}
},
onPageScroll: function(e) {
this.scrollTop = e.scrollTop > 200;
},
onReachBottom: function() {
this.page = this.page + 1;
this.getHaoDianTuiJian();
}
}
</script>
<style lang="scss">
page {
width: 100%;
background: #F7F7F7;
}
.root {
position: fixed;
top: 0;
z-index: 1;
width: 100%;
}
.card-box {
// padding: 0 30upx;
background-color: #FFF;
margin-top: 100rpx;
width: 100%;
.title {
height: 86upx;
font-size: 34upx;
font-weight: 800;
color: #333333;
line-height: 86upx;
padding: 0 30upx;
}
.task-home {
display: inline-block;
width: 100%;
// margin-top: 30upx;
}
}
</style>