当前位置: 首页 > article >正文

react的antd-mobile使用Steps显示物流

antd-mobile的图标,是需要安装依赖的

step如果只有一个步骤是不会展示的,代码里面的标题那块可以看出来

尝试了很多遍测试发现一直不显示,查询后发现是这个组件的本身设置的原因

那么就算你只展示一个那么也要写两个step,第二个去样式里面给隐藏就可以

或者直接改组件的代码,因为他本身逻辑或者样式做了处理,一个步骤条不展示(我懒的去改组件,所以直接写两个隐藏了一个)

import React, { PureComponent } from "react";
import { connect } from "umi";
import { Modal, Steps } from "antd-mobile";
import dayjs from "dayjs";
import classNames from "classnames";
import "./DeliveryInformation.less";
import logisticsImage from "@/common/images/logisticsImage1.png";
import { CheckCircleFill, TruckOutline, CloseOutline } from "antd-mobile-icons";

const { Step } = Steps;

// 定义状态到状态码的映射
const statusToCode = {
  delivered: "finish",
  pending: "wait",
  transit: "wait",
  pickup: "wait",
  expired: "error",
  undelivered: "error",
  notfound: "error",
  exception: "error",
};
const iconStatu = {
  finish: <CheckCircleFill />,
  wait: <TruckOutline />,
  error: <CloseOutline />,
};

const statusToName = {
  delivered: "签收",
  transit: "运输中",
  pickup: "包裹已到达当地地点",
  inforeceived: "取件中",
  undelivered: "已尝试递送包裹,但由于某些原因而失败",
  notfound: "查询不到信息",
  exception: "已退回给发件人",
  expired: "30天未更新",
  pending: "新增包裹正在查询中",
};
@connect((state) => ({
  orderDelivery: state.orderDeliveryNoteList,
}))
export default class extends PureComponent {
  renderSteps = (items, statusArr) => {
    const { queryGetTrackingNumberData } = this.props.orderDelivery;
    const statusMap = statusArr.reduce((acc, status) => {
      acc[status] = [];
      return acc;
    }, {});
    queryGetTrackingNumberData.forEach((item) => {
      const {
        checkpoint_delivery_status: status,
        tracking_detail: trackingDetail,
        checkpoint_date: checkpointDate,
      } = item;
      if (statusMap[status]) {
        statusMap[status].push({ trackingDetail, checkpointDate });
      }
    });
    const arrlist = Object.entries(statusMap).map(([title, array]) => ({
      title,
      array,
    }));
    return arrlist.map((item, inx) => (
      <>
        <Steps direction="vertical" className="trackebox" key={inx + 1}>
          <Step
            title={statusToName[item.title]}
            key={inx + 2}
            status={statusToCode[item.title]}
            icon={iconStatu[statusToCode[item.title]]}
            className="stepTitle"
          />
          <Step className="isnone" key={inx} />
        </Steps>
        {item.array.map((tx, ix) => (
          <Steps direction="vertical" className="trackebox" key={ix + 1}>
            <Step
              title={tx.trackingDetail}
              key={ix + 2}
              icon=""
              description={dayjs(tx.checkpointDate).format(dateFormat)}
            />
            <Step className="isnone" key={inx} />
          </Steps>
        ))}
      </>
    ));
  };

  render() {
    const {
      modalVisible,
      orderDeliveryNote,
      queryGetTrackingNumberData,
    } = this.props.orderDelivery;
    const statusArr = [
      ...new Set(
        queryGetTrackingNumberData.map(
          (val, inx) => val.checkpoint_delivery_status
        )
      ),
    ];
    if (!orderDeliveryNote) {
      return;
    }

    return (
      <>
    <div className="expressList">
                    {this.renderSteps(queryGetTrackingNumberData, statusArr)}
                  </div>
      </>
    );
  }
}

效果图

其中数据也做了处理

原本51平台返回的数据是这样的

根据物流状态分类处理后的数据是这样的


http://www.kler.cn/a/375856.html

相关文章:

  • WonderWorld: Interactive 3D Scene Generation from a Single Image 论文解读
  • LINUX Shell命令中$0、$1-9、$#、$?、$*、$@、$!、$、$-、$IFS含义及举例
  • Kafka物理存储机制深度解析
  • 「Mac畅玩鸿蒙与硬件10」鸿蒙开发环境配置篇10 - 项目实战:计数器应用
  • java项目中如何有效提高List集合的读写速度?
  • GIN 反向代理功能
  • YOLOv6-4.0部分代码阅读笔记-dbb_transforms.py
  • ESP-IDF 配置 SimpleFOC 项目
  • 企业如何通过架构蓝图实现数字化转型
  • Unity 游戏性能优化实践:内存管理与帧率提升技巧
  • Android和iOS有什么区别?
  • redis详细教程(4.GEO,bitfield,Stream)
  • 自动驾驶上市潮中,会诞生下一个“英伟达”吗?
  • 基于深度学习的机器人智能控制算法 笔记
  • 【Linux】编辑器vim 与 编译器gcc/g++
  • OpenCV Python 版使用教程(二)摄像头调用
  • 二叉树选择题
  • 11.01学习
  • Linux云计算 |【第五阶段】CLOUD-DAY7
  • Shell 编程-Shell三剑客 Grep 学习
  • K8s pod 调度策略
  • 数据库相关概念
  • leaflet 地图基础应用篇
  • ssh和ssl的区别在哪些方面?
  • Facebook群控策略详解
  • 基于微信小程序的公务员考试信息查询系统+LW示例参考