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.
 
 
 
 

167 lines
4.7 KiB

<template>
<div class="total-wrap" :style="{marginTop: isMainNode?'22rpx':'6rpx'}">
<div class="node-container">
<div class="node-container-left">
<div class="tag-container">
<img v-if="isMainNode" :src="nodeIconUrl"/>
<div v-else class="node-tag-container">
<div class="node-tag"></div>
</div>
</div>
<div class="line-container" :style="{height: isMainNode?'142rpx':'88rpx', paddingTop: isMainNode?'22rpx':'8rpx'}">
<div v-if="!isFirst" class="line" :style="{height: isMainNode?'120rpx':'80rpx'}"></div>
</div>
</div>
<div class="node-container-right" :style="{paddingTop: isMainNode?'0':'8rpx'}">
<div v-if="isMainNode" class="node-title" :style="{color: isNewest?'#222':'#999'}">{{nodeData.statusName}}</div>
<div class="node-desc" :style="{color: isNewest?'#4b4b4b':'#999', marginTop: isMainNode?'10rpx':'0'}">{{acceptStationFixed}}</div>
<div v-if="nodeData.phone" class="node-phone" @click="docall(nodeData.phone)">{{nodeData.phone}}</div>
<div class="node-time">{{nodeData.createTime}}</div>
</div>
</div>
</div>
</template>
<script>
export default {
props: {
isNewest: {
type: Boolean,
default: false
},
isFirst: {
type: Boolean,
default: false
},
isMainNode: {
type: Boolean,
default: false
},
nodeData: {
type: Object,
default () {
return {
status: '',
statusName: '',
createTime: '2019-01-01 00:00:00',
acceptStation: 'xxxxxx'
}
}
}
},
methods:{
docall(phone){
uni.makePhoneCall({
phoneNumber:phone
})
}
},
computed: {
nodeIconUrl () {
if (this.nodeData.status === 'WATTING_PAY') { // 待付款
return this.isNewest ? '/static/images/ic-order-commit.png' : '/static/images/ic-order-commit-G.png'
} else if (this.nodeData.status === 'PAYED') { // 待发货
return this.isNewest ? '/static/images/ic-paied.png' : '/static/images/ic-paied-G.png'
} else if (this.nodeData.status === 'WATTING_DELIVER') { // 已揽件
return this.isNewest ? '/static/images/ic-pacakaging.png' : '/static/images/ic-pacakaging-G.png'
} else if (this.nodeData.status === 'DELIVERING') { // 运输中
return this.isNewest ? '/static/images/ic-sending.png' : '/static/images/ic-sending-G.png'
} else if (this.nodeData.status === 'COMPLETE') { // 已完成
return this.isNewest ? '/static/images/ic-delivering.png' : '/static/images/ic-delivering-G.png'
}
},
acceptStationFixed () {
if (!this.nodeData.acceptStation) return ''
return this.nodeData.acceptStation.replace(/(\d{3})\d{4}(\d{4})/, '')
}
}
}
</script>
<style lang="scss" scoped>
.total-wrap {
margin-top: 22rpx;
width: 100%;
.node-container {
width: 100%;
height: auto;
display: flex;
&-left {
width: 44rpx;
height: auto;
.tag-container {
width: 44rpx;
height: 44rpx;
img {
width: 44rpx;
height: 44rpx;
}
.node-tag-container {
width: 44rpx;
height: 44rpx;
display: flex;
justify-content: center;
align-items: center;
.node-tag {
width: 14rpx;
height: 14rpx;
background-color: #dcdcdc;
border-radius: 50%;
}
}
}
.line-container {
box-sizing: border-box;
width: 44rpx;
display: flex;
align-items: center;
justify-content: center;
.line {
width: 2rpx;
background-color: #dcdcdc;
}
}
}
&-right {
flex: 1;
box-sizing: border-box;
padding: 0 10rpx 0 24rpx;
.node-title {
width: 100%;
height: 40rpx;
line-height: 44rpx;
color: #222;
font-size: 28rpx;
font-family: 'PingFangSC-Medium';
}
.node-desc {
margin-top: 16rpx;
width: 100%;
min-height: 30rpx;
line-height: 30rpx;
color: #222;
font-size: 24rpx;
font-family: 'PingFangSC-Regular';
word-wrap: break-word;
word-break: normal;
}
.node-phone {
margin-top: 8rpx;
width: 100%;
height: 26rpx;
line-height: 26rpx;
color: #FE4E2C;
font-size: 26rpx;
font-family: 'Avenir-Medium';
}
.node-time {
margin-top: 12rpx;
width: 100%;
height: 34rpx;
line-height: 34rpx;
color: #999;
font-size: 24rpx;
font-family: 'Avenir-Book';
}
}
}
}
</style>