java-mall-app/member/order/logistics.vue
2024-11-01 16:35:40 +08:00

273 lines
6.2 KiB
Vue
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<view class="page">
<view class="m-logisticsbox">
<view class="m-cells">
<!-- <view class="m-cell ">
<view class="m-cell-bd">
<text>物流单号{{Logistics.LogisticCode}}</text>
</view>
</view>
<view class="m-cell">
<view class="m-cell-bd">
<text>物流公司{{Logistics.ShipperName}}</text>
</view>
</view> -->
<view class="m-cell">
<view class="m-cell-bd" v-if="LogisticName!='达达配送'">
<text>{{__('物流状态:')}}{{Logistics.express_state}}</text>
</view>
<view class="m-cell-bd" v-if="LogisticName=='达达配送'">
<text>{{__('物流状态:')}}{{DLogistics.express_state}}</text>
</view>
</view>
</view>
<view class="map" v-if="LogisticName=='达达配送'&&Info.Status==3">
<image src="/static/images/call.png" bindtap="call"></image>
<map class="m-map" longitude="Info.TransporterLng" latitude="Info.TransporterLat" markers="markers" scale="14" show-location style="width: 100%; height: 400rpx;"></map>
</view>
<view class="m-logistbox" v-if="LogisticName=='达达配送'">
<view v-for="(item, index) in DLogistics.Traces" :key="index" class="m-logistitem">
{{item.AcceptStation}}
<view>{{item.AcceptTimeStr || item.AcceptTime}}</view>
</view>
</view>
<view class="m-logistbox" v-if="LogisticName!='达达配送'">
<view v-for="(item, index) in Logistics.traces" :key="index" class="m-logistitem">
{{item.AcceptStation}}
<view>{{item.AcceptTimeStr || item.AcceptTime}}</view>
</view>
</view>
</view>
</view>
</template>
<script>
import $ from "../../helpers/util";
import {
mapState,
mapMutations
} from 'vuex'
export default {
data() {
return {
options: {},
order_id: "",
Logistics: {},
markers: [],
Info: [],
DLogistics: [],
LogisticName: "",
path: ""
}
},
computed: mapState(['Config', 'StateCode', 'notice', 'plantformInfo', 'shopInfo', 'userInfo', 'hasLogin']),
onLoad: function(options) {
uni.setNavigationBarTitle({
title: this.__('物流进度')
});
this.setData({
order_id: options.on,
LogisticName: options.LogisticName
})
//this.GetShipmentStakeholders();
if (options.LogisticName == '达达配送') {
this.GetShipmentDetailList()
} else {
this.ExpressQuery(options.on, options.stock_bill_id);
}
},
onUnload: function() {
//移除通知
let that = this;
},
methods: {
...mapMutations(['login', 'logout', 'getPlantformInfo', 'forceUserInfo', 'getUserInfo']),
ExpressQuery(on, stock_bill_id) { //查询物流进度
var that = this;
var params = {
order_id: on,
stock_bill_id: stock_bill_id
};
that.$.request({
url: this.Config.URL.delivery_info,
method: 'POST',
data: params,
success: function(data, status, msg, code) {
if (200 == status && data.traces.length > 0) {
that.setData({
Logistics: data
})
} else {
that.$.confirm(msg, function(e) {}, false)
}
}
});
},
GetShipmentStakeholders: function() { //获取达达配送订单详情信息
var that = this;
var val = {
order_id: this.data.order_id,
store_id: app.globalData.shopInfo.store_id
}
var that = this
that.$.request($.makeUrl(orderapi.GetShipmentStakeholders, val), function(data) {
that.setData({
Info: data.Info
})
that.getImageInfo()
//console.log(data)
});
},
GetShipmentDetailList: function() { //获取配送单详情
var that = this;
var val = {
order_id: this.data.order_id,
store_id: app.globalData.shopInfo.store_id
}
//console.log(val)
var that = this
that.$.request($.makeUrl(orderapi.GetShipmentDetailList, val), function(data) {
//console.log(data)
data.Info.Traces.reverse()
that.setData({
DLogistics: data.Info
});
});
},
getImageInfo: function() {
var obj = [];
var that = this;
//console.log(this.data.Info)
wx.getImageInfo({
src: that.data.Info.LogoPath,
success: function(res) {
//console.log(res)
that.setData({
path: res.path
})
}
})
var merchant = {
latitude: that.data.Info.StoreAddressLat,
longitude: that.data.Info.StoreAddressLng,
width: 50,
height: 60,
iconPath: '../../assets/merchant.png'
}
var horseman = {
latitude: that.data.Info.TransporterLat,
longitude: that.data.Info.TransporterLng,
width: 50,
height: 60,
iconPath: '../../assets/horseman.png'
}
var person = {
latitude: that.data.Info.OrderAddressLat,
longitude: that.data.Info.OrderAddressLng,
width: 50,
height: 60,
iconPath: '../../assets/person.png'
}
obj.push(merchant)
obj.push(horseman)
obj.push(person)
that.setData({
markers: obj
})
},
call: function() {
var that = this
wx.makePhoneCall({
phoneNumber: that.data.Info.TransporterPhone
})
}
}
};
</script>
<style lang="scss">
@import "../../styles/_variables";
.m-cells {
font-size: 28rpx;
}
.m-logistbox {
margin-top: 20rpx;
}
.m-logistitem {
font-size: 28rpx;
background-color: #fff;
padding: 40rpx 20rpx 40rpx 100rpx;
border-bottom: 1rpx solid #ebebe7;
line-height: 40rpx;
color: #888;
position: relative;
}
.m-logistitem::after {
content: "";
position: absolute;
left: 0;
top: 0;
width: 1rpx;
height: 100%;
border-left: 1rpx solid #ebebe7;
margin-left: 50rpx;
}
.m-logistitem::before {
content: "";
position: absolute;
width: 30rpx;
height: 30rpx;
left: 0;
top: 0;
background-color: #d5d5d5;
border-radius: 100%;
margin-left: 35rpx;
margin-top: 40rpx;
z-index: 2;
}
.m-logistitem:first-child {
color: $default-skin-bg;
}
.m-logistitem:first-child::before {
content: "";
position: absolute;
width: 30rpx;
height: 30rpx;
left: 0;
top: 0;
background-color: $default-skin-bg;
border-radius: 100%;
margin-left: 35rpx;
margin-top: 40rpx;
z-index: 2;
}
.map {
/* margin-top: 20rpx; */
}
.map image {
width: 60rpx;
height: 60rpx;
z-index: 999;
position: absolute;
top: 100rpx;
right: 20rpx;
}
</style>