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.
313 lines
9.5 KiB
313 lines
9.5 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" @click="showCalendar"> |
|
<view class="order-screen order-screen-time-title"> |
|
{{$u.timeFormat(minDate,'mm/dd')}} - {{$u.timeFormat(maxDate,'mm/dd')}} |
|
</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" @click="navTo('/pages/OrderDetail/index?id='+item.id)"> |
|
<view class="order-card-col row" :style="{backgroundImage:'url('+staticImage.orderCardBackground+')'}"> |
|
<view class="order-card-left"> |
|
<image class="img" :src="item.pet_avatar" mode="aspectFill" /> |
|
</view> |
|
<view class="order-card-right" style="max-width: 65%;"> |
|
<view class="order-card-title" style=""> |
|
<u-text :text="item.addr" |
|
color="#131313" size="32" |
|
custom-style="display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 1; overflow: hidden;"></u-text> |
|
</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="" style="padding:20rpx 0;">--> |
|
<!-- <u-text :text="'订单编号: '+item.no"--> |
|
<!-- color="#131313" size="28"--> |
|
<!-- custom-style="display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 1; overflow: hidden;"></u-text>--> |
|
<!-- </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> |
|
<uv-calendar ref="calendar" :defaultDate="[]" mode="multiple" title="选择服务日期" color="#4DC3B8" round="40rpx" :minDate="minDate" :maxDate="maxDate" :maxCount="2" monthNum="7"> |
|
<template #footer> |
|
<MzButton button-color="#4DC3B8" button-width="90%" font-color="#fff" class="row" style="justify-content: center" @click="timeSelect">确定</MzButton> |
|
</template> |
|
</uv-calendar> |
|
|
|
<!-- <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:'', |
|
minDate:'', |
|
maxDate:'', |
|
} |
|
}, |
|
onLoad(options) { |
|
this.screenCheck = options.type; |
|
this.is_buy = options.is_buy; |
|
log(options) |
|
}, |
|
methods: { |
|
formatDate(date) { |
|
let waitFormat = new Date(date); |
|
let year = waitFormat.getFullYear(); |
|
let month = (waitFormat.getMonth() + 1).toString().padStart(2, '0'); |
|
let day = waitFormat.getDate().toString().padStart(2, '0'); |
|
return `${year}-${month}-${day}`; |
|
}, |
|
initTime(){ |
|
let now = new Date(); |
|
this.maxDate = this.formatDate(now); |
|
let minDate = now.setMonth(now.getMonth()-6); |
|
this.minDate = this.formatDate(minDate); |
|
|
|
console.log(this.minDate) |
|
console.log(this.maxDate) |
|
}, |
|
timeSelect(e){ |
|
let selected = this.$refs.calendar.selected; |
|
if(selected.length!==2){ |
|
api.error('请选择开始和结束时间') |
|
return; |
|
} |
|
console.log(selected) |
|
let date0 = new Date(selected[0]); |
|
let date1 = new Date(selected[1]); |
|
if(date0>date1){ |
|
this.start_time = selected[0]; |
|
this.end_time = selected[1]; |
|
}else{ |
|
this.start_time = selected[1]; |
|
this.end_time = selected[0]; |
|
} |
|
|
|
// this.timeListTemp = this.timeList; |
|
this.page = 1; |
|
this.orderList = []; |
|
this.status = "loadmore"; |
|
|
|
this.$refs.calendar.confirm(); |
|
this.getOrderList(); |
|
}, |
|
showCalendar(){ |
|
this.$refs.calendar.open(); |
|
}, |
|
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(); |
|
this.initTime(); |
|
}, |
|
created() { |
|
this.pagePadding = (api.navHeight().navPaddingTop + |
|
api.navHeight().navHeight + (api.navHeight().headerPadding * 2)) |
|
} |
|
} |
|
</script> |
|
|
|
<style lang="scss"> |
|
@import './components/index.scss'; |
|
</style> |