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.
277 lines
5.7 KiB
277 lines
5.7 KiB
3 years ago
|
<template>
|
||
|
<view class="container">
|
||
|
<!-- <view class="header">
|
||
|
<scroll-view scroll-x class="nav" scroll-with-animation :scroll-left="scrollLeft">
|
||
|
<view class="nav-item" v-for="(item, index) in navlist" :key="index" @tap="tabSelect(item.id,index)">
|
||
|
<view class="tab-item-title" :class="{ 'tab-item-title-active': index == tabIndex }">
|
||
|
<view class="name">{{ item.title }}</view>
|
||
|
<view class="line"></view>
|
||
|
</view>
|
||
|
</view>
|
||
|
</scroll-view>
|
||
|
</view> -->
|
||
|
<view class="main">
|
||
|
<view class="card-box" v-if="tuijianList.length > 0">
|
||
|
<task-home-list class="task-home" splitLine @click="clickItem" :list="tuijianList"></task-home-list>
|
||
|
</view>
|
||
|
<!-- 加载更多提示 -->
|
||
|
<view v-if="tuijianList.length > 0">
|
||
|
<load-more :loadingType="loadingType" :contentText="contentText" class="task-home"></load-more>
|
||
|
</view>
|
||
|
<!-- 暂无数据展示 -->
|
||
|
<empty v-if="tuijianList.length === 0" des="暂无任务数据" show="false"></empty>
|
||
|
</view>
|
||
|
</view>
|
||
|
</template>
|
||
|
|
||
|
<script>
|
||
|
import taskHomeList from "@/components/mask/task-home-list1.vue"
|
||
|
export default {
|
||
|
components: {
|
||
|
taskHomeList
|
||
|
},
|
||
|
data() {
|
||
|
return {
|
||
|
tabIndex: 0,
|
||
|
scrollLeft: 0,
|
||
|
tabBars: [],
|
||
|
tuijianList: [],
|
||
|
page: 1,
|
||
|
limit: 10,
|
||
|
classify: -1,
|
||
|
loadingType: 0,
|
||
|
contentText: {
|
||
|
contentdown: '上拉显示更多',
|
||
|
contentrefresh: '正在加载...',
|
||
|
contentnomore: '没有更多数据了'
|
||
|
},
|
||
|
navlist: [],
|
||
|
};
|
||
|
},
|
||
|
onLoad(e) {
|
||
|
this.searchValue = e.searchValue;
|
||
|
if (e.classifyId) {
|
||
|
this.classify = e.classifyId;
|
||
|
}
|
||
|
if (e.name) {
|
||
|
uni.setNavigationBarTitle({
|
||
|
title: e.name
|
||
|
})
|
||
|
}
|
||
|
},
|
||
|
onShow() {
|
||
|
this.page = 1;
|
||
|
this.getHaoDianTuiJian();
|
||
|
},
|
||
|
methods: {
|
||
|
getHaoDianTuiJian() {
|
||
|
this.loadingType = 1;
|
||
|
var longitude = this.$queue.getData('longitude');
|
||
|
var latitude = this.$queue.getData('latitude');
|
||
|
var city = this.$queue.getData('city');
|
||
|
uni.showLoading({
|
||
|
title: '加载中...',
|
||
|
});
|
||
|
let data = {
|
||
|
page: this.page,
|
||
|
limit: this.limit,
|
||
|
longitude: longitude,
|
||
|
latitude: latitude,
|
||
|
city: city,
|
||
|
activityId: this.classify,
|
||
|
search: this.searchValue
|
||
|
}
|
||
|
this.$Request.getT('/wm/selectHomeGoodsList', data).then(res => {
|
||
|
if (res.code === 0) {
|
||
|
if (this.page == 1) {
|
||
|
this.tuijianList = [];
|
||
|
}
|
||
|
|
||
|
res.data.list.forEach(d => {
|
||
|
d.distance = this.setMorKm(d.distance);
|
||
|
this.tuijianList.push(d)
|
||
|
});
|
||
|
if (res.data.list.length === this.limit) {
|
||
|
this.loadingType = 0;
|
||
|
} else {
|
||
|
this.loadingType = 3;
|
||
|
}
|
||
|
} else {
|
||
|
this.loadingType = 2;
|
||
|
}
|
||
|
uni.hideLoading();
|
||
|
})
|
||
|
},
|
||
|
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
|
||
|
},
|
||
|
goLogin() {
|
||
|
uni.navigateTo({
|
||
|
url: '/pages/public/login'
|
||
|
});
|
||
|
},
|
||
|
// 切换
|
||
|
tabSelect: function(itemId, index) {
|
||
|
let id = index;
|
||
|
this.tabIndex = id;
|
||
|
this.classifyId = itemId;
|
||
|
this.scrollLeft = (id - 1) * 48;
|
||
|
this.page = 1;
|
||
|
},
|
||
|
clickItem: function(options) {
|
||
|
let token = this.$queue.getData('token');
|
||
|
let userId = this.$queue.getData('userId');
|
||
|
if (token) {
|
||
|
var longitude = this.$queue.getData('longitude');
|
||
|
var latitude = this.$queue.getData('latitude');
|
||
|
uni.navigateTo({
|
||
|
url: '/pages/index/taskDetail?goodsId=' + options.item.goodsId + '&latitude=' + latitude + '&longitude=' + longitude
|
||
|
})
|
||
|
} else {
|
||
|
this.goLogin();
|
||
|
}
|
||
|
}
|
||
|
},
|
||
|
onReachBottom: function() {
|
||
|
this.page = this.page + 1;
|
||
|
this.getHaoDianTuiJian()
|
||
|
},
|
||
|
onPullDownRefresh: function() {
|
||
|
this.page = 1;
|
||
|
this.getHaoDianTuiJian();
|
||
|
}
|
||
|
};
|
||
|
</script>
|
||
|
|
||
|
<style lang="scss">
|
||
|
page {
|
||
|
width: 100%;
|
||
|
background-color: #f8f8f8;
|
||
|
}
|
||
|
|
||
|
.container {
|
||
|
width: 100%;
|
||
|
|
||
|
.header {
|
||
|
width: 100%;
|
||
|
// height: 80upx;
|
||
|
background-color: #FFF;
|
||
|
display: flex;
|
||
|
align-items: center;
|
||
|
position: fixed;
|
||
|
z-index: 1;
|
||
|
|
||
|
.nav {
|
||
|
.nav-item {
|
||
|
display: inline-block;
|
||
|
margin: 0 34upx;
|
||
|
|
||
|
.tab-item-title {
|
||
|
display: flex;
|
||
|
flex-direction: column;
|
||
|
align-items: center;
|
||
|
justify-content: space-between;
|
||
|
padding-top: 20upx;
|
||
|
|
||
|
.name {
|
||
|
font-size: 32upx;
|
||
|
font-weight: 500;
|
||
|
color: #666;
|
||
|
line-height: 32upx;
|
||
|
text-align: center;
|
||
|
margin-bottom: 20upx;
|
||
|
}
|
||
|
|
||
|
.line {
|
||
|
width: 90upx;
|
||
|
height: 8upx;
|
||
|
background: #FFF;
|
||
|
border-radius: 4upx;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
.tab-item-title-active {
|
||
|
.name {
|
||
|
font-size: 32upx;
|
||
|
font-weight: 800;
|
||
|
color: #333;
|
||
|
}
|
||
|
|
||
|
.line {
|
||
|
width: 90upx;
|
||
|
height: 8upx;
|
||
|
background: #FF3530;
|
||
|
border-radius: 4upx;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
.main {
|
||
|
width: 100%;
|
||
|
margin-top: 20rpx;
|
||
|
// padding: 20upx 20upx 20upx;
|
||
|
}
|
||
|
|
||
|
.card-box {
|
||
|
// padding: 0 30upx;
|
||
|
background-color: #FFF;
|
||
|
// margin-top: 20upx;
|
||
|
width: 100%;
|
||
|
// margin-top: 82upx;
|
||
|
|
||
|
.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;
|
||
|
}
|
||
|
|
||
|
.yu-home-list {
|
||
|
display: block;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
.release {
|
||
|
width: 120upx;
|
||
|
height: 120upx;
|
||
|
border-radius: 50%;
|
||
|
background-color: #FF3630;
|
||
|
color: #fff;
|
||
|
display: flex;
|
||
|
flex-direction: column;
|
||
|
justify-content: center;
|
||
|
align-items: center;
|
||
|
position: fixed;
|
||
|
right: 5%;
|
||
|
bottom: 15%;
|
||
|
z-index: 100;
|
||
|
|
||
|
.cuIcon-add {
|
||
|
font-size: 38upx;
|
||
|
font-weight: bold;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
}
|
||
|
</style>
|