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.
 
 
 

252 lines
7.0 KiB

<template>
<view class="body-background" :style="{
backgroundImage:'url('+staticImage.wallpaperBgImage+')'
}"></view>
<HeaderNav title="我的订单" :is-back="true"></HeaderNav>
<view class="order-screen-top" :style="{
top:topStyle
}">
<view class="order-capsule-container row">
<view class="order-capsule col-4"
v-for="(item,index) in screenMenu"
:class="{active:(item.value === screenCheck)}"
@click="selectScreen(item)"
>
{{ item.name }}
</view>
</view>
<view class="order-screen-container row">
<view class="order-screen" v-for="(date, index) in dateSelectData" @click="dayActiveToggle(date)" :class="{active:dayActive === date.value}">
{{ date.title }}
<view class="order-screen-active">
<image mode="widthFix" class="img" :src="staticImage.screenActiveImg" />
</view>
</view>
<view class="order-screen-time-container row">
<view class="order-screen order-screen-time-title">
05/06-08-03
</view>
<view class="order-screen order-screen-time-buttton-container">
<view class="order-screen-time-buttton">
时间
</view>
</view>
</view>
</view>
</view>
<view class="app-wallpaper" :style="{
backgroundImage:'url('+staticImage.wallpaperBgImage+')'
}">
<view class="order-list-container">
<view class="order-list-item" v-for="(item,index) in orderList">
<view class="order-card-container row">
<view class="order-card-container-background col-12"></view>
<view class="order-card-container-background-main row">
<view class="order-card-col row" :style="{backgroundImage:'url('+staticImage.orderCardBackground+')'}">
<view class="order-card-left">
<image class="img" :src="petImage" mode="aspectFill" />
</view>
<view class="order-card-right">
<view class="order-card-title">{{item.addr}}</view>
<view class="order-card-tag-container row">
<view class="order-card-tag" v-for="(server, i) in item.services" wx:key="i">{{ server }}</view>
</view>
<view class="order-card-day"><text class="card-label">上门</text>{{item.do_date}} {{ item.do_time }}
</view>
<view class="order-card-pay-time"><text class="card-label">下单时间</text>{{item.create_time}}
</view>
</view>
<view class="order-card-bottom col-12 row">
<view class="card-button" @click="navTo(`/pages/ChatDetail/index?id=${item.id}`)">
<MzButton
title="立即沟通"
font-color="#3E3221"
button-color="#F7E1C3"
button-width="255rpx"></MzButton>
</view>
<view class="card-button" @click="navTo('/pages/FeedLog/index?pet_id=' + item.pet_id)">
<MzButton
title="喂养档案"
font-color="#FFFFFF"
button-color="#4DC3B8"
button-width="255rpx"></MzButton>
</view>
</view>
</view>
</view>
</view>
</view>
</view>
<u-loadmore :status="status" fontSize="28"
color="#ACB4B6"
line
line-color="#ACB4B6"
marginBottom="30" marginTop="30" @loadmore="getOrderList()"/>
</view>
<!-- <RightNav></RightNav> -->
</template>
<script>
import {
imghost
} from '@/config/host.js'
import HeaderNav from '@/components/HeaderNav/Index.vue';
import FooterNav from '@/components/FooterNav/Index.vue';
import RightNav from '@/components/RightNav/Index.vue';
import MzButton from '@/components/MzButton/Index.vue';
import api from '@/utils/functions.js';
import {getOrderList} from "@/api/order";
import log from "@/utils/log";
export default {
components: {
HeaderNav,
FooterNav,
RightNav,
MzButton
},
computed:{
topStyle(){
return (uni.getStorageSync('sysInfo').sysAndMenuHeight)+'px'
},
},
data() {
return {
title: 'Hello',
loading: true,
status: 'loadmore',
screenCheck:'',
screenMenu:[
{
name:'全部',
value:'',
},{
name:'待服务',
value:'0',
},{
name:'已完成',
value:'2',
},
],
dateSelectData:[
{title:"全部", value: 0},
{title:"今天", value: 1},
{title:"明天", value: 2},
],
staticImage: {
screenActiveImg: imghost + '/static/image/order-screen-active.png',
orderCardBackground: imghost + '/static/image/order-card-background.png',
wallpaperBgImage:imghost +'/static/image/background.png'
},
indexBanner: [{
image: imghost + '/static/image/banner.png',
url: '',
}],
user: {
avatar: imghost + '/static/image/banner.png',
nickname: '清晨的风',
coupons: 221,
id: 88685
},
isTop: false,
pagePadding: 100,
petImage: imghost + '/static/image/pet_avatar1.jpeg',
orderList:[],
dayActive: 0,
statusActive: 1,
page:1,
is_buy:'',
start_time:'',
end_time:'',
}
},
onLoad(options) {
this.screenCheck = options.type;
this.is_buy = options.is_buy;
log(options)
},
methods: {
selectScreen(item){
this.screenCheck = item.value;
this.page = 1;
this.status = "loadmore";
this.orderList = [];
this.getOrderList();
},
navTo(url){
uni.navigateTo({
url:url
})
},
getOrderList(filter = {
status: "",
start_time: this.start_time,
end_time: this.end_time,
}){
filter.is_worker = 0;
filter.page = this.page++;
filter.limit = 5;
filter.is_buy = this.is_buy;
if (this.screenCheck !== '') {
filter.status = this.screenCheck;
}
if (this.status === 'nomore') {
return;
}
this.status = 'loading';
log(filter);
getOrderList(filter).then(data => {
if (filter.page === 1){
this.orderList = data.data;
}else{
this.orderList.push(...data.data);
}
this.status = data.data.length < filter.limit ? 'nomore' : 'loadmore';
});
},
dayActiveToggle(date){
this.dayActive = date.value;
this.page = 1;
this.orderList = [];
this.status = "loadmore";
let currentTime = new Date().getTime();
let unitDay = 86400000;
let today = uni.$u.timeFormat(currentTime, 'yyyy-mm-dd');
let tomorrow = uni.$u.timeFormat(currentTime + unitDay, 'yyyy-mm-dd');
let acquired = uni.$u.timeFormat(currentTime + unitDay * 2, 'yyyy-mm-dd');
this.start_time = ['', today, tomorrow][date.value];
this.end_time = ['', tomorrow, acquired][date.value];
this.getOrderList();
},
},
onPageScroll(res) {
if(res.scrollTop <= 20){
uni.$emit('isTop', true);
}else{
uni.$emit('isTop', false);
}
},
mounted() {
this.getOrderList();
},
created() {
this.pagePadding = (api.navHeight().navPaddingTop +
api.navHeight().navHeight + (api.navHeight().headerPadding * 2))
}
}
</script>
<style lang="scss">
@import './components/index.scss';
</style>