Files
YGChatCS/pages/order/components/OrderCard
2025-08-01 21:37:07 +08:00
..
2025-07-29 21:19:57 +08:00
2025-07-30 20:55:26 +08:00
2025-07-30 11:57:25 +08:00
2025-07-30 20:55:26 +08:00
2025-07-30 10:26:53 +08:00
2025-07-27 18:08:06 +08:00
2025-07-30 10:26:53 +08:00

OrderCard 组件

订单卡片组件,用于显示订单和工单信息。

组件结构

OrderCard/
├── index.vue              # 主组件
├── OrderCardContent.vue   # 卡片内容组件
├── InfoRow.vue           # 信息行组件
├── images/               # 图片资源
├── styles/               # 样式文件
└── README.md            # 说明文档

组件说明

OrderCard (主组件)

  • 负责整体布局和事件处理
  • 包含卡片头部、分割线、内容区域和操作区域
  • 处理点击、呼叫等交互事件

OrderCardContent (内容组件)

  • 负责根据 orderType 动态渲染不同的内容
  • 支持订单类型0-酒店订单1-门票订单2-其他订单)和工单类型
  • 使用条件渲染显示对应的信息字段

InfoRow (信息行组件)

  • 可复用的信息展示组件
  • 统一的标签和值的显示格式
  • 支持字符串和数字类型的值

使用方式

<template>
  <OrderCard 
    :order-data="orderData" 
    @click="handleCardClick"
    @call="handleCall"
    @complete="handleComplete"
  />
</template>

<script setup>
import OrderCard from '@/pages/order/components/OrderCard/index.vue'

const orderData = {
  id: '123',
  commodityName: '订单名称',
  orderType: 0, // 0-酒店订单, 1-门票订单, 2-其他订单, undefined-工单
  orderNumber: 'ORD123456',
  checkInTime: '2024-01-01',
  visitorName: '张三',
  contactPhone: '13800138000',
  quantity: 2,
  createTime: '2024-01-01 10:00:00',
  orderStatus: '1',
  status: 'pending'
}
</script>

Props

orderData (Object)

字段 类型 说明 必填
id String 订单ID
commodityName String 商品名称
orderType Number/undefined 订单类型0-酒店订单1-门票订单2-其他订单undefined-工单
orderNumber String 订单编号
checkInTime String 入住时间orderType=0时使用
visitorName String 游客姓名/联系房客
contactPhone String 联系电话
quantity Number 份数orderType=1,2时使用
createTime String 创建时间(工单时使用)
orderStatus String 订单状态
status String 状态

Events

事件名 说明 参数
click 卡片点击事件 orderData
call 呼叫事件 orderData
complete 完成事件 orderData

显示逻辑

订单类型 (orderType !== undefined)

  • orderType = 0 (酒店订单):显示订单编号、入住时间、游客姓名、联系电话
  • orderType = 1 (门票订单):显示订单编号、份数
  • orderType = 2 (其他订单):显示订单编号、份数

工单类型 (orderType === undefined)

显示创建时间、联系房客、联系电话

优势

  1. 可读性:组件职责单一,代码结构清晰
  2. 可维护性:组件化拆分,便于独立维护和测试
  3. 可复用性InfoRow 组件可在其他地方复用
  4. 健壮性:类型检查和默认值处理
  5. 扩展性:新增订单类型只需修改 OrderCardContent 组件