混凝土运输管理微信小程序、替班
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.
 
 
 
 
 

225 lines
4.8 KiB

<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>