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
229 lines
4.9 KiB
3 years ago
|
<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>
|