让你的物流信息一目了然:微信小程序实现进度展示

前言

微信小程序作为一种新型的移动应用程序,已经成为了人们获取信息的重要途径之一。在这篇文章中,我们将介绍如何利用微信小程序实现物流信息的展示和跟踪,帮助用户更加便捷地了解物流进度。


实现效果如下:

在这里插入图片描述


实现思路

其实可以把整体拆分成两大块,分别是最上方:物流详情,下方:物流信息;最上方实现起来比较简单,就不多赘述,主要跟大家说一下下面的实现思路,下面我又将它们分成了左边和右边两个大块,左边是进度的竖线展示,右边是物流文字信息展示,其中有两个点需要注意,首先是根据数组的长度判断了展示具体内容,若 >0 正常展示,反之则展示 “暂无物流信息” 字样,其次是线条也会根据判断条件展示不同的样式,这一点主要是为了兼容一条信息及多条信息不同的样式,剩下的就是样式的一些调整,代码中有详细的注释,大家可以在实现功能的同时根据注释调整为自己的需要的样子。


代码如下:

wxml文件

<view class="outerBox">
    <!-- 头部物流信息 -->
    <view class="navBox">
        <view class="navLeftBox">
            <view>
                <image src="https://b.bdstatic.com/searchbox/icms/searchbox/img/zhongtonglogo.png"></image>
            </view>
            <view>中通快递</view>
            <view>78465464135654565</view>
        </view>
        <view class="navRightBox">
            <text>复制</text>
            <text>|</text>
            <text>电话</text>
        </view>
    </view>
    <!-- 主体内容 -->
    <view class="contantBox">
        <!-- 通过数组长度判断显示内容 >0显示物流信息-->
        <view wx:if="{{dataList.length > 0}}">
            <view class="itemBox" wx:for="{{dataList}}" wx:key="index">
                <!-- 左边线条 -->
                <view class="itemLeftBox">
                    <view class="lineBox">
                        <view class="topLineBox {{index == 0 ? '' : 'longLineBox'}}"></view>
                        <view class="bomLineBox {{index + 1 == dataList.length ? '' : 'longLineBox'}}"></view>
                    </view>
                    <image class="newestIconBox" src="https://s1.ax1x.com/2022/03/29/qySZi4.png" wx:if="{{index == 0}}"></image>
                    <view class="dotBox" wx:else="{{index > 0}}"></view>
                </view>
                <!-- 右边内容 -->
                <view class="rightBigBox {{index == 0 ? '' : 'oldTxtBox'}} {{index + 1 == dataList.length ? '' : 'borderBomBox'}}">
                    <view>{{item.content}}</view>
                    <view class="timeBox">{{item.time}}</view>
                </view>
            </view>
        </view>
        <!-- 通过数组长度判断显示内容 除了大于0之外显示暂无物流信息-->
        <view class="notBox" wx:else>暂无物流信息</view>
    </view>
</view>

js文件

Page({
  data: {
    dataList: [
      {
        content: '已签收,签收人凭取货码签收。',
        time: '2022-03-27 21:01'
      },
      {
        content: '北京昌平二部中通张三[18821444747]正在派件(95720为中通快递员外呼专属电话,请放心接听)',
        time: '2022-03-27 17:51'
      },
      {
        content: '快件已到达北京昌平二部中通',
        time: '2022-03-27 07:11'
      },
      {
        content: '快件离开潮汕中心已发往北京昌平二部中通',
        time: '2022-03-26 17:45'
      },
      {
        content: '快件发往潮汕中心',
        time: '2022-03-26 07:45'
      },
      {
        content: '包裹已揽收',
        time: '2022-03-25 16:15'
      },
      {
        content: '包裹正在等待揽收',
        time: '2022-03-25 09:16'
      },
      {
        content: '商品已下单',
        time: '2022-03-24 18:01'
      }
    ]
  },
})

wxss文件

.outerBox {
    /* 最外层的盒子 */
    width: 100%;
    font-size: 24rpx;
}

.navBox {
    /* 头部样式 */
    padding: 18rpx;
    border-bottom: 2rpx solid rgb(236, 236, 236);
}

.navBox,
.navLeftBox {
      /* 头部内容样式 */
    display: flex;
    align-items: center;
    justify-content: space-between;
    font-size: 12px;
}

.navLeftBox view {
     /* 头部左边的样式 */
    margin-left: 10rpx;
}

.navRightBox text {
    /* 头部右边的样式 */
    margin-left: 10rpx;
}

.navRightBox text:nth-child(2) {
    /* 头部竖线文字颜色 */
    color: rgb(226, 225, 225);
}

.navBox image {
    /* 图片样式 */
    width: 46rpx;
    height: 46rpx;
    border-radius: 50%;
}

.contantBox {
    /* 物流信息整体样式 */
    padding: 0 18rpx;
}

.itemBox {
    width: 100%;
    display: flex;
}

.itemLeftBox {
    /* 左边一整条竖线外层盒子的样式 */
    position: relative;
    width: 62rpx;
}

.lineBox {
    /* 左边一整条竖线的样式 */
    width: 100%;
    height: 100%;
    display: flex;
    flex-direction: column;
    padding-left: 28rpx;
}

.longLineBox {
    /* 线的样式 */
    background-color: rgb(215, 215, 215);
}

.topLineBox {
    /* 线的样式 */
    width: 1px;
    height: 50rpx;
}

.bomLineBox {
    /* 线的样式 */
    flex: 1;
    width: 1px;
}
.newestIconBox {
    /* 最新物流信息icon样式 */
    position: absolute;
    top: 36rpx;
    left: 9rpx;
    width: 40rpx;
    height: 40rpx;
}

.dotBox {
    /* 圆点样式 */
    position: absolute;
    top: 44rpx;
    left: 20rpx;
    width: 18rpx;
    height: 18rpx;
    border-radius: 50%;
    background-color: rgb(201, 201, 201);
}

.rightBigBox {
    /* 右边物流信息每一个节点的样式 */
    flex: 1;
    padding: 38rpx 0;
}

.borderBomBox {
    /* 物流信息下划线 */
    border-bottom: 1px solid rgb(243, 241, 241);
}

.oldTxtBox {
    /* 之前物流信息文字样式 */
    color: rgb(159,159,159);
}


.timeBox {
    /* 时间样式 */
    margin-top: 4rpx;
    font-size: 20rpx;
}


.notBox {
    /* 暂无物流信息样式 */
    padding: 20rpx 0;
    text-align: center;
    color: rgb(159,159,159);
}
  • 10
    点赞
  • 49
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

水星记_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值