Files
YGChatCS/pages/order/components/RefundPopup

RefundPopup 退款弹窗组件

组件概述

RefundPopup 是一个用于处理订单退款相关操作的弹窗组件,支持多种退款场景和状态展示。

功能需求分析

界面设计规范

  1. 弹窗容器

    • 使用圆角矩形容器,背景色为白色
    • 弹窗宽度适中,居中显示
    • 支持遮罩层,点击遮罩可关闭弹窗
  2. 头部区域

    • 显示可爱的花朵卡通形象作为视觉元素
    • 卡通形象位于弹窗顶部中央位置
  3. 内容区域

    • 主标题:根据不同场景显示相应提示文字
    • 副标题:显示详细的退款规则和说明
    • 金额显示:突出显示可退金额(橙色字体)
    • 退款政策:详细列出各种退款条件和规则
  4. 按钮区域

    • 双按钮布局:左侧为次要操作,右侧为主要操作
    • 按钮样式:圆角矩形,左侧蓝色,右侧橙色
    • 按钮文字:根据场景显示不同的操作文字

交互功能

  1. 弹窗显示/隐藏

    • 支持通过方法调用显示弹窗
    • 支持点击遮罩层关闭弹窗
    • 支持点击按钮后关闭弹窗
  2. 退款场景处理

    • 不予退款场景:显示"不予退款12小时以内取消或未入住不予退款"
    • 免费取消场景:显示"免费取消提前48小时以上全额退还房费"
    • 部分退款场景:显示退款政策详情和可退金额
    • 商品限制场景:显示"该商品未使用随时可退"
  3. 按钮交互

    • 左侧按钮:"退订政策"或"退订政策"(查看详情)
    • 右侧按钮:"我知道了"或"点击退款"(确认操作)
    • 支持按钮点击事件回调
  4. 数据展示

    • 动态显示可退金额
    • 展示详细的退款规则列表
    • 支持不同退款类型的文案切换

技术要求

  1. 组件架构

    • 使用 Vue 3 Composition API
    • 支持 TypeScript可选
    • 使用 uni-popup 作为弹窗基础组件
  2. 样式处理

    • 使用 SASS 预处理器
    • 支持响应式设计
    • 遵循设计规范的颜色和字体
  3. 性能优化

    • 懒加载弹窗内容
    • 合理使用计算属性
    • 避免不必要的重渲染
  4. 代码规范

    • 清晰的组件结构
    • 详细的注释说明
    • 统一的命名规范

样式规范

  1. 颜色规范

    • 主色调:蓝色 #007AFF左侧按钮
    • 强调色:橙色 #FF9500右侧按钮、金额
    • 文字色:黑色 #000000主要文字
    • 辅助色:灰色 #666666辅助文字
    • 背景色:白色 #FFFFFF
  2. 字体规范

    • 主标题16px加粗
    • 副标题14px常规
    • 金额18px加粗橙色
    • 按钮文字16px加粗
    • 说明文字12px常规
  3. 间距规范

    • 弹窗内边距20px
    • 元素间距12px
    • 按钮间距12px
    • 按钮高度44px

组件接口

Props

interface RefundPopupProps {
  // 弹窗显示状态
  visible: boolean
  // 退款类型:'no_refund' | 'free_cancel' | 'partial_refund' | 'anytime_refund'
  refundType: string
  // 可退金额
  refundAmount?: number
  // 退款规则列表
  refundRules?: string[]
  // 自定义标题
  title?: string
  // 自定义描述
  description?: string
}

Events

interface RefundPopupEvents {
  // 弹窗关闭事件
  'update:visible': (visible: boolean) => void
  // 查看政策按钮点击
  'policy-click': () => void
  // 确认按钮点击
  'confirm-click': () => void
  // 弹窗关闭事件
  'close': () => void
}

Methods

interface RefundPopupMethods {
  // 显示弹窗
  show(): void
  // 隐藏弹窗
  hide(): void
}

使用场景

  1. 订单详情页面:用户查看退款政策
  2. 退款申请流程:确认退款操作
  3. 客服咨询场景:展示退款规则
  4. 订单管理后台:处理退款申请

文件结构

RefundPopup/
├── index.vue          # 主组件文件
├── styles/
│   └── index.scss     # 样式文件
├── demo.vue           # 演示页面
└── README.md          # 组件文档

开发注意事项

  1. 确保弹窗在不同屏幕尺寸下的适配
  2. 处理长文本的换行和显示
  3. 考虑无障碍访问支持
  4. 添加适当的动画效果
  5. 确保组件的可复用性和可扩展性