Commit 70cdd80d authored by 琉璃丶c's avatar 琉璃丶c

1.修改部分细节

2.添加物流详情加载时,骨架显示
parent efbca930
<template> <template>
<div id="chartView" style="height: 300px;width:100%;background-color:#fff"></div> <div id="chartView" style="height: 330px;width:100%;background-color:#fff"></div>
</template> </template>
<script> <script>
...@@ -81,8 +81,8 @@ export default { ...@@ -81,8 +81,8 @@ export default {
}, },
grid: { grid: {
left: '12%', left: '12%',
top: '10%', top: '14%',
height: '80%', height: '78%',
width: '86%' width: '86%'
}, },
xAxis: { xAxis: {
...@@ -103,8 +103,6 @@ export default { ...@@ -103,8 +103,6 @@ export default {
yAxis: { yAxis: {
name: '温度', name: '温度',
type: 'value', type: 'value',
// minInterval: 0.5,
// splitNumber: 7,
axisLine: { axisLine: {
lineStyle: { lineStyle: {
color: '#eeeeee' color: '#eeeeee'
...@@ -121,7 +119,8 @@ export default { ...@@ -121,7 +119,8 @@ export default {
} }
}, },
nameTextStyle: { nameTextStyle: {
color: '#000' color: '#000',
fontSize: 15
} }
}, },
series: [{ series: [{
......
...@@ -11,17 +11,60 @@ import 'font-awesome/css/font-awesome.min.css' ...@@ -11,17 +11,60 @@ import 'font-awesome/css/font-awesome.min.css'
// import './assets/styles/variable.scss' // import './assets/styles/variable.scss'
import { Button, Toast, Field, Row, Col, NavBar, Search, Uploader, Empty, import {
List, PullRefresh, Popup, Cell, CellGroup, Tab, Tabs, Collapse, Divider, IndexBar, IndexAnchor, Button,
CollapseItem, Icon, Image, RadioGroup, Radio, DatetimePicker, Step, Steps, Card, Swipe, SwipeItem, Toast,
Slider, DropdownMenu, DropdownItem, Grid, GridItem, Tag, ImagePreview, Loading, Checkbox, CheckboxGroup, SwipeCell, Dialog, Stepper } from 'vant' Field,
Row,
Col,
NavBar,
Search,
Uploader,
Empty,
List,
PullRefresh,
Popup,
Cell,
CellGroup,
Tab,
Tabs,
Collapse,
Divider,
IndexBar,
IndexAnchor,
CollapseItem,
Icon,
Image,
RadioGroup,
Radio,
DatetimePicker,
Step,
Steps,
Card,
Swipe,
SwipeItem,
Slider,
DropdownMenu,
DropdownItem,
Grid,
GridItem,
Tag,
ImagePreview,
Loading,
Checkbox,
CheckboxGroup,
SwipeCell,
Dialog,
Stepper,
Skeleton
} from 'vant'
Vue.use(Button).use(Icon).use(Field).use(Row).use(Col).use(NavBar).use(CellGroup).use(Empty) Vue.use(Button).use(Icon).use(Field).use(Row).use(Col).use(NavBar).use(CellGroup).use(Empty)
.use(Toast).use(Search).use(List).use(PullRefresh).use(Popup).use(Cell).use(Tab).use(Tabs) .use(Toast).use(Search).use(List).use(PullRefresh).use(Popup).use(Cell).use(Tab).use(Tabs)
.use(Collapse).use(CollapseItem).use(Image).use(RadioGroup).use(Radio).use(DatetimePicker) .use(Collapse).use(CollapseItem).use(Image).use(RadioGroup).use(Radio).use(DatetimePicker)
.use(Steps).use(Step).use(Card).use(Swipe).use(SwipeItem).use(Slider).use(DropdownMenu) .use(Steps).use(Step).use(Card).use(Swipe).use(SwipeItem).use(Slider).use(DropdownMenu)
.use(DropdownItem).use(Grid).use(GridItem).use(Tag).use(ImagePreview).use(Divider).use(Loading) .use(DropdownItem).use(Grid).use(GridItem).use(Tag).use(ImagePreview).use(Divider).use(Loading)
.use(Checkbox).use(CheckboxGroup).use(SwipeCell).use(IndexBar).use(IndexAnchor).use(Uploader).use(Dialog) .use(Checkbox).use(CheckboxGroup).use(SwipeCell).use(IndexBar).use(IndexAnchor).use(Uploader).use(Dialog)
.use(Stepper) .use(Stepper).use(Skeleton)
Vue.use(Container) Vue.use(Container)
Object.keys(filter).forEach(k => Vue.filter(k, filter[k])) Object.keys(filter).forEach(k => Vue.filter(k, filter[k]))
......
...@@ -41,7 +41,7 @@ ...@@ -41,7 +41,7 @@
</template> </template>
<div @click="showPost('consignor')" v-if="moreSearchInfo.consignor.length === 0" style="background-color: #EFF5F9;" contenteditable="false" placeholder="请选择货主" class="inputInfo">{{consignor}}</div> <div @click="showPost('consignor')" v-if="moreSearchInfo.consignor.length === 0" style="background-color: #EFF5F9;" contenteditable="false" placeholder="请选择货主" class="inputInfo">{{consignor}}</div>
<div v-for="(item,index) in moreSearchInfo.consignor" :key="index" @click="showPost('consignor')" <div v-for="(item,index) in moreSearchInfo.consignor" :key="index" @click="showPost('consignor')"
style="background-color: #EFF5F9;" contenteditable="false" placeholder="请选择货主" class="inputInfo"> style="background-color: #EFF5F9;overflow-y:hidden" contenteditable="false" placeholder="请选择货主" class="inputInfo">
{{consignorInfoStitching(item)}}</div> {{consignorInfoStitching(item)}}</div>
</van-collapse-item> </van-collapse-item>
</van-collapse> </van-collapse>
...@@ -63,7 +63,7 @@ ...@@ -63,7 +63,7 @@
<div class="title font-bold font-16">商品</div> <div class="title font-bold font-16">商品</div>
<div :class="isSelectClient === true ? 'nom inputInfo': 'select inputInfo'" contenteditable="false" placeholder="请选择商品">{{goods}}</div> <div :class="isSelectClient === true ? 'nom inputInfo': 'select inputInfo'" contenteditable="false" placeholder="请选择商品">{{goods}}</div>
</div> </div>
</div> </div>
<div class="action-bottom"> <div class="action-bottom">
<van-button type="default" @click="onCleanClick">重置</van-button> <van-button type="default" @click="onCleanClick">重置</van-button>
...@@ -616,7 +616,7 @@ export default { ...@@ -616,7 +616,7 @@ export default {
font-size: 14PX; font-size: 14PX;
/deep/ .van-cell{ /deep/ .van-cell{
padding: 5px 0px; padding: 5px 0px;
} }
/deep/ .van-cell::after{ /deep/ .van-cell::after{
position: fixed; position: fixed;
......
<template> <template>
<div class="logistics-content"> <div class="logistics-content">
<van-empty description="暂无数据" <van-empty description="暂无数据"
v-if="!((mapPointList&&mapPointList.length > 0)||(shippingInfo&&shippingInfo.shippingNo)||(stepList&&stepList.length > 0))"/> v-if="!((mapPointList&&mapPointList.length > 0)||
(shippingInfo&&shippingInfo.shippingNo)||
(stepList&&stepList.length > 0)||
(orderInfo.isCold && coldInfo && coldInfo.length > 0)) && !shoppingLoading"/>
<!-- 高德地图 --> <!-- 高德地图 -->
<a-map-view :transport="sendType" :point-list="mapPointList" :drive-point="driveLine" <a-map-view :transport="sendType" :point-list="mapPointList" :drive-point="driveLine"
v-if="mapPointList&&mapPointList.length > 0"/> v-if="mapPointList&&mapPointList.length > 0"/>
<!-- 物流主信息 --> <!-- 物流主信息 -->
<div class="logistics-header" v-if="shippingInfo&&shippingInfo.shippingNo"> <div class="logistics-header">
<div class="header-title"> <van-skeleton avatar :row="3" :loading="shoppingLoading"
<van-icon class="logistic-logo" :name="icons.logo"/> style="background-color:#fff;padding-top:10px;padding-bottom:10px">
<span class="logistic-header-layout"> <div class="header-title" v-if="shippingInfo&&shippingInfo.shippingNo">
<van-icon class="logistic-logo" :name="icons.logo"/>
<span class="logistic-header-layout">
<div class="header-order-info main-info"> <div class="header-order-info main-info">
<span class="logistic-name">承运商:</span> <span class="logistic-name">承运商:</span>
<span class="logistic-values">{{ shippingInfo.carrier }}</span> <span class="logistic-values">{{ shippingInfo.carrier }}</span>
...@@ -20,7 +25,10 @@ ...@@ -20,7 +25,10 @@
</div> </div>
<div class="header-order-info" style="margin-top: 2px;" v-if="shippingInfo.deliveryMan"> <div class="header-order-info" style="margin-top: 2px;" v-if="shippingInfo.deliveryMan">
<span class="logistic-name">配送人:</span> <span class="logistic-name">配送人:</span>
<span class="logistic-values">{{ shippingInfo.deliveryMan }} {{ shippingInfo.deliveryManPhone }}</span> <span class="logistic-values" style="display:flex;">
<span style="flex:1">{{ shippingInfo.deliveryMan }} {{ shippingInfo.deliveryManPhone }}</span>
<img class="logistic-func-icon" :src="icons.call" @click="callDriver(shippingInfo.deliveryManPhone)"/>
</span>
</div> </div>
<div class="header-order-info" style="margin-top:2px;margin-bottom:8px" <div class="header-order-info" style="margin-top:2px;margin-bottom:8px"
v-if="shippingInfo.estimatedArrivalTime && stepInfo && stepInfo.currentOrderStatusCode < 400"> v-if="shippingInfo.estimatedArrivalTime && stepInfo && stepInfo.currentOrderStatusCode < 400">
...@@ -28,9 +36,11 @@ ...@@ -28,9 +36,11 @@
<span class="logistic-values">{{ shippingInfo.estimatedArrivalTime }}</span> <span class="logistic-values">{{ shippingInfo.estimatedArrivalTime }}</span>
</div> </div>
</span> </span>
<span class="logistic-type">{{ shippingInfo.roadType === 'D' ? '市内' : '市外' }}</span> <span class="logistic-type">{{ shippingInfo.roadType === 'D' ? '市内' : '市外' }}</span>
</div> </div>
</van-skeleton>
</div> </div>
<!-- 物流追踪信息 --> <!-- 物流追踪信息 -->
<div id="stepLine" :class="stepList.length>2?'logistics-step-line':'logistics-step-line_show'" <div id="stepLine" :class="stepList.length>2?'logistics-step-line':'logistics-step-line_show'"
v-if="stepList&&stepList.length > 0"> v-if="stepList&&stepList.length > 0">
...@@ -43,7 +53,10 @@ ...@@ -43,7 +53,10 @@
</div> </div>
</div> </div>
<!-- 冷链温度趋势 --> <!-- 冷链温度趋势 -->
<van-tabs v-model="temperatureActive" style="margin-top:18px;"> <van-tabs v-if="orderInfo.isCold && coldInfo && coldInfo.length > 0"
v-model="temperatureActive"
title-active-color="#1989FA"
class="tabs">
<van-tab :title="item.deviceNumber" v-for="(item,index) in coldInfo" :key="index"> <van-tab :title="item.deviceNumber" v-for="(item,index) in coldInfo" :key="index">
<echarts-view :line-array="item.temperatureInfoList" :car-no="item.deviceNumber"/> <echarts-view :line-array="item.temperatureInfoList" :car-no="item.deviceNumber"/>
</van-tab> </van-tab>
...@@ -58,6 +71,7 @@ import LogisticsStep from '../components/logisticsStep' ...@@ -58,6 +71,7 @@ import LogisticsStep from '../components/logisticsStep'
import StepItem from '../components/stepItem' import StepItem from '../components/stepItem'
import AMapView from '../../../components/AMapView' import AMapView from '../../../components/AMapView'
import EchartsView from '../../../components/EchartsView' import EchartsView from '../../../components/EchartsView'
import {bridge} from '../../../utils'
export default { export default {
name: 'logisticsDetail', name: 'logisticsDetail',
...@@ -66,8 +80,10 @@ export default { ...@@ -66,8 +80,10 @@ export default {
return { return {
orderInfo: this.$route.query, orderInfo: this.$route.query,
temperatureActive: 0, temperatureActive: 0,
shoppingLoading: true,
icons: { icons: {
logo: require('@/assets/img/u48.png') logo: require('@/assets/img/u48.png'),
call: require('@/assets/img/ic_call.png')
}, },
shippingInfo: {}, shippingInfo: {},
mapPointList: [], mapPointList: [],
...@@ -102,19 +118,29 @@ export default { ...@@ -102,19 +118,29 @@ export default {
} }
}) })
window.addEventListener('popstate', this.onBrowserBack, false) window.addEventListener('popstate', this.onBrowserBack, false)
// 获取运单信息
this.getShippingData() this.getShippingData()
// 获取物流追踪信息
this.getTrackInfoDetail() this.getTrackInfoDetail()
this.getTemperatureData() // 获取冷链信息
if (this.orderInfo.isCold) {
this.getTemperatureData()
}
}, },
destroyed() { destroyed() {
// 当页面销毁必须要移除这个事件,vue不刷新页面,不移除会重复执行这个事件 // 当页面销毁必须要移除这个事件,vue不刷新页面,不移除会重复执行这个事件
window.removeEventListener('popstate', this.onBrowserBack, false) window.removeEventListener('popstate', this.onBrowserBack, false)
}, },
methods: { methods: {
/* 返回 */
onBrowserBack() { onBrowserBack() {
this.$router.go(-1) this.$router.go(-1)
}, },
/* 拨打配送员电话 */
callDriver(str) {
bridge.callPhone(str)
},
/* 全部显示物流追踪详情 */
showStepLine() { showStepLine() {
let stepEle = document.getElementById('stepLine') let stepEle = document.getElementById('stepLine')
stepEle.className = 'logistics-step-line_show' stepEle.className = 'logistics-step-line_show'
...@@ -144,7 +170,6 @@ export default { ...@@ -144,7 +170,6 @@ export default {
this.driveLine.endPoint.longitude = parseFloat(this.shippingInfo.longitude) this.driveLine.endPoint.longitude = parseFloat(this.shippingInfo.longitude)
this.driveLine.endPoint.latitude = parseFloat(this.shippingInfo.latitude) this.driveLine.endPoint.latitude = parseFloat(this.shippingInfo.latitude)
// console.log('--->', this.orderInfo.orderStatusCode)
if (this.orderInfo.orderStatusCode > 300) { if (this.orderInfo.orderStatusCode > 300) {
this.sendType = this.orderInfo.orderStatusCode === '310' this.sendType = this.orderInfo.orderStatusCode === '310'
this.getGpsPoint() this.getGpsPoint()
...@@ -153,8 +178,8 @@ export default { ...@@ -153,8 +178,8 @@ export default {
if (rt.code === 500) { if (rt.code === 500) {
this.$toast(rt.msg) this.$toast(rt.msg)
} }
// console.log('运单信息', '请求无数据')
} }
this.shoppingLoading = false
}).catch(err => { }).catch(err => {
console.log('运单信息', err) console.log('运单信息', err)
this.$toast('运单信息获取失败') this.$toast('运单信息获取失败')
...@@ -223,6 +248,7 @@ export default { ...@@ -223,6 +248,7 @@ export default {
this.$toast('GIS信息获取失败') this.$toast('GIS信息获取失败')
}) })
}, },
/* 获取温度变化趋势数据 */
getTemperatureData() { getTemperatureData() {
let data = { let data = {
'order': 'desc', 'order': 'desc',
...@@ -253,13 +279,11 @@ export default { ...@@ -253,13 +279,11 @@ export default {
overflow: scroll; overflow: scroll;
.logistics-header { .logistics-header {
border-bottom: 1px solid $line;
padding: 10px;
background-color: #fff; background-color: #fff;
border-bottom: 1px solid $line;
.header-title { .header-title {
padding: 10px;
display: flex; display: flex;
//align-items: center;
.logistic-logo { .logistic-logo {
font-size: 22px; font-size: 22px;
...@@ -268,7 +292,6 @@ export default { ...@@ -268,7 +292,6 @@ export default {
.logistic-header-layout { .logistic-header-layout {
flex: 1; flex: 1;
//margin-left: 10px;
margin-top: 3px; margin-top: 3px;
.main-info { .main-info {
...@@ -303,6 +326,15 @@ export default { ...@@ -303,6 +326,15 @@ export default {
//margin-left: 10px; //margin-left: 10px;
flex: 8; flex: 8;
} }
.logistic-func-icon {
margin-top: -3px;
margin-right: -24px;
width: 20px;
height: 20px;
border: 0.5px solid $orderCold;
border-radius: 10px;
}
} }
.logistics-step-line { .logistics-step-line {
...@@ -334,4 +366,23 @@ export default { ...@@ -334,4 +366,23 @@ export default {
} }
} }
} }
.tabs {
margin-top: 16px;
padding-bottom: 5px;
background-color: #fff;
/deep/ .van-tab {
max-width: 25%;
}
/deep/ .van-tabs__wrap {
border-bottom: 1px solid #eeeeee
}
/deep/ .van-tabs__line {
width: 23px;
border-radius: 5px !important;
}
}
</style> </style>
...@@ -287,7 +287,6 @@ export default { ...@@ -287,7 +287,6 @@ export default {
res.data.entity && res.data.entity.orderList && res.data.entity.orderList.length > 0) { res.data.entity && res.data.entity.orderList && res.data.entity.orderList.length > 0) {
this.detailData = res.data.entity.orderList[0] this.detailData = res.data.entity.orderList[0]
this.detailData.goodsInfos.forEach(item => { this.detailData.goodsInfos.forEach(item => {
// console.log(111, item)
let mode = item.storageMode let mode = item.storageMode
if (mode.indexOf('冷链') !== -1) { if (mode.indexOf('冷链') !== -1) {
// 插入到 // 插入到
...@@ -308,6 +307,7 @@ export default { ...@@ -308,6 +307,7 @@ export default {
this.detailData.goodsInfos = this.detailData.goodsInfos.slice(0, 3) this.detailData.goodsInfos = this.detailData.goodsInfos.slice(0, 3)
// 刷新传参中的订单状态 // 刷新传参中的订单状态
this.orderItem.orderStatusCode = this.detailData.orderStatusCode this.orderItem.orderStatusCode = this.detailData.orderStatusCode
this.orderItem.isCold = this.storageModel.cold
} else { } else {
console.log('订单详情', '请求失败') console.log('订单详情', '请求失败')
if (res.code === 500) { if (res.code === 500) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment