<template>
|
|
<view class="content">
|
|
|
|
<view class="head flex-sb">
|
|
<view class="items">
|
|
<view class="item-tab flex">
|
|
<view @click="clickTabOne">施工前</view>
|
|
<view @click="clickTabTwo">施工中</view>
|
|
<view @click="clickTabThr">施工后</view>
|
|
</view>
|
|
<view class="item-active" :style="{'--step': step + 'rpx'}"></view>
|
|
</view>
|
|
</view>
|
|
|
|
<view class="m20">
|
|
<view class="re-empty" v-if="item.length<1">
|
|
<view>暂无数据</view>
|
|
</view>
|
|
<view v-for="e in item" class="b-relative item-card mb20">
|
|
<view class="m10 flex-sb">
|
|
<view class="item-tip">请于施工前30分钟内到达现场</view>
|
|
<view style="color: #aaa;" @click="clickDetail(e.id)">
|
|
<span v-if="+e.step===0">待开工</span>
|
|
<span v-if="+e.step===1">施工中</span>
|
|
<span v-if="+e.step===2">已完成</span>
|
|
<uni-icons type="right" color="#aaa" size="12"></uni-icons>
|
|
</view>
|
|
</view>
|
|
<view class="mt20">
|
|
<view>
|
|
<view class="item-icon"/>
|
|
<span>到场时间:{{ $timeUtils.formatTime2Day(e.in_time) }}</span>
|
|
</view>
|
|
<view @click="openMap(e)">
|
|
<view class="item-icon"/>
|
|
<span>施工地点:{{ e.address }}</span>
|
|
<uni-icons type="paperplane" color="#333" size="12"></uni-icons>
|
|
</view>
|
|
<view>
|
|
<view class="item-icon" style="border-color: #e5b746;"/>
|
|
<span>施工已开始</span>
|
|
</view>
|
|
</view>
|
|
<view class="mt20 flex-reverse">
|
|
<button class="item-button" @click="clickStep(e.id)">拍摄照片</button>
|
|
<button class="item-button jr" open-type="contact" v-if="+e.step===0">我要拒单</button>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
|
|
</view>
|
|
</template>
|
|
|
|
<script>
|
|
export default {
|
|
data() {
|
|
return {
|
|
step: 8,
|
|
item: [],
|
|
status: 0
|
|
}
|
|
},
|
|
onShow() {
|
|
this.clickTabOne()
|
|
},
|
|
methods: {
|
|
clickDetail(id){ uni.navigateTo({ url: `/pages/user/orderd?id=${id}` }) },
|
|
clickBanner(){ uni.navigateTo({ url: '/pages/login/login' }) },
|
|
clickTabOne(){
|
|
this.step=8
|
|
this.status = 0
|
|
this.loadList()
|
|
},
|
|
clickTabTwo(){
|
|
this.step=221
|
|
this.status = 1
|
|
this.loadList()
|
|
},
|
|
clickTabThr(){
|
|
this.step=432
|
|
this.status = 2
|
|
this.loadList()
|
|
},
|
|
loadList(){
|
|
this.item = []
|
|
uni.showLoading({})
|
|
this.$httpGet("/api/order/mine", {status: this.status}, (res) => {
|
|
uni.hideLoading({})
|
|
console.log('[/order/mine]', res);
|
|
if(res.data){
|
|
this.item = this.$utils.toArray(res.data)
|
|
}
|
|
})
|
|
},
|
|
clickStep(id){
|
|
var stepUri = "/pages/user/step"
|
|
if(+this.status === 0){
|
|
stepUri = stepUri + "0"
|
|
} else if(+this.status === 1){
|
|
stepUri = stepUri + "1"
|
|
} else if(+this.status === 2){
|
|
stepUri = stepUri + "2"
|
|
}
|
|
uni.navigateTo({
|
|
url: `${stepUri}?id=${id}`
|
|
})
|
|
},
|
|
openMap(row){
|
|
uni.openLocation({
|
|
latitude: parseFloat(row.latitude),
|
|
longitude:parseFloat(row.longitude),
|
|
scale: 18,
|
|
name: row.address || '未命名地址'
|
|
})
|
|
},
|
|
}
|
|
}
|
|
</script>
|
|
|
|
<style>
|
|
page {
|
|
background-color: #f5f5f5;
|
|
--step: 1; /* 0.05 1 1.88 */
|
|
--color: #F40000;
|
|
}
|
|
|
|
.head{
|
|
height: 68rpx;
|
|
padding: 10rpx 40rpx;
|
|
background-color: #fff;
|
|
}
|
|
.items{
|
|
width: 687rpx;
|
|
height: 52rpx;
|
|
padding: 8rpx 8rpx;
|
|
border-radius: 34rpx;
|
|
background-color: #f2f4f9;
|
|
position: relative;
|
|
}
|
|
.item-tab{
|
|
line-height: 52rpx;
|
|
background-color: transparent;
|
|
}
|
|
.item-tab view{
|
|
width: 33%;
|
|
text-align: center;
|
|
font-size: 26rpx;
|
|
font-weight: normal;
|
|
text-align: center;
|
|
letter-spacing: -0.16px;
|
|
color: #152748;
|
|
background-color: transparent;
|
|
z-index: 1;
|
|
}
|
|
.item-active{
|
|
width: 229rpx;
|
|
height: 52rpx;
|
|
border-radius: 26rpx;
|
|
background-color: #ffffff;
|
|
position: absolute;
|
|
left: var(--step);
|
|
top: 8rpx;
|
|
transition: .3s ease-in;
|
|
z-index: 0;
|
|
}
|
|
|
|
|
|
|
|
.item-card{
|
|
width: calc(100vw - 120rpx);
|
|
height: calc(414rpx - 60rpx);
|
|
background: #ffffff;
|
|
padding: 30rpx;
|
|
margin: 30rpx;
|
|
border-radius: 24rpx;
|
|
|
|
font-size: 24rpx;
|
|
line-height: 52rpx;
|
|
color: #333333;
|
|
}
|
|
.item-tip{
|
|
padding: 0 10rpx;
|
|
background-color: #F2F5F9;
|
|
border-radius: 8rpx;
|
|
|
|
font-size: 20rpx;
|
|
font-weight: normal;
|
|
letter-spacing: 0px;
|
|
color: #152748;
|
|
}
|
|
.item-icon {
|
|
width: 24rpx;
|
|
height: 24rpx;
|
|
box-sizing: border-box;
|
|
border: 6rpx solid #68B04F;
|
|
border-radius: 50%;
|
|
display: inline-block;
|
|
margin: 10rpx 15rpx -2rpx 0;
|
|
}
|
|
.item-button{
|
|
width: 160rpx;
|
|
height: 64rpx;
|
|
line-height: 64rpx;
|
|
border-radius: 32rpx;
|
|
|
|
box-sizing: border-box;
|
|
border: 2rpx solid #F40000;
|
|
|
|
font-size: 28rpx;
|
|
font-weight: normal;
|
|
text-align: center;
|
|
letter-spacing: 0px;
|
|
color: #F40000;
|
|
|
|
padding: 0 !important;
|
|
margin: 0 !important;
|
|
background-color: transparent !important;
|
|
margin-left: 10rpx !important;
|
|
}
|
|
|
|
.jr{
|
|
border-color: #aaa;
|
|
color: #aaa;
|
|
}
|
|
</style>
|